CentOS 7.6 zabbix5.0监控实现微信告警
zabbix5.0監控實現微信告警
- 一、配置zabbix客戶端
- 1、環境說明
- 2、下載zabbix_agent
- 3、修改配置文件
- 4、啟動zabbix_agentd
- 二、安裝啟動httpd
- 三、監控告警設置
- 1、創建模板
- 2、創建應用集
- 3、創建監控項
- 4、創建觸發器
- 5、創建主機
- 6、為主機應用模板
- 四、設置微信
- 1、注冊企業微信
- 2、創建部門
- 3、創建應用
- 4、調試接口
- 五、微信告警腳本
- 1、安裝python3.6
- 2、編寫告警腳本
- 3、腳本測試
- 六、配置告警媒介
- 1、創建媒介類型:wechat
- 2、配置動作
- 3、應用到用戶
- 七、告警測試
一、配置zabbix客戶端
1、環境說明
服務端配置請看這一篇:CentOS7.6 源碼安裝zabbix5.0及初始化配置(超詳細)
服務端:192.168.245.204
客戶端:192.168.245.203
這里測試基于http服務的告警,如果服務down了就微信通知告警
這里還需要安裝注冊企業微信,請提前安裝好,后面有說明
服務端配置好以后,我們需要配置客戶端,客戶端需要安裝zabbix_agent并啟動才能讓zabbix服務器監控到它
2、下載zabbix_agent
首先下載zabbix_agent,我這里是源碼安裝的
[root@dockertest ~]# wget https://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.13/zabbix_agent-5.0.13-linux-3.0-amd64-static.tar.gz創建一個目錄用于存放文件
[root@dockertest ~]# mkdir /usr/local/zabbix_agent解壓源碼包到zabbix_agent目錄
[root@dockertest ~]# tar xf zabbix_agent-5.0.13-linux-3.0-amd64-static.tar.gz -C /usr/local/zabbix_agent3、修改配置文件
修改配置文件zabbix_agentd.conf
[root@dockertest ~]# cd /usr/local/zabbix_agent/ [root@dockertest zabbix_agent]# vim conf/zabbix_agentd.conf Server=192.168.245.204 ServerActive=192.168.245.204 Hostname=Apache web server UnsafeUserParameters=1制作命令的軟鏈接
[root@dockertest zabbix_agent]# ln -s /usr/local/zabbix_agent/bin/* /usr/local/bin/ [root@dockertest zabbix_agent]# ln -s /usr/local/zabbix_agent/sbin/* /usr/local/sbin/然后需要把配置文件放到/usr/local/etc/zabbix_agentd.conf下否則無法啟動
[root@dockertest zabbix_agent]# cp conf/zabbix_agentd.conf /usr/local/etc/zabbix_agentd.conf還要創建系統用戶和組zabbix否則也無法啟動
[root@dockertest zabbix_agent]# groupadd --system zabbix [root@dockertest zabbix_agent]# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix4、啟動zabbix_agentd
啟動zabbix客戶端程序
[root@dockertest zabbix_agent]# zabbix_agentd [root@dockertest zabbix_agent]# netstat -antp | grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 31625/zabbix_agentd到服務端上去檢查一下能否獲得客戶端的信息
[root@zabbix-server ~]# zabbix_get -s 192.168.245.203 -p 10050 -k system.uname Linux dockertest 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64二、安裝啟動httpd
因為我們監控的是客戶端的http服務,所以安裝apache并啟動
[root@dockertest zabbix_agent]# yum -y install httpd [root@dockertest zabbix_agent]# systemctl start httpd三、監控告警設置
1、創建模板
2、創建應用集
3、創建監控項
4、創建觸發器
5、創建主機
添加被監控端主機的信息
6、為主機應用模板
這邊建議創建模板然后創建主機,然后到主機里去鏈接到模板,這樣比較靈活,因為有可能你要對多個主機應用同一個模板,就不用一個個創建
鏈接好查看應該是這樣的
四、設置微信
服務器設置好以后就開始對微信進行相關設置
1、注冊企業微信
https://work.weixin.qq.com/wework_admin/register_wx
不復雜比較簡單哦!
注冊好了就可以點擊進入后臺管理頁面
2、創建部門
然后選擇管理員賬號就可以了
3、創建應用
4、調試接口
創建好之后需要進行接口的調試,這一步主要就是測試我們之后微信可否能發成功
微信企業號接口調試工具:
https://open.work.weixin.qq.com/wwopen/devtool/interface/combine
調試的時候需要兩樣東西
1、企業id
2、secret
企業微信團隊會給你發消息,點擊“前往查看”
把secret復制到電腦上
五、微信告警腳本
下面就開始編寫微信告警的腳本了
告警腳本存放位置:/usr/local/share/zabbix/alertscripts1、安裝python3.6
因為微信告警腳本是python寫的,所以需要先安裝python,系統預裝python版本是2.7,實踐會報錯找不到模塊
ImportError: No module named 'typing'所以需要安裝python3.6解決,但yum支持不了這么高版本的python,所以這里用源碼安裝python,然后裝requests模塊的時候也不要用系統預裝的pip,用pip3
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-develwget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgztar -xf Python-3.6.4.tgzmkdir -p /usr/local/Python3cd Python-3.6.4/./configure --prefix=/usr/local/python3make && make installln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3cd /usr/local/python3pip3 install requests //requests是一個Python第三方庫,處理URL資源特別方便2、編寫告警腳本
一定要到告警腳本目錄下,把微信的告警腳本放進去,這里是找的網上的版本,自己根據實際情況把重要字段改了下,需要修改的地方后面用#注釋標明了,需要改成自己微信相關的信息
[root@zabbix-server python3]# cd /usr/local/share/zabbix/alertscripts [root@zabbix-server alertscripts]# vim wechat.py #!/usr/bin/python2.7 #_*_coding:utf-8 _*_ #auther:火星小劉import requests,sys,json import urllib3 urllib3.disable_warnings()reload(sys) sys.setdefaultencoding('utf-8')def GetTokenFromServer(Corpid,Secret):Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"Data = {"corpid":Corpid,"corpsecret":Secret}r = requests.get(url=Url,params=Data,verify=False)print(r.json())if r.json()['errcode'] != 0:return Falseelse:Token = r.json()['access_token']file = open('/tmp/zabbix_wechat_config.json', 'w')file.write(r.text)file.close()return Tokendef SendMessage(User,Agentid,Subject,Content):try:file = open('/tmp/zabbix_wechat_config.json', 'r')Token = json.load(file)['access_token']file.close()except:Token = GetTokenFromServer(Corpid, Secret)n = 0Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % TokenData = {"touser": "S*****ie", # 企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。 #"totag": Tagid, # 企業號中的標簽id,群發使用(推薦)"toparty": "2", # 企業號中的部門id,群發時使用。"msgtype": "text", # 消息類型。"agentid": "1000002", # 企業號中的應用id。"text": {"content": Subject + '\n' + Content},"safe": "0"}r = requests.post(url=Url,data=json.dumps(Data),verify=False)while r.json()['errcode'] != 0 and n < 4:n+=1Token = GetTokenFromServer(Corpid, Secret)if Token:Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Tokenr = requests.post(url=Url,data=json.dumps(Data),verify=False)print(r.json())return r.json()if __name__ == '__main__':User = sys.argv[1] # zabbix傳過來的第一個參數Subject = str(sys.argv[2]) # zabbix傳過來的第二個參數Content = str(sys.argv[3]) # zabbix傳過來的第三個參數Corpid = "ww6ba7489884e59b0c" # CorpID是企業號的標識Secret = "Mnzu5QIAKF5zJqg-2N33PDbssY9Kx3RK1XxA8FTNgUk" # Secret是管理組憑證密鑰#Tagid = "1" # 通訊錄標簽IDAgentid = "1000002" # 應用IDPartyid = "2" # 部門IDStatus = SendMessage(User,Agentid,Subject,Content)print Status獲取touser里的用戶賬號:
獲取Partyid:
獲取Agentid:
修改完別忘了加可執行權限
[root@zabbix-server alertscripts]# chmod +x wechat.py3、腳本測試
手動測試一下發一條信息看微信能不能收到
[root@zabbix-server alertscripts]# ./wechat.py S******e test hello /usr/lib/python2.7/site-packages/urllib3/connectionpool.py:769: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.htmlInsecureRequestWarning) {u'access_token': u's3eqGeu6Sr9ZyFsar8ll9TgxInJ9UhYrH6TbyUg9xkI63FrSUjZQYS44hwEVGJP4krUBVP-qrViPwiADf929tBa1oCyRHIwqZkMhuMEboOqgumYql1bTpvphaYJZFcpyfyHq50cLKZiFzudgggJXcgbfGlE5vJHA8gvUHeHeejluQxWO39N40qgTscHOy_eotm-VWFuFBTXB39Yqvph5Sg', u'expires_in': 7200, u'errcode': 0, u'errmsg': u'ok'} {u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'} wechat.py的三個參數: 企業賬號:S*****e 標題:test 內容:hello能收到說明我們微信告警的腳本就沒問題了,可以用了
測試報警之前需要修改一下這個文件的權限:zabbix_wechat_config.json
這個文件是用來存放剛才接口調用的返回結果的
否則之后告警會報沒有權限而無法發送
六、配置告警媒介
1、創建媒介類型:wechat
2、配置動作
3、應用到用戶
然后就可以測試報警啦
七、告警測試
到客戶端上把http服務停掉
[root@dockertest ~]# systemctl stop httpd大概幾秒鐘之后zabbix的主頁就能同步狀態并提示已發送告警
微信收到如下提示:
再到客戶端把http服務開啟,主頁問題就消失了,微信收到如下信息,測試成功
總結
以上是生活随笔為你收集整理的CentOS 7.6 zabbix5.0监控实现微信告警的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络(10): 网络层——网络地址
- 下一篇: NAT技术研究