Elasticsearch 알림
Elasticsearch 알림 (Alerting)
Grafana Alerting을 Elasticsearch와 함께 사용해 Elasticsearch 데이터를 기반으로 알림을 만들 수 있어요. 이를 통해 지표를 모니터링하고 이상을 감지하며 특정 조건이 충족되면 알림을 받을 수 있어요. Grafana Alerting 일반 정보는 Grafana Alerting을 참고하세요.
본문
Grafana Cloud를 이용하면 Grafana 인스턴스를 직접 설치·유지·확장할 필요가 없어요. 무료 계정을 만들면 10k 메트릭, 50GB 로그, 50GB 트레이스, 500VUh k6 테스트 등이 영구 무료로 제공돼요.
시작하기 전에
Elasticsearch로 알림을 만들기 전에 다음을 확인해요.
- Grafana에 Elasticsearch 데이터 소스가 구성되어 있을 것
- 알림 규칙을 만들 적절한 권한이 있을 것
- 모니터링할 지표에 대한 이해가 있을 것
지원되는 쿼리 유형
Elasticsearch 알림은 시계열 데이터를 반환하는 메트릭 쿼리와 가장 잘 동작해요. 유효한 알림 쿼리를 만들려면:
- 마지막 버킷 집계로 Date histogram을 사용해요(Group by 아래)
- 적절한 지표 집계(Count, Average, Sum, Min, Max 등)를 선택해요
시계열 데이터를 반환하는 쿼리는 Grafana가 시간에 따라 값을 평가하고 임계값이 초과되면 알림을 트리거할 수 있게 해요.
쿼리 유형과 알림 호환성
| 쿼리 유형 | 알림 지원 | 참고 |
|---|---|---|
| Date histogram이 있는 Metrics | 지원 | 알림에 권장 |
| Date histogram이 없는 Metrics | 제한적 | 시간에 따라 올바르게 평가되지 않을 수 있음 |
| Logs | 지원 안 함 | 메트릭 쿼리 사용 |
| Raw data | 지원 안 함 | 메트릭 쿼리 사용 |
| Raw document (비권장) | 지원 안 함 | Grafana v10.1부터 비권장. 메트릭 쿼리 사용 |
알림 규칙 만들기
Elasticsearch로 알림 규칙을 만들려면:
- Alerting > Alert rules로 이동해요.
- New alert rule을 클릭해요.
- 알림 규칙의 이름을 입력해요.
- Elasticsearch 데이터 소스를 선택해요.
- 쿼리 편집기로 쿼리를 구성해요.
- 지표 집계를 추가해요(예: Average, Count, Sum)
- Group by 아래에 Date histogram을 추가해요
- 선택적으로 Lucene 쿼리 문법으로 필터를 추가해요
- 알림 조건을 구성해요(예: 평균이 임계값보다 높을 때).
- 평가 간격과 대기 기간을 설정해요.
- 알림과 라벨을 구성해요.
- Save rule을 클릭해요.
자세한 지침은 Create a Grafana-managed alert rule을 참고하세요.
예시 알림 쿼리
다음 예시는 Elasticsearch의 일반적인 알림 시나리오를 보여줘요.
높은 오류 수 알림
error 레벨 로그 항목 수를 모니터링해요.
- Query:
level:error - Metric: Count
- Group by: Date histogram (interval: 1m)
- Condition: count가 100보다 높을 때
평균 응답 시간 알림
API 응답 시간을 모니터링해요.
- Query:
type:api_request - Metric:
response_time필드의 Average - Group by: Date histogram (interval: 5m)
- Condition: average가 500(밀리초)보다 높을 때
고유 사용자 수 감소 알림
활성 사용자 감소를 감지해요.
- Query:
*(모든 문서) - Metric:
user_id필드의 Unique count - Group by: Date histogram (interval: 1h)
- Condition: unique count가 100보다 낮을 때
제한 사항
Grafana Alerting과 함께 Elasticsearch를 사용할 때 다음 제한 사항을 알아두세요.
템플릿 변수 미지원
알림 쿼리에는 템플릿 변수를 넣을 수 없어요. Grafana는 대시보드 컨텍스트 없이 백엔드에서 알림 규칙을 평가하므로 $hostname이나 $environment 같은 변수는 해석되지 않아요. 대시보드 쿼리가 템플릿 변수를 사용한다면 하드코딩된 값으로 알림용 별도 쿼리를 만들어요.
로그 쿼리 미지원
Logs 메트릭 유형을 사용하는 쿼리는 알림에 사용할 수 없어요. 쿼리를 Date histogram이 있는 지표 집계로 변환해요.
쿼리 복잡성
중첩 집계가 많은 복잡한 쿼리는 타임아웃되거나 평가에 실패할 수 있어요. 알림용 쿼리를 다음으로 단순화해요.
- 버킷 집계 수 줄이기
- 적절한 시간 간격 사용
- 스캔되는 데이터를 제한하는 필터 추가
모범 사례
Elasticsearch 알림을 만들 때 다음 모범 사례를 따르세요.
- 구체적인 필터 사용: 관련 데이터에 집중하고 쿼리 성능을 높이도록 Lucene 쿼리 필터를 추가해요.
- 적절한 간격 선택: Date histogram 간격을 평가 빈도와 일치시켜요.
- 먼저 쿼리 테스트: 알림을 만들기 전에 Explore에서 쿼리가 예상 결과를 반환하는지 확인해요.
- 현실적인 임계값 설정: 과거 데이터 패턴을 기준으로 알림 임계값을 설정해요.
- 의미 있는 이름 사용: 무엇을 모니터링하는지 나타내는 설명적인 이름을 알림 규칙에 붙여요.
더 알아보기 (Learn more)
- Grafana Alerting - 알림 개요
- Elasticsearch query editor - 쿼리 편집기
- Create a Grafana-managed alert rule - 알림 규칙 생성
- Elasticsearch data source - 데이터 소스 개요
- Elasticsearch alerting - 원문 문서