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