添加自定义监控项目&配置邮件告警&测试告警&不发邮件的问题处理

19.12 添加自定义监控项目

zabbix的监控项目是在模板里面体现,可是有时会有些个性化的需求。好比:某一个业务的数据,运营人员想知道网站会员注册量,会员活跃度;实际上,这些数据,均可以经过数据库里面的表的数字来体现,可是zabbix模板不可能提供那么详细的监控项目;遇到这种状况,就须要经过编程工具,写成脚本,把数字统计出来,而后经过zabbix监控项目,造成图表,就能够实现分析天天的数据是多少。python

个性化需求

监控客户端web的80端口链接数,并出图linux

解决方法

第一步:zabbix监控中心建立监控项目web

第二步:针对该监控项目以图形展示数据库

客户端定义脚本

针对第一步,须要在客户端定义脚本,将所需数据统计出来编程

vim /usr/local/sbin/estab.sh

#!/bin/bash
##获取80端口并发链接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

脚本受权

容许客户端执行这个脚本vim

chmod 755 /usr/local/sbin/estab.sh

编辑客户端zabbix配置文件

vim /etc/zabbix/zabbix_agentd.conf 

搜索 /UnsafeUserParameters

将# UnsafeUserParameters=0
改成UnsafeUserParameters=1  
#表示使用自定义脚本

搜索 /UserParameter
将# UserParameter=
改成UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
#表示自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,若是没有参数则能够省略,若是有参数写入到 [ ] 里面,用逗号分隔,脚本为/usr/local/sbin/estab.sh

my.estab.count 这个是zabbix监控项里的键值,即为自定义脚本在zabbix监控中的名字bash

重启 zabbix-agent 服务

systemctl restart zabbix-agent.service

服务端验证客户端脚本是否生效

[root@linux-5 ~]# zabbix_get -s 192.168.88.10 -p 10050 -k 'my.estab.count'
0

-s 指定客户端的IP地址并发

-p 指定端口,不加-p,默认就是10050端口运维

-k 表示 键值工具

返回了具体数值,与直接执行脚本所得结果一致,说明客户端脚本已生效

建立监控项

完成在客户端的脚本定义后,须要在监控中心建立监控项

在配置-->主机-->lem-02的监控项,点击建立监控项

填写相应信息

  • 名称 :自定义监控项
  • 类型 :选择zabbix客户端
  • 键值 写:my.estab.count——>键值可自定义,是不固定的
  • 单位 :保持默认
  • 历史数据保留时长(单位天):默认保持90天
  • 应用集:能够不选择,由于没有定义应用集

建立图形

在添加监控项后,还须要添加图形,将监控所得数据制成图表,配置-->主机-->图形-->建立图形

建立触发器

完成监控项定义后,如需告警,可为其建立触发器

该触发器表明了当自定义监控项数值大于200,产生警告级别的告警

19.13/19.14 配置邮件告警

实验可使用163或者QQ邮箱发告警邮件,首先登陆163或qq邮箱,设置开启POP三、IMAP、SMTP服务,开启并记录受权码

设置邮件告警

建立报警脚本mail.py

报警脚本所在位置可经过查看zabbix服务的配置文件获得

vim /etc/zabbix/zabbix_server.conf 

搜索 /alert
AlertScriptsPath=/usr/lib/zabbix/alertscripts #报警脚本所在路径
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.qq.com' #若是是163邮箱则是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('163或QQ邮箱','受权码','163或QQ邮箱',to,subject,content)

if __name__ == "__main__":
    main()
    
    
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱帐号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

脚本文件受权

chmod 755 /usr/lib/zabbix/alertscripts/mail.py

测试发送邮件

python mail.py "收件人邮箱" "标题" "内容"

执行脚本后没有任何提示就表示发邮件成功

这时打开qq邮箱,会看到邮件

若是发送邮件内容为中文,且收到为乱码,这是由于在zabbix使用的是utf-8的字符集,而在邮箱里使用的是GBK字符集,因此会乱码

建立告警用户

建立一个接受告警邮件的用户(用于接收邮件),在建立用户的前提是建立一个用户组,用户组可使用已经存在的, 因此这里直接建立用户,管理-->用户-->建立用户

设置告警邮箱

要将管理员与告警邮箱关联起来,才能使运维zabbix平台的运维人员时可以收取告警邮件

管理-->用户-->选择相应用户-->报警媒介

设置用户权限

注意用户的权限,若是没有权限,邮件是无法发的,更改权限要到用户组里 (管理-->用户群组)进行修改,默认的权限是无,须要修改群组,给予权限。

设置动做

配置了触发器,那么触发后zabbix服务应该去作什么,须要为服务配置动做。配置-->动做-->建立动做

设置动做发生的条件

维护状态 非在 维护,表示处于维护状态的机器不进行发邮件的动做

触发器示警度(也就是信息,警告,通常严重...)大于等于未分类(未分类 表示 全部状态)时,全部状态均会发送邮件

存在多种条件时,可采用与/或逻辑运算的形式知足触发条件

设置动做发生的操做

设置动做发生的恢复操做

当发生告警的问题被解决后,能够选择设置恢复操做,予以通知

最后动做的状态是已启用

19.15 测试告警

自定义测试触发器

建立触发器,以实现测试告警的目的

回到监控中心,主页——>最近20个问题

若是提示为启用中,证实发现问题,正在启用告警,显示问完成,就证实已经发送邮件告警;如上图所示,实验成功。

查看邮箱,会看到收到了告警邮件

测试邮件告警成功

这时想要解决这个问题,只要将触发器条件数值调整 >1 便可,再来查看监控中心,就会发现问题消失了,而且会给邮箱发送 OK 的邮件

19.16 不发邮件的问题处理

不发邮件的问题处理

  • 由于虚拟机,可能存在一些bug,第一次配置的时候,常常会出现zabbix发现问题,作了邮件告警,可是邮箱却没有收到邮件的问题;
  • 从新恢复快照之后再作一次,就又能正常发送邮件,接收邮件了

配置邮件告警流程总结

准备工做

到163邮箱或QQ邮箱开启SMTP服务,并记录受权码,没有开启,脚本里面就没法去写受权码

设置邮件告警

首先设置一个报警媒介,三个参数必须填写正确,顺序也不能错误

编辑邮件告警脚本

/usr/lib/zabbix/alertscripts目录下

#路径不能错误,必须在该路径下,添加一个脚本

建立好以后,给脚本755权限,不然zabbix用户是没法调用这个脚本的

配置用户

  • 配置用户以前,把用户群组的权限改一下,让组有一个读写权限
  • 用户加到指定的群组里
  • 报警媒介,添加本身的邮箱地址,本身给本身发,这个成功率会比较高

配置动做

  • 操做修改默认信息(发送邮件的格式),操做须要添加一个“新的”给谁发邮件;恢复操做一样

测试告警可否成功发送邮件

  • 人为建立一个触发器,设置一个系统最低运行都会触发报警的触发器
  • 也能够在客户端上断开链接(中止客户端的zabbix服务)

更改主动和被动

客户端主动模式和被动模式,在监控项里,选择一个监控项打开,选择类型是Zabbix客户端或者Zabbix客户端(主动式),Zabbix客户端(主动式)即为主动模式,Zabbix客户端为被动模式

注:触发器不能用中文命名,否则邮件显示乱码

相关文章
相关标签/搜索