实现Docker Zabbix微信告警的步骤如下:
步骤 | 描述 |
---|---|
1 | 部署Zabbix服务器和Agent |
2 | 配置Zabbix服务器 |
3 | 配置微信告警脚本 |
4 | 创建Docker镜像 |
5 | 运行Docker容器 |
接下来,我将为你解释每一步的具体操作和所需的代码。
步骤1:部署Zabbix服务器和Agent
首先,你需要安装和配置Zabbix服务器和Agent。你可以按照Zabbix官方文档进行安装,这里不再赘述。
步骤2:配置Zabbix服务器
在Zabbix服务器上,你需要进行以下配置:
- 登录Zabbix Web界面,进入管理页面。
- 创建一个新的媒介类型,用于发送微信告警。点击"Administration" -> "Media types" -> "Create media type"。填写以下信息:
- Name: WeChat
- Type: Script
- Script name: /usr/lib/zabbix/alertscripts/wechat.sh
- 创建一个新的动作,用于触发微信告警。点击"Configuration" -> "Actions" -> "Create action"。填写以下信息:
- Name: WeChat Alert
- Default subject: {TRIGGER.STATUS}: {TRIGGER.NAME}
- Default message: {TRIGGER.STATUS}: {TRIGGER.NAME} - {TRIGGER.VALUE} ({HOST.NAME1})
- Recovery subject: {TRIGGER.STATUS}: {TRIGGER.NAME}
- Recovery message: {TRIGGER.STATUS}: {TRIGGER.NAME} - {TRIGGER.VALUE} ({HOST.NAME1})
- Operations: 添加一个新的操作,选择"Send message",选择媒介类型为"WeChat",填写微信接收者的用户ID(可在微信公众号后台获取)。
- 保存配置并启动Zabbix服务器。
步骤3:配置微信告警脚本
在Zabbix服务器上,你需要创建一个用于发送微信告警的脚本。在命令行中执行以下命令:
sudo nano /usr/lib/zabbix/alertscripts/wechat.sh
在打开的文件中,输入以下代码,并保存:
#!/bin/bash
# 微信公众号配置
CORPID="YOUR_CORPID" # 企业微信CorpID
SECRET="YOUR_SECRET" # 应用的Secret
AGENTID="YOUR_AGENTID" # 应用的AgentId
# 获取AccessToken
ACCESS_TOKEN=$(curl -s -G " | awk -F\" '{print $4}')
# 发送消息
curl -s -X POST " -H "Content-Type: application/json" -d '
{
"touser": "@USERID@", # 用户ID,通过Zabbix的媒介类型传递
"msgtype": "text",
"agentid": '$AGENTID',
"text": {
"content": "$1"
}
}'
注意替换文件中的YOUR_CORPID
、YOUR_SECRET
和YOUR_AGENTID
为你的企业微信相关信息。
执行以下命令,使脚本可执行:
sudo chmod +x /usr/lib/zabbix/alertscripts/wechat.sh
步骤4:创建Docker镜像
你需要创建一个Docker镜像,将Zabbix Agent和微信告警脚本打包在一起。创建一个名为Dockerfile
的文件,输入以下代码,并保存:
FROM zabbix/zabbix-agent:latest
# 安装curl
RUN apt-get update && apt-get install -y curl
# 复制微信告警脚本
COPY wechat.sh /usr/lib/zabbix/alertscripts/wechat.sh
# 设置脚本权限
RUN chmod +x /usr/lib/zabbix/alertscripts/wechat.sh
执行以下命令,构建Docker镜像:
docker build -t zabbix-agent-wechat .
步骤5:运行Docker容器
最后,你需要运行一个Docker容器,使用刚刚创建的Docker镜像。
docker run --name zabbix-agent -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="YOUR_Z