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) 사용을 고려해야 합니다.