共计 7405 个字符,预计需要花费 19 分钟才能阅读完成。
提醒:本文最后更新于 2026-03-19 23:43,文中所关联的信息可能已发生改变,请知悉!
提醒:本文最后更新于 2026-03-05 14:22,文中所关联的信息可能已发生改变,请知悉!
一、环境信息
| 用途 | IP 地址 | 操作系统 | 备注 |
| zabbix-server | 192.168.7.231 | openEuler22.03 LTS SP3 | Zabbix 7.2 LTS 版本,容器部署 |
| zabbix-agent | 192.168.10.202 | Windows Server 2008R2 SP1 | Zabbix-agent for windows |
二、基础包安装
dnf install tar vim
三、Docker 部署
2.1 Docker 二进制包下载
curl -LO https://download.docker.com/linux/static/stable/x86_64/docker-28.1.1.tgz
2.2 安装 Dockers
tar xzvf docker-28.1.1.tgz
cp docker/* /usr/bin/
which docker
2.3 编写 docker.service 文件
执行 vim /etc/systemd/system/docker.service 命令,编辑文件添加以下内容:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
执行:wq 命令保存即可。
2.4 添加可执行权限
chmod +x /etc/systemd/system/docker.service
2.5 添加 docker 自启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker
2.6 配置镜像加速器
创建 /etc/docker 配置文件目录:
编辑 vim /etc/docker/daemon.json(不存在则创建),添加以下内容:
{
“registry-mirrors”: [
“https://docker.1ms.run”,
“https://docker.xuanyuan.me”
],
“exec-opts”: [“native.cgroupdriver=systemd”]
}
2.7 重启 docker
systemctl restart docker
三、docker-compose 部署
3.1 查看 docker-compose 最新版本号
访问 docker-compose GitHub Releases (如 v2.36.1)。
3.2 下载 docker-compose-linux-x86-64
curl -L “https://github.com/docker/compose/releases/download/v2.36.1/docker-compose-linux-x86_64” -o /usr/local/bin/docker-compose
3.3 赋予可执行权限
chmod +x /usr/local/bin/docker-compose
四、安装部署 zabbix-server
4.1 zabbix7.2 新功能描述
4.2 zabbix7.2 安装要求
4.3 从容器中安装 zabbix
4.3.1 安装前阅读
此处选择 Mysql+nginx web 的组件。运行以下命令安装:
docker pull zabbix/zabbix-server-mysql
docker pull zabbix/zabbix-web-nginx-mysql
4.3.2 初始配置
该示例示范了如何运行 MySQL 数据库支持的 Zabbix Server、基于 Nginx Web 服务器的 Zabbix Web 界面和 Zabbix Java 网关。
1、创建专用于 Zabbix 组件容器的网络:
docker network create –subnet 172.20.0.0/16 –ip-range 172.20.240.0/20 zabbix-net
2、创建 zabbix 工作目录
mkdir -p /home/application/zabbix
3、创建 docker-compose.yml 文件
添加以下内容:
services: zabbix-server: image: zabbix/zabbix-server-mysql:latest container_name: zabbix-server restart: unless-stopped ports: – “10051:10051” # Zabbix Server 端口 environment: – DB_SERVER_HOST=zabbix-mysql – MYSQL_DATABASE=zabbix – MYSQL_USER=zabbix – MYSQL_PASSWORD=zabbix – MYSQL_ROOT_PASSWORD=tools9012 volumes: – zabbix_server_data:/var/lib/zabbix depends_on: – zabbix-mysql networks: – zabbix-net zabbix-mysql: image: mysql:8.0-debian container_name: zabbix-mysql restart: unless-stopped environment: – MYSQL_DATABASE=zabbix – MYSQL_USER=zabbix – MYSQL_PASSWORD=zabbix – MYSQL_ROOT_PASSWORD=tools9012 – MYSQL_ALLOW_EMPTY_PASSWORD=no volumes: – /usr/share/zoneinfo:/usr/share/zoneinfo:ro – zabbix_mysql_data:/var/lib/mysql – ./mysql/run:/var/run/mysqld command: [ ‘–default-authentication-plugin=mysql_native_password’, ‘–character-set-server=utf8mb4’, ‘–collation-server=utf8mb4_bin’, ‘–pid-file=/var/run/mysqld/mysqld.pid’ ] networks: – zabbix-net healthcheck: test: [“CMD”, “mysqladmin”, “ping”, “-h”, “localhost”] interval: 5s timeout: 3s retries: 5 zabbix-web-nginx-mysql: image: zabbix/zabbix-web-nginx-mysql:latest container_name: zabbix-web restart: unless-stopped ports: – “8080:8080” # Web 访问端口 environment: – DB_SERVER_HOST=zabbix-mysql – MYSQL_DATABASE=zabbix – MYSQL_USER=zabbix – MYSQL_PASSWORD=zabbix – ZBX_SERVER_HOST=zabbix-server – PHP_TZ=Asia/Shanghai depends_on: – zabbix-mysql – zabbix-server networks: – zabbix-net zabbix-agent: image: zabbix/zabbix-agent:latest container_name: zabbix-agent restart: unless-stopped environment: #- ZBX_HOSTNAME=zabbix-agent – ZBX_HOSTNAME=Zabbix server # – ZBX_SERVER_HOST=zabbix-server – ZBX_SERVER_HOST=zabbix-server,172.19.0.1 – ZBX_SERVERACTIVE=zabbix-server ports: – “10050:10050” # Agent 端口 networks: – zabbix-net volumes: zabbix_server_data: zabbix_mysql_data: networks: zabbix-net: driver: bridge
4、运行 zabbix-servercd /home/application/zabbix # 拉取镜像并启动容器(后台运行)docker-compose up -d # 查看运行状态 docker-compose ps5、验证登录 zabbix-server web 控制台
WEB 登录地址:http://192.168.7.231:8080
默认密码:Admin/zabbix五、安装部署 z abbix-agent
5.1 Windows 环境安装 agent
1、下载2、解压将 zabbix_agent-7.2.7-windows-i386.zip 文件解压后的 zabbix_agent-7.2.7-windows-i386 文件夹拷贝至 C:Program Files,并重命名 zabbix_agent-7.2.7-windows-i386 为 zabbix_agent,如以下目录结构:3、编辑 zabbix_agentd.conf 文件打开 C:Program Fileszabbix_agentconfzabbix_agentd.conf,执行以下修改:将 LogFile=c:zabbix_agentd.log 修改为 LogFile=C:Program Fileszabbix_agentzabbix_agentd.log将 Server=127.0.0.1 修改为 Server=192.168.7.231去掉 ListenPort=10050 前的 #修改 ServerActive=127.0.0.1 为 ServerActive=192.168.7.231将 Hostname=Windows host 修改为 Hostname=Cvm_vCenter修改项的示例:LogFile=C:Program Fileszabbix_agentzabbix_agentd.log # 日志文件路径 Server=192.168.7.231 # Zabbix Server 的 IP 地址 ServerActive=192.168.7.231 # 主动检查使用的 Server IP Hostname=Cvm_vCenter # 必须与 Zabbix Web 界面中配置的主机名一致4、安装 zabbix-agent 服务
将 C:Program Fileszabbix_agentconfzabbix_agentd.conf 文件拷贝至 C:Program Fileszabbix_agentbin 目录。
使用命令提示符安装 Zabbix Agent 服务:
cd /d C:Program Fileszabbix_agentbin zabbix_agentd.exe -c zabbix_agentd.conf -i5、启动服务
安装完成后,启动 Zabbix Agent 服务。
net start “Zabbix Agent”6、添加主机登录 web 界面 -> 数据采集 -> 添加主机。5.2 Linux 环境安装 agent
1. 下载 Zabbix Agentwget https://cdn.zabbix.com/zabbix/binaries/stable/7.2.4/zabbix_agent-7.2.4-linux-3.0-i386-static.tar.gz2. 解压安装包tar -xzvf zabbix_agent-7.2.4-linux-3.0-i386-static.tar.gz3. 创建必要的用户和目录groupadd zabbix useradd -g zabbix -s /sbin/nologin zabbix mkdir -p /etc/zabbix mkdir -p /var/log/zabbix chown zabbix:zabbix /var/log/zabbix4. 复制文件到相应位置cp sbin/zabbix_agentd /usr/sbin/ cp conf/zabbix_agentd.conf /etc/zabbix/5. 配置 Zabbix Agent
编辑配置文件:vi /etc/zabbix/zabbix_agentd.conf修改以下关键参数:
Server=<ZABBIX_SERVER_IP> ServerActive=<ZABBIX_SERVER_IP> Hostname=< 本机主机名 > LogFile=/var/log/zabbix/zabbix_agentd.log PidFile=/var/run/zabbix/zabbix_agentd.pid6. 创建 systemd 服务文件
vi /etc/systemd/system/zabbix-agent.service 添加以下内容:7. 启动并启用服务[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target[Service]
Environment=”CONFFILE=/etc/zabbix/zabbix_agentd.conf”
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/var/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix[Install]
WantedBy=multi-user.targetsystemctl daemon-reload systemctl start zabbix-agent systemctl enable zabbix-agent8. 检查服务状态
systemctl status zabbix-agent netstat -tulnp | grep zabbix9. 防火墙配置(如果需要)
firewall-cmd –permanent –add-port=10050/tcp firewall-cmd –reload10. 验证安装
在 Zabbix Server 端尝试连接测试:zabbix_get -s <agent_ip> -k “agent.ping”附录 常见问题
1、web 界面提示“数据库中表的字符集或排序规则不受支持……”
问题描述:
web 界面提示,数据库中表的字符集或排序规则不受支持:acknowledges, actions, alerts, auditlog, autoreg_host, conditions, config, config_autoreg_tls, connector, connector_tag。
解决方案:
即时解决方案(不重启容器),动态生成并执行 SQL。
# 进入 MySQL 容器
docker exec -it zabbix-mysql mysql -uroot -p— 在 MySQL 命令行中执行以下语句
USE zabbix;
SET @database =‘zabbix’;
SET @charset =‘utf8mb4’;
SET @collation =‘utf8mb4_bin’;DELIMITER $$
CREATE PROCEDURE convert_all_tables()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tbl_name VARCHAR(255);
DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = @database;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;OPEN cur;
read_loop: LOOP
FETCH cur INTO tbl_name;
IF done THEN
LEAVE read_loop;
END IF;
SET @sql = CONCAT(‘ALTER TABLE `’, tbl_name,‘` CONVERT TO CHARACTER SET‘, @charset,‘COLLATE‘, @collation);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur;
END$$
DELIMITER ;CALL convert_all_tables();
DROP PROCEDURE convert_all_tables;




