zabbix的各种报警机制实战

zabbix报警功能---触发器/动作

动作: 指定将报警信息发送给谁/定义报警的信息/定义报警的类型(邮件 微信 电话)
触发器: 设定某个监控项报警的阈值条件,可以实现报警提示(条件表达式),默认页面提示报警

报警方式:

  1. 页面提示信息报警
  2. 页面声音提示报警
  3. 邮件信息报价
  4. 微信功能报警
  5. 短信报警/电话报警

zabbix_server的配置可以看我之前的文章

https://www.jianshu.com/p/7d798423ec58

zabbix_agent的配置也看一参考我之前的文章

这里我们找台主机做了nginx服务

https://www.jianshu.com/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服务启动时,是有会有3个相关进程的
因此,我们可以编写zabbix_agent配置文件添加自定义监控文件,然后在再web界面设置一个判断,当进程小于3时,也就是服务停止时,就会通过触发器触发报警

[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服务

在zabbix_server命令行测试

[root@zabbix ~]# zabbix_get -s 172.16.210.52 -k 'web_state' ##当调用到这个键值时,能给出nginx的进程数量
3

第一步: 创建监控项

配置------主机---对应主机的监控项

image.png

点击创建监控项
image.png

设置好对应的值后,点击添加
image.png

第二步:创建触发器

配置 ----主机----选择相应监控主机触发器 ---创建触发器

image.png

点击添加
image.png

点击添加
选择对应的监控项,和设置好触发条件点击插入
image.png

`{web01:server_state[80].last()}<=2`

{监控主机名称:键值.调用的表达式函数}<=2

表达式总结:

last( )   收集到最新信息(数值) ***\*\*

max( )   在一定周期内,收集到的最大值

min( )   在一定周期内,收集到的最小值

diff()   在一定时间内,判断收集到的信息是否不同

change()  在一定时间内,判断收集到的信息是否不同

avg()   取一段时间的平均值

image.png

点击更新

页面报警测试:

页面正常


image.png

把zabbix_agent的nginx停掉

[root@web01 ~]# systemctl stop nginx

页面出现报错信息


image.png

把服务重新启动

[root@web01 ~]# systemctl restart nginx 

报警信息消失


image.png

声音报警

右上角的小人头---正在发送消息

image.png

image.png

勾选前端消息中,再点击更新
可以尝试重启nginx再关闭,回到web界面就能听到声音
-_-因为是写文档,你们听不到声音,就不重启服务演示咯~~

邮件信息报警

1.开启动作栏

配置 ---动作 ---将默认动作进行开启

image.png

停用的点亮
image.png

2.建立和邮箱的关系

管理 ----报警媒介类型 ---创建媒介类型

image.png

image.png

image.png

填写好相关信息就可以点击添加

3.定义接受报警的邮件地址

点击右上角的小人头

image.png

点击添加
image.png

再点击添加

image.png

点击更新

4.测试

停掉nginx

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

image.png

image.png

三个用户,均已收到

微信报警

1.注册企业微信,并进行配置

https://work.weixin.qq.com/wework_admin/loginpage_wx?redirect_uri=https://work.weixin.qq.com/wework_admin/frame#profile
点击成员加入

image.png

选择一种加入方式并加入


image.png

成员加入后,点击通讯录可查看加入的成员

image.png

点击应用与小程序,再点击创建应用
image.png

设置好图标和名称可见范围后,点击创建应用
image.png

收集相关程序代理id和密钥和企业id


image.png

image.png

程序代理id: 1000003
程序密钥: nR0WyfP7251_jg6vOSQ4SpTrZlrWS-SVm_2nyrXTf6Y
企业id:ww7a34cccfb9fd932b

2.编写报警脚本测试(python)

在zabbix_server端找到脚本存放路径

[root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts ##这条就是存放脚本的路径

编写脚本,填写对应的企业和程序信息

[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' ##填写企业微信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']

#发送消息

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)  ##发送格式是帐号 + 主题 + 内容

脚本执行语法格式: 帐号 + 主题 + 内容
用户名可以在通讯录找到

image.png

测试脚本:

[root@zabbix alertscripts]# chmod +x weixin.py ##添加执行权限
[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  ##发现报错

出现报错:ImportError: No module named requests,缺少requests模块
报错解决:

[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]# 

再次测试:

[root@zabbix alertscripts]# ./weixin.py ChenZhengQiang 晚饭 今晚6.吃饭不

成功收到测试信息!


image.png

3.回到zabbix的web管理界面修改添加报警媒介

管理---报警媒介类型--创建媒介类型

image.png

填写好对应的信息再点击更新
image.png

配置接收微信的人员
点击小人头---报警媒介 ----添加

image.png

点击添加

image.png

点击更新

image.png

4.测试微信报警:

把zabbix_agent的nginx服务停掉

[root@web01 ~]# systemctl stop nginx

发现报错
这是临时生成的日志没有写入权限


image.png

解决办法:
在zabbix_server端更改日志所主

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

再次测试

[root@web01 ~]# systemctl restart nginx  ##先恢复
[root@web01 ~]# systemctl stop nginx   ##再停掉

报警成功!


image.png

电话和短信报警

1.利用第三方电话报警平台

1).利用阿里大鱼(收费)

https://www.aliyun.com/product/sms?spm=a3142.7791109.0.0.34691fd2OVGqAY

2)利用onealert发送报警

https://caweb.aiops.com/#/integrate/monitor

这里我们使用onealert

配置分派策略

image.png

点击保存

设置通知策略

配置---新建通知

image.png

设置好合适的信息,再点击保存
image.png

选择监控工具

集成---zabbix

image.png

选择zabbix
image.png

点击保存并获取应用key

2.安装onealert_agent

image.png

回到zabbix服务端的命令行

  1. 进入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: 没有那个文件或目录
start to create config file...
Zabbix管理地址: http://172.16.210.56/zabbix/ ##输入zabbixweb管理进入地址
Zabbix管理员账号: Admin ##输入管理员帐号
Zabbix管理员密码:   ##输入管理员密码
image.png

3.查看web界面相关媒介和动作有没有生产

配置---动作

image.png

出现一个cloudalert action的动作,说明我们的安装是很成功的.然后我们也可以把默认的动作给禁用掉
image.png

报警媒介也会出现一个cloudalert action

4.测试

[root@web01 ~]# systemctl stop nginx

在动作日志查看,发现已送达,但是我们选择的是免费版的,所以收不到邮件.....


image.png

大学生,没钱买企业版的,将就一下咯~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355