티스토리 뷰

검색 시스템

ELK 알림 설정 가이드

silbaram 2025. 11. 3. 21:02
728x90

ELK 알림 설정 가이드

ELK 스택은 로그 수집·검색을 위한 매우 강력한 플랫폼이지만, 애플리케이션이나 인프라의 이상 현상이 발생했을 때 이를 자동으로 알려주지 않으면 문제를 빨리 발견하기 어렵습니다. Alerting 기능을 사용하면 일정 조건을 충족할 때 사용자에게 알림을 보내 실시간으로 대응할 수 있습니다. 이 글에서는 초보자도 쉽게 따라할 수 있도록 Kibana에서 기본 알림을 설정하는 방법과 Elasticsearch Watcher를 통한 고급 설정 방법을 설명합니다.

1. Alerting 용어와 개념

Alerting은 여러 구성 요소로 이루어집니다. 각각의 역할을 이해하면 알림 규칙을 설계하기 쉬워집니다.

  • 규칙(Rule): 모니터링할 조건과 시간 간격을 정의합니다. 규칙은 지정된 스케줄에 따라 실행되며, 조건을 만족하는 이벤트가 있는지 확인합니다.
  • 트리거(Trigger): 규칙이 실행되는 타이밍을 정의합니다. 일반적으로 일정 간격(예: 1분, 5분 등)마다 데이터를 확인하도록 설정합니다.
  • 액션(Action): 규칙 조건이 만족될 때 수행할 작업입니다. 예를 들어 지원팀에게 이메일이나 Slack 메시지를 보내거나 Webhook을 호출할 수 있습니다.
  • 커넥터(Connector): 외부 시스템과 연동하는 설정을 말합니다. 커넥터를 통해 이메일 서버, Slack, 웹훅 등 다양한 알림 채널과 연동할 수 있으며, 여러 규칙에서 재사용할 수 있습니다.

이러한 개념을 이해하면 Kibana의 Alerting UI가 어떻게 작동하는지 쉽게 이해할 수 있습니다.

2. Kibana Alerting과 Watcher의 차이

Kibana Alerting은 GUI를 통해 간단하게 규칙을 만들 수 있어 초보자에게 적합합니다. 단일 인덱스에 대해 조건을 지정하고 기본 템플릿으로 알림을 구성하는 등 설정이 간편합니다. 하지만 여러 인덱스를 동시에 조회하거나 복잡한 조건식을 적용하기 어렵습니다. 반면 Elasticsearch의 Watcher 기능은 입력(Input), 조건(Condition), 변환(Transform), 액션(Action) 등의 구성 요소로 이루어져 있어 복잡한 로직을 구현할 수 있습니다. Watcher는 체인 입력 등을 통해 여러 검색을 연결할 수 있고, 세밀한 조건 설정을 지원하지만 설정 과정이 상대적으로 복잡합니다. 초보자는 Kibana Alerting으로 시작하고 필요에 따라 Watcher로 확장하는 것이 좋습니다.

3. Kibana에서 알림 규칙 만들기

기본적인 알림은 Kibana UI에서 몇 단계만으로 설정할 수 있습니다.

  1. 커넥터 생성:
    1. Kibana에 로그인하여 왼쪽 메뉴에서 Stack Management → Rules and Connectors로 이동합니다.
    2. 상단의 Connectors 탭을 선택하고 Create connector를 클릭합니다.
    3. 사용할 알림 채널을 선택합니다. 예를 들어 이메일을 선택하면 SMTP 서버 주소, 포트, 인증 정보를 입력합니다. Slack을 선택하면 Webhook URL을 입력합니다.
    4. 커넥터 이름을 지정하고 저장합니다. 이렇게 만들어 둔 커넥터는 여러 규칙에서 재사용할 수 있습니다.
  2. 규칙 생성:
    1. 같은 화면에서 Rules 탭을 선택하고 Create rule 버튼을 클릭합니다.
    2. 규칙 유형을 선택합니다. Index threshold는 로그 데이터나 메트릭 인덱스에서 특정 값이 임계치를 넘을 때 알림을 보내는 데 사용되고, Log threshold는 로그 메세지 개수 또는 특정 검색어가 등장하는 횟수를 기준으로 알림을 보내는 데 유용합니다.
    3. 규칙 이름과 모니터링할 인덱스 패턴을 입력합니다(예: logs-* 혹은 filebeat-*).
    4. Time rangeSchedule을 설정합니다. 예를 들어 최근 5분 동안의 데이터를 1분마다 확인하도록 설정할 수 있습니다.
    5. 조건(Threshold)을 지정합니다. 예를 들어 “level: ERROR” 조건으로 검색했을 때 결과 수가 0보다 크면 알림을 트리거하도록 설정할 수 있습니다.
    6. Actions 섹션에서 앞에서 만든 커넥터를 추가하고, 알림 메시지 템플릿을 작성합니다. 템플릿에는 규칙 이름, 조건을 만족한 값, 시간 범위 등의 변수를 사용할 수 있습니다.
    7. 규칙을 저장하면 Kibana가 자동으로 스케줄에 맞춰 실행하며 조건이 만족되면 지정된 채널로 알림을 보냅니다.

규칙을 만든 후에는 테스트 실행을 통해 알림이 제대로 동작하는지 확인하는 것이 좋습니다. 필요하다면 조건이나 시간 범위를 조정하여 오탐(false positive)을 줄이세요.

4. Elasticsearch Watcher로 고급 알림 만들기

Watcher는 API나 콘솔을 통해 JSON 형식으로 감시 작업을 정의할 수 있게 해 줍니다. 복잡한 검색 조건과 여러 인덱스를 조합하는 등 세밀한 제어가 가능하지만 구성 요소를 이해해야 합니다.

Watcher 구성 요소

  • Trigger: Watch가 실행되는 스케줄을 정의합니다. “schedule”: {“interval”: “1m”}처럼 일정 간격을 지정하거나 cron 식을 사용할 수 있습니다.
  • Input: 감시할 데이터를 정의합니다. 주로 _search 요청을 사용하여 Elasticsearch 인덱스에서 필요한 데이터를 조회합니다. HTTP 요청을 사용해 외부 API를 가져올 수도 있습니다.
  • Condition: Input에서 가져온 데이터를 기반으로 알림을 발송할지 여부를 판단합니다. 예를 들어 ctx.payload.hits.total.value > 0 같은 스크립트 조건을 지정합니다.
  • Transform: 조건을 통과한 데이터를 변환하거나 요약하는 단계로, 결과를 템플릿 형태로 가공할 때 사용합니다. 생략할 수 있습니다.
  • Actions: 조건이 만족될 때 실행할 작업입니다. 이메일, Slack, PagerDuty 등 다양한 채널을 지원합니다.

간단한 Watcher 예제

다음은 최근 5분 동안 error 레벨 로그가 0개 이상인지 확인하고, 발견되면 이메일을 보내는 Watcher 예제입니다.

PUT _watcher/watch/error_watch
{
  "trigger": {
    "schedule": { "interval": "1m" }
  },
  "input": {
    "search": {
      "request": {
        "indices": ["logs-*"],
        "body": {
          "query": {
            "bool": {
              "filter": [
                { "range": { "@timestamp": { "gte": "now-5m" } } },
                { "match": { "level": "ERROR" } }
              ]
            }
          }
        }
      }
    }
  },
  "condition": {
    "script": {
      "source": "return ctx.payload.hits.total.value > 0"
    }
  },
  "actions": {
    "email_admin": {
      "email": {
        "to": ["admin@example.com"],
        "subject": "ELK 오류 감지",
        "body": "지난 5분 동안 오류 로그가 감지되었습니다."
      }
    }
  }
}

이 예제에서는 logs-* 인덱스에서 오류 레벨 로그를 검색하고, 결과가 한 건 이상일 때 email_admin 액션을 실행합니다. 실제 운영 환경에서는 @timestamp 필드 이름과 인덱스 패턴을 환경에 맞춰 수정해야 합니다. Watcher를 사용하면 여러 검색을 함께 실행하거나 결과를 변환하는 등 복잡한 로직을 구현할 수 있지만, 적절한 라이선스가 필요합니다.

5. 알림 설정 시 유의 사항과 팁

  • 오탐 방지: 너무 짧은 주기로 규칙을 실행하거나 너무 낮은 임계값을 설정하면 불필요한 알림이 많아질 수 있습니다. 실제 데이터 패턴을 파악한 뒤 적절한 임계값을 선택하세요.
  • 성능 고려: 대용량 인덱스에 대해 빈번하게 검색을 실행하면 Elasticsearch 클러스터 성능에 영향을 줄 수 있습니다. 규칙 실행 간격과 검색 범위를 적절히 조절하세요.
  • 커넥터 재사용: 여러 규칙에서 동일한 이메일 서버나 Slack 채널로 알림을 보내는 경우 커넥터를 재사용하면 관리가 편해집니다.
  • 라이선스 확인: Kibana Alerting과 일부 간단한 커넥터는 기본 라이선스로 사용할 수 있지만, Watcher나 특정 커넥터는 유료 라이선스가 필요할 수 있습니다. Elastic 공식 문서를 확인하세요.
    1. 고급 설정과 활용 핀
      E
      1. 고급 설정과 활용 핀
        Elastic Stack의 Alerting 기능을 더 효율적으로 사용하기 위해 알아두면 좋은 설정과 핀은 다음과 같습니다.
      • 보안 설정: Kibana와 Elasticsearch 사이의 통신을 TLS로 암호화하고, xpack.encryptedSavedObjects.encryptionKey 값을 설정해 구치와 케너터의 데이터를 안전하게 보호하세요.
      • 액션 빈도 제어: 구치의 실행 간격과 변로 액션 발송 주기를 조정해 동일한 경고가 반복적으로 전송되는 것을 줄일 수 있습니다.
      • 템플릿 변수: 알림 메시지에 구치 이름, 상태, 트리가된 값, Kibana 대시보드 링크 등의 변수를 포함해 수신자가 빠른 시간안에 문제를 파악할 수 있도록 하세요.
      • 다중 채널 알림: 하나의 구치에 여러 케너터를 연결하면 Slack, 이메일, Webhook 등 다양한 채널로 동시에 알림을 전송할 수 있습니다.
      • Watcher 스크립트 및 채인 인핑: Watcher를 사용할 경우 Painless 스크립트를 활용하여 복자한 조건을 정의하고, 여러 검색을 연색적으로 실행하는 chained 인핑을 사용할 수 있습니다.
      • Cron 스케줄링: 구치 또는 Watcher 트리가를 cron 표현식을 사용하면 특정 요일이나 시간대에만 검시 작업을 실행할 수 있습니다. 업무시간 동안만 사용하고 싶을 때 유용합니다.
      lastic Stack의 Alerting 기능을 더 효율적으로 사용하기 위해 알아두면 좋은 설정과 핀은 다음과 같습니다.
      1. 고급 설정과 활용 핀
        Elastic Stack의 Alerting 기능을 더 효율적으로 사용하기 위해 알아두면 좋은 설정과 핀은 다음과 같습니다.
      • 보안 설정: Kibana와 Elasticsearch 사이의 통신을 TLS로 암호화하고, xpack.encryptedSavedObjects.encryptionKey 값을 설정해 구치와 케너터의 데이터를 안전하게 보호하세요.
      • 액션 빈도 제어: 구치의 실행 간격과 변로 액션 발송 주기를 조정해 동일한 경고가 반복적으로 전송되는 것을 줄일 수 있습니다.
      • 템플릿 변수: 알림 메시지에 구치 이름, 상태, 트리가된 값, Kibana 대시보드 링크 등의 변수를 포함해 수신자가 빠른 시간안에 문제를 파악할 수 있도록 하세요.
      • 다중 채널 알림: 하나의 구치에 여러 케너터를 연결하면 Slack, 이메일, Webhook 등 다양한 채널로 동시에 알림을 전송할 수 있습니다.
      • Watcher 스크립트 및 채인 인핑: Watcher를 사용할 경우 Painless 스크립트를 활용하여 복자한 조건을 정의하고, 여러 검색을 연색적으로 실행하는 chained 인핑을 사용할 수 있습니다.
      • Cron 스케줄링: 구치 또는 Watcher 트리가를 cron 표현식을 사용하면 특정 요일이나 시간대에만 검시 작업을 실행할 수 있습니다. 업무시간 동안만 사용하고 싶을 때 유용합니다.
      연색적으로 실행하는 chained 인핑을 사용할 수 있습니다.
    • Cron 스케줄링: 구치 또는 Watcher 트리가를 cron 표현식을 사용하면 특정 요일이나 시간대에만 검시 작업을 실행하게 해줍니다. 업무시간 동안만 사용하고 싶을 때 유용합니다.
  • 단계적 도입: 처음에는 Kibana Alerting으로 간단한 룰을 만들어 시스템을 모니터링하고, 점차 Watcher나 다른 고급 기능을 활용해 복잡한 상황에 대응하는 것이 좋습니다.

결론

ELK 스택은 로그와 지표를 효과적으로 수집·분석할 수 있는 강력한 플랫폼이며, Alerting 기능을 통해 시스템 이상 징후를 자동으로 감지하고 대응 시간을 단축할 수 있습니다. 초보자는 Kibana의 시각적 도구를 활용해 간단한 알림을 설정하고, 필요에 따라 Elasticsearch Watcher를 통해 복잡한 규칙을 정의해보세요. 꾸준히 알림 설정을 개선하면 장애를 빠르게 파악하고 안정적인 서비스 운영에 큰 도움이 될 것입니다.

728x90

'검색 시스템' 카테고리의 다른 글

Elastic APM 설정 가이드  (0) 2025.10.30
엘라스틱서치 아키텍처 및 기본 구성 가이드  (3) 2025.05.16
Elasticsearch Bool Query 란?  (1) 2025.04.23
elasticsearch 입문  (2) 2025.03.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함