Linux监控平台搭建(三)--自定义监控项目、问题告警及处理

一 添加自定义监控项目

zabbix很受欢迎的缘由之一是:可以自定义监控项目,以前咱们看到的不少的监控项目都是在模板里面提现的,可是当咱们须要一些个性化的监控项目,好比某一个业务的监控数据 需求:监控某台web的80端口链接数,并出图 两步:1)zabbix监控中心建立监控项目;2)针对该监控项目以图形展示python

1)建立监控项目

  1. 对于第一步,须要到客户端定义脚本 ,脚本的名字及位置能够自定义 vim /usr/local/sbin/estab.sh //内容以下
#!/bin/bash
 ##获取80端口并发链接数,也就是查看80端口中处于ESTABLISHED状态的连接有多少个,通常正常的也不会超过100
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
  1. 更改执行脚本的权限,主要为了授予zabbix用户执行这个脚本的权限
#  chmod 755 /usr/local/sbin/estab.sh
  1. 客户端上编辑配置文件
# vim /etc/zabbix/zabbix_agentd.conf

在配置文件中修改如下参数的值,linux

#表示使用自定义脚本,至关于开关,若是等于0,他就没办法使用脚本
UnsafeUserParameters=1

还要在配置文件中找到UserParameter参数,并设置自定义监控项下面的键值key为my.estab.count,后面的[]里面写脚本的参数,通常脚本是带有参数的,若是没有参数则能够写成,脚本为/usr/local/sbin/estab.sh,git

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

以下图的key
输入图片说明web

  1. 重启zabbix-agent服务
# systemctl restart zabbix-agent

2)针对该监控项目以图形展示

  1. 首先到服务端验证,执行下面命令,要保证没有防火墙规则,也没有selinux
[root@lijie-01 ~]# zabbix_get -s 192.168.75.134 -p 10050 -k 'my.estab.count' 
0
[root@lijie-01 ~]#
  1. 而后在zabbix监控中心(浏览器)配置增长监控 项目 输入图片说明 而后跳转到如下界面,写上名称,键值写my.estab.count,其余保持默认就能够了,最后点击页面底部的添加按钮
  2. 添加该项目后,到“监测中”--“最新数据”查看刚添加的项目是否有数据出现
    输入图片说明
    从上图能够看到已经有数据产生了
  3. 有了数据就能够添加图形了 按照这个顺序点击 “配置”“主机” “图形” “建立图形”,
    输入图片说明
    进入到建立自定义监控项的图形显示界面,名称能够写并发链接数,
    输入图片说明
    监控项框内点击添加按钮找到咱们在监控项中定义的并发链接数的并肯定后,
    输入图片说明
    页面变成下图样子
    输入图片说明
    最后点击页面最下方的添加按钮,便可成功添加图形
    输入图片说明
  4. 按照一样的方式,咱们也能够给监控项并发链接数设置触发器,告诉系统何时报警,只是在表达式选择的时候
    输入图片说明
    须要填写下图的信息,设置当并发链接数大于200时报警
    输入图片说明

二 配置邮件告警

  1. 使用163或者QQ邮箱发告警邮件,至关于就是调用第三方的邮箱来发出告警邮件,以QQ为例:
    首先登陆QQ邮箱,设置开启POP三、IMAP、SMTP服务,第一次开启会使用短信验证
    输入图片说明
    短信验证后咱们须要开启并记录受权码
    输入图片说明
  2. 而后到监控中心设置邮件告警,“管理”,“报警媒介类型”,“建立媒体类型”,下图中咱们能够看到默认有Email告警方式,但不太好用,所以咱们能够本身写一个python脚本
    输入图片说明
    而后弹出如下页面,此时这个脚本咱们尚未写的,三个参数分别为{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE},分别表示发给谁,主题、邮件内容,这三个东西分布在咱们写的脚本的三个参数里
    输入图片说明
  3. 建立报警脚本mail.py
    咱们能够到zabbix的配置文件 /etc/zabbix/zabbix_server.conf中查找alert找到如下一行内容
AlertScriptsPath=/usr/lib/zabbix/alertscripts

这行代码的含义是告警脚本的路径为/usr/lib/zabbix/alertscripts,这说明zabbix的告警脚本都应该放到这个路径下面vim

# vim /usr/lib/zabbix/alertscripts/mail.py  //内容参考https://coding.net/u/aminglinux/p/aminglinux-book/git/tree/master/D22Z?public=true

在上述路径中有两个mail相关的python脚本,都须要将gserver改成使用的邮箱的域名服务器,第一种,浏览器

#!/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.qq.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('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)
if __name__ == "__main__":
    main()
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱帐号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

第二种bash

#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = 'smtp.163.com'
mail_user = 'abcdefg@xx.com'
mail_pass = '1111111'
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
    me = "zabbix 监控告警平台"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
  1. 修改配置文件的权限
# chmod 755 /usr/lib/zabbix/alertscripts/mail.py

而后咱们来测试下是否能成功发送邮件,若是发送成功则不会有任何提示服务器

[root@lijie-01 alertscripts]# python mail.py ******@qq.com "title" "content"

我使用qq邮箱发送邮件测试了好几回都没有成功,而后我更换使用163邮箱来给个人qq邮箱发送邮件OK网络

  1. 建立一个接受告警邮件的用户,“管理”,“用户”,“建立用户”,“报警媒介”,类型选择“QQalert”
    输入图片说明 而后填写如下信息
    输入图片说明
    还有报警媒介
    输入图片说明
    输入图片说明
    注意用户的权限目前是无权限,若是这里设置不对的话,最终也是收不到告警邮件的
    输入图片说明
    这时须要到用户组去设置权限
    输入图片说明
    跳转到如下页面
    输入图片说明
  2. 用户配置完成后,还须要设置动做,动做是告警触发器被触发后须要作的动做,“配置”,“动做”,“建立动做”
    输入图片说明
    名称写“sendmail”(自定义),条件A是【维护状态 非在 维护】表示的含义是有一些维护并非在真正的维护时就不须要发邮件,好比当咱们重启网络服务等状况下就不是真正的维护,就不用发送邮件;条件B【触发器示警度>=未分类】表示全部状态的告警都须要发送邮件
    输入图片说明
  3. “操做”,选择发送的用户为刚建立的用户,仅送到选择“QQalert”
    上面定义的是发送邮件的动做,咱们来到“操做”页面,定义发给谁,主题、内容等信息,默认信息内容咱们填写如下内容:
HOST:{HOST.NAME} {HOST.IP}  
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}

填写的内容以下图,其中条件能够不用设置,条件A表示的是发生的事件处于非确认状态时来发送邮件
输入图片说明并发

  1. 切换到“恢复操做”,把默认信息改为以下
HOST:{HOST.NAME} {HOST.IP} 
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}

其余填写的信息以下:
输入图片说明
上面操做完成后再点击页面底部的添加按钮,便可添加成功,成功后以下图
输入图片说明

  1. 测试告警 为了测试告警,咱们在主机lijie-02中建立一个新的触发器,配置信息以下 ,咱们这里没有对zabbix-agent作任何操做,所以系统负载为0,下面咱们是设置当系统负载小于1时发邮件告警 输入图片说明
    等一下子以后,咱们就能收到邮件,而且能够看到zabbix首页有如下提示: 输入图片说明
    若是上图中的【完成】变成了空,颇有多是脚本没有权限致使的,若是是【失败】,则须要将鼠标划动到失败二字上面查看具体的失败缘由 收到的告警邮件信息以下: 输入图片说明
    上面咱们测试了问题告警,下面咱们来测试问题解决后的通知消息是否能成功发送,咱们先来将lijie-02中上面建立的触发器改一下,改成当系统负载大于1时发邮件告警 输入图片说明
    因为目前系统负载为0,所以告警解除,咱们就能收到告警解除的邮件 输入图片说明
    而且能够看到下图页面提示已解决 输入图片说明
相关文章
相关标签/搜索