Zabbix 인프라 모니터링 구축 – 02. 알림 연동: Slack Webhook과 DEV·PRD 채널 분리 (Media Type·Action)

2026.09.22

·

1편에서 Zabbix 서버를 Docker로 구동했다면, 이번 편에서는 알림이 실제로 오는지 확인하는 단계입니다. 아무리 모니터링 항목을 잘 만들어도 알림이 오지 않으면 의미가 없습니다.

이번 편에서는 Slack Webhook 연동과 DEV/PRD 채널 분리, 그리고 설정 후에도 알림이 오지 않는 흔한 원인을 다룹니다.


알림 흐름 이해

설정 전에 Zabbix 알림의 전체 흐름을 먼저 이해하면 어디서 막혔는지 파악하기 쉽습니다.

Sponsored

트리거 발동
  → Action (어떤 조건에서 누구에게 보낼지)
    → User Media (해당 사용자의 알림 수단)
      → Media Type (실제 전송 방식 — Slack Webhook)

이 네 단계가 모두 연결되어야 알림이 도착합니다. 하나라도 빠지거나 비활성화되어 있으면 조용히 실패합니다.


Slack Incoming Webhook 준비

Slack에서 Webhook URL을 먼저 발급받아야 합니다.

  1. Slack 워크스페이스 > Apps 검색 > Incoming Webhooks 추가
  2. 알림을 받을 채널 선택 후 Add Incoming WebHooks integration
  3. 생성된 Webhook URL 복사 (https://hooks.slack.com/services/...)

DEV와 PRD를 분리하려면 채널별로 Webhook URL을 각각 발급받아야 합니다. 채널 하나에 URL 하나입니다.


Media Type 생성

Zabbix에서 Media Type은 “전송 수단”을 정의합니다. Slack의 경우 Script 타입으로 등록합니다.

DEV용 설정 예시:

항목
NameSlack Webhook (DEV)
TypeScript
Script nameslack_webhook.sh
Parameters{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}

스크립트 파일은 /data/zabbix/scripts/slack_webhook.sh에 위치합니다. 컨테이너의 alertscripts 경로와 매핑되어 있어 Zabbix가 직접 호출합니다.

#!/bin/bash
WEBHOOK_URL="$1"
SUBJECT="$2"
MESSAGE="$3"
curl -s -X POST "$WEBHOOK_URL"   -H 'Content-type: application/json'   --data "{"text": "*${SUBJECT}*
${MESSAGE}"}"

PRD용은 동일한 방식으로 Slack Webhook (PRD) 라는 이름으로 별도 생성합니다.


중요: 생성 후 반드시 활성화 확인

여기서 많은 분들이 놓치는 부분이 있습니다.

Zabbix는 Media Type을 생성할 때 기본값이 Disabled입니다.

Media Type 목록에서 Status가 Disabled로 표시되어 있다면 알림은 절대 발송되지 않습니다. 트리거가 발동하고 Action도 실행됐지만 알림 히스토리에 ERROR: Media type disabled.라고만 남습니다.

생성 직후 반드시 Status를 Enabled로 변경하세요.

실제로 이 시리즈의 운영 환경에서 Slack PRD 채널이 생성 후 수주간 비활성 상태였던 것을 알림 히스토리 분석으로 뒤늦게 확인했습니다. 대시보드에서는 알림이 보이는데 Slack으로 오지 않는다면 이것부터 확인하세요.


User Media 등록

Media Type을 만들었다고 끝이 아닙니다. 어떤 사용자가 어떤 Media Type을 통해 알림을 받을지 연결해야 합니다.

항목
TypeSlack Webhook (DEV) 또는 (PRD)
Send to해당 채널의 Webhook URL
When active1-7,00:00-24:00 (항상)
Severity필요한 심각도 체크

DEV/PRD 채널 분리가 목적이라면 같은 사용자에 Media를 두 개 등록합니다. Send to에 각각 다른 Webhook URL을 넣으면 됩니다.


Action 설정

Action은 “어떤 조건의 트리거가 발동했을 때, 누구에게 알릴 것인지”를 정의합니다.

Conditions 탭: 호스트 그룹으로 필터링합니다.

조건설정
Host groupDEV (개발 환경용 Action)
Trigger severityWarning 이상

Operations 탭: 알림을 보낼 사용자와 미디어를 지정합니다.

항목설정
Send to usersAdmin (또는 담당자)
Send only toSlack Webhook (DEV)

PRD용 Action은 동일하게 만들되 Host group을 PRD로, Media Type을 PRD로 지정합니다. 이렇게 하면 DEV 환경 알림은 DEV 채널로, PRD 환경 알림은 PRD 채널로 자동 분리됩니다.


알림 테스트

설정 후에는 반드시 테스트합니다.

방법 1: Media Type 테스트

Send to에 Webhook URL을 입력하고 Test를 누르면 Slack에 테스트 메시지가 도착해야 합니다. 여기서 실패하면 스크립트나 URL 문제입니다.

방법 2: 알림 히스토리 확인

실제 트리거 발동 후 알림이 오지 않는다면 히스토리를 확인합니다.

각 알림 시도의 Status와 오류 메시지를 확인할 수 있습니다. Media type disabled, Script execution failed 등 원인이 명시되어 있습니다.


zabbix_sender와 Docker exec

1편에서 언급했던 zabbix_sender 호출 방식을 정리합니다.

커스텀 수집 스크립트(cron으로 실행)에서 Zabbix로 데이터를 보낼 때 zabbix_sender를 사용합니다. Docker 환경에서는 호스트에 직접 설치하는 대신 컨테이너를 경유합니다.

docker exec -i zabbix-server zabbix_sender   -z 127.0.0.1 -p 10051   -s "호스트명" -k "키" -o "값"

여러 메트릭을 한 번에 보낼 때는 stdin으로 파일을 전달합니다.

echo -e "호스트명	키1	값1
호스트명	키2	값2" |   docker exec -i zabbix-server zabbix_sender   -z 127.0.0.1 -p 10051 -i -

Python 스크립트에서는 subprocess.run()으로 이 명령을 호출하는 형태로 구현합니다. 이 패턴이 이 시리즈 전체에서 반복적으로 등장합니다.


마치며

이번 편에서 다룬 핵심 포인트입니다.

  • Zabbix 알림은 Media Type → User Media → Action 세 곳이 모두 연결되어야 동작
  • Media Type 생성 직후 Status가 Disabled — 반드시 Enabled로 변경
  • DEV/PRD 채널 분리는 Action의 Host group 조건 + User Media의 Send to 조합으로 구현
  • 알림 미수신 시 Reports > Action log에서 원인 확인

다음 편에서는 Zabbix 아이템, 트리거, LLD(Low Level Discovery)의 개념을 정리하고 커스텀 모니터링 구현 전 필수 이해 사항을 다룹니다.


MORE POSTS

다른 글 보기

guniq 인사이트 썸네일 — Zabbix 인프라 모니터링 구축 – 02. 알림 연동: Slack Webhook과 DEV·PRD 채널 분리 (Media Type·Action)
테크 랩

Zabbix 인프라 모니터링 구축 – 02. 알림 연동: Slack Webhook과 DEV·PRD 채널 분리 (Media Type·Action)

Zabbix 7.0에서 Slack Webhook 알림을 설정하는 방법과 개발/운영 채널을 분리하는 방법을 다룹니다. 미디어 타입이 기본 비활성화 상태로 생성되는 함정도 함께 짚어봅니다.
2026.09.22
guniq 인사이트 썸네일 — Zabbix 인프라 모니터링 구축 – 01. 서버 설치: Docker Compose로 시작하기 (MariaDB·Zabbix 7.0)
테크 랩

Zabbix 인프라 모니터링 구축 – 01. 서버 설치: Docker Compose로 시작하기 (MariaDB·Zabbix 7.0)

Zabbix 7.0을 Docker Compose로 구성하는 전체 과정을 다룹니다. MariaDB, zabbix-server, zabbix-web, Agent2까지 실제 운영 환경 기준으로 설명합니다.
2026.09.21
테크 랩

GroupFlow 콜센터 통합 – 06. 통화 녹취, 금융사만 하는 거 아닙니다: 일반 기업이 녹취를 남겨야 하는 이유

통화 녹취는 금융사만? 일반 기업의 녹취 필요성과, 쌓아만 두지 않고 STT로 검색하는 녹취 관리.
2026.09.18

프로젝트 문의 환영합니다

기획부터 개발, 운영까지 함께 만들어 드립니다.

무료 3분 자가진단

우리 회사, 자체 클라우드가 답일까?

AWS vs 자체 인프라 · 11개 항목 3분 체크