标签:zabbix
linux监控平台搭建(3)添加自定义监控项目、配置邮件告警、测试警报、不发邮件的问题处理原创qq5a6d861adfe892018-04-15 17:31:28评论(0)314人阅读
添加自定义监控项目
很多的监控项,我们都是在配置的模板中设置的,但是模板的选择是不能完全满足到我们生产中 的实际需求。所以我们可以自定义监控项目,通过编写Shell脚本或者python脚本,在脚本中获取数据库中所需业务的数,然后在通过在监控项里添加这个脚本,将脚本获取到的数目以图表的形势展现。这样就有利于运维人员及时发现和分析问题。
需求:
需求:监控某台web的80端口连接数,并出图
两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
对于第一步,需要到客户端定义脚本
1.定义脚本,编写内容获取80端口连接数;
vim /usr/local/sbin/estab.sh //内容如下
#!/bin/bash
##获取80端口并发连接数,ESTABLISHED的意思是建立连接。表示两台机器正在通信。
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
(LISTENING状态
FTP服务启动后首先处于侦听(LISTENING)状态。
CLOSE_WAIT
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。)
因为客户端的还未有其他机器进行web连接,所以连接数还是为0。
2.修改脚本权限,否者zabbix用户无法执行:
chmod 755 /usr/local/sbin/estab.sh
3.客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf//增加内容
UnsafeUserParameters=1 //表示可以使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
//自定义监控项的key为my.estab.count,这个是在zabbix里配置监控项中键值的名字(可自定),后面的[*]里面写脚本的参数(多个参数使用逗号分隔),如果没有参数则可以省略使用*代替,脚本为/usr/local/sbin/estab.sh
4.重启zabbix-agent服务 systemctl restart zabbix-agent
服务端上测试:
1.执行测试脚本测试,是否能正常取得值和返回值。
命令:zabbix_get -s 192.168.136.134 -p 10050 -k 'my.estab.count'
(使用zabbix_get命令可对服务端进行连接)
在执行这一步之前,首先要判断客户端和服务端机器是否存在防火墙规则和SELinux,如果存在则要把这些都关闭,
防火墙查看命令:iptables -nvL
SELinux查看 :getenforce
2. 然后在zabbix监控中心(浏览器)配置增加监控项目
(1)配置-->主机-->选择操作的主机的监控项-->创建监控项
填写完名称和键值,其他都是可以保持默认,然后最后按添加。
(2)点击图像:
创建图形-->填写名称-->添加(监控项处)-->选择创建的监控项-->添加
添加完后选择刚创建的图形,选择预览就可以看到图表数据。
3.创建触发器,做报警用:
触发器-->创建触发器-->填写名称-->表达式添加-->选择最后的添加即可
配置邮件告警
使用163.com邮箱。
1.登录163邮箱,设置开启POP3、IMAP、SMTP服务
设置授权密码,用于警报发送时的邮箱密码
2.到监控中心设置邮件告警
“管理”-->“报警媒介类型”-->“创建媒体类型”
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
{ALERT.SENDTO} :接收邮件者
{ALERT.SUBJECT}:发送邮件的主题
{ALERT.MESSAGE}:发送邮件的内容
3.在服务端上编写邮件告警脚本:mail.py创建报警脚本mail.py
那么我们的脚本到底是放在哪里才能备调用呢?其实在配置文件中有定义: vim /etc/zabbix/zabbix_server.conf
(默认情况下这个路径下的目录为空,所以要在这里创建我们的脚本mail.py和编写内容)
编写脚本
vim /usr/lib/zabbix/alertscripts/mail.py
//内容参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
脚本内容:
(用QQ邮箱报警:将脚本中的gport 端口号改下,还有smtp = smtplib.SMTP(gserver, gport)改为smtp = smtplib.SMTP_SSL(gserver, gport),其他方法一样即可实现QQ邮箱报警)
#!/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]
##定义163/QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
sendqqmail('15521787110@163.com','740183413abc','15521787110@163.com',to,subject,content)
if __name__ == "__main__":
main()
// sendqqmail 这里定义的是发送邮箱的发送者的信息
编写完脚本要修改其权限:
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
测试是否能成功发送邮件,服务端机器命令行下操纵
python /usr/lib/zabbix/alertscripts/mail.py 15521787110@163.com "this is test title" "success send mail"
因为脚本是用python写的,所以要执行python语句,邮件接收者:15521787110@163.com;邮件主题:"this is test title";邮件内容:"success send mail"。
命令行下测试成功,脚本正常能使用。
4.创建邮箱账户(用于接收告警,邮箱用户在Zabbix的用户里设置)
(1)设置用户首先要有用户群组,用户群组可以创建也可以使用自带的。修改用户群组权限为读写,因为如果用户群组无读写权限邮件也发不出去。
修改用户群组权限步骤:点击用户群组-->选择操作的用户群组-->权限-->选择“读写”-->选择-->把出现内容全选-->添加。
(2)创建邮箱账户步骤:
首先填写创建用户处信息:
然后修改报警媒介:
5.配置-->动作
当触发器,报警媒介等都创建后,要去配置动作,否者当出动触发器的时候,邮件无法发送。
依次操作"配置"-->"动作"-->"创建动作"
(1)创建动作基本内容
(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} :事件的id
(3)点击“恢复操作”
(当告警恢复时也发送信息)
测试警报
测试警报,故意创建一个监控主机的触发器,简单的填写触发器名称,然后添加表达式,在表达式中设定监控项和功能值N,满足功能值N时告警。最后添加即可
1.观察监控状态,是否发生警告问题和正常发送邮件:
(当动作处的信息为空白时可能是动作未定义对或者对脚本无权限)
2.问题查询
添加媒介信息后继续观察问题是否正确发送,但是首先要把问题先恢复,操作也是监控主机的触发器的表达式的条件。
(这样恢复尽在实验中操作)
要修改主机的问题告警频率,需要在模板中修改。具体为操作具体监控主机的模板,选择相应的监控项的数据更新时间
出现这种动作的完成后则,表示我们的问题就是能通过邮件的方式进行发送的。
如果问题不能发送邮件则,问题查询:
(1)检查邮件是否能进行发送
(2)检测脚本是否给zabbix用户有操作权限。
(3)查看邮件用户的信息
linux监控平台搭建(3)添加自定义监控项目、配置邮件告警、测试警报、不发邮件的问题处理
标签:zabbix
原文地址:http://blog.51cto.com/13589255/2121314