实现Docker Zabbix微信告警的步骤如下:

步骤 描述
1 部署Zabbix服务器和Agent
2 配置Zabbix服务器
3 配置微信告警脚本
4 创建Docker镜像
5 运行Docker容器

接下来,我将为你解释每一步的具体操作和所需的代码。

步骤1:部署Zabbix服务器和Agent

首先,你需要安装和配置Zabbix服务器和Agent。你可以按照Zabbix官方文档进行安装,这里不再赘述。

步骤2:配置Zabbix服务器

在Zabbix服务器上,你需要进行以下配置:

  1. 登录Zabbix Web界面,进入管理页面。
  2. 创建一个新的媒介类型,用于发送微信告警。点击"Administration" -> "Media types" -> "Create media type"。填写以下信息:
    • Name: WeChat
    • Type: Script
    • Script name: /usr/lib/zabbix/alertscripts/wechat.sh
  3. 创建一个新的动作,用于触发微信告警。点击"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(可在微信公众号后台获取)。
  4. 保存配置并启动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_CORPIDYOUR_SECRETYOUR_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