Kibana Alerting 복잡한 조건을 체크 및 알람 n8n 자동화 연동
n8n을 사용하여 Kibana와 연동하여 복잡한 조건을 체크하고 알람을 설정하는 자동화 프로세스를 구축하는 것은 좋은 선택입니다. n8n은 데이터를 수집, 처리, 모니터링 및 자동화할 수 있는 강력한 워크플로 자동화 도구입니다. 여기에 Kibana와의 연동을 포함하는 프로세스를 설명하겠습니다.
1. n8n 환경 설정
n8n을 설치하고 실행해야 합니다. n8n은 Docker, npm, 또는 바이너리 파일을 통해 설치할 수 있습니다.
2. Kibana에서 데이터 접근 설정
Kibana에서 데이터를 검색하려면 Elasticsearch의 API를 사용할 수 있습니다. 이를 위해서는 Kibana가 설치된 서버에서 API 접근이 가능하도록 설정해야 합니다. 보안을 위해 API 키를 생성하거나 HTTP 인증을 설정할 수 있습니다.
3. n8n 워크플로 생성 및 구성
n8n에서 새 워크플로를 만들고, 다음 단계를 하나씩 진행하시면 됩니다.
- HTTP Request 노드 추가: n8n의 HTTP Request 노드를 사용하여 Kibana 또는 Elasticsearch에서 데이터를 직접 조회합니다. 요청 유형은 GET 또는 POST가 될 수 있으며, API URL과 필요한 헤더 또는 인증 정보를 입력합니다.
- 데이터 파싱 및 조건 설정: HTTP Request 노드로부터 받은 데이터를 분석하고 필요한 데이터를 추출합니다. Function 노드를 사용하여 복잡한 로직이나 조건을 구현할 수 있습니다.
- 조건에 따른 분기 처리: IF 노드를 사용하여 특정 조건을 만족하는 경우 다른 행동을 하도록 설정할 수 있습니다. 예를 들어, 트래픽이 특정 임계치를 초과하면 알람을 발송합니다.
- 알람 또는 다른 액션 실행: 조건을 만족할 경우 Email, Slack, Telegram 등 다양한 알림 방법을 선택하여 알림을 보낼 수 있습니다.
4. 워크플로 저장 및 실행
워크플로를 저장하고 실행하도록 설정합니다. n8n은 워크플로를 트리거할 조건을 설정할 수 있으며, 정기적으로 또는 특정 이벤트 발생 시 실행되도록 설정할 수 있습니다.
5. 테스트 및 모니터링
워크플로가 올바르게 작동하는지 확인하기 위해 테스트를 실시하고, 필요에 따라 로깅이나 알림을 통해 모니터링을 할 수 있습니다. 이런 방식으로 n8n과 Kibana를 연동하여 복잡한 조건에 따른 모니터링과 알람 시스템을 자동화할 수 있습니다. n8n의 유연성과 강력한 자동화 기능을 통해 데이터 주도적인 의사결정을 빠르게 수행할 수 있게 됩니다.
Kibana 자체에서 Alert 설정하는 방법
Kibana에서 자체적으로 Alert를 설정하는 방법은 다음과 같습니다.
- Kibana Alert 생성
- Kibana에 로그인하고 좌측 메뉴에서 Stack Management를 클릭합니다.
- Alerting을 선택합니다.
- Create alert 버튼을 클릭합니다.
- Alert 조건 설정
- Alert name을 입력합니다.
- Alert type을 선택합니다. 예를 들어, Index Threshold를 선택할 수 있습니다.
- Index pattern을 설정합니다. 예를 들어, 로그 데이터가 있는 인덱스를 선택합니다.
- 조건을 정의합니다. 예를 들어,
count
가 특정 임계치를 초과할 때를 설정할 수 있습니다. - 알림 주기 (Interval)를 설정합니다. 예:
5 minutes
- 액션 추가
- Add action을 클릭합니다.
- Webhook을 선택합니다.
- 웹훅 URL을 입력합니다.
- 요청의 메서드 (POST, GET 등), 헤더, 본문을 설정합니다. 예를 들어, JSON 형식으로 필요한 데이터를 전달할 수 있습니다.
- Alert 저장
- 모든 설정을 완료한 후 Save 버튼을 클릭하여 Alert를 저장합니다.
n8n을 통한 Kibana 연동 및 Alert 설정
n8n을 사용하여 Kibana와 연동하고 복잡한 조건을 기반으로 Alert를 설정하는 예제입니다.
- n8n 설치 및 설정
n8n을 Docker로 설치하는 예docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n
- Elasticsearch API 요청을 위한 n8n 워크플로 설정
- HTTP Request 노드 추가: Elasticsearch에서 데이터를 가져오기 위한 HTTP Request 노드 설정.
- Method: GET
- URL:
http://<elasticsearch-url>:9200/<index>/_search
- Headers
Content-Type: application/json
Authorization: Basic <base64-encoded-credentials>
- Body: 쿼리를 작성하여 필요한 데이터를 필터링합니다.
{ "query": { "range": { "timestamp": { "gte": "now-1h", "lt": "now" } } } }
- Function 노드 추가: 데이터를 파싱하고 조건을 설정합니다.
- Function Code
const data = items[0].json; const count = data.hits.total.value; const threshold = 1000; if (count > threshold) { return [{ json: { alert: true, count } }]; } else { return [{ json: { alert: false, count } }]; }
- Function Code
- IF 노드 추가: 알람 조건을 설정합니다.
- Condition:
alert
값이true
일 때
- Condition:
- Notification 노드 추가: 조건이 충족될 때 알림을 보냅니다.
- Email 노드 (이메일로 알림을 보내는 경우)
- SMTP 설정: SMTP 서버 정보를 입력합니다.
- From:
your-email@example.com
- To:
alert-recipient@example.com
- Subject:
Alert: Threshold Exceeded
- Body:
The threshold has been exceeded. Count: {{ $json["count"] }}
- Email 노드 (이메일로 알림을 보내는 경우)
- HTTP Request 노드 추가: Elasticsearch에서 데이터를 가져오기 위한 HTTP Request 노드 설정.
- 워크플로 저장 및 실행
- Cron 노드 추가: 주기적으로 워크플로를 실행하도록 설정합니다. 예를 들어, 매 5분마다 실행되도록 설정할 수 있습니다.
- n8n에서 워크플로를 저장하고 주기적으로 실행되도록 설정합니다. 트리거를 사용하여 주기적으로 실행되도록 하거나 특정 이벤트가 발생할 때 실행되도록 설정할 수 있습니다.
이와 같은 설정을 통해 Kibana와 n8n을 활용하여 복잡한 조건에 따른 모니터링 및 알림 시스템을 구축할 수 있습니다. n8n의 유연성과 다양한 노드를 활용하여 복잡한 로직과 조건을 처리할 수 있습니다.