Slack으로 알람을 보내기위해서는 Zabbix 서버에서 Slack 스크립트를 생성해줘야 한다.
AlertScriptsPath에 설정되어있는 경로 확인
> vi /etc/zabbix/zabbix_server.conf
514 AlertScriptsPath=/usr/lib/zabbix/alertscripts
알람 스크립트 생성
2-1. 스크립트 생성
> cd /usr/lib/zabbix/alertscripts
> vi slack.sh
#!/bin/sh
webhook_url=$1
message=$2
curl -k -X POST -d "payload={\"text\":\"$message\"}" $webhook_url
2-2. 권한 수정
chmod 755 slack.sh
User에 Slack 알람설정
채널의 Webhook URL 생성
Media Type 설정
var req = new CurlHttpRequest();
params = JSON.parse(value);
req.AddHeader('Content-Type: application/x-www-form-urlencoded');
Zabbix.Log(127, 'webhook request value='+value);
req.Post('여기에 복사했던 Slack의 WebHook URL을 넣어주세요',
'payload='+value
);
Zabbix.Log(127, 'response code: '+req.Status());
return JSON.stringify({
'tags': {
'delivered': 'slack'
}
});
URL을 붙여넣고 Apply
1-4. 알람 테스트
1-4-1. 테스트를 위한 Slack의 Parameters 수정
[{"blocks":[{"type":"section","text":{"type":"mrkdwn","text":"{ALERT.MESSAGE}"}}]
1-4-2. 'Media Type'의 맨 우측의 Test 클릭
text에 원하는 텍스트 입력
1-4-3. Slack에서 메시지 확인
1-4-4. 'text' Parameters에 Value 입력
{ALERT.SUBJECT}\r\n{ALERT.MESSAGE}
Action 설정
2-1. 기본 Slack Action 활성화 ('Report problems to Zabbix administrators')
2-2. Conditions 추가
이제 Zabbix에서 Average 이상의 Problem이 발생하면 Trigger가 Action을 발생시키고 Action에 연결되어있는 Slack Web Hook이 작동되어서 Slack으로 메시지를 보내게 된다. 바로 아래처럼 말이다.
위의 메시지는 Severity가 Information인데 메시지가 발송되었다. 잠시 테스트 목적으로 어떠한 Problem이 발생해도 Action을 발생시키게끔 설정한것이다.