Zabbix——Zabbix实现邮件微信告警

Posted Pakho`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix——Zabbix实现邮件微信告警相关的知识,希望对你有一定的参考价值。

背景:公司有一台nginx服务器,需要进行监控,如果nginx服务器down,需要通过邮件搞紧以及微信告警

环境准备

一、被监控端安装Nginx服务器

[root@zabbix-agent01 ~]# rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm
[root@zabbix-agent01 ~]# systemctl enable nginx --now       

安装完成后查看端口
在这里插入图片描述

[root@zabbix-agent01 ~]# vim /etc/nginx/conf.d/default.conf   #如果需要修改端口可以进入配置文件修改端口

在这里插入图片描述

Zabbix监控端设置

一、创建主机群组
在这里插入图片描述
在这里插入图片描述
二、创建主机并加入主机组导入模板
在这里插入图片描述
在这里插入图片描述

三、创建Nginx图形显示
在这里插入图片描述进入检测>最新数据查看Nginx状态
在这里插入图片描述

四、将监控项的更新间隔修改为1s
在这里插入图片描述

配置完成后的简单测试

[root@zabbix-agent01 ~]# systemctl stop nginx #将Nginx服务器关闭

在这里插入图片描述可以看到有一个服务关闭后又再次启动的过程
在这里插入图片描述

触发器的配置

打开触发器音效
利用原始模板提供的触发音效进行触发告警提醒
在这里插入图片描述

邮件告警

一、进入报警媒介类型配置
在这里插入图片描述

二、配置Email报警模式

在这里插入图片描述

在这里插入图片描述

三、定义收件人
在这里插入图片描述

在这里插入图片描述
点击添加之后选择更新
在这里插入图片描述

四、触发动作(什么事情触发邮件)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@zabbix-agent01 ~]# systemctl stop nginx   #触发邮件告警

在这里插入图片描述

[root@zabbix-agent01 ~]# systemctl start  nginx #打开nginx 再次触发邮件

在这里插入图片描述

微信告警

一、准备工作

  • 下载企业微信
    在这里插入图片描述

二、PC端企业微信后台操作

1) 打开浏览器输入以下网址,登陆企业微信PC端后台:记录企业ID

在这里插入图片描述

  • 点击公司名:但行好事莫问前程
  • 将企业ID复制:wwf578a3*********

2)创建自己的应用(PC后台)(记录Agentld和secret)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后点击创建应用
在这里插入图片描述
这里secret需要前往手机企业微信查看

3)添加管理组(PC后台)添加部门(PC后台)添加员工(PC后台)

在这里插入图片描述
4)测试企业微信接口调试工具(PC后台)

  • API文档>第三方应用开发>工具与资源>接口调试工具

在这里插入图片描述
三、配置Python报警监控脚本

1)创建脚本文件

[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/wechat.py  
#alertscripts:其他脚本

着手完整代码基于Python3.6

#!/usr/bin/python3.6
#_*_coding:utf-8 _*_


import requests,sys,json
import urllib3
urllib3.disable_warnings()


def GetTokenFromServer(Corpid,Secret):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
    Data = {
        "corpid":Corpid,
        "corpsecret":Secret
    }
    r = requests.get(url=Url,params=Data,verify=False)
    print(r.json())
    if r.json()['errcode'] != 0:
        return False
    else:
        Token = r.json()['access_token']
        file = open('/tmp/zabbix_wechat_config.json', 'w')
        file.write(r.text)
        file.close()
        return Token

def SendMessage(User,Agentid,Subject,Content):
    try:
        file = open('/tmp/zabbix_wechat_config.json', 'r')
        Token = json.load(file)['access_token']
        file.close()
    except:
        Token = GetTokenFromServer(Corpid, Secret)

    n = 0
    Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
    Data = {
        "touser": "HeYiHao",                            # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
        "msgtype": "text",                              # 消息类型。
        "agentid": 1000002,                             # 企业号中的应用id。
        "text": {
            "content": Subject + '\\n' + Content
        },
        "safe": "0"
    }
    r = requests.post(url=Url,data=json.dumps(Data),verify=False)
    while r.json()['errcode'] != 0 and n < 4:
        n+=1
        Token = GetTokenFromServer(Corpid, Secret)
        if Token:
            Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
            r = requests.post(url=Url,data=json.dumps(Data),verify=False)
            print(r.json())

    return r.json()


if __name__ == '__main__':
    User = sys.argv[1]                                                                # zabbix传过来的第一个参数
    Subject = str(sys.argv[2])                                                             # zabbix传过来的第二个参数
    Content = str(sys.argv[3])                                                             # zabbix传过来的第三个参数

    Corpid = "wwf578a38030da828f"                                                                     # CorpID是企业号的标识
    Secret = "tOqSaaQfdlH-ytkWmvADK_oonyPT6wRkfypiosbujyE"                                            # Secret是管理组凭证密钥
    Agentid = "1000002"                                                                 # 应用ID

    Status = SendMessage(User,Agentid,Subject,Content)
    print(Status)
[root@zabbix-server alertscripts]# yum -y install python36  #安装python3.6

2)为wechat.py文件提权

[root@zabbix-server alertscripts]# chmod +x wechat.py

3)传参测试

[root@zabbix-server alertscripts]# ./wechat.py HeYiHao test test

在这里插入图片描述手机显示接受成功!
在这里插入图片描述
四、zabbix添加报警媒介类型与之对接

参考官方文档

在这里插入图片描述1)自定义媒介类型
在这里插入图片描述
2)添加消息模板
在这里插入图片描述
3)测试
在这里插入图片描述

在这里插入图片描述4)修改类型和收件人

User settings>报警媒介

5)修改触发器

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

6)测试

[root@zabbix-agent01 ~]# systemctl stop nginx

在这里插入图片描述

[root@zabbix-agent01 ~]# systemctl start  nginx

在这里插入图片描述

以上是关于Zabbix——Zabbix实现邮件微信告警的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix-3.2.3实现微信(WeChat)告警

Zabbix实现电话邮件微信告警通知的实践分享

Zabbix集成OneAlert实现短信邮件微信电话App告警

zabbix--微信告警

Zabbix-3.0.3实现微信(WeChat)告警

zabbix详解:添加邮件告警配置