一、添加自定义监控项
需求:监控某台web的80端口连接数,并出图。
步骤:
1):zabbix监控中心创建监控项目
2):针对该监控项目以图形展现
第一步(需要到客户端定义脚本)
[root@zhuji ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
[root@zhuji ~]# chmod 755 /usr/local/sbin/estab.sh (给权限,因为是zabbix要启动)
第二步(客户机上修改配置文件)
284 # UnsafeUserParameters=0 去掉#号,并修改为1,表示开启使用自定义脚本
297 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 自定义监控项的key为my.estab.count,后面的{*}里面写脚本的参数,如果没有参数可以省略,脚本为/usr/local/sbin/estab.sh
第三步 (重启zabbix-agent服务)
[root@congji ~]# systemctl restart zabbix-agent
第四步 (到服务端验证,执行命令,结果返回为0,表示脚本定义成功)
[root@zhuji ~]# zabbix_get -s 192.168.52.100 -p 10050 -k 'my.estab.count'
0
第五步 (在zabbix监控中心(浏览器)配置增加监控项目)
名称自定义
键值填写my.estab.count
历史数据保留时长 (数据存储多长时间)
趋势数据存储周期
第六步 (图形-->创建图形)
第七步 (触发器-->创建触发器)
二、配置邮件告警
使用163或者qq邮箱发告警邮箱
因为qq邮箱有时候会收不到告警,所以我们选用163邮箱来做实验
(一)登录你的163邮箱,设施开启P0P3,IMAP,SMTP服务,并记录授权码
(二)在监控中心设置邮件告警
管理--> 报警没接类型-->创建媒体类型
(虽然zabbix给了我们email的模板,但是我们用python写一个脚本,用脚本的形式来实现)
脚本的参数分别代表了
{ALERT.SENDTO} 收件人
{ALERT.SUBJECT} 主题
{ALERT.MESSAGE} 内容
(三)创建报警脚本mail.py
首先我们要知道配置文件里,把自定义脚本放在哪个目录下。
[root@zhuji ~]# vim /etc/zabbix/zabbix_server.conf //搜索alert
我们发现路径是
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@zhuji ~]# vim /usr/lib/zabbix/alertscripts/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('18681980**8@163.com', 'qq密码',18681980**8@163.com',to,subject,content)
if __name__ == "__main__":
main()
[root@zhuji ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
验证脚本是否正确可以尝试给自己邮箱发信息
[root@zhuji alertscripts]# python mail.py 18681980408@163.com nihao nihaorxr
三、测试告警
测试告警
为了让zabbix报警,我们创建一个错误,创建一个触发器