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

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

原创qq5a6d861adfe892018-04-15 17:31:28评论(0)314人阅读python

           添加自定义监控项目linux

不少的监控项,咱们都是在配置的模板中设置的,可是模板的选择是不能彻底知足到咱们生产中 的实际需求。因此咱们能够自定义监控项目,经过编写Shell脚本或者python脚本,在脚本中获取数据库中所需业务的数,而后在经过在监控项里添加这个脚本,将脚本获取到的数目以图表的形势展示。这样就有利于运维人员及时发现和分析问题。git

需求:web

blob.png

需求:监控某台web的80端口链接数,并出图数据库

 两步:1)zabbix监控中心建立监控项目;2)针对该监控项目以图形展示vim

 对于第一步,须要到客户端定义脚本浏览器

1.定义脚本,编写内容获取80端口链接数;bash

 vim /usr/local/sbin/estab.sh //内容以下网络

#!/bin/bash并发

##获取80端口并发链接数,ESTABLISHED的意思是创建链接。表示两台机器正在通讯。

 netstat -ant |grep ':80 ' |grep -c ESTABLISHED

blob.png

(LISTENING状态
FTP服务启动后首先处于侦听(LISTENING)状态。

CLOSE_WAIT

    对方主动关闭链接或者网络异常致使链接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得链接正确关闭

TIME_WAIT

    我方主动调用close()断开链接,收到对方确认后状态变为TIME_WAIT。)


blob.png

由于客户端的还未有其余机器进行web链接,因此链接数仍是为0。


2.修改脚本权限,否者zabbix用户没法执行:

 chmod 755 /usr/local/sbin/estab.sh

blob.png

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

blob.png


4.重启zabbix-agent服务 systemctl restart zabbix-agent



         服务端上测试:

blob.png

1.执行测试脚本测试,是否能正常取得值和返回值。

命令:zabbix_get -s 192.168.136.134 -p 10050 -k 'my.estab.count'

(使用zabbix_get命令可对服务端进行链接)

blob.png

在执行这一步以前,首先要判断客户端和服务端机器是否存在防火墙规则和SELinux,若是存在则要把这些都关闭,

防火墙查看命令:iptables -nvL

SELinux查看 :getenforce 



2.  而后在zabbix监控中心(浏览器)配置增长监控项目

(1)配置-->主机-->选择操做的主机的监控项-->建立监控项


blob.png

填写完名称和键值,其余都是能够保持默认,而后最后按添加。

(2)点击图像:

 建立图形-->填写名称-->添加(监控项处)-->选择建立的监控项-->添加

blob.png

添加完后选择刚建立的图形,选择预览就能够看到图表数据。


3.建立触发器,作报警用:

触发器-->建立触发器-->填写名称-->表达式添加-->选择最后的添加便可

blob.png

blob.png



                配置邮件告警

使用163.com邮箱。             

blob.png

1.登陆163邮箱,设置开启POP三、IMAP、SMTP服务

设置受权密码,用于警报发送时的邮箱密码

blob.png


2.到监控中心设置邮件告警

 “管理”-->“报警媒介类型”-->“建立媒体类型”

blob.png

 {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

{ALERT.SENDTO} :接收邮件者

{ALERT.SUBJECT}:发送邮件的主题

{ALERT.MESSAGE}:发送邮件的内容



blob.png

3.在服务端上编写邮件告警脚本:mail.py建立报警脚本mail.py

那么咱们的脚本究竟是放在哪里才能备调用呢?其实在配置文件中有定义: vim /etc/zabbix/zabbix_server.conf 

blob.png

(默认状况下这个路径下的目录为空,因此要在这里建立咱们的脚本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  这里定义的是发送邮箱的发送者的信息

blob.png


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

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"。

blob.png命令行下测试成功,脚本正常能使用。


4.建立邮箱帐户(用于接收告警,邮箱用户在Zabbix的用户里设置)

(1)设置用户首先要有用户群组,用户群组能够建立也可使用自带的。修改用户群组权限为读写,由于若是用户群组无读写权限邮件也发不出去。

    修改用户群组权限步骤:点击用户群组-->选择操做的用户群组-->权限-->选择“读写”-->选择-->把出现内容全选-->添加。

(2)建立邮箱帐户步骤:

首先填写建立用户处信息:

  blob.png

而后修改报警媒介:

blob.png

blob.png


5.配置-->动做

当触发器,报警媒介等都建立后,要去配置动做,否者当出动触发器的时候,邮件没法发送。

依次操做"配置"-->"动做"-->"建立动做"

(1)建立动做基本内容

blob.png

(2)点击"操做"

blob.png

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)点击“恢复操做”

(当告警恢复时也发送信息)

blob.png



                        测试警报

 测试警报,故意建立一个监控主机的触发器,简单的填写触发器名称,而后添加表达式,在表达式中设定监控项和功能值N,知足功能值N时告警。最后添加便可

blob.png


1.观察监控状态,是否发生警告问题和正常发送邮件:

blob.png

(当动做处的信息为空白时多是动做未定义对或者对脚本无权限)

2.问题查询

blob.png

添加媒介信息后继续观察问题是否正确发送,可是首先要把问题先恢复,操做也是监控主机的触发器的表达式的条件。

blob.png

(这样恢复尽在实验中操做)

   要修改主机的问题告警频率,须要在模板中修改。具体为操做具体监控主机的模板,选择相应的监控项的数据更新时间

blob.png

出现这种动做的完成后则,表示咱们的问题就是能经过邮件的方式进行发送的。

若是问题不能发送邮件则,问题查询:

(1)检查邮件是否能进行发送

 (2)检测脚本是否给zabbix用户有操做权限。

  (3)查看邮件用户的信息

相关文章
相关标签/搜索