MQTT 알림 설정

MQTT 알림 설정 (Configure MQTT notifications)

연락처 포인트의 MQTT 통합을 사용해 MQTT 브로커로 알림을 보낼 수 있어요. 브로커 URL, 토픽, 메시지 형식(JSON/텍스트)을 구성해 알림 페이로드를 제어합니다.

출처: 문서

본문

연락처 포인트의 MQTT 통합을 사용해 MQTT 브로커로 알림을 보낼 수 있어요.

연락처 포인트용 MQTT 구성

  1. Alerts & IRMAlertingNotification configuration 으로 이동한 다음 Contact points 탭을 선택합니다.
  2. + Add contact point 를 클릭합니다.
  3. 연락처 포인트 이름을 입력합니다.
  4. Integration 목록에서 MQTT 를 선택합니다.
  5. Broker URL 필드에 브로커 URL을 입력합니다. tcp, ssl, mqtt, mqtts, ws, wss 스킴을 지원합니다. 예: tcp://127.0.0.1:1883
  6. Topic 필드에 MQTT 토픽 이름을 입력합니다.
  7. (선택) 추가 설정 구성.
  8. 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(선택 설정)에 구성된 커스텀 메시지. 알림 템플릿 지원, 출력은 문자열로 포맷

참고: json Message 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 메시지를 만드는 템플릿 예시는 알림 템플릿 예시 문서를 참고하세요.

더 알아보기 (Learn more)