码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-05-29 00:08:33      阅读:385      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!