zoukankan      html  css  js  c++  java
  • zabbix笔记之告警配置

    告警配置

    告警的必要性

    为什么要有告警?

    在服务器性能出现异常的时候,以做到实时收取告警信息,便于系统维护人员及时避免或解决系统故障

    告警原理

    ZABBIX告警的原理是什么?

    每个zabbix触发器是由一个唯一的trigger id进行标识,触发器满足条件的时候,zabbix生成事件,例如CPU使用率连续5分钟大于90%是一个条件,根据这个条件可以定义一个触发器。CPU使用率的数据在zabbix的术语中叫做一个item监控项。Zabbix监控大量的item,例如CPU,磁盘,网络带宽,ping状态,web服务的可用性等等

    触发器有切只有两种状态:OK和PROBLEM,OK表示正常状态,PROBLEM表示出现问题,超出了规定的阈值,当触发器的状态变化的时候,一个event发生了。进入了 Problem状态的触发器,就是一个zabbix problem

    用来对应一个event的动作叫做action,一个action是一个操作及其结果,例如发送告警信息,执行远程操作等等

    告警方式

    ZABBIX的告警方式有以下几种:

    1. 电子邮件

    2. 脚本

    3. 短信

    4. Jabber

    5. EZ简讯

    这里主要是讲解邮件告警和微信告警(脚本告警)

    邮件告警

    zabbix主机上配置

     #检测是否已经安装mailx软件,如果安装则跳过,未安装则安装mailx
    [root@zabbix ~]# rpm -qa | grep mailx  && echo "mailx 已经安装" || yum install mailx  -y
    配置mailx服务,我的告警邮箱是腾讯企业邮箱
    [root@zabbix ~]#vim /etc/mail.rc
    # 设置zabbix告警发件箱,配置smtp域名
    set from=邮箱名  smtp=smtp.exmail.qq.com  
    # zabbix告警发件箱的用户名和登陆密码
    set smtp-auth-user=邮箱名  smtp-auth-password=邮箱密码
    # 将zabbix告警发件箱设置成自动登陆
    set smtp-auth=login  
    [root@zabbix ~]#echo "test" | mail -s "zabbix"  收件箱  //测试邮件能否正常发送邮件,如果可以正常发送邮件就表明你的配置没有问题,可以继续下一步

    web端配置

    配置告警媒介类型

     

    我的告警媒介类型配置如下

    名称:Email
    类型:电子邮件
    SMTP服务器:smtp.exmail.qq.com
    SMTP服务器端口:465
    SMTP HELO:exmail.qq.com.cn

    配置告警邮件收件人

    配置动作

    克隆zabbix自带的动作,然后编辑

     

     

     

    故障告警:{TRIGGER.NAME}
    告警主机:{HOST.NAME}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息:{TRIGGER.NAME}
    告警项目:{TRIGGER.KEY}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

     

     

    配置恢复操作,与配置操作的步骤一样

     

    告警主机:{HOST.NAME}
    主机IP地址:{HOST.IP}
    恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息:{TRIGGER.NAME}
    告警项目:{TRIGGER.KEY}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

    测试邮件告警

    修改触发器的触发条件,即可完成测试

    企业微信告警

    企业微信web端配置

    注册企业微信账号或使用公司的企业微信账号,并创建应用

    https://work.weixin.qq.com/

    主要流程如下:

     1.创建微信用户成员。

     2.创建应用,这是关键,企业微信创建的应用ID为1000002

     3.创建应用管理组,添加组成员(也就是设置哪些用户可以接收到报警的通知信息)。

     4.创建成功后需要获取到以下信息:CropID 和Secret 当然还包括创建的用户信息。

      申请企业微信,创建对应的组成员这些就不介绍了,按照注册向导创建即可,主要写下创建应用获取应用Secret 和CorpID

    企业微信配置

    创建应用并获取Agentld和Secret

     

    获取Agentld和secert

     

    获取CorpID

     获取部门ID

    zabbix服务端配置

    #ZABBIX脚本配置
    #找到放置告警脚本的目录
    [root@zabbix ~]# find  / -name alertscripts
    /usr/lib/zabbix/alertscripts
    #进入目录配置脚本
    [root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
    [root@zabbix alertscripts]# vim weixin.sh
    #!/bin/bash
    # @Date: 2019-09-26 21:05:59
    # @Author: zhangcheng (3359957053@qq.com)
    # @Description: 微信告警脚本
     
    #####################################
    #填写企业ID
    CropID='wx9ac8f9478320ea89 '
     
    #应用的secret,下面的GURL和PURL 地址无需变动
    Secret='qUwDxMnL73w0VAR807O0X57KAaI7GJ4YP_RFau5quEI'
    GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
    Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F" '{print $10}')
    PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
     
    function body() {                
            #这里是创建的应用ID 
            local int AppID=1000002                
            #接收消息用户,系统传参
            local UserID=$1                              
            #接收消息的部门ID
            local PartyID=2                             
            local Msg=$(echo "$@" | cut -d" " -f3-)
            printf '{
    '
            printf '	"touser": "'"$UserID""",
    "
            printf '	"toparty": "'"$PartyID""",
    "
            printf '	"msgtype": "text",
    '
            printf '	"agentid": "'" $AppID """,
    "
            printf '	"text": {
    '
            printf '		"content": "'"$Msg"""
    "
            printf '	},
    '
            printf '	"safe":"0"
    '
            printf '}
    '
    }
    /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
    
    #脚本权限配置
    [root@zabbix alertscripts]# chown zabbix.zabbix weixin.sh 
    [root@zabbix alertscripts]# chmod -v +x weixin.sh

    web端配置

    这里的设置和邮件告警的步骤基本相同了,创建【动作】、【示警媒介】、【接收消息的用户】

    脚本传参: {ALERT.SENDTO}   {ALERT.SUBJECT}   {ALERT.MESSAGE}

     用户这里添加需要增加用户的示警媒介【管理】-【用户】-选择对应的用户-【示警媒介】添加的收件人 则为企业微信中的账号

     

    配置action
    告警动作
    服务器:{HOST.NAME}出现故障!
    主机:{HOSTNAME1}
    IP地址:{HOST.IP}
    时间:{EVENT.DATE} {EVENT.TIME}
    等级:{TRIGGER.SEVERITY}
    信息: {TRIGGER.NAME}
    项目:{TRIGGER.KEY1}
    详情:{ITEM.NAME}:{ITEM.VALUE}
    状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}
    注意:恢复信息中 时间:{EVENT.DATE} {EVENT.TIME} 要修改为 时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME} 否则不能获取到正确的恢复时间。

     

     测试告警,和邮件告警一样

  • 相关阅读:
    学习wxPython的一个例子
    Prismatic Joint(移动关节)
    利用Revolute Joint创建Motor
    FlashDevelop+OMSF第一个例子,关于编译常量的问题
    模拟从上向下看的汽车(Top Down Car Simulation)
    记一笔:As3监听键盘组合键如:Ctrl+Z,Ctrl+Y等
    渐变填充beginGradientFill或者lineGradientStyle的参数说明
    Revolute Joints(转动关节)
    播放本地视频的截图测试
    内建函数chr,str,ord的使用细节
  • 原文地址:https://www.cnblogs.com/zhangcheng94/p/12170909.html
Copyright © 2011-2022 走看看