文档章节

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

芬野de博客
 芬野de博客
发布于 09/16 23:10
字数 2161
阅读 8
收藏 0

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:有了数据下面就可以添加图形了:    配置 -----> 主机 ----->  图形 -----> 创建图形

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

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

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

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

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

触发器里关联监控项:

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

2、配置邮件告警

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

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

开启并记录授权码

添加报警媒介:

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

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

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

创建报警脚本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页面  ----->   用户 ----->  创建用户

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

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

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

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

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

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

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

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

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

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

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}

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

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

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

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

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

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

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

3:不发邮件情况处理:

 

 

 

© 著作权归作者所有

共有 人打赏支持
芬野de博客
粉丝 10
博文 106
码字总数 184900
作品 0
海淀
程序员
私信 提问
添加自定义监控项目&配置邮件告警&测试告警&不发邮件的问题处理

19.12 添加自定义监控项目 zabbix的监控项目是在模板里面体现,但是有时会有些个性化的需求。比如:某一个业务的数据,运营人员想知道网站会员注册量,会员活跃度;实际上,这些数据,都可以...

影夜Linux
07/11
0
0
添加自定义监控项目配置邮件告警测试告警不发邮件的问题处理

添加自定义监控项目 需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本 vim /usr/local/sbin/...

lyy549745
07/10
0
0
添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理

添加自定义监控项目 需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本 vim /usr/local/sbin/...

Zhouliang6
07/11
0
0
2018-4-16 16周4次课 zabbix邮件告警

19.12 添加自定义监控项目 ·需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 ·对于第一步,需要到客户端定义脚本 [root@loca...

alexis7gunner
10/30
0
0
2018-4-16 Linux学习笔记

19.12 添加自定义监控项目 思路: 客户端设置脚本获取数据->服务端用zabbix_get验证客户端收集的监控数据->zabbix管理界面配置监控项->zabbix管理界面配置成图形->zabbix管理界面配置告警(如果...

XiaoluHuang
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是自然语言处理技术

自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计...

本宫没空2
16分钟前
2
0
移动端关闭虚拟键盘

那么document.activeElement.blur()为什么可以阻止虚拟键盘弹出呢?原因是:当你点击input的时候,document.activeElement获得了DOM中被聚焦的元素,也就是你点击的input,而调用.blur()方法...

niuhongxia
17分钟前
2
0
Ubuntu18.04安装RabbitMQ(正确安装)

1、安装erlang 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang-nox 2、安装Rabbitmq 更新源 sudo apt-get update 安装 sudo apt-get ins...

hansonwong
26分钟前
2
0
如何在以太坊开发发行自己的ERC-20数字货币

今天我将向你展示如何在以太坊区块链上开发你自己的加密货币并将其出售!我将向你展示如何使用以太坊智能合约逐步创建自己的ERC-20代币和众筹销售,如何测试智能合约,如何将智能合约部署到以...

geek12345
26分钟前
1
0
Vlock用于有多个用户访问控制台的共享 Linux 系统

当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么。如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统。 ...

linuxprobe16
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部