2021-10-20⑦企业级zabbix监控 微信报警、邮箱报警、钉钉报警、全网最细

2021-10-20⑦企业级zabbix监控 微信报警、邮箱报警、钉钉报警、全网最细,第1张

2021-10-20⑦企业级zabbix监控 微信报警、邮箱报警、钉钉报警、全网最细

文章目录
    • ①微信监控报警
    • 企业微信后台【PC】
    • python报警监控脚本上传报警监控脚本或者下载脚本
    • 微信报警脚本
    • 2、zabbix 创建告警媒介
    • ②163邮箱 (脚本)
    • 3、网页配置
    • 邮件不用脚本
    • ③钉钉报警
    • 安装python-pip和requests库
    • 在监控页面创建媒介:

①微信监控报警

zabbix 微信报警【监控端】
5.1下载企业微信【手机】


点击登录默认没有企业会出现创建企业

加了企业的话,点击我的》 点击设置》切换身份》创建企业/团队

企业微信后台【PC】






需要记住这 几个配置 注意截图一下

企业 id   wwe81e87a26a5b9e09
账号      TianMingQing
部门 id    2
AgentId      1000002
 
手机上面查看到的 Secret  
 
python报警监控脚本上传报警监控脚本或者下载脚本

上传 脚本文件 ,
步骤;cp -rf wechat.py /usr/lib/zabbix/alertscripts/ 拷贝上传的脚本
步骤:cd /usr/lib/zabbix/alertscripts/
步骤;chmod +x wechat.py && chown zabbix:zabbix wechat.py 提权

无论是上传还是下载的脚本都需要,改下面的信息。
需要修改脚本中的四个信息:
self. corpid = ‘wwd2385f23ad80ecef’ //公司的corpid
self. secret = ‘3gsEC6Mv3vQmdG5MOJBF65U0KzTl-1v2GKQhr479uso’ //应用的secret
‘toparty’:1, //部门id
‘agentid’:“1000002”, //应用id

微信报警脚本

修改 15 16 69 71 添加这几个

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )


class WeChat(object):
        __token_id = ''
        # init attribute
        def __init__(self,url):
                self.__url = url.rstrip('/')
                self.__corpid = 'wwe81e87a26a5b9e09'
                self.__secret = 'i1_tJySbbE6LvIYK_irRDSGYZFD37KnlrbZCxd3L6aE'


        # Get TokenID
        def authID(self):
                params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
                data = urllib.urlencode(params)


                content = self.getToken(data)


                try:
                        self.__token_id = content['access_token']
                        # print content['access_token']
                except KeyError:
                        raise KeyError


        # Establish a connection
        def getToken(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'gettoken?'
                try:
                        response = urllib2.Request(url + data)
                except KeyError:
                        raise KeyError
                result = urllib2.urlopen(response)
                content = json.loads(result.read())
                return content


        # Get sendmessage url
        def postData(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
                request = urllib2.Request(url,data)
                try:
                        result = urllib2.urlopen(request)
                except urllib2.HTTPError as e:
                        if hasattr(e,'reason'):
                                print 'reason',e.reason
                        elif hasattr(e,'code'):
                                print 'code',e.code
                        return 0
                else:
                        content = json.loads(result.read())
                        result.close()
                return content

        # send message
        def sendMessage(self,touser,message):
                self.authID()
                data = json.dumps({
                        'touser':touser,
                        'toparty':2,
                        'msgtype':"text",
                        'agentid':"1000002",
                        'text':{
                                'content':message
                        },
                        'safe':"0"
                },ensure_ascii=False)


                response = self.postData(data)
                print response

if __name__ == '__main__':
        a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
        a.sendMessage(sys.argv[1],sys.argv[3])



监控脚本测试:

注:Youngfit为上图的企业微信名 test为标题 yufei为内容,标题和内容均可自定义

[root@youngfit ~]# /usr/lib/zabbix/alertscripts/wechat.py Youngfit test yufei
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}

2、zabbix 创建告警媒介

注:(以哪种方式发送报警信息,短信,脚本等等)

{alert.SENDTO} 警告发送
{alert.SUBJECT} 主题
{alert.MESSAGE} 信息



3、zabbix 添加告警用户

创建用户组:web-group,包含yangge、alice...等用户
创建用户:yangge、alice...等用户,并关联到微信告警
希望的结果是:发微信到组web-group,组中的用户yangge、alice都能收到

5.8 Zabbix 添加报警动作
上面 媒介创建好了 接着 *** 作动作

如果希望中文显示:
告警主机: {HOST.NAME}
告警地址: {HOST.IP}
监控项目: {ITEM.NAME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}


5.9 测试微信报警
被监控端 *** 作

systemctl stop nginx

②163邮箱 (脚本)

邮件系统简要介绍:
电子邮件系统包括两个组件:

MUA(Mail User Agent,邮件用户代理)和MTA(Mail Transport Agent,邮件传送代理 postfix);

MUA是邮件系统为用户提供的可以读写邮件的界面;而MTA是运行在底层,能够处理邮件的收发工作的程序;

mail和mailx即为负责查看、编写邮件和向MTA发送邮件的MUA。mailx是mail的功能加强版。

1.注册163邮箱
2.登陆网页邮箱设置客户端授权密码



server服务器端:

安装MUA软件:mailx

阿里云的yum源可以下载
[root@zabbix-server ~]# yum install mailx -y
[root@zabbix-server ~]# mailx -V 
12.5 7/5/10
注:使用新的方式--利用公网邮件服务器发送报警,需要关闭postfix服务
[root@zabbix-server ~]# systemctl stop postfix

配置公网邮箱信息:
vim /etc/mail.rc —在最后添加如下:

set from=12345678@163.com(邮箱地址) 
set smtp=smtp.163.com(smtp服务器) 
set smtp-auth-user=12345678@163.com(用户名) 
set smtp-auth-password=qf123456(这里是邮箱的授权密码) 
set smtp-auth=login

使用mailx发邮件的方式:
方式1:echo “正文内容” | mailx -s “邮件标题” 收件箱Email
方式2:mailx -s “邮件标题” 收件箱Email,回车按CTRL+D发送
参数:
-v :显示发送的详细信息

手动发送邮件测试:

[root@zabbix-server ~]# mailx -v -s 'hello' 'zhangsan@163.com'

手写邮件内容 (回车,然后ctrl+d正常结束)

手动使用mailx发送邮件测试结果:
|
zabbix添加邮件报警功能:

配置 zabbix 的邮件报警功能需要以下三个角色的参与。

1、 示警媒体(Media)
2、 触发器(Triggers)
3、 动作(Action)
示警媒体:
    指的是 zabbix 采用何种方式进行报警,目前 Zabbix 支持的示警媒体包括邮件、脚本、Jabber、短信。jabber是linux下一种即时通讯工具。
    
触发器:
    指的是当监控对象达到某个条件或条件集合的时候,触发 Zabbix 产生事件。
    
动作:
    指的是 Zabbix 产生对应事件后,它通过示警媒体发送报警。

接下来,我们配置一个邮件报警功能的范例。效果是当redis端口挂掉则触发报警,管理员将会收到一封 Zabbix 发出的报警邮件。

编写 脚本

cd /usr/lib/zabbix/alertscripts
vim mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr 'rn' 'n'`
subject=`echo $2 | tr 'rn' 'n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

创建日志文件并修改权限并测试
这个 可以直接 给个权限 就可以

touch /tmp/mailx.log
chown -R zabbix.zabbix  /tmp/mailx.log 
chmod +x mailx.sh 
chown -R zabbix.zabbix /usr/lib/zabbix/
sh mailx.sh 邮箱 zabbix "this is test"

3、网页配置

(1)添加报警媒介

名称自定义,后面会用到 类型选择脚本 脚本名称是之前编辑的脚本名称 脚本的三个参数:
{alert.SENDTO}
{ alert.SUBJECT}
{alert.MESSAGE}

(2)添加用户
管理 > 用户 > 点击Admin > 报警媒介 > 添加

类型选择之前自定义的名称
收件人填自己邮箱
点击添加
点击更新


(3)创建动作
配置 > 动作 >创建动作 > 删除默认 > 创建动作

*** 作

想要发送中文 可以设置这个消息内容

默认标题   {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容   告警主机:{HOST.NAME}
          告警IP:{HOST.IP}
          告警时间:{EVENT.DATE}-{EVENT.TIME}
          告警等级:{TRIGGER.SEVERITY}
          告警信息:{TRIGGER.NAME}-{ITEM.VALUE}
          事件ID:{EVENT.ID}

添加恢复 *** 作

除了消息内容的模板,其他和上一步基本一致
回复 *** 作内容 中文版

默认标题   {TRIGGER.STATUS}:{TRIGGER.NAME}

消息内容   恢复主机:{HOST.NAME}
          恢复IP:{HOST.IP}
          恢复时间:{EVENT.DATE}-{EVENT.TIME}
          恢复等级:{TRIGGER.SEVERITY}
          恢复信息:{TRIGGER.NAME}-{ITEM.VALUE}
          事件ID:{EVENT.ID}


最后再确认一下 *** 作是不是都添加完成了,如果没完成是不会发送邮件的!!

4)测试
被监控端停止sshd服务

systemctl stop mysqld

可以看到邮件已经发送过来了,并且仪表板的问题界面开始闪烁
重新开启服务后同样会有邮件发来

邮件不用脚本

就是不用脚本 就电子邮件

③钉钉报警

这里讲一下 先有个群,随便建个群就可以






公网 ip 不会去 百度搜 ip 就出来拉

把webhook的地址记录下来 重要 重要 重要

创建脚本,赋予执行权限
cd /usr/lib/zabbix/alertscripts

脚本里面只需要改你的机器人 地址

vim dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: sxdswc999 
import requests
import json
import sys
import os
 
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = ""  #机器人的Webhook地址
 
def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                ""    #手机号
            ],
            "isAtAll": False
        }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content
     
if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

提权

[root@zabbix-server alertscripts]# chmod +x dingding.py
安装python-pip和requests库
[root@zabbix-server alertscripts]# yum -y install epel-release
[root@zabbix-server alertscripts]# yum -y install python-pip
[root@zabbix-server alertscripts]# pip install requests

第三个指令是去国外下载 容易下载不上 就使用下面的

pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com


测试脚本是否可行

 ./dingding.py 监控报警  {"errcode":0,"errmsg":"ok"}


pc端接收成功:

移动端App接收成功:

在监控页面创建媒介:



将Admin用户关联到此媒介:



用户报警 媒介,提示这里写 机器人的 或者写账号的都可以id 收件人

动作

测试

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3998309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存