Elasticsearch Watcher를 이용한 이메일 알림 설정

1. Elasticsearch 설정 파일 수정

Elasticsearch에서 이메일 알림 기능을 활성화하기 위해 elasticsearch.yml 파일에 이메일 계정 정보를 추가합니다. 아래는 163 메일 서버를 기준으로 한 SMTP 설정 예시입니다.

xpack.notification.email.account:
  company_mail:
    profile: standard
    email_defaults:
      from: your_email@163.com
    smtp:
      host: smtp.163.com
      port: 25
      auth: true
      user: your_email@163.com
      password: your_app_password

2. Elasticsearch 재시작

설정 반영을 위해 Elasticsearch 노드를 재시작합니다. 설정이 정상적으로 로드되었는지 로그를 통해 확인하세요.

3. Watcher 등록: 오류 감지 및 이메일 전송

X-Pack Watcher를 사용해 지정된 인덱스에서 오류 로그를 주기적으로 스캔하고, 조건 충족 시 이메일을 발송하도록 설정합니다.

curl -X PUT "http://hadoop01:9200/_xpack/watcher/watch/log_error_alert" \
-u elastic:changeme \
-H 'Content-Type: application/json' \
-d '
{
  "trigger": {
    "schedule": {
      "interval": "10s"
    }
  },
  "input": {
    "search": {
      "request": {
        "indices": ["logs"],
        "body": {
          "query": {
            "match": {
              "message": "error"
            }
          }
        }
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.hits.total": {
        "gt": 0
      }
    }
  },
  "actions": {
    "notify_via_email": {
      "email": {
        "to": "admin@example.com",
        "subject": "시스템 오류 감지 경고",
        "body": "로그에서 오류가 감지되었습니다. 즉시 확인이 필요합니다."
      }
    }
  }
}'

Watcher 등록 후 상태를 확인하려면 다음 명령어를 사용합니다.

curl -X GET "http://hadoop01:9200/_xpack/watcher/watch/log_error_alert" -u elastic:changeme

사용하지 않을 경우 리소스 낭비를 방지하기 위해 Watcher를 삭제합니다.

curl -X DELETE "http://hadoop01:9200/_xpack/watcher/watch/log_error_alert" -u elastic:changeme

4. 테스트 데이터 삽입

알림 기능을 검증하기 위해 logs 인덱스에 오류 메시지를 포함한 문서를 추가합니다.

curl -X POST "http://hadoop01:9200/logs/_doc" \
-u elastic:changeme \
-H 'Content-Type: application/json' \
-d '
{
  "timestamp": "2023-10-05T08:30:00Z",
  "level": "ERROR",
  "message": "Database connection failed",
  "service": "auth-service"
}'

10초 이내로 Watcher가 쿼리를 실행하고, hits 수가 0보다 크면 사전에 설정한 이메일로 알림이 전송됩니다.

5. 주의사항

  • SMTP 인증 시 실제 비밀번호 대신 앱 전용 비밀번호 사용을 권장합니다.
  • Watcher는 주기적으로 쿼리 수행으로 인해 성능 영향을 줄 수 있으므로, 간격을 과도하게 짧게 설정하지 마세요.
  • 보안 강화를 위해 TLS/SSL 포트(예: 465 또는 587) 사용을 고려해야 합니다.

태그: elasticsearch X-Pack Watcher 이메일 알림 로그 모니터링 ELK 스택

7월 5일 16:55에 게시됨