02.Zabbix自定义监控项
- 1.zabbix自定义监控深入
- 2.zabbix自定义配置阈值
- 3.zabbix自定义告警内容
- 4.zabbix自定义告警方式
- 5.Zabbix自定义告警升级
- 6.zabbix自定义监控图形
- 5.Zabbix自定义监控模板
徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。
个人博客"徐亮伟架构师之路"累计受益数万人。老男孩Linux云计算运维QQ交流群: 384467551 226199307
老男孩教育官网 http://www.oldboyedu.com
1.zabbix自定义监控深入
1.详细介绍基础模板中的监控项, 以及自定义添加监控项中的每一个参数的作用和使用方法。
2.自定义监控tcp11
种状态(传参方式)
[root@zabbix-agent ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-agent ~]# zabbix_agentd.d]# cat -n tcp_state.conf
UserParameter=tcp_state[*],netstat -ant|grep -c $1
[root@zabbix-agent ~]# systemctl restart zabbix-agent
# zabbix-server测试
[root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k tcp_state[LISTEN]
8
3.在zabbixWeb
端进行添加
TCP有11种状态, 如何快速添加监控项,可以对针对我们刚才添加过的监控项进行克隆。
实例演示: 监控tcp的22端口是否处于监听状态,使用Service State
值映射
点击->检测中->最新数据
2.zabbix自定义配置阈值
1.演示取出内存的百分比(取出内存的可用的MB大小 / 总的内存大小 = 实际可用的百分比)
1.定义剩余内存百分比
[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.d/oldboy.conf
UserParameter=Mem_pre,free -m|awk '/^Mem/{print $NF*100/$2}'
[root@web03 ~]# systemctl restart zabbix-agent
2.在ZabbixServer
验证监控项是否可用
[root@ZabbixServer ~]# zabbix_get -s 10.0.0.30 -k 'Mem_pre'
72.1766
3.Zabbix-Web
页面配置监控项
2.自定义单条件触发器,设置内存低于 30% 进行报警
1.创建触发器
2.填写表达式
问题表达式:{Web03-10.0.0.30:Mem_pre.last()}<30
恢复表达式:{Web03-10.0.0.30:Mem_pre.last()}>30
3.压低内存,检查报警邮件(以内存1G为例,使用下面方式进行消耗内存)
dd if=/dev/zero of=/dev/null bs=500M count=1024
3.生产建议:内存低于百分之10加上,swap使用超过百分之5,再次进行监控报警(更精准)
1.增加swap
的监控
[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.d/oldboy.conf
UserParameter=Swap_pre,free -m|awk '/^Swap/{print $3*100/$2}'
[root@web03 ~]# systemctl restart zabbix-agent
2.在ZabbixServer
使用zabbix_get
命令测试
[root@ZabbixServer ~]# zabbix_get -s 10.0.0.30 -k 'Swap_pre'
0
3.在ZabbixWeb
创建监控项
4.基于之前建立的触发器进行修改,修改为多条规则同时满足才触发
{Web03-10.0.0.30:Mem_pre.last()}<30 and {Web03-10.0.0.30:Swap_pre.last()}>1
5.使用dd命令消耗客户端内存(只满足内存低于30%,所以不会进行报警)
dd if=/dev/zero of=/dev/null bs=300M count=1024
6.使用dd命令消耗客户端内存(满足内存低于30%,并且swap使用率超过1%)
dd if=/dev/zero of=/dev/null bs=800M count=1024
7.常用的触发器表达式,常用的函数,触发器表达式参考url
and 并且 or 或者
last() 比对最新的值
avg() 平均值
diff() 比对上一次文件的内容
nodata() 收不到数据进行报警nodata(5m)
(5m) 表示最近5分钟得到值
(#5) 表示最近5次得到的值
3.zabbix自定义告警内容
1.单击配置->动作->事件源->触发器->启用默认的告警通知
2.配置故障报警邮件内容
告警消息内容:
报警主机:{HOST.NAME1}
报警服务: {ITEM.NAME1}
报警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
报警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}
3.配置恢复告警邮件内容
恢复消息内容:
恢复主机:{HOST.NAME1}
恢复服务: {ITEM.NAME1}
恢复Key1:{ITEM.KEY1}:{ITEM.VALUE1}
恢复Key2: {ITEM.KEY2}:{ITEM.VALUE2}
4.最终告警效果如下图所示
4.zabbix自定义告警方式
当监控项超过触发器设定的阈值->触发动作->(发送消息|执行命令)
1.怎么报警-> 2.报警怎么发,发什么内容 -> 报警发给谁
注意:要使SMTP验证选项可用,Zabbix服务器应使用cURL 7.20.0或更高版本
1.单击配置->动作->启用动作
2.单击管理→报警媒介类型,设定发送消息的介质-email
3.配置服务器邮件的发件人,使用邮箱账户和授权密码(注意:不是收件人邮箱)
4.配置收件人接收的邮箱,单击右上角用户->报媒介->添加
5.填写收件人类型, 收件人邮箱,接收报警的级别,最后点击添加,
6.确认没有任何问题,点击更新即可。
7.如果邮箱配置没有任何错误,可以尝试触发报警, 查看邮件是否能收到报警消息
8.如果邮箱配置存在错误,单击报表->动作日志->检查邮箱发送情况
2.实现企业微信报警
1.准备微信报警脚本, 脚本怎么写->脚本放在哪
[root@ZabbixServer ~]# yum install python-pip -y
[root@ZabbixServer ~]# pip install requests
[root@ZabbixServer ~]# cd /usr/lib/zabbix/alertscripts
[root@ZabbixServer alertscripts]#
[root@ZabbixServer alertscripts]# chmod +x weixin.py
[root@ZabbixServer alertscripts]# ./weixin.py WeiXinID Subject Messages
[root@ZabbixServer alertscripts]# rm -f /tmp/weixin.log
2.单击管理->报警媒介类型->创建媒介类型
3.填写微信报警名称, 脚本传入的参数
{ALERT.SENDTO} #发给谁
{ALERT.SUBJECT} #发送的主题
{ALERT.MESSAGE} #发送的内容
4.配置接收的企业微信号(微信号是企业中的微信名称), 单击用户->报警媒介->添加->按如下填写即可
5.测试微信报警
3.实现执行远程命令
5.Zabbix自定义告警升级
随着监控项目的增多, 有一些警告性质的报警可能不需要让领导收到,如果监控项长时间处于一个反复报警的状态时,可能是没有人去解决 也可能是他们无法去解决的时候,再去向上级发送告警 那么zabbix就可以通过它的告警机制去实现 它可以通过自定义时间段,发送消息、命令 从而形成一个梯度的报警机制。通过下图解释梯度报警的设置方法50期-张首富
1.简单的配置一个示例, 剩下的配置一样, 重点在于如何配置"告警升级"和"发送时间的理解
2.整体配置如下
3.计算方式
1) 开始于, 这个是相对一但触发监控, 则立即发送消息
2) 1-2步骤是给运维组发送消息, 每隔5分钟发送一次, 总共2个步骤, 所以发送2次。
3) 3-4步骤是给经理组发送消息, 每隔5分钟发送一次, 总共2个步骤,所以发送2次。
4) 4-5步骤是给总监组发送消息, 每隔5分钟发送一次, 总共2个步骤,所以发送2次。
5)每次的开始时间是如何计算的呢, 第一个立即开始:
1-2, 3-4, 4-5动作的时间间隔是5m, 所以在触发告警发送时间计算是5m+5m+5m=15m
6.zabbix自定义监控图形
1.介绍监控的顺序->应用级->监控项->基于监控项创建触发器->基于监控项创建图形
2.基于监控项进行绘图
3.将多张图形整合为一张图形, 简称聚合图形
3.多张聚合图形可以整合为幻灯片
4.自定义图形树
#1.安装graphtree
cd /usr/share/zabbix
wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch
#2.导入补丁包
yum install -y patch
patch -Np0 <graphtree3.0.4.patch
chown -R apache.apache oneoaas
#3.修改Apache配置文件
# vim /etc/httpd/conf.d/zabbix.conf
Alias /oneoaas /usr/share/zabbix/oneoaas
#4.重启httpd服务
systemctl restart httpd
单击->监测中->Graphtree
单击对应的主机->选择需要查看的图形->点击查询->效果展示
5.解决Zabbix中文字符集图形乱码问题
[root@ZabbixServer ~]# cd /usr/share/fonts/dejavu/
[root@ZabbixServer dejavu]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
进入windows电脑,C盘->windows->fonts->随便复制字体至桌面
[root@ZabbixServer dejavu]# rz #上传了simhei.ttf
[root@ZabbixServer dejavu]# mv simhei.ttf DejaVuSans.ttf
注意:如果字体是ttc,修改为ttf也行。
5.Zabbix自定义监控模板
1.模板是支持导入与导出(模板里面的监控项是有脚本支撑,所以脚本需一起打包)
2.conf文件主要用于定义监控项,监控项用来调用脚本或命令,获取监控值。
3.如果希望将之前定义的监控项做成模板,找到监控项->全选->复制
4. 自定义使用模板(让监控项可以重复使用)1.客户端agent必须要定义监控项,监控项取值需要使用到脚本文件或系统命令
2.服务端导入模板
3.创建监控主机,链接新导入模板,如果是已存在的监控主机,增加我们刚导入的模板