十六周四次课(4月16日)
19.12 添加自定义监控项目
19.13/19.14 配置邮件告警
19.15 测试告警
19.16 不发邮件的问题处理
19.12 添加自定义监控项目
前面提到过zabbix的优势,其中之一就是很方便地添加自定义监控项目,它虽然提供了丰富的模板,但依然不能满足各种各样的特殊需求。比如,想要监控Nginx的访问日志条数,此类个性化需求在zabbix的模板中是没有的。下面举一个实际的例子来教你添加自定义的监控项目,这涉及编写shell脚本。需求是:监控某台web服务器80端口的并发连接数,并设置图形。
先来分析一下该需求,有两步,第一是要创建自定义监控项,第二是要针对该监控项设置成图形。而该监控项不能在zabbix自带模板中找到,只能自己手动创建,监控项目有一个核心的元素就是数据源,有了数据源就可以创建监控项了,并且也很容易成图形。所以,问题的焦点在于:如何获取服务器80端口的并发连接数
需求:监控某台web的80端口连接数,并出图
两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
在前面的章节中,曾经介绍过一个命令netstat,其中它有一个用法nestat -ant可以查看系统 TCP连接状态情况,在各个状态中有一个ESTABLISHED'它表示正在连接中。由此,就可以获取80端口的并发连接数,具体命令为:netstat -ant |grep ':80 ' |grep ESTABLISHED
80后面多了一个空格,这是为了更加精准,如果不加空格,8080这样的端口也会包含在内了。
对于第一步,需要到客户端定义脚本
vim /usr/local/sbin/estab.sh //内容如下
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
更改权限:chmod 755 /usr/local/sbin/estab.sh
客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf //增加
UnsafeUserParameters=1 //表示使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh,[*]:*表示后面的脚本没有参数,如果有参数就写在中括号里,用逗号分隔
重启zabbix-agent服务:systemctl restart zabbix-agent
首先到服务端验证,执行命令
zabbix_get -s 192.168.37.104 -p 10050 -k 'my.estab.count' //得到的数字是0,如果不是说明脚本执行不对;-s:指定客户端IP;-p:指定端口,如果不指定就是用默认的10050;-k:指定键值
检查网络防火墙:
然后在zabbix监控中心(浏览器)配置增加监控项目
键值写my.estab.count
添加该项目后,到“监测中”→“最新数据”查看刚添加的项目是否有数据出现
依次点击“配置" →“主机",找到aming-06主机,然后点击“创建监控项",名称写“并发连接数",键值写类型保持默认,即被动模式,如果选择"zabbix客户端(主动式)"则为主动模式。键值写my.estab.count。其他项保持默认,点击最下面的“添加"按钮
目前还不确定是否正确添加监控项,依次点击”监测中”→“最新数据",主机那一栏选择aming-06,名称填写“ 80端口",然后点击“应用"按钮,则会过滤出刚刚添加的“并发连接数"监控项,可以看一下最新数据是什么。最新数据为0,这说明没有问题。
有了数据就可以添加图形了
“配置” “主机” “图形” “创建图形
如果需要报警的话,还可以做一个触发器
“配置” “主机” “触发器” “创建触发器”
19.13/19.14 配置邮件告警
使用126或者QQ邮箱发告警邮件
首先登录你的126邮箱,设置开启POP3、IMAP、SMTP服务
开启并记录授权码
然后到监控中心设置邮件告警
“管理”,“报警媒介类型”,“创建媒体类型”
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE} //分布在python脚本的三个参数里
依次点击“管理"→“报警媒介类型",在右上角点击“创建媒体类型",名称填写baojing, 类型为“脚本",脚本名字填写mail.py。脚本参数这里点击“添加",然后填写{ALERT. SENDTO};继续点 “添加" , 填写{ALERT.SUBJECT} ;继续点 “添加",填写{ALERT.MESSAGE} 。也就是说 ,三个参数需要添加三次,最后点击下方的“添加" 蓝色按钮。
上一步仅仅是定义了告警媒介,但还未创建脚本,也未定义脚本的路径等信息。首先通过zabbix_server的配置文件确定告警邮件的脚本应该放到哪里
编辑服务端配置文件:vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/aIertscripts
创建报警脚本mail.py
vim /usr/lib/zabbix/alertscripts/mail.py //内容参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
其中gserver = 'smtp.xxx.com' //更改为自己邮箱的smtp服务器
sendqqmail('邮箱地址,'邮箱的客户端授权密码','邮箱地址',to,subject,content)
更改脚本权限:chmod 755 /usr/lib/zabbix/alertscripts/mail.py
执行脚本:python /usr/lib/zabbix/alertscripts/mail.py 邮箱地址 “标题”“内容“
创建一个接受告警邮件的用户,“管理”→“用户”→“创建用户”→“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到选择的用户组去设置权限
设置动作,“配置”→“动作”→“创建动作”,名称写“sendmail”(自定义),
“操作”页面,内容如下
HOST:{HOST.NAME} {HOST.IP} //定义的主机名和IP
TIME:{EVENT.DATE} {EVENT.TIME} //发生的日期和时间
LEVEL:{TRIGGER.SEVERITY} //定义的示警度
NAME:{TRIGGER.NAME} //告警的触发器名
messages:{ITEM.NAME}:{ITEM.VALUE} //出现告警时的状态信息
ID:{EVENT.ID} //事件的ID
“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类
“操作”,选择发送的用户为刚创建的用户“aming“,仅送到选择“baojing”
切换到“恢复操作”,把信息改成如下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
点击“新的”,“操作”,选择发送的用户为刚创建的用户aming,仅送到选择“baojing”
19.15 测试告警
创建一个自定义的触发器
测试:
查看邮箱,报警邮件收到
原文地址:http://blog.51cto.com/415326/2104150