Docker 로 Zabbix 환경구축
Docker 환경에서 Zabbix 설치
1. Mysql 인스턴스를 생성합니다.
docker run –name mysql-server -t
-e MYSQL_DATABASE=”zabbix“
-e MYSQL_USER=”zabbix“
-e MYSQL_PASSWORD=’zabbix123‘
-e MYSQL_ROOT_PASSWORD=’root123‘
-d mysql:5.7
–character-set-server=utf8 –collation-server=utf8_bin
2. zabbix-java-gateway 인스턴트를 생성합니다.
docker run –name zabbix-java-gateway -t -d zabbix/zabbix-java-gateway:latest
3.zabbix-server-mysql 인스턴트를 생성하고 생성된 데이터베이스를 연결해줍니다.
docker run –name zabbix-server-mysql -t
-e DB_SERVER_HOST=“mysql-server“
-e MYSQL_DATABASE=”zabbix“
-e MYSQL_USER=”zabbix“
-e MYSQL_PASSWORD=’zabbix123‘
-e MYSQL_ROOT_PASSWORD=’root123‘
-e ZBX_JAVAGATEWAY=”zabbix-java-gateway”
–link mysql-server:mysql
–link zabbix-java-gateway:zabbix-java-gateway
-p 10051:10051
-d zabbix/zabbix-server-mysql:latest
4. zabbix-web-nginx-mysql인스턴트를 생성합니다.
docker run –name zabbix-web-nginx-mysql -t
-e DB_SERVER_HOST=”mysql-server”
-e MYSQL_DATABASE=”zabbix”
-e MYSQL_USER=”zabbix”
-e MYSQL_PASSWORD=’zabbix123′
-e MYSQL_ROOT_PASSWORD=’root123′
–link mysql-server:mysql
–link zabbix-server-mysql:zabbix-server
-p 8088:8080
-d zabbix/zabbix-web-nginx-mysql:latest
5. zabbix-agent를 생성합니다.
docker run –name zabbix_agent
–link zabbix-server-mysql:zabbix-server
-e ZBX_HOSTNAME=”Zabbix server”
-e ZBX_SERVER_PORT=”10051″
-e ZBX_SERVER_HOST=”172.17.0.1”
-p 10050:10050 -d zabbix/zabbix-agent:latest
ip:8088을 입력하면 Zabbix 사이트가 열립니다.
Zabbix 에서 미디어 연동(Slack / Wechat)
Slack
1. Slack Workspace에서“zabbix_alert” 채널을 생성합니다.
2. Slack api 사이트에서 App을 생성합니다.
URL: https://api.slack.com/apps
Zabbix Message는 새로 생성된 앱네임.
Incoming Webhooks, Bots, Permissions을 설정합니다.
Incoming Webhooks를 클릭하고 Off 를 On 으로 설정하여 줍니다.
스크롤을 내려서 “Bot Token Scopes”에서 “chat:write”권한을 추가합니다.
Slack 의 #zabbix_alert 채널에서 알람메세지 전송된것을 확인할수 있습니다.
설정을 추가하고 “reinstall”을 진행하여야 합니다.
다시 슬랙에 돌아가서
1. 위챗에서 “기업위챗”을 신청해야 됩니다.
(신청후 “部门ID”가 중요합니다.)
신청 URL: https://work.weixin.qq.com/wework_admin/register_wx
2. 인원 추가할때 “帐号”가 중요합니다.
3. “应用管理”에서 앱을 추가합니다.
“自建”에서 “创建应用”을 클릭하고 해당 설정을 진행합니다.
4.이미 생성된 “Zabbix_Alert”앱을 클릭하면 아래와 같습니다.
여기서 “AgentId”와 “Secret” 설정을 저장해야 합니다.
“可见范围”에 해당되는 분한테만 알람메세지가 전송됩니다.
5.“我的企业”에서 아래에 있는 “企业ID”도 저장해야 합니다.
(제일 밑부분에 있습니다. )
6.Wechat API 테스트를 진행합니다.
URL: https://open.work.weixin.qq.com/wwopen/devtool/interface/combine
“建立连接” –〉 “获取access_token”을 클릭하면 위와 같은 화면이 나옵니다.
corpid에 “企业ID”,corpsecret에 “secret”를 입력하고 “调用接口”를 클릭합니다.
결과가 “status: HTTP/1.1 200 OK” 가 나오면 사용할수 있습니다.
7. Zabbix-server-mysql 컨테이너에 연결합니다.
# docker exec -it –user=root zabbix-server-mysql /bin/bash
8. Python3 환경을 설치하여 줍니다.
# apk add –no-cache python3 python3-dev
# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# python3 get-pip.py
# pip install requests
9. 실행할 스크립트를 Zabbix의 설정된 폴더위치로 저장합니다.
# cd /usr/lib/zabbix/alertscripts/
# git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
# cp Zabbix-Alert-WeChat/wechat.py .
10. 다운된 스크립트는 python2.7환경에서 사용될수 있으며 python3에 맞게 수정합니다.
9. reload(sys) 10. sys.setdefaultencoding('utf-8') 77. print Status
을 아래와 같이 수정하여 줍니다.
9. import importlib,sys
10. importlib.reload(sys)
77. print(Status)
그리고 해당 “企业微信”정보를 수정합니다.
Corpid = “wx9a2a83645b3ff65”
# CorpID에 “企业ID”를 입력합니다.
Secret = “26dVDSQhU7X6s0bmYCF9-lZb3myxlbvGZx2bW_NKFE“
# Secret를 입력합니다.
Agentid = “1”
# 应用ID 를 입력합니다.
Partyid = “1”
# 部门ID를 입력합니다.
11. 해당 정보 수정후 메세지 전송 테스트를 진행합니다.
# ./wechat.py dg2time hello hello
wechat.py → 실행해야 할 파일
dg2time → 위에 설정되여 있는 나의 帐号
hello hello → 각각 제목 과 내용입니다.
위와 같이 나오면 메세지 전송 성공입니다.
12. 다시 Zabbix 화면에서 Administrator → Media Type → Create media type로 위챗 알림 방식을 추가합니다.
Media type에서 “Type”은 “Script”, “Script name”은 위의 파일“wechat.py”를 입력합니다.
“Script parameters”에서 위 이미지와 같이 입력합니다.
“Message templates”를 원하시는 대로 설정합니다. 추가뒤 테스트를 진행합니다.
위와 같이 나오면 테스트 성공입니다.
13. Wechat 알림메신저를 전송할 유저를 추가합니다.
14. action을 추가합니다.
“Configuration” → Actions” → “Operations” 에서 위와 같이 추가 합니다.
(자사한 사항은 아래 이미지입니다. )
15. Trigger 이 작동된후 Action 결과를 로그에서 확인할수 있습니다.
같은 시간대에 “企业微信”에서 메세지 받은것을 확인할수 있습니다.
Category: 솔루션/IT기타