Zabbix 4 部署
老笔记整理:Zabbix 4.x 传统 RPM 安装 + MySQL,并补充 docker-compose 部署方式。当前更常见的还有 Helm / 官方容器方案。
标签: zabbix4_ins
环境
| 项目 | 说明 |
|---|---|
| 操作系统 | CentOS 7.2(原文 cent72) |
| 监控 | Zabbix 4.1 / 4.2 系(仓库示例为 4.2) |
| 数据库 | MySQL 5.6(Compose 示例用 MariaDB) |
| 编排 | docker-compose(另可选 Helm) |
相关概念
| 概念 | 一句话 |
|---|---|
| Zabbix Server | 监控中枢,采集、计算触发器、告警。 |
| Zabbix Web | PHP 前端,配置与看图。 |
| Zabbix Proxy | 分布式代理,替 Server 拉取/缓冲数据。 |
| Zabbix Agent | 装在被监控机上的采集端。 |
| 10051 / 10050 | Server(主动/trapper 等)与 Agent 常用端口。 |
下文将原文中的
zabbbix统一为 zabbix。
一、传统安装(CentOS + RPM)
1. Web 依赖
yum -y install httpd
yum -y install php
2. 添加 Zabbix 仓库并安装组件
rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
yum -y install yum-utils
yum-config-manager --enable rhel-7-server-optional-rpms
Server + Web:
yum install -y zabbix-server-mysql
yum install -y zabbix-web-mysql
Proxy(按需):
yum install -y zabbix-proxy-mysql
二、MySQL 5.6:建库与导入
1. 安装 MySQL(示例为本地 rpm 包)
yum -y install *.rpm
按环境完成初始化与改密后,建库授权:
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'192.168.5.%' IDENTIFIED BY 'zabbix';
FLUSH PRIVILEGES;
2. 导入官方建表脚本
zcat create.sql.gz | mysql -uzabbix -pzabbix zabbix
create.sql.gz路径以 zabbix-server-mysql 包内文档为准(常见在/usr/share/doc/zabbix-server-mysql*/)。
命令末尾用英文分号;,不要用中文;。
3. 修改 Server 数据库配置
grep ^DB /etc/zabbix/zabbix_server.conf
示例:
DBHost=localhost
# 或远程库 IP
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
4. PHP 时区
vim /etc/httpd/conf.d/zabbix.conf
设置:
php_value date.timezone Asia/Shanghai
启动服务(示意):
systemctl enable --now zabbix-server httpd
# 按需放行 80、10051 等端口
浏览器访问 Web 按向导完成;默认账号多为 Admin / zabbix(请登录后改密)。
三、Docker Compose 部署(补充)
适合快速拉起 Server + DB + Web + Agent。镜像 tag 可用 centos-latest / latest,生产建议钉死具体版本。
1. 准备配置目录(可选)
mkdir -p zabbix/zabbixconfig zabbix/data/mysqllib \
zabbix/alertscripts zabbix/externalscripts
wget https://raw.githubusercontent.com/sunsharing-note/zabbix/master/zabbix_server.conf
mv zabbix_server.conf zabbix/zabbixconfig/
2. docker-compose.yml 示例
version: "3"
services:
zabbix-mysql:
image: mariadb:latest
ports:
- "3309:3306"
volumes:
- ./zabbix/data/mysqllib:/var/lib/mysql
environment:
MYSQL_USER: zabbix
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_ROOT_PASSWORD: "123321"
command:
- --character-set-server=utf8
- --collation-server=utf8_bin
restart: always
zabbix-server:
image: zabbix/zabbix-server-mysql:centos-latest
restart: always
ports:
- "10052:10051"
environment:
DB_SERVER_HOST: zabbix-mysql
MYSQL_USER: zabbix
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: zabbix
DB_SERVER_ROOT_USER: root
DB_SERVER_ROOT_PASS: "123321"
TZ: Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
- ./zabbix/zabbixconfig/:/etc/zabbix/
- ./zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- ./zabbix/externalscripts:/usr/lib/zabbix/externalscripts
- ./zabbix/modules:/var/lib/zabbix/modules
- ./zabbix/enc:/var/lib/zabbix/enc
- ./zabbix/ssh_keys:/var/lib/zabbix/ssh_keys
- ./zabbix/ssl/certs:/var/lib/zabbix/ssl/certs
- ./zabbix/ssl/keys:/var/lib/zabbix/ssl/keys
- ./zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
- ./zabbix/snmptraps:/var/lib/zabbix/snmptraps
- ./zabbix/mibs:/var/lib/zabbix/mibs
depends_on:
- zabbix-mysql
zabbix-web-nginx:
image: zabbix/zabbix-web-nginx-mysql:latest
restart: always
ports:
- "8088:80"
environment:
DB_SERVER_HOST: zabbix-mysql
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_ROOT_PASSWORD: "123321"
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: Asia/Shanghai
TZ: Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
depends_on:
- zabbix-mysql
- zabbix-server
zabbix-agent:
image: zabbix/zabbix-agent:latest
environment:
ZBX_HOSTNAME: "Zabbix server"
ZBX_SERVER_HOST: zabbix-server
ZBX_SERVER_PORT: "10051"
TZ: Asia/Shanghai
ports:
- "10053:10050"
restart: always
privileged: true
depends_on:
- zabbix-server
相对原笔记的修正:
| 项 | 说明 |
|---|---|
TZ= |
全角等号改为英文 TZ: Asia/Shanghai |
zabbix-agent 缩进 |
与其它 services 同级 |
links |
Compose v3 中改用服务名 DNS + depends_on |
| 字符集 | MariaDB 用 command 指定,比塞进 environment 更可靠 |
/etc/timezone |
部分精简镜像无此文件,可只挂 localtime |
3. 启动与访问
docker-compose -f docker-compose.yml up -d
浏览器:
http://192.168.3.168:8088
(IP 按实际主机修改。)默认登录一般为 Admin / zabbix。
| 映射 | 含义 |
|---|---|
8088 → 80 |
Web |
10052 → 10051 |
Server |
10053 → 10050 |
Agent |
3309 → 3306 |
MySQL/MariaDB |
流程速览
传统:装 httpd/php → zabbix 仓库 → server-mysql + web-mysql
→ MySQL 建库授权 → 导 create.sql.gz → 改 conf/时区 → 启服务
Compose:准备目录/conf → docker-compose up -d → 访问 :8088
注意
- 仓库为 4.2 示例,与笔记中的「4.1」可能并存,以实际启用的 repo 为准。
- 生产请修改默认密码,并钉死镜像版本;
mariadb:latest/centos-latest仅适合实验。 - 新项目优先考虑较新 Zabbix + 官方 Compose/Helm;本文保留 4.x 老环境参考价值。
- Agent 的
ZBX_SERVER_HOST、防火墙与 Server 主动/被动模式需与网络规划一致。