zabbix6.4连接钉钉发出警告

2024-09-08 08:12
文章标签 连接 警告 发出 zabbix6.4

本文主要是介绍zabbix6.4连接钉钉发出警告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

zabbix6.4配置钉钉告警

注册钉钉

建一个内部群

添加自定义机器人

配置zabbix服务端

打开脚本告警的配置

# vim /etc/zabbix/zabbix_server.conf

                AlertScriptsPath=/usr/lib/zabbix/alertscripts

准备脚本

安装一个依赖包

# dnf -y install python3-requests

#  vim /usr/lib/zabbix/alertscripts/dingding.py

#!/usr/bin/env python3
# coding:utf8
#
import configparser
import os
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests
import json
import sys

config = configparser.ConfigParser()
config.read('/etc/zabbix/zabbix_ding.conf', encoding='utf-8')
log_path = config.get('config', 'log_path')
api_url = config.get('config', 'webhook')
api_secret = config.get('config', 'secret')
log_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())


# 钉钉机器人文档说明
# https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
def get_timestamp_sign():
    timestamp = str(round(time.time() * 1000))
    secret = api_secret
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
    return timestamp, sign

# 获取加签后的链接
def get_signed_url():
    timestamp, sign = get_timestamp_sign()
    webhook = api_url + "&timestamp=" + timestamp + "&sign=" + sign
    return webhook

# 定义消息模式
def get_webhook(mode):
    if mode == 0:  # only 关键字
        webhook = api_url
    elif mode == 1 or mode == 2:  # 关键字和加签 或 # 关键字+加签+ip
        webhook = get_signed_url()
    else:
        webhook = ""
        print("error! mode:   ", mode, "  webhook :  ", webhook)
    return webhook


def get_message(text, user_info):
    # 和类型相对应,具体可以看文档 :https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
    # 可以设置某个人的手机号,指定对象发送
    message = {
        "msgtype": "text",  # 有text, "markdown"、link、整体跳转ActionCard 、独立跳转ActionCard、FeedCard类型等
        "text": {
            "content": text  # 消息内容
        },
        "at": {
            "atMobiles": [
                user_info,
            ],
            "isAtAll": False  # 是否是发送群中全体成员
        }
    }
    return message


# 消息发送日志
def log(info):
    if os.path.exists(log_path):
        log_file = open(log_path, "a+")
    else:
        log_file = open(log_path, "w+")
    log_file.write(info)


def send_ding_message(text, user_info):
    # 请求的URL,WebHook地址
    # 主要模式有 0 : 关键字 1:# 关键字 +加签 3:关键字+加签+IP
    webhook = get_webhook(1)
    # 构建请求头部
    header = {
        "Content-Type": "application/json",
        "Charset": "UTF-8"
    }
    # 构建请求数据
    message = get_message(text, user_info)
    # 对请求的数据进行json封装
    message_json = json.dumps(message)
    # 发送请求
    info = requests.post(url=webhook, data=message_json, headers=header).json()
    code = info["errcode"]
    errmsg = info["errmsg"]
    if code == 0:
        log(log_time + ":消息已发送成功 返回信息:%s %s\n" % (code, errmsg))
    else:
        log(log_time + ":消息发送失败 返回信息:%s %s\n" % (code, errmsg))
        print(log_time + ":消息发送失败 返回信息:%s %s\n" % (code, errmsg))
        exit(3)


if __name__ == "__main__":
    text = sys.argv[3]
    user_info = sys.argv[1]
    send_ding_message(text, user_info)

 

 给脚本执行权限

# chmod +x /usr/lib/zabbix/alertscripts/dingding.py

# chown -R zabbix.zabbix /usr/lib/zabbix/alertscripts/

将脚本和zabbix关联

[config]
log_path=/var/log/zabbix/zabbix_ding.log
webhook=https://oapi.dingtalk.com/robot/send?access_token=3f528d1610fdc8b11857bdece51feca12d74e6044c35ebf048f1f034791054f5
secret=SECc4999c84f17f80a7241e79599450a18c0a0faac38374640049a06ebd2c8ac8af

#重启zabbix-server
# systemctl restart zabbix-server 

测试脚本

# cd /usr/lib/zabbix/alertscripts/
#  ./dingding.py user subject messages

整合zabbix和钉钉告警 

添加告警媒介

中文消息模板 

默认接收人:
故障级别:{TRIGGER.STATUS}。服务器:【{HOSTNAME1} 】 发生:{TRIGGER.NAME} 故障! 
注:默认接收人:相当于邮件的主题
默认信息:邮件的主题
告警主机:{HOSTNAME1} 
告警时间:{EVENT.DATE} {EVENT.TIME} 
告警等级:{TRIGGER.SEVERITY} 
告警信息:{TRIGGER.NAME} 
告警项目:{TRIGGER.KEY1} 
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
事件ID :{EVENT.ID}

给用户添加报警媒介 

创建新的监控项 

创建根目录的使用率监控项

 

创建触发器 

查看最新数据 

设置触发器动作 

#df -h

#dd if=/dev/zero of=/opt/a.txt count=5 bs=1000M //增大根目录内存占比

#dd if=/dev/zero of=/opt/a.txt count=1 bs=1 //释放添加进去的内存,也可以直接删除a.txt文件

# df -h 

出现警告并且通过钉钉发生警告信息

 

内存使用率的设置

1.查看服务器内存使用

 

#free -m

#free -m | awk '/Mem/{print $2}'

#free -m | awk '/Mem/{print $3}'

#free -m | awk '/Mem/{print $3/$2*100}'

2.创建

 # vim /etc/zabbix/zabbix_agentd.d/memory_used.conf 

UserParamter=memory.used,free -m | awk '/Mem/{print $3/$2*100}'

3.重启客户端服务器

#systemctl restart zabbix-agent

4.创建监控器 

5.创建触发器 

6.添加触发器动作

7.改变内存使用率触发器范围,触发警告

通过钉钉发出警告

8.恢复内存使用率触发器的值,解决告警,推送消息

图形

这篇关于zabbix6.4连接钉钉发出警告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147588

相关文章

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

在 Spring Boot 中连接 MySQL 数据库的详细步骤

《在SpringBoot中连接MySQL数据库的详细步骤》本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,... 目录一、添加依赖二、配置数据库连接三、创建实体类四、创建仓库接口五、创建服务类六、创建控制器七、运行应用程序八

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys