Slack Incoming Webhook과 slack.sh 알림 스크립트로 Zabbix 알림을 Slack에 보내도록 구성했습니다. 웹 시나리오로 웹 서버를 1분마다 확인하고, 실패하면 트리거와 액션이 동작해 장애와 복구 알림이 Slack으로 옵니다.

1. 구성
| 구성 요소 | 역할 |
| Slack Incoming Webhook | Slack 채널로 메시지를 받을 URL |
| slack.sh | Zabbix가 호출하는 알림 스크립트 |
| 웹 시나리오 | 웹 페이지를 주기적으로 요청해 상태 확인 |
| 트리거 | 웹 시나리오 실패 시 장애 발생 |
| 액션 | 장애·복구 시 Slack으로 알림 전송 |
Zabbix 서버 설치는 이전 글을 참고해 주세요.
[CentOS] 1. zabbix 설치하기
오늘은 zabbix를 설치해보는 시간을 가져보도록 하겠습니다. zabbix는 먼저 시스템, 네트워크를 모니터링할 수 있는 오픈소스 툴입니다. 설치환경은 CentOS7에서 진행하겠습니다. 먼저 apache와 php를
alsrbdmsco0409.tistory.com
2. Slack Webhook 만들기
아래 페이지에서 Incoming Webhook을 추가합니다. 지금은 Slack 앱 설정 화면에서 Incoming Webhooks를 켜는 방식으로 바뀌었을 수 있습니다.
시작하기
팀과 함께 무료로 Slack 체험해보기 시작하려면 이메일 주소를 입력하세요.
slack.com
알림을 보낼 채널을 선택하고 수신 웹후크 통합 앱 추가를 누릅니다.

생성된 웹후크 URL을 기록해 둡니다.

웹후크 URL
3. 알림 스크립트 설치
3.1 slack.sh 작성
아래 저장소의 slack.sh를 사용했습니다. 스크립트 맨 위의 url과 username을 본인의 웹후크 주소와 표시할 이름으로 바꿉니다.
ericoc/zabbix-slack-alertscript
Zabbix AlertScript for Slack.com chat. Contribute to ericoc/zabbix-slack-alertscript development by creating an account on GitHub.
github.com
Zabbix 알림 스크립트 디렉터리에 파일을 만들고 권한을 설정합니다. 저는 메모장에서 수정한 뒤 SSH로 옮겼습니다.
vi /usr/lib/zabbix/alertscripts/slack.sh
chown zabbix:zabbix /usr/lib/zabbix/alertscripts/slack.sh
chmod 755 /usr/lib/zabbix/alertscripts/slack.sh
3.2 스크립트 테스트
bash /usr/lib/zabbix/alertscripts/slack.sh '#채널이름' 'Alert : test' 'SERVER TEST OK'
Slack으로 메시지가 오면 성공입니다.

테스트 알림
4. 호스트 등록
설정 > 호스트에서 오른쪽 위의 호스트 작성을 누릅니다.

구별하기 쉬운 호스트 이름을 입력하고, 기존 그룹을 고르거나 새 호스트 그룹을 만듭니다.

템플릿 탭에서 Template OS Linux by Zabbix agent를 선택하고 추가합니다.


WEB 호스트가 등록되었습니다.

5. 웹 시나리오 작성
등록한 호스트의 웹을 눌러 웹 시나리오를 만듭니다.

이름에는 웹 주소를 입력합니다. 갱신 간격과 시도 횟수는 몇 분마다 몇 번 요청할지를 정하는 옵션으로, 저는 1분마다 확인하도록 했습니다.

스텝 탭에서 요청할 URL과 기대하는 응답을 설정하고 추가합니다.

웹 시나리오 스텝
모니터링 > 웹에 시나리오가 등록되고, 1분 정도 지나면 상태가 정상으로 표시됩니다.


웹 시나리오 정상
6. 트리거 작성
설정 > 호스트 > (호스트) > 트리거로 이동합니다. 저는 VMware라는 호스트에서 만들었습니다.


트리거 작성을 누르고 이름, 심각도(심각한 장애), 조건식을 입력합니다.

트리거 설정
조건식은 웹 시나리오가 실패하면 장애가 되도록 작성합니다. host와 웹 주소는 본인 환경에 맞게 바꿉니다.
{host:web.test.fail[모니터링할 웹 주소].last(0)}>0
# 예시
{VMware:web.test.fail[www.google.com].last(0)}>0
7. 알림 받을 사용자 설정
관리 > 유저에서 Admin을 엽니다.

연락 방법에서 종류로 slack.sh 스크립트를 쓰는 미디어 타입을 선택하고, 수신처에 알림 받을 Slack 채널을 입력합니다.

미디어 타입은 관리 > 미디어 타입에서 스크립트 이름을 slack.sh로, 파라미터를 {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} 순서로 지정해 만들어 둡니다.
연락 방법이 추가되었습니다.

8. 액션 작성
설정 > 액션에서 액션 작성을 누르고 이름을 Report to Slack으로 정합니다.


오퍼레이션 탭에서 알림 대상과 방법을 지정해 추가합니다.


오퍼레이션 추가
복구 시 실행 내용은 관계자 전원에게 통지로 설정하고 추가합니다.

액션이 추가되고 활성화되었습니다.

9. 결과
웹 서버를 내려 트리거를 발생시킨 뒤 다시 올리자, 장애와 복구 알림이 Slack으로 왔습니다.

Slack으로 받은 장애·복구 알림
10. 정리
- slack.sh를 alertscripts 디렉터리에 두고 zabbix 소유, 실행 권한을 줍니다.
- 웹 시나리오 실패를 트리거 조건으로 걸고, 액션에서 Slack 미디어로 알림을 보냅니다.
- 복구 알림도 설정해 두면 장애 종료 시점을 바로 알 수 있습니다.
'Server & OS > Monitoring' 카테고리의 다른 글
| [ZABBIX] "More than 75% used in the configuration cache" 알림 해결 (0) | 2022.11.05 |
|---|---|
| [ZABBIX] Linux에 Zabbix Agent 5.4 설치 (0) | 2022.10.08 |
| [ZABBIX] zabbix-backup 스크립트로 설정 DB 백업하고 다른 서버에 복원 (0) | 2022.10.07 |
| [Zabbix] 그래프 한글 폰트 깨짐 해결 (0) | 2021.07.30 |
| [Zabbix] CentOS 7에 Zabbix 4.4 설치 (0) | 2021.02.18 |