68:添加自定义监控项目 | 配置邮件告警及测试 | 不发邮件时问题处理

1、配置自定义监控项目

zabbix的监控项目是在模板里配置体现的,有时候会有一些个性化的需求,某一个业务的数据,有一些运营想知道网站的注册量,会员活跃度,这些数据是可以通过数据库的表的数字体现出来的,但是zabbix是不提供那么详细的监控项目的,遇到这种情况,就需要通过写脚本把数字展现出来,通过一个监控项目来形成图表,然后来分析每一天的用户量是多少呢:

需求:监控某台web的80端口连接数,并出图:

解决方法:两步:

1)、zabbix监控中心创建监控项目:

2)、针对该监控项目以图形体现:

首先需要在客户端(zabbix客户端)添加一个脚本:   #获取80端口的并发连接数

[root@localhost_01 ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

更改能让zabbix用户执行的权限:赋予脚本执行权限

[root@localhost_01 ~]# chmod 755 /usr/local/sbin/estab.sh 

编写zabbix客户端的配置:    /etc/zabbix/zabbix-agentd.conf       定义脚本功能和脚本的位置:

[root@localhost_01 ~]# vim /etc/zabbix/zabbix_agentd.conf 
[root@localhost_01 ~]# cat !$ |grep -v ^# |grep -v ^$
UnsafeUserParameters=1         #允许使用自定义脚本:开启脚本功能:

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
#表示自定义监控项的key为my.estab.count(后面需要在web页面设置时key值要用到),后面的[*]里面写脚本的参数,如果没有参数则可以省略,如果有参数写入到 [ ] 里面,用逗号分隔,脚本为/usr/local/sbin/estab.sh

重启zabbix客户端服务:       systemctl      restart    zabbix-agent

[root@localhost_01 ~]# systemctl restart zabbix-agent

1:接下来到zabbix服务端验证:验证是否识别到这个脚本:    注意:脚本需要执行权限和防火墙需要放行的端口:

zabbix_get -s 192.168.149.130 -p 10050 -k 'my.estab.count'

[root@localhost_02 ~]# zabbix_get -s 192.168.149.130 -p 10050 -k 'my.estab.count'
0

注释: -s:指定客户端IP地址:     -p:指定端口号(不见p,默认是10050)       -k:表示键值:

注释:下面需要在服务端监控中心操作:

然后在zabbix监控中心(web浏览器)配置:

zabbix页面 -----> 配置  --->  主机  --->  监控项 ---> 创建监控项:

名称:并发连接数(可自定义):

类型:选择zabbix客户端:
键值:填写my.estab.count(可自定义):

单位:保持默认:

历史数据保留时长(单位天):默认保持90天:

趋势数据存储周期(单位天):图形化界面下那个图:

应用集:可以不选择,因为没有应用集:

 

 

 

 

2:有了数据下面就可以添加图形了:    配置 -----> 主机 ----->  图形 -----> 创建图形

aee53ba11cb38bf2d1850b23ac2239a62ac.jpg

名称:并发连接数,然后是添加监控项,选择并发连接数点击添加

67415f18994b2e30c80001e5bb2d8473704.jpg

查看新创建的图形:点击并发连接数 -----> 点击预览:

6a8052409cb6a2d83b73bbcf896b03e2fcc.jpg

点击预览:可以查看的创建的图形:

8294fd159e92f5b172d5caf0cc7344a0ce3.jpg

注释:网站访问量很大,那么每隔30秒就可以看到一个数字,时间长了,就可查看到网站访问量的趋势:

3:创建触发器:  点击  触发器 -----> 创建触发器 -----> 名称(并发连接数)   -----> 当 报警达200以上,做警告级别:

57967079777fa1be8a4039d4c47bf4b0b81.jpg

触发器里关联监控项:

b0a74b1fc068a3006673edfe2ed270b4cdc.jpg

注释:服务端上获取数值(通过在客户端编写的脚本实现),给予服务端访问脚本的权限,在zabbix监控中心添加对应的监控项目(输入键值),即可,其余就是创建图形等:

2、配置邮件告警

使用163或者qq邮箱发告警邮件:

首先登陆163邮箱,设置并开启pop3  IMAP  SMTP服务:

开启并记录授权码

添加报警媒介:

然后到监控中心设置邮件告警: 管理 -----> 报警媒介类型 -----> 创建媒介类型:

添加如下:{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

注释如上:    手机人:                  邮件主题                        邮件内容

f4f233f6991edb568bd6e6f4496bd9fb15b.jpg

创建报警脚本mail.py:   /usr/lib/zabbix/alertscripts/mail.py:脚本内容:

赋予脚本权限:chmod 755 /usr/lib/zabbix/alertscripts/mail.py              #很重要,可能会因为权限而无法收取邮件:

[root@localhost_02 ~]# vim /usr/lib/zabbix/alertscripts/mail.py 
[root@localhost_02 ~]# cat !$
cat /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 = MIMEText(content,'plan','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]
定义163的账号和授权密码,你需要修改成你自己的账号和授权码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
    sendqqmail('yzhm188@163.com','授权码','yzhm188@163.com',to,subject,content)

if __name__ == "__main__":
    main()
    
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
[root@localhost_02 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py

测试后,可以正常收到邮件的:

注释:若是在邮件里面写中文,到邮箱里面会显示乱码,这是因为在zabbix使用的是utf-8的字符集,而在邮箱里使用的是GBK字符集,所以会乱码

3:创建一个接受告警邮件的用户(用户是用来接受邮件的):用户组可以现在创建,也可以用之前的用户组:

 zabbix页面  ----->   用户 ----->  创建用户

3a4975bbb9d991c77e7ea82f71e6a8f956b.jpg

注释:本次使用的之前的用户组: zabbix   administartors管理员组:设置密码:nihao123!

3:在刚刚创建的用户设置邮箱,      管理 ----->  用户 -----> 报警媒介 ----->  添加:

be5c6c996a4d9ad98e1cfc22634dcdd90cd.jpg

5:还需要注意用户的权限,如果没有权限,邮件还是无法发送的,到用户组去修改(管理 -----> 用户群组)

默认权限是无:需要去修改群组,给予权限:(用户 -----> 用户群组)

e4474b966c2bbb6c6bee881c4c67591f07e.jpg

6:修改用户群组权限:用户 -----> 用户群组 -----> 权限:   选择读写:

fc297454c42134437bdde9bdd580c5f1599.jpg

7:设置动作:(配置好了触发器后,触发之后需要做什么),    配置 -----> 动作 ----->  创建动作

名称:中英文都可以,自定义:

条件:维护状态 非在维护  表示维护状态的机器不发邮件:

新的触发条件:添加:当触发器示警度(也就是信息,警告,一般严重...)大于等于未分类(未分类 表示 所有状态,都会发信息)

04ed367eb2acaa3b7ef77d0b71f341b3bdc.jpg

8:配置 -----> 动作 ----->  操作:    表示发给谁呀:什么时候发:

默认信息:直接删除原有的,拷贝下面的内容:

维护间暂停操作:选择打勾(若不打对勾也可以,因为在动作的条件里定义了):

默认信息定义当发生报警时,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}:发生事件的id

39c6e34c7a1e16e216f1d2328ba47c642c2.jpg

9:配置 -----> 动作 -----> 恢复操作:

默认信息:删除原有的信息,负责下面的信息:   两者是相同的:

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE} {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

990b1a7bce5f28f6b7d84c69be0ea6c729f.jpg

10:最后的动作哪里的状态是已启用:

c8a8671c79b95a36565f1a997e10f28d055.jpg

11:测试告警:创建触发器来实现告警:

配置 -----> 主机 -----> 触发器 -----> 创建触发器:

名称:系统负载:                      严重性:警告:              表达式内容如下:

f7aa60401916c627ea81377f24d3ea33fda.jpg

c08c64b5cc5cdcf8495da53dbe65fc4ea95.jpg

11:看到信息如下:回到仪表盘页面,等待一会儿即可:

70766a714396685101cd2117aa6f73da8a2.jpg

注释:查看邮箱,会看到告警邮件已发送,这表示邮件告警测试成功了:

注释:想要解决这个问题,只要将触发器 系统负载条件数值调整 >1 即可,再来查看监控中心,就会发现问题消失了,并且会给邮箱发送 OK 的邮件:

3:不发邮件情况处理:

 

 

 

转载于:https://my.oschina.net/yuanhaohao/blog/2052138

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值