提示:开始本节内容以前有必要先作好快照!!!python
该配置的用途是监控模板中没有的监控项目。web
需求:监控某台web的80端口链接数,并出图。vim
步骤:
1) zabbix监控中心建立监控项目
2) 针对该监控项目以图形展示浏览器
统计80端口链接数量bash
能够去查看ESTABLISHED的访问量(established)服务器
[root@cham002 ~]# netstat -ant |grep ':80 ' |grep -c ESTABLISHED 1 [root@cham002 ~]# netstat -ant |grep ':80 ' |grep -c ESTABLISHED 1 [root@cham002 ~]# netstat -ant |grep ':80 ' |grep ESTAB tcp6 0 0 192.168.230.135:80 192.168.230.1:62973 ESTABLISHED
客户端:145并发
[root@test ~]# vim /usr/local/sbin/estab.sh #!/bin/bash ##获取80端口并发链接数 netstat -ant |grep ':80 ' |grep -c ESTABLISHED :wq [root@test ~]# chmod 755 !$ chmod 755 /usr/local/sbin/estab.sh [root@test ~]# ps aux |grep zabbix zabbix 54434 0.0 0.1 80592 1284 ? S 08:12 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbi_agentd.conf zabbix 54435 0.0 0.1 80592 1360 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 54436 0.0 0.2 80712 2448 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 54437 0.0 0.2 80716 2448 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 54438 0.0 0.2 80716 2448 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 54439 0.0 0.2 80720 2228 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 54652 0.0 0.0 112664 972 pts/0 R+ 08:23 0:00 grep --color=auto zabbix 配置zabbix-agent.conf: [root@test ~]# vim /etc/zabbix/zabbix_agentd.conf UnsafeUserParameters=1 #表示使用自定义脚本 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh #自定义监控项的key(监控web端“键值”)为my.estab.count,后面的[*]里面写的是脚本参数 #若是没有参数则能够省略,脚本为/usr/local/sbin/estab.sh 重启zabbix-agent服务: [root@test ~]# systemctl restart zabbix-agent [root@test ~]#
客户端配置完成后在 服务端使用zabbix自带命令测试该脚本是否生效:tcp
(防火墙要么关闭,要么添加规则)测试
[root@cham002 ~]# zabbix_get -s 192.168.230.145 -p 10050 -k 'my.estab.count' 0
如上所示,说明客户端脚本配置成功!spa
浏览器访问服务端zabbix主页:192.168.230.135/zabbix
进入客户机cham-002“监控项配置”页面:
1“建立监控项”:
说明: 在此设置监控项名称和键值,其余参数保持默认(研究透彻以后,全部参数能够根据我的需求进行更改)。
2“建立图形”:
“添加”添加完成后,为该监控项配置“图形”——“建立图形”:
注意: 在此设定图形名称后,须要先为该图形“添加”(该添加为参数“监控项”下的添加)监控项,而后再点击最下面的“添加”将该图形参数添加到zabbix图形监控参数中!!!
3建立触发器:
所谓触发器即设定触发警报的规则!
“触发器”——“建立触发器”:
点击“添加”,设定该触发器所要监控的对象及触发规则:
即,当并发链接数最新值T大于N(自定义该值,在此N=2)时触发该警报。
使用163邮箱或QQ邮箱发送告警邮件。
登陆QQ.或者163邮箱,开启POP三、IMAP、SMTP服务:
说明: 首次开启该服务须要进行用户认证,根据提示信息进行认证并设定“客户端受权密码”(用于登陆第三方邮件客户端的专用密码),记录该密码。
邮箱相关服务配置完成后到监控中心进行报警配置。
“管理”——“报警媒介类型”——“建立媒介类型”:
说明: 设定媒介类型名称、类型、脚本名称(与服务器中脚本名称保持一致)、添加脚本参数(该参数为zabbix内置参数,以后会配置在mail.py脚本中),上述内容配置完后再点“添加”(最下面蓝色)。
服务端:
[root@cham002 ~]# vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts [root@cham002 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('xxxx@163.com','xxxxxxxxxxxxxxxx','xxxx@163.com',to,subject,content) if __name__ == "__main__": main() [root@cham002 alertscripts]# chmod 755 mail.py 测试可否正常发送邮件: [root@cham002 alertscripts]# python mail.py xxxx@163.com "test" "1212121"
发送成功!至此说明发邮件的脚本没问题!!!
在监控中心(web端)建立一个接收告警邮件的“用户”,在建立用户前须要先建立一个“用户组”,在此使用一个已经存在的用户组。“管理”——“用户”——“建立用户”:
打开用户adai——报警媒介——添加报警媒介——更新:
配置用户权限:
须要到用户所在的“用户群组”更改用户的权限:
选择后权限后点击“添加”——“更新”,若是此处设置错误,以后将没法收到报警邮件。
设置触发器被触发后所要执行的的操做!
设置动做,“配置”,“动做”,“建立动做”,名称写(自定义),“操做”页面,内容以下
•“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类
•“操做”,选择发送的用户为刚建立的用户,仅送到选择“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} ID:{EVENT.ID}
•切换到“恢复操做”,把信息改为以下
•点击“新的”,“操做”,选择发送的用户为刚建立的用户,仅送到选择“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} ID:{EVENT.ID}
最后状态是已起用
将监控项目改为故障项目。
“配置”——“主机”——“触发器”——“建立触发器”
注: 该触发器只用于测试,完成测试后要删除!
选择“添加”表达式设定触发规则:
其余参数保持默认,点蓝色按钮“添加”。配置完成后进入“仪表盘”等一分钟左右
经屡次尝试都显示动做完成,可是查看邮箱并无收到任何邮件!
排查故障
[root@cham002 alertscripts]# python mail.py xxxx@163.com "test" "1212121333333333333333333" 能收到邮件 [root@cham002 alertscripts]# ls -l 总用量 4 -rwxr-xr-x 1 root root 1207 2月 5 09:35 mail.py 更改脚本权限:权限改大一点 [root@cham002 alertscripts]# chmod 777 mail.py
即,能正常发送邮件,说明脚本内容没问题!
将操做中的默认信息更改成其自带的配置:
恢复快照再多来几回~····