Zabbix
概述
Zabbix 是一个开源的监控解决方案,主要用于监控 IT 基础设施的性能和可用性。它能够监控多种资源,包括服务器、网络设备、虚拟机和云服务等。
核心功能:
- 多类型数据采集:支持 SNMP、IPMI、JMX、HTTP 等多种协议和方式
- 灵活的告警机制:支持邮件、短信、钉钉、微信等多种通知方式
- 可视化展示:提供仪表板、图形、报表等多种数据展示形式
- 自动发现:支持主机自动发现、自动注册和自动资产更新
- 分布式监控:支持 Proxy 架构,适用于大规模和跨地域部署
- 高可用性:支持主备模式和高可用集群配置
典型应用场景:
- 企业 IT 基础设施监控(服务器、网络、存储)
- 应用性能和可用性监控
- 云资源监控(AWS、Azure、私有云)
- 运维告警平台建设
部署准备
1. 系统要求
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 1 核 | 2 核+ |
| 内存 | 2 GB | 4 GB+ |
| 硬盘 | 20 GB | 50 GB+ |
| Docker | 18.06+ | 最新版 |
| Docker Compose | 1.22.0+ | 最新版 |
2. 创建目录
mkdir -p /data/zabbix-mysql /data/zabbix /data/zabbix-web3. 创建 Docker Compose 编排文件
docker-compose.yaml:
version: "3.5"
services:
mysql-server:
image: mysql:5.7
container_name: mysql-server
restart: unless-stopped
command: --character-set-server=utf8 --collation-server=utf8_bin --sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION --lower_case_table_names=1
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=zabbix
ports:
- 3306:3306
volumes:
- /etc/localtime:/etc/localtime:ro
- /data/zabbix-mysql:/var/lib/mysql:rw
deploy:
resources:
limits:
cpus: "1"
memory: "2G"
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:alpine-5.0-latest
container_name: zabbix-server-mysql
restart: unless-stopped
environment:
- DB_SERVER_HOST=mysql-server
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_DATABASE=zabbix
- MYSQL_ROOT_PASSWORD=zabbix
ports:
- 10051:10051
links:
- mysql-server
depends_on:
- mysql-server
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/zabbix:/etc/zabbix/
deploy:
resources:
limits:
cpus: "2"
memory: "2G"
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest
container_name: zabbix-web-nginx-mysql
restart: unless-stopped
environment:
- DB_SERVER_HOST=mysql-server
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_DATABASE=zabbix
- MYSQL_ROOT_PASSWORD=zabbix
- PHP_TZ=Asia/Shanghai
ports:
- 80:8080
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/zabbix-web:/usr/share/zabbix/assets/fonts
links:
- mysql-server
- zabbix-server-mysql
depends_on:
- mysql-server
- zabbix-server-mysql
deploy:
resources:
limits:
cpus: "1"
memory: "1G"4. 环境变量说明
| 变量 | 说明 |
|---|---|
MYSQL_DATABASE |
Zabbix 使用的数据库名称 |
MYSQL_USER |
Zabbix 数据库用户名 |
MYSQL_PASSWORD |
Zabbix 数据库用户密码 |
MYSQL_ROOT_PASSWORD |
MySQL root 密码 |
DB_SERVER_HOST |
数据库服务器地址(容器内使用服务名 mysql-server) |
PHP_TZ |
Web 界面时区 |
安全提示:生产环境中请将
zabbix密码替换为强密码。
启动服务
docker compose up -d查看启动日志:
docker logs mysql-server -f --tail=50
docker logs zabbix-server-mysql -f --tail=50
docker logs zabbix-web-nginx-mysql -f --tail=50验证访问
curl http://127.0.0.1在浏览器中打开 http://<服务器IP> 即可访问 Zabbix。
默认登录信息:
- 用户名:
Admin - 密码:
zabbix
注意:用户名区分大小写,使用
Admin(首字母大写)。
初始配置
1. 修改管理员密码
- 登录 Zabbix Web
- 点击右上角头像 → User settings
- 在 Change password 中设置新密码
- 点击 Update 保存
2. 配置中文界面
- 点击右上角头像 → User settings
- 在 Language 下拉框中选择 Chinese (zh_CN)
- 点击 Update 保存
注意:如 Web 界面不显示中文,可能是系统中文字体未安装,参考 FAQ 中字体配置部分。
3. 添加监控主机
- 进入 配置 → 主机 → 创建主机
- 填写主机名称、可见名称
- 设置主机 IP 地址
- 选择监控模板(如
Template OS Linux by Zabbix agent) - 点击 添加
常用管理命令
| 操作 | 命令 |
|---|---|
| 启动所有服务 | docker compose up -d |
| 停止所有服务 | docker compose stop |
| 重启所有服务 | docker compose restart |
| 查看状态 | docker compose ps |
| 查看 Zabbix Server 日志 | docker logs zabbix-server-mysql -f --tail=100 |
| 查看 Zabbix Web 日志 | docker logs zabbix-web-nginx-mysql -f --tail=100 |
| 进入 Zabbix Server 容器 | docker exec -it zabbix-server-mysql /bin/sh |
Zabbix Agent 配置
Linux Agent 安装
# 安装 Zabbix Agent
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install -y zabbix-agent
# 修改配置文件
vim /etc/zabbix/zabbix_agentd.conf# 设置为 Zabbix Server 的 IP
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=your-hostname# 启动 Agent
systemctl start zabbix-agent
systemctl enable zabbix-agentWindows Agent 安装
- 下载 Zabbix Agent Windows 安装包
- 双击安装,填写 Zabbix Server IP 和 Hostname
- 启动服务并在 Zabbix Web 添加主机
常见问题
Q:Web 界面不显示中文?
Zabbix Web 界面默认使用英文,如不显示中文,按以下方式配置:
- 在
/data/zabbix-web目录下放置中文字体文件(如msyh.ttf) - 修改配置文件:
docker exec -it zabbix-web-nginx-mysql /bin/sh
cd /usr/share/zabbix/assets/fonts
ln -sf msyh.ttf DejaVuSans.ttf
exit
docker restart zabbix-web-nginx-mysqlQ:启动后 Zabbix Server 无法连接数据库?
- 确认 MySQL 是否已完全启动:
docker logs mysql-server --tail=20- 检查环境变量中的密码是否一致
- 确认 MySQL 容器 IP 是否可访问:
docker exec -it zabbix-server-mysql ping mysql-server- 如 MySQL 容器重启,查看日志确认数据库是否正常初始化。
Q:SNMP 监控无数据?
- 确认目标设备的 SNMP 服务已开启
- 检查 SNMP 团体名称是否正确(默认
public) - 验证 SNMP 连通性:
snmpwalk -v 2c -c public <目标IP> 1.3.6.1.2.1.1.1.0Q:如何备份 Zabbix 数据?
# 备份数据库
docker exec mysql-server mysqldump -u root -pzabbix --all-databases > zabbix_backup.sql
# 备份配置文件
tar -czf zabbix_conf_backup.tar.gz /data/zabbix /data/zabbix-webQ:忘记 Admin 密码怎么办?
进入数据库重置密码:
docker exec -it mysql-server mysql -u root -pzabbix
USE zabbix;
SELECT userid, alias FROM users WHERE alias='Admin';
UPDATE users SET passwd=MD5('newpassword') WHERE alias='Admin';
exit