问题:当服务器发生报错时,有一个信息能实现自动发送到我的手机或者应用上,以达到对服务器的实时的监控与处理。邮件与短信不能满足实时性,于是想到了钉钉的通知。

思路:在钉钉里面建一个群,群里面拉个机器人。用zabbix配置一个脚本,让服务器监控的报警自动发送到钉钉,再由钉钉发送给自己。

参考链接:

python之钉钉机器人zabbix报警:https://blog.51cto.com/m51cto/2051945

小油2018zabbix钉钉报警:https://www.cnblogs.com/xiaoyou2018/p/10612628.html#commentform

钉钉开发者文档机器人:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

一、环境准备

zabbix4.0

zabbix系统:centos7.6

脚本:python2.7

客户端:windwos10

报警应用:钉钉

二、脚本及说明

脚本:dingding.py

#!/usr/bin/python
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_xxxxxxxxxxxxxxxxxx"
user=sys.argv[1]
text=sys.argv[3]
data={
        "msgtype": "text",
        "text": {
                "content":text
        },
        "at": {
                "atMobiles": [
                        user
                        ],
                        "isAtAll": True
        }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/local/zabbix/log/dingding.log"):
        f=open("/usr/local/zabbix/log/dingding.log","a+")
else:
        f=open("/usr/local/zabbix/log/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
        f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
        f.close()
else:
        f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送失败"+"\n"+str(text))
        f.close()

解释:一定记住用手打,不要复制粘贴,因为linux的编码可能复制进去用不了,耐心一点!!!

前面带#的2行是定义,定义语言与编码字符串

跟着5行import是python的格式用法

中间的webhook是机器人的地址,要再钉钉群里面建了机器人把地址更换进来

user很text是定义变量,里面的1跟3是后面输出的的3个值

data是钉钉机器人的用法

atMobiles是钉钉里面发给谁的手机号,要加上

isAtAlL是开启是否@所有人,钉钉发送给群所有人

下面的if else是定义日志的文件路径与日志显示的内容

三、钉钉建一个群,添加一个机器人,复制地址

钉钉新建一个群,点击群右侧“更多”-“群助手”-“添加自定义机器人”-“复制地址”

四、zabbix服务器配置脚本

机器人地址:`https://oapi.dingtalk.com/robot/send?access_tokenxxxxxxxxx`
1.远程zabbix服务器,检查安装python(centos7.6自带python2.x版本)


        python -V                              查看python版本(这个脚本是基于puthon2.x版本的)


        yum -y install epel-release         安装epel源


        yum install python-pip                安装pip工具


        pip -v                                    查看版本


        pip install requests                 安装模块requests

2.编写脚本,脚本要新建在zabbix 的alertscripts目录下              

   cd /usr/lib/zabbix/alertscripts      打开目录

      
vim dingding.py           编辑新建脚本
    
3.脚本:见上

    一定要将自己的钉钉机器人地址,替换webhook里面的地址,其他可以不变

4.日志文件创建与授权:

    chmod 777 dingding.py


    chown zabbix.zabbix dingding.py


    touch /usr/local/zabbix/logs/dingding.log


    chown zabbix.zabbix /usr/local/zabbix/logs/dingding.log

5.测试脚本

  python dingding.py user1 12345678911 测试发送钉钉            (测试中要输入3个数据,分别是用户,电话,跟内容)

五、zabbix管理界面添加脚本

1.登录zabbix管理网页,上面选择“管理”-“报警媒介类型”-“创建报警媒介类型”(将刚才写的dingding脚本调用起来)

2.单击“管理”-“用户”-“Admin”-“报警媒介”-添加一个刚才的报警媒介

3.单击“配置”-“动作”-“创建一个动作”

设置“操作”的报警;“恢复操作”的报警;“更新”的报警的格式;

在操作里面添加发送脚本的动作,每一个都要做添加发送脚本的动作!

操作的报警消息内容格式:

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!

故障:
{报警主机:{HOST.NAME}
主机地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
报警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
报警信息:{TRIGGER.NAME}
报警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}

恢复操作的报警消息内容:

服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!

已恢复:
{报警主机:{HOST.NAME}
主机地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
报警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
报警信息:{TRIGGER.NAME}
报警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
}

六、测试

1.添加一个监控主机,并设置一个测试值,例如ping

见我的另一篇博客:https://www.cnblogs.com/subsea/p/13532579.html

2.关闭或者拔掉网线,测试客户机,看钉钉是否通知

Zabbix-4.0-设置钉钉报警脚本的更多相关文章

  1. Zabbix 3.0 配置企业微信报警(注册---测试)

    一.申请企业微信 1.登录企业微信官网,点击企业注册 二.配置企业微信 1.邀请管理员使用企业微信,如果有多个人直接添加新成员 2.管理员收到邀请,下载手机版企业微信,使用微信号登陆即可 3.创建应用 ...

  2. Zabbix 3.0 配置企业微信报警(配置zabbix-web)

    一.添加报警媒体类型 Name:自定义 Type:选择script Scripts name:填写脚本名称 Script parameters:脚本参数 --corpid=XXX --corpsecr ...

  3. (26)zabbix脚本报警介质自定义(钉钉)

    zabbix机器人告警配置 首先在钉钉中创建一个群然后设置群机器人添加自定义机器人(webhook...) 添加后复制其中的webhook地址到报警脚本dingding.py中的webhook=... ...

  4. zabbix设置钉钉报警

    1 添加机器人 在钉钉群里面添加一个机器人 会获取到一个URL: 'https://oapi.dingtalk.com/robot/send?access_token=62be1ea97b4653b8 ...

  5. zabbix利用python脚本发送钉钉报警

    #!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = ...

  6. zabbix报警-邮件-钉钉

    安装zabbix的时候已经配置了zabbix_server的脚本目录 AlertScriptsPath=/opt/app/zabbix/script 所以把邮件.钉钉.微信相关的脚本都放在/opt/z ...

  7. Zabbix 配置钉钉脚本告警

    1.钉钉账号创建,并创建一个组,在组中添加一个机器人,然后记下webhook地址即可. 2.编辑一个报警脚本,此处使用的是BASH脚本,并覆盖我们的webhook地址到相应的位置. [root@loc ...

  8. zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)

    zabbix是一种监控软件,我用的是centos7.5版本 一:我已经添加好主机了,接下来就是看看怎么查看监控内容的 1.打开zabbix服务的web网页 2.检测最新数据,要在最新数据中筛选 3.查 ...

  9. zabbix自动监控钉钉报警

    钉钉报警 一:设置钉钉机器人  二:zabbix服务器server端配置 1.修改zabbix_server.conf文件 [root@server ~]# vim /usr/local/zabbix ...

  10. Python钉钉报警及Zabbix集成钉钉报警

    钉钉报警设置 创建群机器人 11111 接口地址 发送短消息 发送普通消息 import requests import json url = 'https://oapi.dingtalk.com/r ...

随机推荐

  1. Ubuntu环境下使用Jupyter Notebook查找桌面.csv文档的方法

    这个问题困扰了我很久,最后在一个老师发来的完成结果里找到了答案.(奇怪的是教材里没有.老师也不讲.尤其是百度也没有啊啊啊啊) 好了进入正题.教材里的原话是这样的 这行代码实现的环境应该是在window ...

  2. Linux 文件IO简单实例

    目录 简述 代码 编译运行 简述 Linux下的所有资源都被抽象为文件,所以对所有资源的访问都是以设备文件的形式访问,设备文件的操作主要包括:打开.关闭.读.写.控制.修改属性等.下面的示例代码主要是 ...

  3. Python10行以内代码能有什么高端操作

    Python10行以内代码能有什么高端操作 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代 ...

  4. 15、Java中级进阶 面向对象 继承

    1.何为面向对象 其本质是以建立模型体现出来的抽象思维过程和面向对象的方法(百度百科)是一种编程思维,也是一种思考问题的方式 如何建立面向对象的思维呢?1.先整体,再局部2.先抽象,再具体3.能做什么 ...

  5. golang 数据类型/基础语法

    常量 变量 复合类型 结构体 数组 基础类型 整型 浮点型 复数 bool 值 字符型 字符串 错误(稍微有异议) 引用类型 切片 指针 字典 管道 函数 接口 其他语法结构 包 流程控制 运算符 注 ...

  6. web安全之python延时注入

    通过python代码编写的一个延时的sql注入脚本 首先我们导入了request请求库和string类型的库,通过库我们可以通过访问请求的方式访问url链接. url链接为注入链接地址这里我随便写的一 ...

  7. VS Code 黑宝书背后的故事

    自开售以来,<Visual Studio Code 权威指南>就受到了许多读者朋友的青睐.在京东和当当两大平台上,都分别取得了不错的绩: 当当:计算机新书热卖榜第一名 京东:科技IT新书榜 ...

  8. 收集整理element-ui 表格组件的常用操作方法

    一.简单的表格行内编辑效果 原理是通过Css控制绑定的输入控件与显示值,在选中行样式下对控件进行隐藏或显示. 1.注意下样式的设置 2.change事件 @change="handleEdi ...

  9. Python-Opencv 图像处理基本操作

    Python-Opencv 图像处理基本操作 1.图像读取 使用cv2.imread(filepath,flags)读入图像 filepath: 读入图像完整路径(绝对路径,相对路径) flags: ...

  10. 『JWT』,你必须了解的认证登录方案

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...