Zabbix6.0使用python脚本给RabbitMQ推送消息

首先,在MQ上创建消息队列“Zabbix监控”
然后分别创建报警媒介-用户-动作
报警媒介:

Linux自带python环境,所以只需要装个pip环境和pika库就行,我是ubuntu,这是命令:sudo apt install python3-pip,pip3 install pika

脚本名称:自定义,配置媒介时名称需保持一致,位置在zabbix服务器这个目录下:/usr/lib/zabbix/alertscripts/

脚本内容:

#!/usr/bin/python3
import sys
import pika
import json

# 解析命令行参数
recipient = sys.argv[1] if len(sys.argv) > 1 else '发送内容为空'

# RabbitMQ服务器的连接信息
credentials = pika.PlainCredentials(username='mq用户名', password='mq密码')
parameters = pika.ConnectionParameters(host='mq的ip', port=5672, credentials=credentials)

# 建立连接
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

# 获取所有命令行参数(除了脚本路径)
args = sys.argv[2:]

# 构造消息体
data = {}
for idx, arg in enumerate(args):
    # 参数名 PARAM1, PARAM2, ...
    key = f"PARAM{idx + 1}"  
    data[key] = arg

# 定义消息队列名称
queue_name = 'Zabbix监控'

# 报警信息
alert_message = f"这是一个消息,发送给收件人: {recipient}"

# 将报警信息转换为JSON格式并推送到消息队列
channel.queue_declare(queue=queue_name, durable=True)
channel.basic_publish(exchange='', routing_key=queue_name, body=json.dumps(data, ensure_ascii=False).encode('utf-8'))
print(f" Sent [MQ] {alert_message}")
# 打印log(调试用)
with open('/var/log/zabbix/zabbix_server.log', 'a') as log_file:
    log_file.write(f" Sent [MQ] {alert_message}\n")
# 关闭连接
connection.close()

记住:报警媒介的参数如果填一般的宏如{HOST.IP}、{HOST.NAME}、{EVENT.NAME}MQ收到的消息还是{HOST.IP}、{HOST.NAME}、{EVENT.NAME}如下:

此处能用的宏是这三个{ALERT.MESSAGE} → “默认消息”;{ALERT.SENDTO}  → “收件人”;{ALERT.SUBJECT} → “默认主题”

如果想发送{HOST.IP}、{HOST.NAME}、{EVENT.NAME}这些宏的值,只需要在下图中的“主题”和“消息”处配置就行:

至于收件人去哪了,它在:

用户:

 配置用户,关联媒介并给它个权限

动作:

配置-动作-Trigger actions 选择一个报警动作,关联媒介和用户

最终效果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值