zabbix 通过 telegram-bot 发送告警信息

zabbix版本:4.0

系统版本:CentOS 6.8

一、添加Media Types

zabbix通常的默认告警媒介有 Email,Jabber, SMS三种 

这里我们添加自定义脚本来告警,点击右上角的“Create media type“,进入如下图

Name:显示的媒介名称,这里我们使用Telegram告警

Script name:告警脚本的名称。注意该脚本需要放在配置文件zabbix_server.conf所指定AlertScriptsPath目录下。

Script parameters:传递给alert.sh脚本的参数,可以有多个。由官方文档可知,默认支持的三个告警参数{ALERT.SENDTO}, {ALERT.SUBJECT} 和{ALERT.MESSAGE}。这三个宏变量的代表什么,后面我会提到。

二、添加Users

这里我们使用默认的Admin账号,你也可以根据需要创建其他用户来关联警报媒介。

这里点击 Admin用户名之后,再选择Media,点击Add。

弹出如下界面

Tpye : 下拉菜单选择刚才新建的Telegram

Send to :这里填的名字,就对应上面的{ALERT.SENDTO}宏变量。

其他默认。

三、添加Actions

要想发送警报消息到媒介,还得添加actions,这里我们针对某一个特定的触发器来添加警报消息,下拉菜单选择 Trigers,点击”Create action“。

### 配置 Zabbix 使用微信进行报警通知 #### 修改 `zabbix_server` 脚本路径配置 为了使 Zabbix 支持通过微信发送警报,需确认并设置 `AlertScriptsPath` 参数指向存放自定义告警脚本的目录。此参数通常位于 `/etc/zabbix/zabbix_server.conf` 文件内。 ```bash [root@z5 ~]# grep ^AlertScriptsPath /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts ``` 上述命令展示了如何查询当前设定的脚本存储位置[^1]。 #### 创建或编辑用于发送消息的企业微信机器人脚本 在指定的 `AlertScriptsPath` 下创建 Python 或 Shell 脚本来调用微信 API 实现消息推送功能。这里提供了一个简单的 Python 示例: ```python #!/usr/bin/env python3 import requests import json import sys def send_wechat_message(webhook_url, user, subject, message): headers = {'Content-Type': 'application/json'} data = { "msgtype": "text", "text": { "content": f"{subject}\n{message}", "mentioned_mobile_list":[user] } } response = requests.post(url=webhook_url, headers=headers, data=json.dumps(data)) if __name__ == "__main__": webhook_url = '<Your WebHook URL>' # 替换成实际的企业微信群聊机器人的WebHook地址 try: _, user, subject, *messages = sys.argv content = ' '.join(messages) send_wechat_message(webhook_url, user, subject, content) except Exception as e: print(f"Error occurred while sending WeChat notification: {e}") ``` 这段代码接受三个参数:接收者用户名、主题以及具体的消息内容,并将其构造成 JSON 请求体发送给企业微信API接口[^2]。 #### 设置合适的文件权限 考虑到安全性和兼容性问题,在执行此类外部程序时应确保其具有适当的操作权限。特别是当涉及到日志记录或其他可能影响系统的操作时,建议调整相关资源的所有权至运行 Zabbix 的用户账户下(通常是 `zabbix`),例如对于某些情况下产生的临时文件 `/tmp/weixin.log`: ```bash chown zabbix. /tmp/weixin.log ``` 这一步骤可以防止因权限不足而导致的通知失败情况发生[^4]。 #### 测试与验证 完成以上步骤之后,可以通过直接调用该脚本来初步检验整个流程是否正常工作: ```bash python weixin.py ZhangYi "测试" "人生苦短,我学Python!" ``` 其中 `"ZhangYi"` 是目标用户的 ID ,而后面两个字符串分别代表邮件的主题和正文部分[^3]。 最后,在 Zabbix UI 中添加新的媒体类型并将相应的动作关联起来即可正式启用这项特性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值