MQTT 알림 설정
MQTT 알림 설정 (Configure MQTT notifications)
연락처 포인트의 MQTT 통합을 사용해 MQTT 브로커로 알림을 보낼 수 있어요. 브로커 URL, 토픽, 메시지 형식(JSON/텍스트)을 구성해 알림 페이로드를 제어합니다.
출처: 문서
본문
연락처 포인트의 MQTT 통합을 사용해 MQTT 브로커로 알림을 보낼 수 있어요.
연락처 포인트용 MQTT 구성
- Alerts & IRM → Alerting → Notification configuration 으로 이동한 다음 Contact points 탭을 선택합니다.
- + Add contact point 를 클릭합니다.
- 연락처 포인트 이름을 입력합니다.
- Integration 목록에서 MQTT 를 선택합니다.
- Broker URL 필드에 브로커 URL을 입력합니다.
tcp,ssl,mqtt,mqtts,ws,wss스킴을 지원합니다. 예:tcp://127.0.0.1:1883 - Topic 필드에 MQTT 토픽 이름을 입력합니다.
- (선택) 추가 설정 구성.
- Save contact point 를 클릭합니다.
연락처 포인트 테스트와 알림 활성화 방법 등 자세한 내용은 Configure contact points 문서를 참고하세요.
필수 설정 (Required Settings)
| 옵션 | 설명 |
|---|---|
| Broker URL | MQTT 브로커의 URL. 이 필드는 Grafana Cloud에서 수정이 보호(protected) 됨 |
| Topic | 메시지가 전송될 토픽 |
선택 설정 (Optional Settings)
| 옵션 | 설명 |
|---|---|
| Message format | json(기본)이면 기본 JSON 페이로드 사용. text 이면 알림 메시지를 완전히 커스터마이즈 가능 |
| Message | Message format 옵션에 따라 다름. json 형식에서는 기본 JSON 페이로드의 message 필드만 정의. text 형식에서는 전체 커스텀 페이로드 정의. 알림 템플릿 지원 |
| Client ID | MQTT 브로커 연결 시 사용할 클라이언트 ID. 비어 있으면 무작위 클라이언트 ID 사용 |
| Username | MQTT 브로커 연결 시 사용할 사용자명 |
| Password | MQTT 브로커 연결 시 사용할 비밀번호 |
| QoS | 메시지 전송 시 사용할 서비스 품질. 옵션: At most once, At least once, Exactly once |
| Retain | true로 설정하면 메시지가 브로커에 유지(retain)됨 |
| TLS | CA 인증서, 클라이언트 인증서, 클라이언트 키 및 인증서 검증 비활성화를 포함한 TLS 구성 옵션 |
| Disable resolved message | 알림이 해결될 때 알림 전송을 방지하려면 활성화 |
기본 JSON 페이로드 (Default JSON payload)
Message format 옵션이 json(기본)이면 페이로드는 다음과 같은 예시입니다:
{
"receiver": "My MQTT integration",
"status": "firing",
"orgId": 1,
"alerts": [
{
"status": "firing",
"labels": {
"alertname": "High memory usage",
"team": "blue",
"zone": "us-1"
},
"annotations": {
"description": "The system has high memory usage",
"runbook_url": "https://myrunbook.com/runbook/1234",
"summary": "This alert was triggered for zone us-1"
},
"startsAt": "2021-10-12T09:51:03.157076+02:00",
"endsAt": "0001-01-01T00:00:00Z",
"generatorURL": "https://play.grafana.org/alerting/1afz29v7z/edit",
"fingerprint": "c6eadffa33fcdf37",
"silenceURL": "https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT2%2Cteam%3Dblue%2Czone%3Dus-1",
"dashboardURL": "",
"panelURL": "",
"values": {
"B": 44.23943737541908,
"C": 1
}
},
{
"status": "firing",
"labels": {
"alertname": "High CPU usage",
"team": "blue",
"zone": "eu-1"
},
"annotations": {
"description": "The system has high CPU usage",
"runbook_url": "https://myrunbook.com/runbook/1234",
"summary": "This alert was triggered for zone eu-1"
},
"startsAt": "2021-10-12T09:56:03.157076+02:00",
"endsAt": "0001-01-01T00:00:00Z",
"generatorURL": "https://play.grafana.org/alerting/d1rdpdv7k/edit",
"fingerprint": "bc97ff14869b13e3",
"silenceURL": "https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT1%2Cteam%3Dblue%2Czone%3Deu-1",
"dashboardURL": "",
"panelURL": "",
"values": {
"B": 44.23943737541908,
"C": 1
}
}
],
"groupLabels": {},
"commonLabels": {
"team": "blue"
},
"commonAnnotations": {},
"externalURL": "https://play.grafana.org/",
"version": "1",
"groupKey": "{}:{}",
"message": "**Firing**\n\nLabels:\n - alertname = T2\n - team = blue\n - zone = us-1\nAnnotations:\n - description = This is the alert rule checking the second system\n - runbook_url = https://myrunbook.com\n - summary = This is my summary\nSource: https://play.grafana.org/alerting/1afz29v7z/edit\nSilence: https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT2%2Cteam%3Dblue%2Czone%3Dus-1\n\nLabels:\n - alertname = T1\n - team = blue\n - zone = eu-1\nAnnotations:\nSource: https://play.grafana.org/alerting/d1rdpdv7k/edit\nSilence: https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT1%2Cteam%3Dblue%2Czone%3Deu-1\n"
}
Body: Message format이 json(기본)이면 페이로드는 다음 필드를 포함합니다.
| 키 | 타입 | 설명 |
|---|---|---|
receiver |
string | 연락처 포인트 이름 |
status |
string | 알림의 현재 상태, firing 또는 resolved |
orgId |
number | 페이로드와 관련된 조직의 ID |
alerts |
array of alerts | 트리거 중인 알림 |
groupLabels |
object | 그룹화에 사용되는 라벨, string 키→string 값 맵 |
commonLabels |
object | 모든 알람이 공통으로 가지는 라벨 |
commonAnnotations |
object | 모든 알람이 공통으로 가지는 주석 |
externalURL |
string | 이 웹훅을 보내는 Grafana 인스턴스의 외부 URL |
version |
string | 페이로드의 버전 |
groupKey |
string | 그룹화에 사용되는 키 |
message |
string | Message(선택 설정)에 구성된 커스텀 메시지. 알림 템플릿 지원, 출력은 문자열로 포맷 |
참고:
jsonMessage format을 사용할 때 JSON 페이로드의message필드만 커스터마이즈 가능하며 출력은 문자열로 포맷됩니다. 전체 페이로드를 텍스트나 JSON 형식으로 커스터마이즈하려면text형식과 커스텀 페이로드를 사용하세요.
Alert 객체: 알림 그룹에 포함된 알림을 나타냅니다.
| 키 | 타입 | 설명 |
|---|---|---|
status |
string | 알림의 현재 상태, firing 또는 resolved |
labels |
object | 이 알림의 일부인 라벨 맵 |
annotations |
object | 이 알림의 일부인 주석 맵 |
startsAt |
string | 알림의 시작 시간 |
endsAt |
string | 알림의 종료 시간, 해결되지 않았을 때 기본값 0001-01-01T00:00:00Z |
values |
object | 현재 상태를 트리거한 값 |
generatorURL |
string | Grafana UI의 알림 규칙 URL |
fingerprint |
string | 라벨 fingerprint. 같은 라벨을 가진 알람은 같은 fingerprint |
silenceURL |
string | Grafana UI에서 알림 규칙을 침묵시키는 URL |
dashboardURL |
string | 알림에 Dashboard UID 주석이 있으면 Grafana Dashboard 링크 |
panelURL |
string | 알림에 Panel ID 주석이 있으면 패널 링크 |
imageURL |
string | 이 알림을 만든 규칙에 할당된 패널 스크린샷 URL |
커스텀 페이로드 (Custom payload)
Message format 옵션을 text 로 설정하면 MQTT 메시지의 전체 페이로드를 커스터마이즈할 수 있어요. 이 모드에서는 Message 옵션이 전체 페이로드를 정의합니다. 알림 템플릿을 지원하며 평문, JSON, 또는 커스텀 형식으로 알림 메시지를 생성할 수 있어요. 평문이나 JSON 메시지를 만드는 템플릿 예시는 알림 템플릿 예시 문서를 참고하세요.