外观
1. 系统部署准备
1.1 服务器信息
| 服务器名称 | ip 地址 | 备注 |
|---|---|---|
| zabbix 服务器(浦东服务器监控) | 10.127.140.70 | Rocky9.5,password123! |
| zabbix 代理服务器(浦东服务器监控扩展) | 10.127.140.71 | Rocky9.5,password123! |
| Grafana 服务器性能监控展示平台 | 10.127.140.72 | Rocky9.5,password123! |
1.2 部署环境要求
IMPORTANT
Zabbix 7.4 LTS 版本部署要求 Rocky Linux 9.x 操作系统,建议在生产环境中使用稳定的 LTS 版本。
部署规格:
- Zabbix 版本:7.4(LTS)
- OS:Rocky Linux 9
- 组件:Server + Frontend + Agent(全栈部署)
- DB:MySQL 8
- Web 服务器:Nginx
1.3 系统初始化配置
1.3.1 三台服务器统一配置
bash
# 1. 暂时关闭防火墙
systemctl stop firewalld.service
# 2. 禁用selinux
setenfoce 0
# 3. 配置统一的/etc/hosts,方便映射连接
cat >> /etc/hosts << EOF
10.127.140.70 zabbix-server
10.127.140.71 zabbix-proxy
10.127.140.72 zabbix-grafana
EOF
# 4. 安装一些必备工具包
dnf install -y vim bash-completion tmux net-tools
# 配置sshd
sed -i -E \
's/^#?(ClientAliveInterval).*/\1 600/;
s/^#?(ClientAliveCountMax).*/\1 0/' /etc/ssh/sshd_config
sshd -t && systemctl reload sshd
echo "export TMOUT=1800" >> /etc/profile1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
WARNING
生产环境中请根据安全策略谨慎处理防火墙和 SELinux 设置,建议配置精细化的访问控制规则而非完全关闭。
1.3.2 Zabbix Server 节点配置
bash
# 修改服务器名称
hostnamectl set-hostname zabbix-server
# 创建一个 zabbix 用户
useradd zabbix
# 将 zabbix 用户设置为root权限
echo 'zabbix ALL=(root) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/zabbix && sudo chmod 440 /etc/sudoers.d/zabbix && sudo visudo -c1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
1.3.3 Zabbix Proxy 节点配置
bash
# 修改服务器名称
hostnamectl set-hostname zabbix-proxy
# 创建一个 zabbix 用户
useradd zabbix
# 将 zabbix 用户设置为root权限
echo 'zabbix ALL=(root) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/zabbix && sudo chmod 440 /etc/sudoers.d/zabbix && sudo visudo -c
# 安装zabbix的proxy、agent、sql数据库结构文件。
sudo dnf install zabbix-proxy zabbix-agent zabbix-sql-scripts
sudo dnf install -y mysql-server mysql
sudo systemctl enable mysqld --now
# 初始化并创建 proxy 专用库/用户
sudo mysql <<'EOF'
CREATE DATABASE zabbix_proxy CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zproxy'@'localhost' IDENTIFIED BY 'password123!';
GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zproxy'@'localhost';
EOF
# 导入表结构(仅 schema,无数据)
sudo mysql -uroot <<'EOF'
SET GLOBAL log_bin_trust_function_creators = 1;
EOF
# 导入表结构
sudo mysql -uzproxy -p'password123!' zabbix_proxy < /usr/share/zabbix/sql-scripts/mysql/proxy.sql
sudo mysql -uroot <<'EOF'
SET GLOBAL log_bin_trust_function_creators = 0;
EOF
# 配置 proxy 数据库连接
sudo sed -i \
-e 's/^[# ]*Server=.*/Server=10.127.140.70/' \
-e 's/^[# ]*Hostname=.*/Hostname=Zabbix proxy/' \
-e 's/^[# ]*DBHost=.*/DBHost=localhost/' \
-e 's/^[# ]*DBName=.*/DBName=zabbix_proxy/' \
-e 's/^[# ]*DBUser=.*/DBUser=zproxy/' \
-e 's/^[# ]*DBPassword=.*/DBPassword=password123!/' \
-e 's/^[# ]*CacheSize=.*/CacheSize=128M/' \
-e 's/^[# ]*StartPollers=.*/StartPollers=10/' \
/etc/zabbix/zabbix_proxy.conf
# 启动服务
sudo systemctl enable zabbix-proxy.service --now
sudo systemctl enable zabbix-agent.service --now
# 配置防火墙
firewall-cmd --permanent --add-port=10051/tcp --add-port=10050/tcp --add-port=22/tcp
firewall-cmd --reload1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
1.3.4 Grafana 节点配置
bash
# 修改服务器名称
hostnamectl set-hostname zabbix-grafana
# 创建一个 grafana 用户
useradd grafana
# 将 grafana 用户设置为root权限
echo 'grafana ALL=(root) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/grafana && sudo chmod 440 /etc/sudoers.d/grafana && sudo visudo -c
# 安装 grafana
sudo yum install -y https://dl.grafana.com/grafana-enterprise/release/12.1.1/grafana-enterprise_12.1.1_16903967602_linux_amd64.rpm
# 安装并配置 MySQL
sudo dnf install -y mysql-server
sudo systemctl enable mysqld --now
sudo mysql -uroot <<'EOF'
CREATE DATABASE grafana CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'grafana'@'localhost' IDENTIFIED BY 'password123!';
GRANT ALL PRIVILEGES ON grafana.* TO 'grafana'@'localhost';
FLUSH PRIVILEGES;
EOF
# 配置 grafana 数据库连接
sudo cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.bak
sudo sed -Ei -e '/^\[server\]/,/^\[/{ s/^;http_port =.*/http_port = 80/; }' -e '/^\[database\]/,/^\[/{ s/^;type =.*/type = mysql/;
s/^;host =.*/host = 127.0.0.1:3306/;
s/^;name =.*/name = grafana/;
s/^;user =.*/user = grafana/;
s/^;password =.*/password = password123!/; }' /etc/grafana/grafana.ini
# 启动 grafana 服务
sudo systemctl enable grafana-server.service --now
# 配置防火墙
firewall-cmd --permanent --add-port=10050/tcp --add-port=22/tcp --add-port=3000/tcp
firewall-cmd --reload
# 安装并配置 zabbix-agent
sudo dnf install zabbix-agent
# 配置 agent 连接到 proxy
grep ^[a-Z] /etc/zabbix/zabbix_agentd.conf | grep -E "(Server|ServerActive|Hostname)"
# 输出应显示:
# Server=10.127.140.71
# ServerActive=10.127.140.71
# Hostname=zabbix-grafana
# 启动 zabbix-agent
sudo systemctl enable zabbix-agent.service --now1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
1.4 Zabbix Server 完整安装
NOTE
以下操作均在 zabbix-server 节点上以 zabbix 用户身份执行。
1.4.1 添加官方仓库
bash
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.4/release/rhel/9/noarch/zabbix-release-latest.el9.noarch.rpm
sudo dnf clean all1
2
2
1.4.2 一键安装全部组件
bash
sudo dnf install -y zabbix-server-mysql zabbix-web-mysql \
zabbix-nginx-conf zabbix-sql-scripts \
zabbix-selinux-policy zabbix-agent \
mysql-server mysql1
2
3
4
2
3
4
1.4.3 初始化 MySQL 8
bash
sudo systemctl enable --now mysqld1
1.4.4 创建 Zabbix 数据库和用户
bash
mysql -uroot <<'EOF'
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'password123!';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
EOF1
2
3
4
5
2
3
4
5
1.4.5 导入初始数据结构
bash
sudo zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -ppassword123! zabbix1
2
2
1.4.6 配置 Zabbix Server
编辑 /etc/zabbix/zabbix_server.conf,确保数据库连接参数正确:
ini
sudo sed -i \
-e 's/^# *DBHost=.*/DBHost=localhost/' \
-e 's/^# *DBName=.*/DBName=zabbix/' \
-e 's/^# *DBUser=.*/DBUser=zabbix/' \
-e 's/^# *DBPassword=.*/DBPassword=password123!/' \
/etc/zabbix/zabbix_server.conf1
2
3
4
5
6
2
3
4
5
6
1.5 配置 Nginx 与 PHP-FPM
1.5.1 Nginx 配置
Zabbix 提供的 Nginx 配置通常位于 /etc/nginx/conf.d/zabbix.conf:
nginx
server {
listen 80;
server_name zabbix.example.com;
root /usr/share/zabbix;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/zabbix.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.5.2 PHP-FPM 配置
bash
# 安装 PHP 相关组件
sudo dnf install -y php php-fpm php-mysqlnd php-gd php-bcmath \
php-xml php-mbstring php-json php-ldap
# 启动 PHP-FPM
sudo systemctl enable --now php-fpm1
2
3
4
5
6
2
3
4
5
6
配置 PHP-FPM 监听方式,编辑 /etc/php-fpm.d/zabbix.conf:
ini
[zabbix]
user = nginx
group = nginx
listen = /run/php-fpm/zabbix.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 06601
2
3
4
5
6
7
2
3
4
5
6
7
重启 PHP-FPM 服务:
bash
sudo systemctl restart php-fpm1
1.6 启动所有服务
bash
# 启动并设置开机自启
sudo systemctl enable --now zabbix-server zabbix-agent nginx php-fpm
# 配置防火墙
sudo firewall-cmd --permanent --add-port=10051/tcp
sudo firewall-cmd --permanent --add-port=10050/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=22/tcp
# 重载防火墙规则
sudo firewall-cmd --reload1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
1.7 Web 安装向导
- 浏览器访问
http://<服务器IP 或域名>/ - 按向导检查 PHP 需求、填写数据库信息、设置 Zabbix 前端管理员密码
- 完成安装后,按提示下载
zabbix.conf.php并放入/usr/share/zabbix/conf/ - 登录前端(默认用户 Admin / 密码 zabbix),开始添加主机、模板等监控配置
1.8 安全加固建议
TIP
定期备份数据库与配置文件,考虑启用 HTTPS 提高安全性。
bash
# 创建证书目录
mkdir -p /etc/cert/nginx/zabbix/
# 示例 SSL 配置(需要准备证书文件)
# ssl_certificate /etc/cert/nginx/zabbix/shsmu.edu.cn_with_chain.crt;
# ssl_certificate_key /etc/cert/nginx/zabbix/shsmu.edu.cn_server.key;1
2
3
4
5
6
2
3
4
5
6
2. 常见问题及解决方案
2.1 中文语言包无法选择
错误信息:
You are not able to choose some of the languages, because locales for them are not installed on the web server1
原因: 系统缺少中文环境,需要安装 zh_CN.UTF-8 语言包。
解决方案: 参考 Zabbix 官方文档或社区指南安装中文语言支持包。
2.2 中文乱码问题
现象: Zabbix Web 界面中文字体显示异常或乱码。
原因: 系统缺少中文字体支持。
解决方案:
- 从 Windows 系统的
C:\Windows\Fonts目录中选择中文字体(如微软雅黑)上传到服务器 - 备份原字体文件并替换:
bash
cd /usr/share/fonts/dejavu-sans-fonts/
cp DejaVuSans.ttf DejaVuSans.ttf.bak
mv /path/to/chinese/font.ttf DejaVuSans.ttf1
2
3
2
3
- 重启相关服务或刷新浏览器缓存
NOTE
字体替换操作会影响系统其他应用的字体显示,建议在测试环境中验证兼容性。
2.3 数据库连接问题
常见错误:
- MySQL 连接超时
- 权限不足错误
排查步骤:
- 检查数据库服务状态:
systemctl status mysqld - 验证连接参数:
mysql -u zabbix -p -h localhost zabbix - 检查防火墙和 SELinux 设置
2.4 代理连接问题
现象: Zabbix Proxy 无法连接到 Server,或 Agent 无法连接到 Proxy。
排查方法:
- 检查网络连通性:
telnet <目标IP> 10051 - 验证配置文件参数
- 查看日志文件中的错误信息
WARNING
部署完成后,建议立即修改默认密码,并根据安全策略配置访问控制。生产环境中应定期检查和更新系统补丁。