文章

Docker快速部署Zabbix7.0

Docker快速部署Zabbix7.0教程

[https://www.cnblogs.com/lwops/p/18701410 "发布于 2025-02-06 17:16"]

本教程基于Centos7。其余Linux发行版操作理论上无特别差异。

安装准备

关闭Selinux

#临时关闭
setenforce 0

#永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

关闭防火墙(方便测试)

systemctl stop firewalld

关闭防火墙自启动

systemctl disable firewalld

安装Docker

执行如下命令,即可自动Docker安装

curl -fsSL https://get.Docker.com | bash -s Docker --mirror Aliyun

启动Docker

systemctl start Docker

设置开机自启动

systemctl enable Docker

查看Docker状态

systemctl status Docker

看到如下图信息,即Docker环境已准备完毕_

拉取所需镜像

#由于国内环境原因,目前访问Docker镜像仓库可能会存在问题,这里采用国内加速器进行镜像拉取

#Mysql
Docker pull Dockerpull.org/mysql:8.4
Docker pull Docker.io/library/mysql:8.4

#Zabbix server
Docker pull Dockerpull.org/zabbix/zabbix-server-mysql:7.0.6-centos
Docker pull Docker.io/zabbix/zabbix-server-mysql:7.0.6-centos
#Zabbix web
Docker pull Dockerpull.org/zabbix/zabbix-web-nginx-mysql:7.0.6-centos
Docker pull Docker.io/zabbix/zabbix-web-nginx-mysql:7.0.6-centos

启动Mysql服务

创建存储卷

docker volume create -d local mysql_data
docker volume create -d local mysql_logs
docker volume create -d local mysql_conf

查看所有数据卷

docker volume ls

创建Docker网络

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

启动Mysql服务

  • 数据库名:zabbix
  • 数据库用户:zabbix
  • 数据库密码:P@ssw0rd
  • 数据库root密码:P@sswOrd
docker run -itd --name=mysql -v mysql_data:/var/lib/mysql -v mysql_logs:/var/log/mysql -v mysql_conf:/etc/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_PASSWORD="P@ssw0rd" -e MYSQL_ROOT_PASSWORD="P@sswOrd"  --restart=always --network=zabbix-net -p 3306:3306 mysql:8.4

启动Zabbix server服务

创建存储卷

docker volume create -d local zabbix_server

启动Zabbix server服务

docker run -itd --name zabbix-server -v zabbix_server:/etc/zabbix  -e DB_SERVER_HOST="mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="P@ssw0rd" -e MYSQL_ROOT_PASSWORD="P@sswOrd" --network=zabbix-net -p 10051:10051  --restart=always zabbix/zabbix-server-mysql:7.0.6-centos

启动Zabbix web服务

启动Zabbix web服务

docker run -itd -e PHP_TZ="Asia/Shanghai" -e ZBX_SERVER_HOST="zabbix-server" -e DB_SERVER_HOST="mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="P@ssw0rd" -e MYSQL_ROOT_PASSWORD="P@sswOrd" -p 80:8080 --network=zabbix-net --restart=always zabbix/zabbix-web-nginx-mysql:7.0.6-centos

至此,Zabbix已部署完毕,访问虚拟机IP进行测试即可(默认账密 Admin/zabbix)

Zabbix设置飞书机器人告警通知

步骤:

飞书创建群组-添加自定义机器人,复制自定义机器人的webhook地址;

• zabbix服务器脚本目录下新建feishu.py脚本,并配置webhook地址;

• 创建zabbix报警媒介类型,用户添加报警媒介;

• 创建动作,配置操作。

1.飞书创建群组添加自定义机器人

飞书PC端==>>创建群组

Zabbix设置飞书机器人告警通知_飞书机器人

打开群组设置==>>添加“自定义机器人”

Zabbix设置飞书机器人告警通知_zabbix_02

设置机器人名称、描述,复制保存生成的webhook地址。

Zabbix设置飞书机器人告警通知_通知_03

2.创建飞书脚本文件

登录zabbix服务器,进入到/usr/lib/zabbix/alertscripts/目录,新建feishu.py文件。

vi /usr/lib/zabbix/alertscripts/feishu.py

添加以下内容:

#!/usr/bin/python3
import requests
import json
import sys
import os
import datetime

url = "webhook地址" #你复制的webhook地址粘贴进url内

def send_message(message):
    payload_message = {
        "msg_type": "text",
        "content": {
            "text": message
        }
    }
    headers = {
        'Content-Type': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
    return response

if __name__ == '__main__':
    text = sys.argv[1]
    send_message(text)

添加执行权限

chmod +x /usr/lib/zabbix/alertscripts/feishu.py

3.添加zabbix报警媒介

创建报警媒介类型,参数添加:{ALERT.MESSAGE}

Zabbix设置飞书机器人告警通知_通知_04

用户内添加报警媒介

Zabbix设置飞书机器人告警通知_通知_05

根据需求配置需要告警的级别

Zabbix设置飞书机器人告警通知_告警_06

添加完成后点击更新

Zabbix设置飞书机器人告警通知_告警_07

4.创建动作并配置

创建动作

Zabbix设置飞书机器人告警通知_通知_08

Zabbix设置飞书机器人告警通知_通知_09

操作配置-下图是配置完成的样子

Zabbix设置飞书机器人告警通知_zabbix_10

具体每项配置详情

设置通知用户,触发的脚本名称,消息内容

Zabbix设置飞书机器人告警通知_飞书机器人_11

问题主题

异常通知: {EVENT.NAME}

消息内容

告警主机:{HOSTNAME1}
告警时间:{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY} 
告警信息:{EVENT.NAME} 
告警项目:{TRIGGER.KEY1} 
问题详情:{ITEM.NAME}:{ITEM.VALUE} 
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
事件ID:{EVENT.ID}

Zabbix设置飞书机器人告警通知_通知_12

恢复主题

恢复通知: {EVENT.NAME}

恢复信息内容

告警主机:{HOSTNAME1}
告警时间:{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY} 
告警信息:{EVENT.NAME} 
告警项目:{TRIGGER.KEY1} 
问题详情:{ITEM.NAME}:{ITEM.VALUE} 
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
事件ID:{EVENT.ID}

点击保存即可

5.告警媒介测试,及常见错误处理

测试告警媒介

Zabbix设置飞书机器人告警通知_python_13

成功则会将消息通过群机器人发送。

Zabbix设置飞书机器人告警通知_zabbix_14

常见错误:

1.python3路径错误

feishu.py脚本的第一句配置的python3路径不对需要手动重新手动指定

找到当前系统python3的路径替换feishu.py脚本中的第一行

#!/usr/bin/python3
[root@Zabbix alertscripts]# whereis python3
python3: /usr/local/bin/python3.8 /usr/local/bin/python3.8-config /usr/local/bin/python3 /usr/local/lib/python3.8
2.python3环境没有安装requests模块

使用pip3安装requests模块

`[root@Zabbix alertscripts]# pip3 install requests`

License:  CC BY 4.0