19.12 添加自定义监控项目
需求:监控某台web的80端口连接数,并出图
两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
1 需要到客户端定义脚本
[root@centos7-02 sbin]#vim /usr/local/sbin/estab.sh
内容如下 #!/bin/bash ##获取80端口并发连接数 netstat -ant |grep ':80 ' |grep -c ESTABLISHED
参数解释:
这条命令可以获取80端口并发连接数。
2 保存后,需要修改该脚本的权限
[root@centos7-02 sbin]# chmod 755 !$
chmod 755 /usr/local/sbin/estab.sh
因为这脚本是针对zabbix而写,所以要保证zabbix拥有读写权限运作。
3 客户端上编辑配置文件
#vim /etc/zabbix/zabbix_agentd.conf
搜索UnsafeUserParameters并且增加如下参数
UnsafeUserParameters=1
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
参数解释:
UnsafeUserParameters的值如果等于0 表示不能使用自定义脚本
UserParameter定义自定义脚本的路径,以及这脚本在zabbix上以什么名称展现。
my.estab.count[*]对应监控项的“键值”参数
后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh
4 重启zabbix-agent服务
#systemctl restart zabbix-agent
5 到服务端验证
[root@centos7-01 fonts]# zabbix_get -s 192.168.189.129 -p 10050 -k 'my.estab.count'
0
由于129客户端服务器上并没有任何80端口的访问,所以结果为0
6 然后在zabbix监控中心(浏览器)配置增加监控项目
主机aming-02——》点中监控项——》右上角创建监控项——》填写监控项目信息(监控项目名称和键值)
7 创建图形
配置——》主机——》图形——》创建图形——》监控项选择刚刚建立的80监控项——》添加
预览图形
8 为此监控项创建触发器,当连接数达到200时,告警。
操作:
创建触发器——》填写触发器名称,告警级别——》添加——》选择监控项——》功能最新T值>N——》N填写200——》插入
总结添加监控项的,制作成图的思路:
想办法通过脚本,或者其他手段获取数据量(因为监控成图都需要数据数量来衡量监控的严重性)
获得数据后,在监控中心进行添加监控项目,然后再利用监控项目成图,至于触发器看实际情况创建。
19.13 配置告警邮件告警(上)
1 登录163邮箱,设置开启POP3、IMAP、SMTP服务
2 开启并记录客户端授权密码
密码尽可能复杂点,因为以后发邮件就是这个密码。
3 添加报警脚本
zabbix监控中心——》管理——》报警媒介类型——》创建报警媒介——》填写媒介信息(脚本)——》添加3个脚本参数——》添加
参数解释:
{ALERT.SENDTO} ,收件人
{ALERT.SUBJECT},主题
{ALERT.MESSAGE},邮件内容
4 在服务端定义mail.py的python脚本 (此步骤是配置的核心操作)
4.1 在/etc/zabbix/zabbix_server.conf搜索AlertScriptsPath获取mail.py的脚本路径放置的目录
#/etc/zabbix/zabbix_server.conf
搜索
AlertScriptsPath
找到
AlertScriptsPath=/usr/lib/zabbix/alertscripts
4.2 创建mail.py
[root@centos7-01 fonts]# cd /usr/lib/zabbix/alertscripts
[root@centos7-01 alertscripts]# vim mail.py
#!/usr/bin/env python #-*- coding: UTF-8 -*- import os,sys reload(sys) sys.setdefaultencoding('utf8') import getopt import smtplib from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from subprocess import * def sendqqmail(username,password,mailfrom,mailto,subject,content): gserver = 'smtp.163.com' gport = 25 try: msg = MIMEText(unicode(content).encode('utf-8')) msg['from'] = mailfrom msg['to'] = mailto msg['Reply-To'] = mailfrom msg['Subject'] = subject smtp = smtplib.SMTP(gserver, gport) smtp.set_debuglevel(0) smtp.ehlo() smtp.login(username,password) smtp.sendmail(mailfrom, mailto, msg.as_string()) smtp.close() except Exception,err: print "Send mail failed. Error: %s" % err def main(): to=sys.argv[1] subject=sys.argv[2] content=sys.argv[3] ##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨) sendqqmail('[email protected]','此处定义邮箱客户端授权密码','[email protected]',to,subject,content) if __name__ == "__main__": main()
参数解释:
以上参数根据#注释解释。
4.3 记住,给予755权限,否则影响进行后续。
[root@centos7-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
4.4 执行python脚本发邮件测试
参数格式就是刚刚建立的mail.py的三个参数:收件人,主题,内容,后两者以""引用参数,空格分割
[root@centos7-01 alertscripts]# python mail.py [email protected] "warnning test" "ok"
4.5 检查收件
收件成功
时间也吻合
[root@centos7-01 alertscripts]# date
2018年 05月 28日 星期一 18:03:43 CST