zoukankan      html  css  js  c++  java
  • 19.12 添加自定义监控项目 19.13/19.14 配置邮件告警 19.15 测试告警 19.16 不发邮件的问题处理

    19.12 添加自定义监控项目

    • zabbix的监控项目是在模板里面体现,但是有时候就会有些个性化的需求:某一个业务的数据,例如:运营人员想知道网站会员注册量,会员活跃度;实际上,这些数据,都可以通过数据库里面的表的数字来体现,但是zabbix模板是不可能提供那么相信的监控项目;遇到这种情况,就需要通过编程工具,写成脚本,最后通过zabbix监控项目,形成图表,就可以实现;

    • 自定义的监控项目

    • 需求:监控某台web的80端口连接数,并出图

    • 解决方案:

    1. zabbix监控中心创建监控项目;

    2. 针对该监控项目以图形展现

    • 对于第一步,需要到客户端定义脚本

    • vim /usr/local/sbin/estab.sh //内容如下

    [root@aming-02 ~]# vim /usr/local/sbin/estab.sh
    #!/bin/bash
    ##获取80端口并发连接数netstat -ant |grep ':80 ' |grep -c ESTABLISHED
    ~                                                                                                    
                                                                                                     
    :wq
    • 配置一个能够让zabbix用户执行的权限,最终是zabbix用户去执行这个脚本,如果不给zabbix用户执行权限,最终得不到结果

    [root@aming-02 ~]# vim /usr/local/sbin/estab.sh
    [root@aming-02 ~]# chmod 755 /usr/local/sbin/estab.sh
    [root@aming-02 ~]#
    • 客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf //增加

    • UnsafeUserParameters=1 //表示使用自定义脚本,它就好比一个开关,如果等于0就没有办法去使用自定义的脚本

    • UserParameter=my.estab.count[],/usr/local/sbin/estab.sh //自定义监控项的key为my.estab.count,后面的[]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh

    • my.estab.count 这个是zabbix监控项里的一键值

    # Mandatory: no
    # Range: 0-1# Default:
    # UnsafeUserParameters=0UnsafeUserParameters=1### Option: UserParameter
    -- 插入 --               
    
    
    # Mandatory: no
    # Default:
    # UserParameter=
    UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
    
    ####### LOADABLE MODULES #######
    
    [root@aming-02 ~]# vim /etc/zabbix/zabbix_agentd.conf
    [root@aming-02 ~]#
    • 重启zabbix-agent服务 systemctl restart zabbix-agent

    [root@aming-02 ~]# systemctl restart zabbix-agent[root@aming-02 ~]#
    • 下面来验证一下,自定义的脚本有没有识别

    • 首先到服务端验证,执行命令

    • zabbix_get -s 192.168.133.130 -p 10050 -k 'my.estab.count' // -p端口,-k 键值 web 管理页

    [root@aming-01 ~]# zabbix_get -s 192.168.202.132 -p 10050 -k 'my.estab.count'0[root@aming-01 ~]#
    • 下面去 zabbix监控中心(浏览器)配置增加监控项目(并发链接数) 配置–>主机–>监控项->创建监控项

    • mark

    • mark

    • mark

    • mark

    • 添加完之后还要做一个图形,因为这是我们的需求

    • mark

    • mark

    • mark

    • mark

    • mark

    • mark

    • 给他做一个触发器

    • mark

    • mark

    • mark

    • mark

    • mark

    • mark

    • mark

    19.13 配置邮件告警(上)

    • 使用163发告警邮件

    • 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务

    • mark

    • mark

    • mark

    • 设置授权码,授权码为cc293016

    • mark

    • 开启并记录授权码(需要牢记)

    • 然后到监控中心设置邮件告警

    • “管理”,“报警媒介类型”,“创建媒体类型” {ALERT.SENDTO}收件人,{ALERT.SUBJECT}主题,{ALERT.MESSAGE}邮件内容 //这三个东西分布在py脚本参数下

    • mark

    • mark

    • mark

    • mark

    • 接下来去定义mail.py脚本了, 定义脚本报警 在配置文件定义 在服务端上定义

    • vim /etc/zabbix/zabbix_server.conf,搜索Alert,找到 AlertScriptsPath=/usr/lib/zabbix/alertscripts //这就是报警脚本所在路径

    [root@aming-01 ~]# vim /etc/zabbix/zabbix_server.conf### Option: UnreachableDelay## Mandatory: no# Range: 1-3600# Default:# UnreachableDelay=15### Option: AlertScriptsPath#       Full path to location of custom alert scripts.#       Default depends on compilation options.## Mandatory: no# Default:# AlertScriptsPath=${datadir}/zabbix/alertscriptsAlertScriptsPath=/usr/lib/zabbix/alertscripts### Option: ExternalScripts#       Full path to location of external scripts.#       Default depends on compilation options.## Mandatory: no# Default:# ExternalScripts=${datadir}/zabbix/externalscriptsExternalScripts=/usr/lib/zabbix/externalscripts### Option: FpingLocation[root@aming-01 ~]# vim /etc/zabbix/zabbix_server.conf
    [root@aming-01 ~]#
    [root@aming-01 ~]# ls /usr/lib/zabbix/alertscripts[root@aming-01 ~]# [root@aming-01 ~]# cd /usr/lib/zabbix/alertscripts[root@aming-01 alertscripts]# [root@aming-01 alertscripts]# vi mail.py[root@aming-01 alertscripts]# vim mail.py#!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sys
    reload(sys)
    sys.setdefaultencoding('utf8')import getoptimport smtplibfrom email.MIMEText import MIMETextfrom email.MIMEMultipart import MIMEMultipartfrom  subprocess import *
        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('aming_test2017@163.com','cc293016','aming_test2017@163.com',to,subject,content)if __name__ == "__main__":
    :wq
    • 一定要记得 需要改下权限 mail.py

    [root@aming-01 alertscripts]# vim mail.py[root@aming-01 alertscripts]# chmod 755 mail.py[root@aming-01 alertscripts]#
    • 测试mail.py是否能发邮件

    [root@aming-01 alertscripts]# chmod 755 mail.py[root@aming-01 alertscripts]# python mail.py aming_test2017@163.com "This is the first test mail" "121212121212"[root@aming-01 alertscripts]#
    • mark

    • mark

    • 已经收到了,时间也差不多

    [root@aming-01 alertscripts]# date2017年 11月 18日 星期六 22:32:58 CST
    [root@aming-01 alertscripts]#

    19.14 配置邮件告警(下)

    • 创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”

    • 1,2,3 都是为了容易分辨填写的,按习惯就好

    • 4,选择群组,归属于那个群组,这个涉及到之后的权限是否能发送邮件

    • 5,密码,用于,登录,接收,发送邮件 (密码是aming)

    • 6,登录系统时,默认显示的界面

    • 下面创建一个用户,这个用户是用来接收邮件的,得给指定邮箱,没有人,发给谁?

    • mark

    • mark

    • mark

    • mark

    • mark

    • 添加完了之后,忘记给它设置邮箱

    • mark

    • mark

    • 再来看看权限

    • mark

    • mark

    • 只能去用去组里面去改权限

    • mark

    • mark

    • mark

    • mark

    • mark

    • 注意,这个地方如果设置不对的话,最终报警也是收不到的,邮件收不到

    • 再来看看这个用户的权限

    • mark

    • mark

    • 这里发现报警媒介没有添加

    • mark

    • 继续添加报警媒介

    • mark

    • mark

    • mark

    • 用户配置完了,还有一个地方需要配置,就是动作

    • 创建动作

    • mark

    • 设置动作,“配置”,“动作”,“创建动作”,名称写“sendmail”(自定义),“操作”页面,内容如下:

    • 1、“维护状态 非在 维护” // 维护状态机器不进行发邮件

    • 2、“触发器示警度”>=未分类 // 即任何情况都进行发邮件

    • mark

    • mark

    • mark

    • 修改发邮件的模板

    HOST:{HOST.NAME} {HOST.IP}     //主机,IPTIME:{EVENT.DATE}  {EVENT.TIME}   //时间LEVEL:{TRIGGER.SEVERITY}             //示警度NAME:{TRIGGER.NAME}                //那个触发器messages:{ITEM.NAME}:{ITEM.VALUE}      //状态ID:{EVENT.ID}         //时间ID
    • mark

    • mark

    • mark

    • “操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”

    • mark

    • mark

    • 再来看恢复操作

    • mark

    • 切换到“恢复操作”,把信息改成如下 (客户端状态恢复了,需要确认已经恢复状态)

    • 修改默认信息,和刚刚操作里面是一样的

    HOST:{HOST.NAME} {HOST.IP}TIME:{EVENT.DATE}  {EVENT.TIME}
    LEVEL:{TRIGGER.SEVERITY}
    NAME:{TRIGGER.NAME}
    messages:{ITEM.NAME}:{ITEM.VALUE}
    ID:{EVENT.ID}
    • mark

    • mark

    • mark

    • mark

    • mark

    • 咱们报警的准备的工作已经做好了,剩下的就是要验证一下,到底设置的报警有没有生效

    19.15 测试告警

    • 下面来做实验 ,手动调节触发器,以实现报警,发邮件

    • mark

    • 检查到上一节的aming用户没有设置报警媒介,给设置好

    • mark

    • mark

    • mark

    • 自定义配置一个触发器,

    • mark

    • mark

    • mark

    • mark

    • 查看邮箱

    • mark

    • mark

    • 已经告警了,说明成功了,那现在我们把它改好

    • mark

    • mark

    • 刷新浏览器 发现没有问题了

    • mark

    • mark

    • mark

    • mark

    19.16 不发邮件的问题处理

    • 因为虚拟机,可能存在一些bug,第一次配置的时候,经常会出现zabbix发现问题,做了邮件告警,但是邮箱却没有收到邮件的问题;重新恢复快照以后再做一次,就又能正常发送邮件,接收邮件了 配置邮件告警总结

    • 1、到163邮箱开启SMTP服务,并记录授权码,没有开启,脚本里面就没有写的密码

    • 2、设置邮件告警 首先设置一个报警媒介;三个参数必须填写正确,顺序也不能错误

    • 3、编辑邮件告警脚本 /usr/lib/zabbix/alertscripts

    • 路径不能错误,必须在这个路径下,添加一个脚本,创建好之后,记得给脚本755权限

    • 4、配置用户 配置用户之前,把用户群组的权限改一下,让组有一个读写权限 用户加到指定的群组里 报警媒介,添加自己的邮箱,自己给自己发,这个成功率会比较高

    • 5、配置动作 操作修改默认信息(发送邮件的格式),操作需要添加一个“新的”给谁发邮件;恢复操作同样

    • 6、测试一下告警是否能成功发送邮件 人为创建一个触发器,设置一个系统最低运行都会触发报警的触发器 也可以在客户端上断开连接(停止客户端的zabbix服务) PS: 客户端主动模式和被动模式,在监控项里,选择一个监控项打开,选择类型是客户端主动,客户端;客户端主动即为主动模式,客户端为被动模式

  • 相关阅读:
    最新macOS 11.4+Xcode 12.5+iOS 14.6 编译安装WebDriverAgent填坑记
    python +pytest +yaml + Allure 实现接口自动化框架
    DNS原理及其解析过程
    jmeter性能测试--ramp_up和同步定时器的区别
    jmeter常用定时器
    基本sql语句
    MySQL连表查询
    MySQL约束条件
    MySQL单表查询
    linux 查看文件的前几行 或者 某些行
  • 原文地址:https://www.cnblogs.com/pta188/p/9288555.html
Copyright © 2011-2022 走看看