linux监控平台搭建添加自定义监控项目配置邮件告警测试警报不发邮件的问题处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux监控平台搭建添加自定义监控项目配置邮件告警测试警报不发邮件的问题处理相关的知识,希望对你有一定的参考价值。

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('[email protected]','740183413abc','[email protected]',to,subject,content)

if __name__ == "__main__":

    main()

    // sendqqmail  这里定义的是发送邮箱的发送者的信息

技术分享图片


编写完脚本要修改其权限:

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


测试是否能成功发送邮件,服务端机器命令行下操纵

python /usr/lib/zabbix/alertscripts/mail.py [email protected] "this is test title" "success send mail"

因为脚本是用python写的,所以要执行python语句,邮件接收者:[email protected];邮件主题:"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监控平台搭建添加自定义监控项目配置邮件告警测试警报不发邮件的问题处理的主要内容,如果未能解决你的问题,请参考以下文章

linux监控平台搭建主动和被动模式添加监控主机添加自定义模板处理图形乱码自动发现

Linux中详细搭建监控服务zabbix部署

添加自定义监控项目配置邮件警告

添加自定义监控项目。配置邮件告警

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

添加自定义监控项目配置邮件告警