在客户端写脚本而后在服务端检测脚本。前端
需求:监控某台web的80端口链接数,并出图python
两步:1)zabbix监控中心建立监控项目;2)针对该监控项目以图形展示linux
对于第一步,须要到客户端定义脚本git
vim /usr/local/sbin/estab.sh //内容以下web
#!/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-agentvim
首先须要开启服务,第一次会进行手机验证,而后输入受权码。 受权码=发邮件警告使用的密码bash
而后到zabbix前端新建立一个报警。并发
{ALERT.SENDTO} = 邮件接收者 {ALERT.SUBJECT} = 邮件主题 {ALERT.MESSAGE} = 邮件内容
在服务端上面配置文件里面找到路径:vi /etc/zabbix/zabbix_server.conf测试
进入配置文件之后而后搜索 AlertScriptsPath 找到/ usr/lib/zabbix/alertscripts 目录spa
进入到 /usr/lib/zabbix/alertscripts/ 里面,建立一个在zabbix上定义过名称的脚本
而后在建立的里面里面写入代码。
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/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.qq.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('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content) if __name__ == "__main__": main() #####脚本使用说明###### #1. 首先定义好脚本中的邮箱帐号和密码 #2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
代码写入完之后还须要修改一下里面的:使用邮箱,邮箱帐号,邮箱受权码 等等。
邮箱都填写ok之后,咱们还须要给脚本一个执行的权限,而后就能够测试脚本了。
测试脚本命令:python mail.py 邮件接收者 “邮件的主题” “邮件的内容”
上面所有配置完之后,第二步咱们就须要去给zabbix建立一个用户
设置用户
设置报警媒介
还须要设置一下权限:
所有配置完成之后,都检查一下是否有问题没问题就继续配置其余动做。
还须要配置一个动做:
配置动做
配置操做
配置操做里面的默认信息:
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
配置恢复操做
恢复操做里面的默认信息:
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
最后添加完成之后能够看到状态是直接启用的。
说明:故意把监控项目更改为有问题的, 设置触发器,让它告警.
步骤:配置-->主机--> root -02 选择触发器 --> 建立触发器 --> 名称(自定义)- 系统负载 --> 添加
-->最新的T值<N --> N 设置为1 ; 当小于1的时候就告警,正常状况下负载是0 ,那么就会立刻告警
点击Zabbix -->查看最近20个问题
能够看到动做完成1,说明能够正常发送邮件
#查看邮件,是能够收到告警邮件的
#本来负载值更改成1了,就会立刻告警,那么如今把负载值更回正常的,也会收到ok的邮件
如果设置回正常,仍然收不到邮件,那么检查恢复操做.
1.检查发邮件的脚本
[root@aminglinux-01 alertscripts]# python mail.py anna_wqd@163.com "test" "This is test jiaoben" [root@aminglinux-01 alertscripts]# ls -lt mail.py -rwxr-xr-x. 1 root root 1163 9月 11 12:42 mail.py
能够收到邮件,说明脚本ok
2. 检测Zabbix 监控中心 -- 用户设置
检查报警媒,查看收件人邮箱地址是否有误
说明:点击管理 -->用户 -->报警媒介;
检查用户权限是不是读写,若不是将没法收到告警邮件
3.检查Zabbix 监控中心 --动做
检查动做--操做是否有选择发送到用户(Anna)
说明:点击配置-->动做-->发邮件-->条件