본문 바로가기
서버구축 (WEB,DB)

Kibana Alerting 복잡한 조건을 체크하고 알람을 n8n 연동하여 자동화

by 날으는물고기 2024. 7. 16.

Kibana Alerting 복잡한 조건을 체크하고 알람을 n8n 연동하여 자동화

Alerting - Kibana Guide - Elastic

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를 설정하는 방법은 다음과 같습니다.

  1. Kibana Alert 생성
    1. Kibana에 로그인하고 좌측 메뉴에서 Stack Management를 클릭합니다.
    2. Alerting을 선택합니다.
    3. Create alert 버튼을 클릭합니다.
  2. Alert 조건 설정
    1. Alert name을 입력합니다.
    2. Alert type을 선택합니다. 예를 들어, Index Threshold를 선택할 수 있습니다.
    3. Index pattern을 설정합니다. 예를 들어, 로그 데이터가 있는 인덱스를 선택합니다.
    4. 조건을 정의합니다. 예를 들어, count가 특정 임계치를 초과할 때를 설정할 수 있습니다.
    5. 알림 주기 (Interval)를 설정합니다. 예: 5 minutes
  3. 액션 추가
    1. Add action을 클릭합니다.
    2. Webhook을 선택합니다.
    3. 웹훅 URL을 입력합니다.
    4. 요청의 메서드 (POST, GET 등), 헤더, 본문을 설정합니다. 예를 들어, JSON 형식으로 필요한 데이터를 전달할 수 있습니다.
  4. Alert 저장
    1. 모든 설정을 완료한 후 Save 버튼을 클릭하여 Alert를 저장합니다.

n8n을 통한 Kibana 연동 및 Alert 설정

n8n을 사용하여 Kibana와 연동하고 복잡한 조건을 기반으로 Alert를 설정하는 예제입니다.

  1. n8n 설치 및 설정
    n8n을 Docker로 설치하는 예
     docker run -it --rm \
         --name n8n \
         -p 5678:5678 \
         -v ~/.n8n:/home/node/.n8n \
         n8nio/n8n
  2. Elasticsearch API 요청을 위한 n8n 워크플로 설정
    1. 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"
              }
            }
          }
        }
    2. 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 } }];
        }
    3. IF 노드 추가: 알람 조건을 설정합니다.
      • Condition: alert 값이 true일 때
    4. 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"] }}
  3. 워크플로 저장 및 실행
    • Cron 노드 추가: 주기적으로 워크플로를 실행하도록 설정합니다. 예를 들어, 매 5분마다 실행되도록 설정할 수 있습니다.
  4. n8n에서 워크플로를 저장하고 주기적으로 실행되도록 설정합니다. 트리거를 사용하여 주기적으로 실행되도록 하거나 특정 이벤트가 발생할 때 실행되도록 설정할 수 있습니다.

이와 같은 설정을 통해 Kibana와 n8n을 활용하여 복잡한 조건에 따른 모니터링 및 알림 시스템을 구축할 수 있습니다. n8n의 유연성과 다양한 노드를 활용하여 복잡한 로직과 조건을 처리할 수 있습니다.

728x90

댓글