zoukankan      html  css  js  c++  java
  • zabbix邮件报警+微信报警

     

    zabbix添加自定义监控项

    监控nginx web的80端口连接数,zabbix监控中心创建监控项目,针对监控以图形展现

    需要到客户端zabbix_agent定义脚本

    vim /usr/local/sbin/estab.sh //内容如下
    #!/bin/bash
    ##获取80端口并发连接数
    netstat -ant |grep ':80 ' |grep -c ESTABLISHE
    chmod a+x /usr/local/sbin/estab.sh
    

    客户端配置vim /etc/zabbix/zabbix_agentd.conf

    更改配置.

    UnsafeUserParameters=1  //表示使用自定义脚本
    UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
    

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

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

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

    zabbix_get -s 120.78.91.23 -p 10050 -k 'my.estab.count'

    然后在zabbix监控中心(浏览器)配置增加监控项目
    键值写my.estab.count

    添加该项目后,到“监测中” “最新数据”查看刚添加的项目是否有数据出现

    有了数据就可以添加图形了
    “配置”-“主机” -“图形” -“创建图形”

    使用163或者QQ邮箱发告警邮件
    首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务
    开启并记录授权码
    然后到监控中心设置邮件告警
    “管理”,“报警媒介类型”,“创建媒体类型”
    {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

    创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到用户组去设置权限
    设置动作,“配置”,“动作”,“创建动作”,名称写“sendmail”(自定义),“操作”页面,内容如下
    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维护状态 非在 维护,B触发器示警度>=未分类
    “操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”
    切换到“恢复操作”,把信息改成如下
    HOST:{HOST.NAME} {HOST.IP}
    TIME:{EVENT.DATE} {EVENT.TIME}
    LEVEL:{TRIGGER.SEVERITY}
    NAME:{TRIGGER.NAME}
    messages:{ITEM.NAME}:{ITEM.VALUE}
    ID:{EVENT.ID}
    点击“新的”,“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”

    我这里直接使用py脚本,借助阿里云发信地址

    # cd /usr/lib/zabbix/alertscripts
    # vim mail.py
    
    #!/usr/bin/python
    #coding:utf-8
    
    import smtplib
    from email.mime.text import MIMEText
    import sys
    
    #发信地址
    mail_user = 'yantou@222'
    #发信地址的SMTP密码
    mail_pass = '123456'
    
    def send_mail(to_list,subject,content):
        me = "aliyun告警平台"+"<"+mail_user+">"
        msg = MIMEText(content, 'plain', 'utf-8')
        msg['Subject'] = subject
        msg['From'] = me
        msg['to'] = to_list
    
        try:
            #定义阿里云提供的SMTP服务地址
            s = smtplib.SMTP("smtpdm.aliyun.com", 80)
            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])
    
    # chmod a+x mail.py
    

     测试

     特意改小

     恢复

     

     邮件报警完成。

    2.zabbix微信+邮件

    在指定的告警目录下/usr/local/zabbix/alertscripts,创建weixin.py脚本,在企业微信里找到agentid、企业ID以及企业秘钥

    #!/usr/bin/python
    #coding:utf-8
     
    import requests
    import sys
    import os
    import json
    import logging
     
    logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
    datefmt = '%a, %d %b %Y %H:%M:%S',
    filename = os.path.join('/tmp','weixin.log'), # 指定临时weixin的日志路径
    filemode = 'a')
     
    corpid='xxx'  # 需要修改企业ID
    appsecret="xxx"  # 企业的secret秘钥
    agentid="xxx" # 修改agentid
    token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
    req=requests.get(token_url)
    accesstoken=req.json()['access_token']
     
     
    msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
    touser=sys.argv[1]
    subject=sys.argv[2]
    message=sys.argv[2] + "
    
    " +sys.argv[3]
     
     
    params={
    "touser": touser,
    "msgtype": "text",
    "agentid": agentid,
    "text": {
    "content": message
    },
    "safe":0
    }
     
    req=requests.post(msgsend_url, data=json.dumps(params))
    logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
    

    对weixin.py脚本加上执行权限,并将属组和属主加上

    # chmod a+x weixin.py  
    # chown zabbix:zabbix weixin.py 

    服务端上测试

    [root@zabbix-server alertscripts]# python wechat.py YanTou "测试" "WCAO"
    YanTou 企业微信号
    "测试"  主题
    "WCAO" 内容
    

     发送成功!!

    1、配置发件人

    进入:配置——> 报警媒介类型 ——> 创建媒体类型

     脚本参数:{ALERT.SENDTO}, {ALERT.SUBJECT} , {ALERT.MESSAGE}

    2.配置收件人

     给用户添加报警媒介,也可以新建一个用户用来专门来用于微信报警,我这里直接使用 yantou 用户了(说明:这里收件人对应企业微信号中的应用ID) 

    3、创建动作

    配置——>动作——>创建动作

     

    操作-》如下配置
    默认操作步骤持续时间 60
    主题 : {TRIGGER.STATUS}:{TRIGGER.NAME}
    消息:
    告警主机:{HOST.NAME}
    主机IP:{HOST.IP}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息:{TRIGGER.NAME}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID: {EVENT.ID}

    ====操作细节=====
    操作类型:发送消息
    发送到用户:yantou ll

     恢复操作:

    主题:{TRIGGER.STATUS}:{TRIGGER.NAME}
    恢复信息:
    恢复主机:{HOST.NAME}
    恢复 IP:{HOST.IP}
    恢复时间:{EVENT.DATE} {EVENT.TIME}
    恢复等级:{TRIGGER.SEVERITY}
    恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
    恢复 ID:{EVENT.ID} 
    ====操作细节=====
    操作类型:发送消息
    发送到用户:yantou ll

     测试结果如下:(负载小于1触发)

     

     配置成功

  • 相关阅读:
    SQL*PLUS命令的使用大全
    Oracle总结
    SQL*PLUS命令的使用大全
    Java经典面试题
    学习Java的30个基本概念
    Java经典面试题
    学习Java的30个基本概念
    Oracle总结
    ORACLE大数据量下的分页解决方法
    XAMPP修改80和443端口及创建虚拟目录
  • 原文地址:https://www.cnblogs.com/yantou/p/14471526.html
Copyright © 2011-2022 走看看