Zabbix-(四)邮件、钉钉告警通知

一.前言

在之前的文章里,通过Zabbix对主机的磁盘、CPU以及内存进行了监控,并在首页Dashboard里创建了监控图形,但是只有当我们登录到Zabbix后才能看到监控到的问题(Problem),因此在本篇文章里,将利用触发器(Trigger),以及媒介(Media)等配置项,实现当触发器触发时,通过不同媒介,如:邮件、钉钉,发送动作(Action),实现实时通知告警功能。

准备

  • Zabbix Server (Zabbix 4.4)
  • 在Zabbix中已配置一些监控项和触发器(这些配置可以参考我的上一篇文章)

二.安装相关环境

由于使用到脚本告警媒介,本文中通过调用Python脚本触发告警,因此需要在Zabbix Server主机上安装pip以及相关模块。(这里Python使用Centos7自带的Python2.7.5)

  1. 安装pip

    # yum install -y epel-release
    
    # yum install -y python-pip
  2. 安装requests模块

    # pip install requests


三.配置告警媒介类型

Zabbix默认自带了2种报警媒介类型(Media Type)电子邮件以及短信,我们将修改电子邮件类型配置,并新建脚本类型和Webhook类型。希望通过脚本、Webhook告警媒介发送钉钉消息。

注:Webhook告警媒介是Zabbix 4.4的新特性

  1. 修改电子邮件告警媒介

    点击【管理】-【报警媒介类型】-【Email】


    修改Email配置,我这里用的是Outlook邮箱,具体SMTP服务器可以参考Outlook官网 SMTP设置。使用其他邮箱也可以去对应官网查询SMTP配置。


    测试发送邮箱,点击【测试】


    输入收件人邮箱


    收到邮件


  2. 新增脚本告警媒介

    新建Python脚本告警媒介,用户钉钉告警


    点击【创建媒体类型】


    进行配置

    配置项
    * 名称 Python脚本
    类型 脚本
    * 脚本名称 pythonScript.py
    脚本参数(参数1) {ALERT.MESSAGE}
    脚本参数(参数2) {ALERT.SENDTO}
    脚本参数(参数3) {ALERT.SUBJECT}


    接下来新建Python脚本,Zabbix Server配置文件中可以配置告警脚本路径,默认为 /usr/lib/zabbix/alertscripts

    # 查看告警脚本路径
    # cat zabbix_server.conf | grep AlertScriptsPath

    编写告警脚本

    # cd /usr/lib/zabbix/alertscripts
    # vim pythonScript.py

    脚本内容

    #!/usr/bin/env python
    #coding:utf-8 import requests,json,sys,os,datetime # 钉钉机器人地址
    webhook="https://oapi.dingtalk.com/robot/send?access_token=your_dingding_robot_access_token" # 对应{ALERT.SENDTO}, Zabbix告警媒介配置界面第2个参数
    user=sys.argv[2] # 对应{ALERT.MESSAGE}, Zabbix告警媒介配置界面第1个参数
    text=sys.argv[1]
    data={
    "msgtype": "text",
    "text": {
    "content": text
    },
    "at": {
    "atMobiles": [
    user
    ],
    "isAtAll": False
    }
    }
    headers = {'Content-Type': 'application/json'}
    x=requests.post(url=webhook,data=json.dumps(data),headers=headers)

    给脚本可执行权限

    # chmod uo+x /usr/lib/zabbix/alertscripts/pythonScript.py

    测试脚本


    钉钉收到消息


  3. 新增Webhook告警媒介

    配置项
    * 名称 Webhook
    类型 Webhook
    参数: (名称)
    user {ALERT.SENDTO}
    subject {ALERT.SUBJECT}
    message {ALERT.MESSAGE}

    脚本:

    try {
    Zabbix.Log(4, 'params= '+value); params = JSON.parse(value);
    req = new CurlHttpRequest();
    data = {};
    result = {}; req.AddHeader('Content-Type: application/json'); data.msgtype = "text";
    // 对应 message参数
    data.text = {"content" : params.message};
    // 对应 user参数
    data.at = {"atMobiles": [params.user], "isAtAll": "false"}; // 钉钉机器人
    resp = req.Post('https://oapi.dingtalk.com/robot/send?access_token=your_access_token',
    JSON.stringify(data)
    );
    } catch (error) {
    result = {};
    } return JSON.stringify(result);



    测试Webhook



四.为用户添加告警媒介

需要将新增的告警媒介添加给用户

点击【用户】-【告警媒介】

将上述步骤添加的告警媒介(Python脚本、Webhoob、Email),进行添加(收件人根据告警媒介类型填写邮箱手机号),严重性也根据需要勾选。

五.配置动作

完成上述配置完成后,需要创建动作(Action),将触发器(Trigger)告警媒介(Media Type)进行关联,一旦触发器触发,那么Zabbix会执行动作,再去执行告警媒介。

  1. 添加动作

    点击【配置】-【动作】-【创建动作】


  2. 配置【动作】相关信息

    配置项
    * 名称 告警动作
    新的触发条件 【触发器】【等于】【Template Disk Free Size: 磁盘剩余空间触发器】

    操作步骤如下图:


    群组选择 ->Linux servers

    主机选择 -> Template Disk Free Size 模板(上一篇文章中定义的模板)

    勾选触发器 -> 磁盘剩余空间触发器 (上一篇文章中创建的触发器)

    勾选后点击【选择】


  3. 配置【操作】相关信息

    点击【操作】


    先配置以下信息

    配置项
    * 默认操作步骤持续时间 1h(保持默认)
    默认标题 告警: {EVENT.NAME}
    消息内容 【磁盘空间不足告警】
    告警事件: {EVENT.DATE} {EVENT.TIME}
    告警问题: {EVENT.NAME}
    告警主机: {HOST.IP} {HOST.NAME}
    告警级别: {EVENT.SEVERITY}
    磁盘剩余:{ITEM.VALUE}

    上述配置表格【默认标题】和【消息内容】值中形如{EVENT.NAME}的内容是Zabbix中的宏(Marco),宏是一个变量,例如 {HOST.IP} 表示告警主机的IP地址,Zabbix自带的宏可以参考Zabbix 4.4自带宏


    继续配置操作

    点击【新的】


    【操作类型】选择发送消息,【发送到用户】添加Admin


    【仅送到】根据需要选择之前配置的告警媒介,本文选择Email和Python脚本(这里只能单选或全选,所以需要先选择一个,因此需要多次添加)


    添加完成后点击【添加】


六.测试

向被监控主机拷贝或下载大文件,使其磁盘剩余空间低于触发器监控阈值,等待触发器触发问题,查看仪表盘、邮件等。

仪表盘


钉钉


邮件

七.参考文档

Zabbix-(四)邮件、钉钉告警通知的更多相关文章

  1. 基础架构之日志管理平台及钉钉&邮件告警通知

    接上一篇,我们继续解释如何把ELK跟钉钉及发送邮件功能结合起来,让我们及时的了解重要日志并快速反馈. Sentinel 安装,项目介绍在https://github.com/sirensolution ...

  2. Zabbix通过与微信、钉钉整合实现实时告警

    abbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信.钉钉作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警 ...

  3. kube-promethues监控告警详解(邮件、钉钉、微信、自研平台)

    Alertmanager已经在前面Prometheus初体验(三)已经介绍过了.现在介绍一下在kube-promethues里面怎么修改alertmanager配置文件,以及怎么通过各种媒介发送信息. ...

  4. 使用python实现钉钉告警通知功能

    前言:日常工作中告警通知是必不可少的,一般会使用邮件.钉钉.企业微信等,今天分享一下使用python实现钉钉告警 一. 钉钉机器人创建 登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群 ...

  5. Spring Cloud Admin健康检查 邮件、钉钉群通知

    源码地址:https://github.com/muxiaonong/Spring-Cloud/tree/master/cloudadmin Admin 简介 官方文档:What is Spring ...

  6. zabbix的搭建及操作(4)实现邮件,钉钉,微信报警

    实现邮件报警 网页版邮箱中开启 POP3/SMTP/IMAP 生成授权码并记录 Server端安装配置邮件服务器 1.Yum安装邮件服务器 yum -y install mailx dos2unix ...

  7. zabbix系列之九——添加钉钉告警

    一.添加钉钉机器人 1. 2. 复制webhook后面脚本用到:https://oapi.dingtalk.com/robot/send?access_token=36e69dd50bbcc54b7b ...

  8. elk报警监控之sentinl 钉钉+邮件告警

    注:我的elk sentinl版本都是6.5.1 前期知识 es的查询语法.es watcher使用方法. https://www.cnblogs.com/pilihaotian/p/5830754. ...

  9. zabbix 利用python脚本实现钉钉告警

    Zabbix 利用python脚本实现钉钉告警 1.安装python3.6环境 2.创建python脚本 cd local/zabbix-4.0.3/share/zabbix/alertscripts ...

随机推荐

  1. 小白学 Python(3):基础数据类型(下)

    人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 前面我们介绍过了数字,本篇我们接着聊另一个常用的基础数据类型:字符串. ...

  2. NDN helper 学习记录

    1.StackHelper 主要用于在请求的节点上安装ndnSIM网络堆栈, 提供一种简单的方法来配置NDN模拟的几个重要参数.(官方解释) 其实就是给结点装上堆栈 方法: 全部结点一次性安装(比较常 ...

  3. 基于Prometheus和Grafana的监控平台 - 运维告警

    通过前面几篇文章我们搭建好了监控环境并且监控了服务器.数据库.应用,运维人员可以实时了解当前被监控对象的运行情况,但是他们不可能时时坐在电脑边上盯着DashBoard,这就需要一个告警功能,当服务器或 ...

  4. ESP8266开发之旅 网络篇⑮ DNSServer——真正的域名服务

    1. 前言     Arduino for esp8266中有两个DNS服务相关的库: ESP8266mDNS库 这个库是mDNS库,使用这个库的时候ESP8266可以在AP模式或是以STA模式接入局 ...

  5. 百万年薪python之路 -- 模块二

    1. 序列化模块 什么是序列化呢? 序列化的本质就是将一种数据结构(如字典.列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化. 为什么要有序列化模块? 如果你写入文件中的字符串是 ...

  6. GO基础之闭包

    一.闭包的理解 闭包是匿名函数与匿名函数所引用环境的组合.匿名函数有动态创建的特性,该特性使得匿名函数不用通过参数传递的方式,就可以直接引用外部的变量. 这就类似于常规函数直接使用全局变量一样,个人理 ...

  7. 数据结构(二十七)Huffman树和Huffman编码

    Huffman树是一种在编码技术方面得到广泛应用的二叉树,它也是一种最优二叉树. 一.霍夫曼树的基本概念 1.结点的路径和结点的路径长度:结点间的路径是指从一个结点到另一个结点所经历的结点和分支序列. ...

  8. TCP Socket服务端客户端(二)

    本文服务端客户端封装代码转自https://blog.csdn.net/zhujunxxxxx/article/details/44258719,并作了简单的修改. 1)服务端 此类主要处理服务端相关 ...

  9. 设计模式C++描述----09.桥接(Bridge)模式

    一. 举例 N年前: 计算机最先出来时,软件和硬件是一绑在一起的,比如IBM出了一台电脑,上面有一个定制的系统,假如叫 IBM_Win,这个IBM_Win系统当然不能在HP电脑上运行,同样HP出的HP ...

  10. 提高首屏页面加载速度,解决vue-cli打包后单个文件过大的问题

    本教程是针对vue-cli3以上的版本,其实原理都大同小异,这个demo为vue-cli直接创建的项目,并在main.js中引入了echart.element-ui.lodash 首先看demo打包后 ...