자빅스(Zabbix) 알람을 Mattermost와 연동하는 방법
자빅스(Zabbix) 알람을 Mattermost와 연동하려면 Zabbix에서 Mattermost 웹훅(Webhook)을 설정해야 합니다. 이를 통해 Zabbix 알람 이벤트가 발생할 때 Mattermost로 메시지를 보낼 수 있습니다.
zabbix_server.conf 설정 확인
zabbix_server.conf 설정에 AlertScriptsPath 설정되어 있는지 확인합니다.
vim /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
StartSNMPTrapper=1
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
Mattermost 채널 및 웹훅 설정
1. Mattermost 웹훅 생성(Incoming WebHooks)
Mattermost에서 알람을 수신할 채널을 선택하고 해당 채널의 "Integrations" 또는 "웹훅" 설정으로 이동합니다.
2. 새 웹훅 생성
새 웹훅을 생성하고 해당 웹훅 URL을 복사합니다.
Zabbix 설정
1. Zabbix 웹 인터페이스로 로그인
Zabbix 서버에 로그인합니다.
2. Media 유형 추가(자빅스 웹 페이지에서 미디어 타입 설정)
- "관리" > "미디어 타입"으로 이동합니다.
- "연락 방법 작성"을 클릭하고 다음과 같이 설정합니다:
- 이름: Mattermost (또는 원하는 이름)
- 유형: 웹훅
- 웹훅 URL: Mattermost 웹훅에서 복사한 URL
- 보안: 필요한 경우 SSL/TLS를 사용하도록 설정
- 기타 설정: 필요한 경우 추가 설정을 구성
Administration > Media types > Create media type
Mattermost.py 스크립트 작성
- URL, ICON 변경
vim /usr/lib/zabbix/alertscripts/Mattermost.py
#!/bin/python3
#coding: utf8
import json
import os
import sys
import requests
# Mattermost incoming web-hook URL and user name
URL = "https://matt.sangchul.com/hooks/x8rzdcx56f8ztpiu5i5qq38cwh"
USERNAME = "Zabbix"
ICON = "http://zbx.sangchul.com/zabbix/zabbix-monitoring.png"
LEVELS = ["Warning", "High", "Disaster"]
def send_to_mattermost(webhook, channel, message, username="zabbix", color="#FF2A00", icon="", highlight=False):
# Build our JSON payload and send it as a POST request to the Mattermost incoming web-hook URL
payload = {"icon_url": icon, "attachments": [{"color": color, "text": message}], "channel": channel, "username": username, "icon_emoji": ""}
if highlight:
payload["message"] = ":warning: Cc <!here>"
requests.post(webhook, data={"payload": json.dumps(payload)})
if __name__ == '__main__':
if len(sys.argv) < 4:
print("Usage: python "+sys.argv[0]+" <CHANNEL> <SUBJECT> <MESSAGE>")
sys.exit(1)
## Values received by this script:
# To = sys.argv[1] (Mattermost channel or user to send the message to, specified in the Zabbix web interface; "@username" or "#channel")
# Subject = sys.argv[2] (usually containing either "Problem" or "Resolved")
# Message = sys.argv[3] (whatever message the Zabbix action sends)
# Get the Mattermost channel or user (sys.argv[1]) and Zabbix subject (sys.argv[2])
channel = sys.argv[1]
subject = sys.argv[2]
if "{{OK}}" in subject:
subject=subject.replace("{{OK}}",":white_check_mark:")
elif "{{WARNING}}" in subject:
subject=subject.replace("{{WARNING}}",":warning:")
color = "#00FF13" if "Resolved" in subject else "#FF2A00"
# The message that we want to send to Mattermost is the "subject" value (sys.argv[2] / $subject - that we got earlier)
# followed by the message that Zabbix actually sent us (sys.argv[3])
message = "### "+subject + "\n\n"+sys.argv[3]
# Let's highlight every connected people if the level is serious
highlight = False
for level in LEVELS:
if level in message:
highlight = True
break
# Send notification
send_to_mattermost(URL, channel, message, username=USERNAME, color=color, icon=ICON, highlight=highlight)
github - jirouette/zabbix-mattermost-alertscript : mattermost.py
- 스크립트 파라미터
- {ALERT.SENDTO}
- {ALERT.SUBJECT}
- {ALERT.MESSAGE}
3. 사용자 설정(자빅스 웹 페이지에서 사용자에 미디어 추가)
- "관리" > "유저"로 이동합니다.
- 알람을 받을 사용자를 선택하거나 새 사용자를 생성합니다.
Administration > Media types > Create media type
4. 미디어 설정(자빅스 웹 페이지에서 Message template 수정)
- 사용자를 선택하고 "미디어" 탭을 엽니다.
- "미디어 유형" 필드에서 "Mattermost" 또는 지정한 미디어 유형을 선택합니다.
- "설정" 열에서 사용자에게 알람을 보낼 채널과 다른 옵션을 설정합니다.
Administration > Media tapes > Message template
5. 알람 설정(자빅스 웹 페이지에서 액션 생성/설정)
- Zabbix에서 알람을 설정할 대상(호스트 또는 트리거)에 대한 알람 수신을 선택합니다.
- "액션"에서 이벤트를 처리할 방법을 구성합니다.
- 이벤트가 발생하면 Mattermost로 알람 메시지가 보내집니다.
Configuration > Actions > Create action
- Mattermost 메세지
이러한 설정 후, Zabbix 알람 이벤트가 발생하면 Mattermost 채널로 메시지가 전송됩니다. 이를 통해 Zabbix 모니터링 시스템의 알람을 Mattermost로 직접 전달하여 관리자 및 팀원들이 신속하게 대응할 수 있습니다.
'리눅스' 카테고리의 다른 글
[리눅스] Zabbix 대규모 IT 인프라 구성 (0) | 2020.06.22 |
---|---|
Apache 웹 서버의 MPM(Multi-Processing Module)을 Worker로 전환하는 방법 (0) | 2020.06.21 |
zabbix_get 명령어(zabbix get) (0) | 2020.06.18 |
CentOS 7에서 YUM 패키지 매니저를 사용하여 Apache, PHP, MySQL(APM)를 설치하는 방법 (0) | 2020.06.16 |
[리눅스] Zabbix(자빅스) 그래프 한글깨짐 해결하기 (0) | 2020.06.16 |