zabbix報(bào)警功能---觸發(fā)器/動(dòng)作
動(dòng)作: 指定將報(bào)警信息發(fā)送給誰(shuí)/定義報(bào)警的信息/定義報(bào)警的類型(郵件 微信 電話)
觸發(fā)器: 設(shè)定某個(gè)監(jiān)控項(xiàng)報(bào)警的閾值條件,可以實(shí)現(xiàn)報(bào)警提示(條件表達(dá)式),默認(rèn)頁(yè)面提示報(bào)警
報(bào)警方式:
- 頁(yè)面提示信息報(bào)警
- 頁(yè)面聲音提示報(bào)警
- 郵件信息報(bào)價(jià)
- 微信功能報(bào)警
- 短信報(bào)警/電話報(bào)警
zabbix_server的配置可以看我之前的文章
http://www.itdecent.cn/p/7d798423ec58
zabbix_agent的配置也看一參考我之前的文章
這里我們找臺(tái)主機(jī)做了nginx服務(wù)
http://www.itdecent.cn/p/a6c3a551f2ec
[root@web01 ~]# ps -ef | grep [n]ginx
root 1124 1 0 5月15 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
czq 1125 1124 0 5月15 ? 00:00:00 nginx: worker process
czq 1126 1124 0 5月15 ? 00:00:00 nginx: worker process
[root@web01 ~]# ps -ef | grep -c [n]ginx
3
可以看到nginx服務(wù)啟動(dòng)時(shí),是有會(huì)有3個(gè)相關(guān)進(jìn)程的
因此,我們可以編寫zabbix_agent配置文件添加自定義監(jiān)控文件,然后在再web界面設(shè)置一個(gè)判斷,當(dāng)進(jìn)程小于3時(shí),也就是服務(wù)停止時(shí),就會(huì)通過(guò)觸發(fā)器觸發(fā)報(bào)警
[root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@web01 zabbix_agentd.d]# cat web_server.conf
UserParameter=web_state,ps -ef | grep -c [n]ginx
[root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent ##重啟zabbix_agent服務(wù)
在zabbix_server命令行測(cè)試
[root@zabbix ~]# zabbix_get -s 172.16.210.52 -k 'web_state' ##當(dāng)調(diào)用到這個(gè)鍵值時(shí),能給出nginx的進(jìn)程數(shù)量
3
第一步: 創(chuàng)建監(jiān)控項(xiàng)
配置------主機(jī)---對(duì)應(yīng)主機(jī)的監(jiān)控項(xiàng)

點(diǎn)擊
創(chuàng)建監(jiān)控項(xiàng)
設(shè)置好對(duì)應(yīng)的值后,點(diǎn)擊
添加
第二步:創(chuàng)建觸發(fā)器
配置 ----主機(jī)----選擇相應(yīng)監(jiān)控主機(jī)觸發(fā)器 ---創(chuàng)建觸發(fā)器

點(diǎn)擊
添加
點(diǎn)擊
添加選擇對(duì)應(yīng)的監(jiān)控項(xiàng),和設(shè)置好觸發(fā)條件點(diǎn)擊
插入
`{web01:server_state[80].last()}<=2`
{監(jiān)控主機(jī)名稱:鍵值.調(diào)用的表達(dá)式函數(shù)}<=2
表達(dá)式總結(jié):
last( ) 收集到最新信息(數(shù)值) ***\*\*
max( ) 在一定周期內(nèi),收集到的最大值
min( ) 在一定周期內(nèi),收集到的最小值
diff() 在一定時(shí)間內(nèi),判斷收集到的信息是否不同
change() 在一定時(shí)間內(nèi),判斷收集到的信息是否不同
avg() 取一段時(shí)間的平均值

點(diǎn)擊
更新
頁(yè)面報(bào)警測(cè)試:
頁(yè)面正常

把zabbix_agent的nginx停掉
[root@web01 ~]# systemctl stop nginx
頁(yè)面出現(xiàn)報(bào)錯(cuò)信息

把服務(wù)重新啟動(dòng)
[root@web01 ~]# systemctl restart nginx
報(bào)警信息消失

聲音報(bào)警
右上角的小人頭---正在發(fā)送消息


勾選
前端消息中,再點(diǎn)擊更新可以嘗試重啟nginx再關(guān)閉,回到web界面就能聽到聲音
-_-因?yàn)槭菍懳臋n,你們聽不到聲音,就不重啟服務(wù)演示咯~~
郵件信息報(bào)警
1.開啟動(dòng)作欄
配置 ---動(dòng)作 ---將默認(rèn)動(dòng)作進(jìn)行開啟

將
停用的點(diǎn)亮
2.建立和郵箱的關(guān)系
管理 ----報(bào)警媒介類型 ---創(chuàng)建媒介類型



填寫好相關(guān)信息就可以點(diǎn)擊
添加了
3.定義接受報(bào)警的郵件地址
點(diǎn)擊右上角的小人頭

點(diǎn)擊
添加
再點(diǎn)擊添加

點(diǎn)擊更新
4.測(cè)試
停掉nginx
[root@web01 ~]# systemctl stop nginx



三個(gè)用戶,均已收到
微信報(bào)警
1.注冊(cè)企業(yè)微信,并進(jìn)行配置

選擇一種加入方式并加入

成員加入后,點(diǎn)擊通訊錄可查看加入的成員

點(diǎn)擊
應(yīng)用與小程序,再點(diǎn)擊創(chuàng)建應(yīng)用
設(shè)置好圖標(biāo)和名稱可見范圍后,點(diǎn)擊
創(chuàng)建應(yīng)用
收集相關(guān)程序代理id和密鑰和企業(yè)id


程序代理id: 1000003
程序密鑰: nR0WyfP7251_jg6vOSQ4SpTrZlrWS-SVm_2nyrXTf6Y
企業(yè)id:ww7a34cccfb9fd932b
2.編寫報(bào)警腳本測(cè)試(python)
在zabbix_server端找到腳本存放路徑
[root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts ##這條就是存放腳本的路徑
編寫腳本,填寫對(duì)應(yīng)的企業(yè)和程序信息
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix alertscripts]# cat weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
corpid='ww7a34cccfb9fd932b' ##填寫企業(yè)微信id
appsecret='nR0WyfP7251_jg6vOSQ4SpTrZlrWS-SVm_2nyrXTf6Y' ##填寫小程序密碼
agentid=1000003 ##填寫小程序代理id
#獲取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#發(fā)送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message) ##發(fā)送格式是帳號(hào) + 主題 + 內(nèi)容
腳本執(zhí)行語(yǔ)法格式: 帳號(hào) + 主題 + 內(nèi)容
用戶名可以在通訊錄找到

測(cè)試腳本:
[root@zabbix alertscripts]# chmod +x weixin.py ##添加執(zhí)行權(quán)限
[root@zabbix alertscripts]# ./weixin.py ChenZhengQiang 晚飯 今晚6.吃飯不
Traceback (most recent call last):
File "./weixin.py", line 3, in <module>
import requests
ImportError: No module named requests ##發(fā)現(xiàn)報(bào)錯(cuò)
出現(xiàn)報(bào)錯(cuò):ImportError: No module named requests,缺少requests模塊
報(bào)錯(cuò)解決:
[root@zabbix alertscripts]# yum install -y python-pip ##安裝python包管理工具
[root@zabbix alertscripts]# pip install requests ##安裝requests模塊
Collecting requests
Downloading https://files.pythonhosted.org/packages/1a/70/1935c770cb3be6e3a8b78ced23d7e0f3b187f5cbfab4749523ed65d7c9b1/requests-2.23.0-py2.py3-none-any.whl (58kB)
100% |████████████████████████████████| 61kB 56kB/s
Collecting chardet<4,>=3.0.2 (from requests)
Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
100% |████████████████████████████████| 143kB 18kB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
Downloading https://files.pythonhosted.org/packages/e1/e5/df302e8017440f111c11cc41a6b432838672f5a70aa29227bf58149dc72f/urllib3-1.25.9-py2.py3-none-any.whl (126kB)
100% |████████████████████████████████| 133kB 25kB/s
Collecting idna<3,>=2.5 (from requests)
Downloading https://files.pythonhosted.org/packages/89/e3/afebe61c546d18fb1709a61bee788254b40e736cff7271c7de5de2dc4128/idna-2.9-py2.py3-none-any.whl (58kB)
100% |████████████████████████████████| 61kB 26kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading https://files.pythonhosted.org/packages/57/2b/26e37a4b034800c960a00c4e1b3d9ca5d7014e983e6e729e33ea2f36426c/certifi-2020.4.5.1-py2.py3-none-any.whl (157kB)
100% |████████████████████████████████| 163kB 16kB/s
Installing collected packages: chardet, urllib3, idna, certifi, requests
Successfully installed certifi-2020.4.5.1 chardet-3.0.4 idna-2.9 requests-2.23.0 urllib3-1.25.9
You are using pip version 8.1.2, however version 20.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command. ##安裝成功
[root@zabbix alertscripts]#
再次測(cè)試:
[root@zabbix alertscripts]# ./weixin.py ChenZhengQiang 晚飯 今晚6.吃飯不
成功收到測(cè)試信息!

3.回到zabbix的web管理界面修改添加報(bào)警媒介
管理---報(bào)警媒介類型--創(chuàng)建媒介類型

填寫好對(duì)應(yīng)的信息再點(diǎn)擊
更新
配置接收微信的人員
點(diǎn)擊小人頭---報(bào)警媒介 ----添加

點(diǎn)擊添加

點(diǎn)擊更新

4.測(cè)試微信報(bào)警:
把zabbix_agent的nginx服務(wù)停掉
[root@web01 ~]# systemctl stop nginx
發(fā)現(xiàn)報(bào)錯(cuò)
這是臨時(shí)生成的日志沒(méi)有寫入權(quán)限

解決辦法:
在zabbix_server端更改日志所主
[root@zabbix ~]# chown zabbix /tmp/weixin.log
再次測(cè)試
[root@web01 ~]# systemctl restart nginx ##先恢復(fù)
[root@web01 ~]# systemctl stop nginx ##再停掉
報(bào)警成功!

電話和短信報(bào)警
1.利用第三方電話報(bào)警平臺(tái)
1).利用阿里大魚(收費(fèi))
https://www.aliyun.com/product/sms?spm=a3142.7791109.0.0.34691fd2OVGqAY
2)利用onealert發(fā)送報(bào)警
https://caweb.aiops.com/#/integrate/monitor
這里我們使用onealert
配置分派策略

點(diǎn)擊
保存
設(shè)置通知策略
配置---新建通知

設(shè)置好合適的信息,再點(diǎn)擊
保存
選擇監(jiān)控工具
集成---zabbix

選擇zabbix

點(diǎn)擊
保存并獲取應(yīng)用key
2.安裝onealert_agent

回到zabbix服務(wù)端的命令行
- 進(jìn)入zabbix腳本目錄
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
? 2.獲取alert agent包
[root@zabbix ~]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz
3.安裝配置alert
[root@zabbix alertscripts]# tar -xzf ca_zabbix_release-2.1.0.tar.gz
[root@zabbix alertscripts]# cd cloudalert/bin
[root@zabbix bin]# bash install.sh 19a0cce0-fa5b-1f71-04f1-f4786f11525f ##開始安裝
./log.sh:行6: /usr/lib/zabbix/alertscripts/cloudalert/bin/cloudalert.conf: 沒(méi)有那個(gè)文件或目錄
start to create config file...
Zabbix管理地址: http://172.16.210.56/zabbix/ ##輸入zabbixweb管理進(jìn)入地址
Zabbix管理員賬號(hào): Admin ##輸入管理員帳號(hào)
Zabbix管理員密碼: ##輸入管理員密碼

3.查看web界面相關(guān)媒介和動(dòng)作有沒(méi)有生產(chǎn)
配置---動(dòng)作

出現(xiàn)一個(gè)
cloudalert action的動(dòng)作,說(shuō)明我們的安裝是很成功的.然后我們也可以把默認(rèn)的動(dòng)作給禁用掉
報(bào)警媒介也會(huì)出現(xiàn)一個(gè)
cloudalert action
4.測(cè)試
[root@web01 ~]# systemctl stop nginx
在動(dòng)作日志查看,發(fā)現(xiàn)已送達(dá),但是我們選擇的是免費(fèi)版的,所以收不到郵件.....
