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


19.14 配置邮件告警(下)

1 创建用户

管理——》用户——》创建用户——》用户别名aming——》添加群组——》用户群主——》选择Zabbix administrators——》创建密码

继续设置报警媒介——》选择刚才建立的“163邮件报警测试”——》收件人(刚建立的163邮箱)——》添加

****记得设置用户的报警媒介,否则有可能会导致有监控问题发不出邮件。


2 创建用户后,默认是无任何权限的,哪怕是管理员,因为群组权限没做好,子用户也会受到影响。

管理——》用户群组——》选择Zabbix administrators——》权限——》选择读写,选择全部群组——》添加

3查看用户aming的权限,已经被更新

上面创建了用户和报警媒介,但是还没有分配他们的动作目的是什么。


4 创建动作

4.1 动作:配置——》动作——》创建动作——》定义名称——》添加新的触发条件——》触发器示警度>=未分类——》添加

满足A与B的条件才触发动作

4.2 操作(发邮件的动作):配置——》操作

在默认信息添加如下参数

HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}


参数解释:

书本教材解释。


设置操作细节(步骤——》新的

操作细节

配置完成操作


恢复操作的步骤跟设置操作细节大致是一样,大同小异。

恢复操作的意思是问题解决后的通知。



最后记得点“添加”,不然以上操作会被撤掉。



19.15 测试告警

1 创建新的触发器

配置——》主机(选择对应的主机)——》触发器选项——》创建新的触发器

添加表达式,此处选择系统负载小于1生效,正常会马上生效告警,因为负载正常就是0就是小于1

设置完成后记得点击添加

进入客户端129 Linux查看负载,负载为0(load average:0)

[root@centos7-02 sbin]# w
 23:01:24 up 12:50,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.189.1    10:12    4.00s  0.26s  0.00s w


2 回到监控中心首页,正常是会发现马上有警告信息出现。

有警告信息出现,并且还将告警信息发送到了邮箱,完成了刚刚建立的邮件报警动作。


3 查看163邮箱,发现收到问题邮件,事件ID12记住,有问题未解决与解决了的问题的同一件事件,ID号是一样的。


4 可以看到监控中问题的告警状态


5 把刚刚的触发器参数改到正确,然后观察触发器警告效果

配置——》问题对应的主机选中触发器——》把负载参数修改为>1


6 问题解决

163邮箱也收到恢复操作的信息。ID号12,跟刚刚发送问题的ID号是匹对的。



19.16 不发邮件的问题处理

不能发送邮件的可能性:

  1. 保证脚本发邮件测试能完全发送(脚本权限是否正确,755,777也可以)

  2. 检查报警媒介的信息参数有没有写对。

  3. 检查用户有没有添加报警媒介,指定邮箱有没有写对。

  4. 动作,操作里的参数,有没有添加指定报警媒介类型;恢复操作同样检查。