博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
添加自定义监控项目 配置邮件告警 测试告警 不发邮件的问题处理
阅读量:6588 次
发布时间:2019-06-24

本文共 5941 字,大约阅读时间需要 19 分钟。

一、添加自定义监控项目

添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
获取80端口并发连接数的命令:
[root@linux-02 ~]# netstat -ant |grep ':80 ' |grep -c ESTABLISHED
web访问大部分状态都是TIME_WAIT,而ESTABLISHED很少,如果ESTABLISHED值很大,证明服务器有异常,要么是有×××,要么硬件不够了
[root@linux-02 ~]# netstat -ant |grep ':80 ' |grep ESTAB 可以查看80端口下ESTABLISHED这个状态的连接有多少个,基本上一台正常服务器不会超过100
[root@linux-02 ~]# vim /usr/local/sbin/estab.sh //脚本的路径和名称都可以自定义,写入如下内容
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
[root@linux-02 ~]# chmod 755 /usr/local/sbin/estab.sh //记得给脚本755权限
[root@linux-02 ~]# ps aux |grep zabbix
最终是zabbix用户去执行这个脚本
[root@linux-02 ~]# vim /etc/zabbix/zabbix_agentd.conf //客户端编辑配置文件
在# UnsafeUserParameters=0下面一行添加 UnsafeUserParameters=1 ,表示使用自定义脚本
在# UserParameter=下面一行添加 UserParameter=my.estab.count[],/usr/local/sbin/estab.sh ,这个是用来定义自定义的脚本在什么路径下,my.estab.count是监控项里面的键值,[],/usr/local/sbin/estab.sh是固定格式,[]表示没有参数,如果写的脚本里面带参数,把参数写在[]里面,使用逗号分隔,如果没有参数,使用代替
[root@linux-02 ~]# systemctl restart zabbix-agent //重启zabbix-agent服务
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
首先到服务端验证,执行如下命令
[root@linux-01 ~]# zabbix_get -s 192.168.238.130 -p 10050 -k 'my.estab.count'
还需要注意没有防火墙规则和selinux
[root@linux-01 ~]# iptables -nvL
[root@linux-01 ~]# getenforce
[root@linux-02 ~]# getenforce
在zabbix监控中心(浏览器)配置增加监控项目
在linux-02主机里面选择“监控项”----创建监控项-----名称写:并发连接数-----键值写:my.estab.count(可以自定义),历史数据保留时长要根据自己实际情况填写,趋势数据存储周期时间就是成图像的周期---------添加
添加完成之后,还需要给它添加一个图形,名称:并发连接数--------监控项“添加”-----选中“并发连接数”--------添加,就可以在图形里面查看到图像了
也可以为他添加一个触发器,名称:并发连接数,严重性选择警告,点击表达式右侧的添加
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
当并发数的值大于200,开始告警
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
自定义监控项思路:
首先要写一个脚本获取到数据,然后给脚本755权限,使用zabbix_get -s 192.168.238.130 -p 10050 -k 'my.estab.count'命令在服务端获取数值,再到监控中心创建监控项目,创建图形,有需要告警再创建触发器
二、配置邮件告警
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
这里使用163邮箱发告警邮件
需要在163邮箱里面设置一下,邮箱里面点击“设置”---POP3/SMTP/IMAP----下图两个打对勾
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
查看客户端授权密码是否已开启,然后到服务端去写一个发邮件的脚本
写脚本前先做监控中心点击“管理”------报警媒介类型-----创建媒介类型-----名称:baojing(指报警媒介类型的名称)-----类型选择“脚本”-------脚本名称:mail.py(自定义)-------基本参数需要填写三个:第一个参数:{ALERT.SENDTO} 是发给谁,接收邮件的邮箱地址;第二个参数:{ALERT.SUBJECT} 是主题;第三个参数:{ALERT.MESSAGE} 是邮件内容-------这三个参数分布在Python脚本的参数里----添加
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
配置告警
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
[root@linux-01 ~]# vi /etc/zabbix/zabbix_server.conf //在服务端配置文件中查看脚本路径需要定义到哪里
找到 AlertScriptsPath=/usr/lib/zabbix/alertscripts 这一行,也就是说自定义邮件告警脚本mail.py必须放到/usr/lib/zabbix/alertscripts 这个路径下
[root@linux-01 ~]# ls /usr/lib/zabbix/alertscripts/ //查看它下面是空的
[root@linux-01 ~]# cd /usr/lib/zabbix/alertscripts/
[root@linux-01 alertscripts]# vi mail.py //创建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('xxx@163.com','邮箱授权密码','xxx@163.com',to,subject,content)

if name == "main":

main()

#####脚本使用说明######

#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
脚本注释:
gserver = 'smtp.163.com'是发邮件服务器的域名;
sendqqmail('xxx@163.com','邮箱授权密码','xxx@163.com',to,subject,content) 写上自己的邮箱,邮箱客户端授权密码
[root@linux-01 alertscripts]# chmod 755 mail.py //给脚本755权限
[root@linux-01 alertscripts]# python mail.py djnzjhll@163.com "abcdef" "12121212" //测试给自己邮箱发邮件,到163邮箱检查有没有收到测试邮件,收到邮件表示脚本没有问题

创建一个接收邮件告警的用户

点击“管理”----“用户”-----“创建用户”-----别名:aming-----用户名第一部分:aming-------姓氏:li-------群组选择:Zabbix administrators---------密码我这里设置为:zabbix---------语言选择:中文-----添加
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
这里选择aming用户的报警媒介,类型选择baojing,收件人填写自己邮箱,剩下的保持默认全选
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
还需要修改aming用户的权限那一项,权限如果是无的话也收不到告警邮件,这个需要到用户组里面去修改Zabbix administrators用户群组的权限,记得选择里面选择所有,权限选择:读写,点击更新
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
再查看aming用户的权限就有读写权限了
需要配置动作:点击“配置”------“动作”-------创建动作----------名称:sendmail--------条件:维护状态不等于 维护(好多客户机有时会处在一个维护状态,比如重启服务,在重启服务的时间段内,或者在配置服务的时间段内,我不需要告警,如果处于监控状态,属于误报,这个时候需要把它改为维护状态,让它在维护状态不要发邮件了)-----------添加一个新的条件:触发器示警度,> = ,未分类------添加
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
点击:操作那一项-------修改默认信息:删除原来自带的信息,添加如下内容:
HOST:{HOST.NAME} {HOST.IP} //自定义的hostname
TIME:{EVENT.DATE} {EVENT.TIME} //发生时间
LEVEL:{TRIGGER.SEVERITY} //上面定义的示警度
NAME:{TRIGGER.NAME} //自定义的key值
messages:{ITEM.NAME}:{ITEM.VALUE} //发生告警出现的状态码
ID:{EVENT.ID} //事件的ID
维护期间暂停操作打对勾
点击“新的”---------发送到用户:aming------仅送到:baojing--------默认信息:打对勾------条件:点击“新的”-----选择事件已确认=非确认-----添加---------添加
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
点击“恢复操作”-------默认消息
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
恢复操作-------默认消息-------删除原来的内容,添加如下内容:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
发到用户选择:aming----------仅发送到:baojing---------默认信息:打对勾--------点击添加
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
检查下:动作、操作、恢复操作三项没问题点击添加,至此,报警准备工作已经做好,接下来需要验证设置的报警有没有生效

三、测试告警(做实验测试能不能邮件告警)

点击“配置”-------主机---------触发器---------创建触发器(做实验为了让它告警)------名称:系统负载------严重性:警告-------表达式:添加----选择监控项:Processor load(1 min average per core)-------功能:最小的T值<N-----------N:设置为1(当它<1的时候告警)-------插入
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
其他不用修改,直接点击:添加
检测中-------仪表盘中查看有么有告警,稍等一会,报警有问题
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
在163邮箱中查看有没有收到邮件,如果邮件编码有乱码,选择编码:UTF-8
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
这时候我把 配置-----主机-----linux-02的触发器--------系统负载-------表达式中的<1修改为>1-------再去检测中------仪表板查看有没有问题------也可以在问题中查看是不是已经恢复了,问题恢复了查看下有没有发送邮件给163邮箱
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
上图看到恢复完成之后邮件已经发送出去,回到163邮箱查看下有没有收到系统负载恢复
添加自定义监控项目  配置邮件告警   测试告警  不发邮件的问题处理
四、不发邮件的问题处理
不发邮件时先在仪表盘中有出现问题告警时,查看它的动作是空的/失败/已完成,空的有可能是报警脚本权限问题,看下是不是755权限,失败证明邮件没有发出去,需要逐一排查问题,已完成表示发送成功
总结发送告警邮件操作步骤:
1、登录163邮箱设置开启POP3、IMAP、SMTP服务并记录客户端授权密码
2、监控中心设置邮件告警,新增报警媒介,报警名称、类型、脚本名称、脚本参数(移动要写对)
3、在/usr/lib/zabbix/alertscripts/目录下创建并编辑mail.py,脚本内容参考上面,也可以从这里获取:
修改里面的,注意自己使用的邮箱,配置文件做对应修改,记得给脚本修改755权限
4、配置用户,修改用户组的权限,加入到zabbix administrators的组里面,给这个组修改读写的权限,报警媒介填写自己的邮箱地址
5、配置动作,动作操作里面的默认信息记得修改格式
6、配置里面主机添加触发器
7、配置完成之后等待仪表盘中的变化,会弹出来问题,然后查看163邮箱有没有收到邮件

转载于:https://blog.51cto.com/13669226/2140724

你可能感兴趣的文章
七、MySQL中的字符集 - 系统的撸一遍MySQL
查看>>
centos7的php5.4竟然不支持原生的mysql
查看>>
使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
查看>>
Maven依赖Scope标签用法
查看>>
堆排序的原理
查看>>
ajax加载数据到页面无法打印的解决办法
查看>>
js 验证中文
查看>>
MySQL给查询结果添加一表表示行号或名次(1)
查看>>
Linux下运行java DES AES加解密
查看>>
DataNode 运行状况
查看>>
DNS使用的是TCP协议还是UDP协议
查看>>
牛津词典 2018 年度词汇 ——「有毒」!
查看>>
第八章 设备驱动
查看>>
cell自适应高度
查看>>
XCODE GDB这个是老版本xcode,新版的是lldb
查看>>
客户与用户需求浅析
查看>>
VS不能设置断点可能的一个原因
查看>>
iscsi网络存储服务
查看>>
DB2递归查询
查看>>
多个生产者多个消费者,只有5个包子
查看>>