반응형
Zabbix에서 Slack으로 Webhook 알림을 받는 방법
Zabbix 7.0에서는 Webhook을 활용하여 Slack으로 장애 알림을 받을 수 있습니다.
1. Slack Webhook URL 생성
2. Slack 알림 스크립트 작성
Zabbix가 Slack으로 장애 메시지를 전송할 수 있도록 Bash 스크립트를 작성합니다.
vim /usr/lib/zabbix/alertscripts/slack.sh
#!/bin/bash
# Zabbix에서 전달하는 파라미터
WEBHOOK_URL="$1" # Slack Webhook URL
CHANNEL="$2" # Slack 채널
SUBJECT="$3" # Zabbix 메시지 제목 (PROBLEM / RESOLVED 등)
MESSAGE="$4" # Zabbix 메시지 본문
USERNAME="Zabbix"
ICON_URL="http://zbx.scbyun.com/dl/icon/zabbix-monitoring.png"
LEVELS=("Warning" "High" "Disaster")
# 필수 파라미터 검증
if [[ -z "$WEBHOOK_URL" || -z "$CHANNEL" || -z "$SUBJECT" || -z "$MESSAGE" ]]; then
echo "Usage: $0 <WEBHOOK_URL> <CHANNEL> <SUBJECT> <MESSAGE>"
exit 1
fi
# 문제 해결 여부 및 색상 지정
COLOR="#CCCCCC" # 기본 회색
if [[ "$SUBJECT" == *"Resolved"* ]]; then
COLOR="#00FF13"
SUBJECT=":white_check_mark: ${SUBJECT}"
elif [[ "$SUBJECT" == *"Problem"* ]]; then
COLOR="#FF2A00"
SUBJECT=":rotating_light: ${SUBJECT}"
fi
# 중요도 수준 강조 여부 확인
HIGHLIGHT=false
for LEVEL in "${LEVELS[@]}"; do
if [[ "$MESSAGE" == *"$LEVEL"* ]]; then
HIGHLIGHT=true
break
fi
done
PAYLOAD=$(jq -n \
--arg username "$USERNAME" \
--arg icon_url "$ICON_URL" \
--arg channel "$CHANNEL" \
--arg title "$SUBJECT" \
--arg text "$MESSAGE" \
--arg color "$COLOR" \
--arg highlight_message ":warning: Cc <!here>" \
'{
username: $username,
icon_url: $icon_url,
channel: $channel,
attachments: [{
color: $color,
title: $title,
text: $text
}]
} | if $highlight_message and '"$HIGHLIGHT"' then .message = $highlight_message else . end')
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST -H "Content-type: application/json" --data "$PAYLOAD" "$WEBHOOK_URL")
# 응답 확인
if [[ "$RESPONSE" -ne 200 ]]; then
echo "Mattermost API Error: HTTP $RESPONSE" >&2
exit 1
fi
스크립트 실행 권한 부여
chmod +x /usr/lib/zabbix/alertscripts/slack_alert.sh
3. Zabbix 미디어 유형(Media Type) 설정
Zabbix 웹 UI 로그인 → 관리(Administration) → 미디어 유형(Media types) 이동
연락 방법 생성
- 일반 탭(General) 설정
- 이름: Slack
- 종류: 스크립트
- 스크립트 이름: slack.sh
- 스크립트 파라미터
- https://hooks.slack.com/services/T017
- #zbxalert
- {ALERT.SUBJECT}
- {ALERT.MESSAGE}
테스트
4. 사용자 미디어(User Media) 설정
Zabbix 웹 UI → 관리(Administration) → 사용자(Users) 이동
알림을 받을 사용자 선택 → 연락 방법 추가
- 종류(Type): slack
- 수신처: #zbxalert (Slack 채널)
- 연락 허용 시간대
- 심각도 선택
- 활성(Enabled): 체크
5. Slack 메시지 출력
Webhook URL이 유효한지 curl로 직접 테스트
curl -X POST \
-H "Content-type: application/json" \
--data '{"text":"Hello, World!"}' \
"https://hooks.slack.com/services/Txxxxxxxx/Bxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx"
728x90
반응형
'리눅스' 카테고리의 다른 글
Zabbix에서 UserParameter를 사용하여 웹 모니터링을 하는 방법 (0) | 2025.02.20 |
---|---|
Nginx와 Apache 연동하여 프록시 설정하기 (0) | 2025.02.20 |
hdparm을 사용한 디스크 성능 테스트 방법 (0) | 2025.02.18 |
우분투에서 minikube 업그레이드 방법 (0) | 2025.02.17 |
journald란 (0) | 2025.02.16 |