zabbix的各種報(bào)警機(jī)制實(shí)戰(zhàn)

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)警方式:

  1. 頁(yè)面提示信息報(bào)警
  2. 頁(yè)面聲音提示報(bào)警
  3. 郵件信息報(bào)價(jià)
  4. 微信功能報(bào)警
  5. 短信報(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)

image.png

點(diǎn)擊創(chuàng)建監(jiān)控項(xiàng)
image.png

設(shè)置好對(duì)應(yīng)的值后,點(diǎn)擊添加
image.png

第二步:創(chuàng)建觸發(fā)器

配置 ----主機(jī)----選擇相應(yīng)監(jiān)控主機(jī)觸發(fā)器 ---創(chuàng)建觸發(fā)器

image.png

點(diǎn)擊添加
image.png

點(diǎn)擊添加
選擇對(duì)應(yīng)的監(jiān)控項(xiàng),和設(shè)置好觸發(fā)條件點(diǎn)擊插入
image.png

`{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í)間的平均值

image.png

點(diǎn)擊更新

頁(yè)面報(bào)警測(cè)試:

頁(yè)面正常


image.png

把zabbix_agent的nginx停掉

[root@web01 ~]# systemctl stop nginx

頁(yè)面出現(xiàn)報(bào)錯(cuò)信息


image.png

把服務(wù)重新啟動(dòng)

[root@web01 ~]# systemctl restart nginx 

報(bào)警信息消失


image.png

聲音報(bào)警

右上角的小人頭---正在發(fā)送消息

image.png

image.png

勾選前端消息中,再點(diǎn)擊更新
可以嘗試重啟nginx再關(guān)閉,回到web界面就能聽到聲音
-_-因?yàn)槭菍懳臋n,你們聽不到聲音,就不重啟服務(wù)演示咯~~

郵件信息報(bào)警

1.開啟動(dòng)作欄

配置 ---動(dòng)作 ---將默認(rèn)動(dòng)作進(jìn)行開啟

image.png

停用的點(diǎn)亮
image.png

2.建立和郵箱的關(guān)系

管理 ----報(bào)警媒介類型 ---創(chuàng)建媒介類型

image.png

image.png

image.png

填寫好相關(guān)信息就可以點(diǎn)擊添加

3.定義接受報(bào)警的郵件地址

點(diǎn)擊右上角的小人頭

image.png

點(diǎn)擊添加
image.png

再點(diǎn)擊添加

image.png

點(diǎn)擊更新

4.測(cè)試

停掉nginx

[root@web01 ~]# systemctl stop nginx
image.png

image.png

image.png

三個(gè)用戶,均已收到

微信報(bào)警

1.注冊(cè)企業(yè)微信,并進(jìn)行配置

https://work.weixin.qq.com/wework_admin/loginpage_wx?redirect_uri=https://work.weixin.qq.com/wework_admin/frame#profile
點(diǎn)擊成員加入

image.png

選擇一種加入方式并加入


image.png

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

image.png

點(diǎn)擊應(yīng)用與小程序,再點(diǎn)擊創(chuàng)建應(yīng)用
image.png

設(shè)置好圖標(biāo)和名稱可見范圍后,點(diǎn)擊創(chuàng)建應(yīng)用
image.png

收集相關(guān)程序代理id和密鑰和企業(yè)id


image.png

image.png

程序代理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)容
用戶名可以在通訊錄找到

image.png

測(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è)試信息!


image.png

3.回到zabbix的web管理界面修改添加報(bào)警媒介

管理---報(bào)警媒介類型--創(chuàng)建媒介類型

image.png

填寫好對(duì)應(yīng)的信息再點(diǎn)擊更新
image.png

配置接收微信的人員
點(diǎn)擊小人頭---報(bào)警媒介 ----添加

image.png

點(diǎn)擊添加

image.png

點(diǎn)擊更新

image.png

4.測(cè)試微信報(bào)警:

把zabbix_agent的nginx服務(wù)停掉

[root@web01 ~]# systemctl stop nginx

發(fā)現(xiàn)報(bào)錯(cuò)
這是臨時(shí)生成的日志沒(méi)有寫入權(quán)限


image.png

解決辦法:
在zabbix_server端更改日志所主

[root@zabbix ~]# chown zabbix /tmp/weixin.log

再次測(cè)試

[root@web01 ~]# systemctl restart nginx  ##先恢復(fù)
[root@web01 ~]# systemctl stop nginx   ##再停掉

報(bào)警成功!


image.png

電話和短信報(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

配置分派策略

image.png

點(diǎn)擊保存

設(shè)置通知策略

配置---新建通知

image.png

設(shè)置好合適的信息,再點(diǎn)擊保存
image.png

選擇監(jiān)控工具

集成---zabbix

image.png

選擇zabbix
image.png

點(diǎn)擊保存并獲取應(yīng)用key

2.安裝onealert_agent

image.png

回到zabbix服務(wù)端的命令行

  1. 進(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管理員密碼:   ##輸入管理員密碼
image.png

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

配置---動(dòng)作

image.png

出現(xiàn)一個(gè)cloudalert action的動(dòng)作,說(shuō)明我們的安裝是很成功的.然后我們也可以把默認(rèn)的動(dòng)作給禁用掉
image.png

報(bào)警媒介也會(huì)出現(xiàn)一個(gè)cloudalert action

4.測(cè)試

[root@web01 ~]# systemctl stop nginx

在動(dòng)作日志查看,發(fā)現(xiàn)已送達(dá),但是我們選擇的是免費(fèi)版的,所以收不到郵件.....


image.png

大學(xué)生,沒(méi)錢買企業(yè)版的,將就一下咯~~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容