반응형
Zabbix 알림을 Slack과 연동하는 방법
Slack Webhook을 사용하여 Slack 채널로 알림을 보낼 수 있습니다.
1. Slack에서 Webhook 설정
Webhook URL 복사
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
cURL 요청
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Test message from Zabbix"}' \
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
curl -X POST \
--data-urlencode \
"payload={\"channel\": \"#my-channel-here\", \"username\": \"webhookbot\", \"text\": \"이 항목은 #개의 my-channel-here에 포스트되며 webhookbot이라는 봇에서 제공됩니다.\", \"icon_emoji\": \":ghost:\"}" \
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
2. Zabbix Media Type 생성
Webhook 스크립트 파일 생성
cd /usr/lib/zabbix/alertscripts
vim /usr/lib/zabbix/alertscripts/slack_webhook.sh
#!/bin/bash
# Exit on any error
set -e
# Validate input arguments
if [ "$#" -ne 4 ]; then
echo "Usage: $0 <webhook_url> <send_to> <subject> <message>"
exit 1
fi
WEBHOOK_URL=$1
SEND_TO=$2
SUBJECT=$3
MESSAGE=$4
# Construct JSON payload
PAYLOAD=$(cat <<EOF
{
"username": "Zabbix Alert",
"text": "$SEND_TO\n$SUBJECT\n$MESSAGE"
}
EOF
)
# Send the payload to the webhook URL
curl -k -X POST -H "Content-Type: application/json" -d "${PAYLOAD}" "${WEBHOOK_URL}"
# Output success message
echo "Alert sent to Slack successfully."
더보기
---
vim slack_webhook.sh
#!/bin/bash
# Exit on any error
set -e
# Validate input arguments
if [ "$#" -ne 4 ]; then
echo "Usage: $0 <webhook_url> <send_to> <subject> <message>"
exit 1
fi
WEBHOOK_URL=$1
SEND_TO=$2
SUBJECT=$3
MESSAGE=$4
# Determine emoji and color based on subject content
if echo "$SUBJECT" | grep -Eq '^RECOVER(Y|ED)?$|^OK$|^Resolved.*'; then
EMOJI=":smile:"
COLOR="#0C7BDC"
elif echo "$SUBJECT" | grep -Eq '^PROBLEM.*|^Problem.*'; then
EMOJI=":frowning:"
COLOR="#FFC20A"
else
EMOJI=":question:"
COLOR="#CCCCCC"
fi
# Construct JSON payload
PAYLOAD=$(cat <<EOF
{
"username": "Zabbix Alert",
"text": "*$SEND_TO*\n",
"attachments": [
{
"fallback": "$SUBJECT",
"title": "$SUBJECT",
"text": "$MESSAGE",
"color": "$COLOR"
}
],
"icon_emoji": "$EMOJI"
}
EOF
)
# Debug: Print payload for validation
echo "Debug: Sending the following payload to Slack:"
echo "$PAYLOAD"
# Send the payload to the webhook URL
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST -H "Content-Type: application/json" -d "$PAYLOAD" "$WEBHOOK_URL")
# Check Slack API response
if [ "$RESPONSE" -ne 200 ]; then
echo "Error: Failed to send alert to Slack. HTTP status code: $RESPONSE" >&2
exit 1
fi
# Output success message
echo "Alert sent to Slack successfully."
---
chmod +x /usr/lib/zabbix/alertscripts/slack_webhook.sh
Zabbix Media Type 설정
경고 > 미디어 타입 > 연락 방법 생성
- 이름 : Slack Webhook
- 종류 : 스크립트
- 스크립트 이름 : slack_webhook.sh
- 스크립트 파라미터
- https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
- {ALERT.SENDTO}
- {ALERT.SUBJECT}
- {ALERT.MESSAGE}
3. 그룹 및 사용자 생성
그룹 생성
유저 > 유저 그룹 > 유저 그룹 생성
- 그룹 이름 : Slack Notification Group
사용자 생성
유저 > 유저 > 유저 생성
- 유저 이름 : slack
- 이름 : Slack Notification User
- 그룹 : Slack Notification Group
4. 사용자 미디어 추가
유저 > 유저 > 유저 이름(Admin) > 연락 방법 1
- 종류 : Slack
- 수신처 : Slack Alert
- 심각도 선택 : 알림 받을 심각도
5. 액션(Action) 설정
경고 > 액션 > Trigger actions > 액션 생성
참고URL
- Zabbix Documentation : 1 Webhook script examples - Slack webhook (custom)
728x90
반응형
'리눅스' 카테고리의 다른 글
Zabbix에서 웹 인터페이스의 언어를 한국어로 변경하는 방법 (1) | 2024.12.20 |
---|---|
Zabbix에서 Spring Boot 애플리케이션의 Listen 상태를 모니터링하는 방법 (0) | 2024.12.16 |
우분투에서 KVM과 Cockpit을 설치하고 사용하는 방법 (0) | 2024.12.05 |
colordiff 명령어 (0) | 2024.11.29 |
우분투에서 ModemManager를 비활성화하는 방법 (0) | 2024.11.27 |