Microsoft SQL Server 알림
Microsoft SQL Server 알림 (Alerting)
Grafana Alerting을 Microsoft SQL Server와 함께 사용해 SQL Server 데이터를 기반으로 알림을 만들 수 있어요. 지표를 모니터링하고 이상을 감지하며 특정 조건이 충족되면 알림을 받을 수 있어요. Grafana Alerting 일반 정보는 Grafana Alerting을 참고하세요.
본문
Grafana Cloud를 이용하면 Grafana 인스턴스를 직접 설치·유지·확장할 필요가 없어요. 무료 계정을 만들면 10k 메트릭, 50GB 로그, 50GB 트레이스, 500VUh k6 테스트 등이 영구 무료로 제공돼요.
시작하기 전에
Microsoft SQL Server로 알림을 만들기 전에 다음을 확인해요.
- 구성된 Microsoft SQL Server 데이터 소스
- 알림 규칙을 만들 적절한 권한
- 모니터링할 지표에 대한 이해
지원되는 쿼리 유형
Microsoft SQL Server 알림은 시간에 따른 숫자 데이터를 반환하는 시계열 쿼리와 함께 작동해요. 표 형식 쿼리는 알림 규칙 조건에서 지원되지 않아요.
유효한 알림 쿼리를 만들려면:
- SQL
datetime/datetime2또는 Unix epoch 타임스탬프를 반환하는time열 포함 - 알림 대상 지표에 대한 숫자 값 반환
- 시간 열로 결과 정렬
시계열 쿼리 작성에 대한 자세한 내용은 Microsoft SQL Server 쿼리 편집기를 참고하세요.
쿼리 형식 요구 사항
| 쿼리 형식 | 알림 지원 | 참고 |
|---|---|---|
| Time series | 예 | 알림에 필요 |
| Table | 아니요 | 알림용으로 time series 형식으로 변환 |
알림 규칙 만들기
Microsoft SQL Server로 알림 규칙을 만들려면:
- Alerting > Alert rules로 이동해요.
- New alert rule을 클릭해요.
- 알림 규칙의 이름을 입력해요.
- Microsoft SQL Server 데이터 소스를 선택해요.
- 쿼리 편집기로 쿼리를 구성해요.
- Format을 Time series로 설정해요.
$__timeGroup()또는$__timeGroupAlias()매크로로 시간 열을 포함해요.- 모니터링할 값에 대한 숫자 열을 추가해요.
- 평가 시간 범위로 데이터를 필터링하려면
$__timeFilter()를 사용해요.
- 알림 조건을 구성해요(예: 평균이 임계값보다 높을 때).
- 평가 간격과 대기 기간을 설정해요.
- 알림과 라벨을 구성해요.
- Save rule을 클릭해요.
자세한 지침은 Create a Grafana-managed alert rule을 참고하세요.
예시 알림 쿼리
다음 예시는 Microsoft SQL Server의 일반적인 알림 시나리오를 보여줘요.
높은 오류 수 알림
시간에 따른 오류 수를 모니터링해요:
SELECT
$__timeGroupAlias(created_at, '1m'),
COUNT(*) AS error_count
FROM error_logs
WHERE $__timeFilter(created_at)
AND level = 'error'
GROUP BY $__timeGroup(created_at, '1m')
ORDER BY 1
조건: error_count가 100보다 높을 때.
평균 응답 시간 알림
API 응답 시간을 모니터링해요:
SELECT
$__timeGroupAlias(request_time, '5m'),
AVG(response_time_ms) AS avg_response_time
FROM api_requests
WHERE $__timeFilter(request_time)
GROUP BY $__timeGroup(request_time, '5m')
ORDER BY 1
조건: avg_response_time이 500(밀리초)보다 높을 때.
낮은 주문량 알림
주문 활동 감소를 감지해요:
SELECT
$__timeGroupAlias(order_date, '1h'),
COUNT(*) AS order_count
FROM orders
WHERE $__timeFilter(order_date)
GROUP BY $__timeGroup(order_date, '1h')
ORDER BY 1
조건: order_count가 10보다 낮을 때.
높은 CPU 사용률 알림
서버 리소스 지표를 모니터링해요:
SELECT
$__timeGroupAlias(recorded_at, '5m'),
AVG(cpu_percent) AS avg_cpu
FROM sys_metrics
WHERE $__timeFilter(recorded_at)
GROUP BY $__timeGroup(recorded_at, '5m')
ORDER BY 1
조건: avg_cpu가 85보다 높을 때.
제한 사항
Grafana Alerting과 함께 Microsoft SQL Server를 사용할 때 다음 제한 사항을 알아두세요.
템플릿 변수 미지원
알림 쿼리에는 템플릿 변수를 넣을 수 없어요. Grafana는 대시보드 컨텍스트 없이 백엔드에서 알림 규칙을 평가하므로 $hostname이나 $environment 같은 변수는 해석되지 않아요. 대시보드 쿼리가 템플릿 변수를 사용한다면 하드코딩된 값으로 알림용 별도 쿼리를 만들어요.
Table 형식 미지원
Table 형식을 사용하는 쿼리는 알림에 사용할 수 없어요. 쿼리 형식을 Time series로 설정하고 쿼리가 시간 열을 반환하는지 확인해요.
쿼리 타임아웃
데이터셋이 큰 복잡한 쿼리는 알림 평가 중 타임아웃될 수 있어요. 알림용 쿼리를 다음으로 최적화해요.
- 데이터를 제한하는 적절한
WHERE절 추가 - 시간 및 필터 열에 인덱스 사용
- 평가 시간 범위 줄이기
Current User 인증 미지원
데이터 소스가 Azure Entra ID Current User 인증을 사용한다면 알림, 보고, 기록 쿼리가 지원되지 않아요. 이러한 기능은 특정 사용자 세션에 의존하지 않는 백엔드 수준 자격 증명이 필요해요.
모범 사례
Microsoft SQL Server 알림을 만들 때 다음 모범 사례를 따르세요.
- 시계열 형식 사용: 알림 쿼리에는 항상 쿼리 형식을 time series로 설정해요.
- 시간 필터 포함:
$__timeFilter()매크로를 사용해 데이터를 평가 창으로 제한해요. - MSSQL 매크로 사용: 수동 시간 버킷 표현식보다
$__timeGroupAlias()와$__timeGroup()을 선호해요. - 쿼리 최적화:
WHERE절과GROUP BY에 사용되는 열에 인덱스를 추가해요. - 먼저 쿼리 테스트: 알림을 만들기 전에 Explore에서 쿼리가 예상 결과를 반환하는지 확인해요.
- 현실적인 임계값 설정: 과거 데이터 패턴을 기준으로 알림 임계값을 설정해요.
- 의미 있는 이름 사용: 무엇을 모니터링하는지 나타내는 설명적인 이름을 알림 규칙에 붙여요.
더 알아보기 (Learn more)
- Grafana Alerting - 알림 개요
- MSSQL query editor - 쿼리 편집기
- Create a Grafana-managed alert rule - 알림 규칙 생성
- MSSQL data source - 데이터 소스 개요
- Microsoft SQL Server alerting - 원문 문서