跳转至

Zabbix部署

一. 监控系统

1. 监控概述

一般来说,监控系统的作用为:

  • 采集监控对象的指标: 如cpu、内存、磁盘、网络等
  • 存储监控对象的指标: 如MySQL、TSDB等数据库
  • 能够查询到存放在数据库中的监控指标
  • 给健康对象及指标设置阈值
  • 报警

2. 运维的监控

对运维人员来说,监控系统是非常重要的,因为我们需要保证线上业务的正常网站运行,所以我们需要时刻关注预期相关的各项指标正常与否。为了更方便更集中的管理服务器的软硬件,我们需要外部工具,而zabbix就是其中之一。

当某些指标不符合需求是,我们需要第一时间发现异常。监控工具需要定期对被监控的主机进行检查、信息收集等操作。当被监控主机出现异常时,能够及时报警通知管理员,并记录异常,以便管理员分析数据查漏补缺。以上要求监控工具具有采集信息、存储信息、展示信息、报警通知的功能。而这就是zabbix。

总结,zabbix的功能

  • 对服务器的问题报警
  • 找到出现问题的根源
  • 提高网站/服务器的可用性

3. 网站的可用性

在软件系统的高可用性中(High Availability,HA),有一个衡量其的指标 --- 9的数量。9表示在软件系统的一年使用过程中系统可以正常使用时间与总的时间比值。

1个9: (1-90%)*365=36.5天。也就是该系统在连续运行一年里最多可能的业务中断时间为36.5天

2个9: (1-99%)*365=3.65天。也就是该系统在连续运行一年里最多可能的业务中断时间为3.65天

3个9: (1-99.9%)36524=8.76小时。也就是该系统在连续运行一年里最多可能的业务中断时间为8.76小时

4个9: (1-99.99%)36524*60=52.6分钟。也就是该系统在连续运行一年里最多可能的业务中断时间为52.6分钟

5个9: (1-99.999%)36524*60=5.26分钟。也就是该系统在连续运行一年里最多可能的业务中断时间为5.26分钟

6个9: (1-99.9999%)365246060=31秒。也就是该系统在连续运行一年里最多可能的业务中断时间为31秒

4. 监控的范围

监控类型 作用
硬件监控 (1) 通过远程控制选项卡:Dell的IDRAC,HP的ILO和IBM的IMM等
硬件监控 (2) 通过IPMI来完成物理设备的监控,通常必须要监控的是温度,硬盘故障等
硬件监控 (3) 路由器、交换机(端口,光盘,日志等)、打印机、Windows系统等
系统监控 CPU、内存、硬盘使用情况、硬盘IO、系统负载、进程数
服务监控 apache,nginx,php-fpm,mysql,memcache,redis,tomcat,JVM,TCP连接数
性能监控 网站性能,服务器性能,数据库性能,存储性能
日志监控 系统会产生系统日志,应用程序会同意应用程序的访问日志和错误日志,服务有运行日志等。可以使用ELK来监控
安全监控 (1) nginx+Lua编写了一个WAF通过Kibana可以图形化的展示不同攻击类型的统计
安全监控 (2) 用户登录数,passwd文件变化,本地所有文件改动
网络监控 端口,web(URL),DB,ping包,IDC带宽网络流量,网络流出速率,网络入流量,网络出流量,网络使用率,SMTP,POP3

5. 如何监控

1) 远程管理服务器

如果像远程管理服务区,有远程管理卡,如Dell idRAC,HP ILO,IBM IMM

2) 监控硬件

查看硬件的温度/风扇转速,鲁大师/ipmitool

服务器可以使用ipmitool实现对服务器的命令行远程管理

3) CPU相关

lscpu,uptime,top,vmstat,mpstat,sar

4) 内存相关

free,top,cat /proc/meminfo

5) 磁盘相关

df,dd,iotop,iostat,fio

6) 网络相关

ifconfig,iftop,tcpdump

7) 进程相关

ps,pstree,pgrep,pidstat,top,htop

8) 网站/业务/api

curl,wget

9) 服务

systemctl,service,chkconfig(Centos6)

二. 企业级监控解决方案 --- Zabbix

1. 什么是Zabbix

Zabbix是一个高度集成的企业级开源网络监控解决方案,提供分布式监控以及集中的web管理界面。

zabbix具备常见的商业监控软件所有具备的功能,例如主机性能监控,网络设备性能监控,数据库性能监控,ftp、http等通用协议的监控,能够灵活的利用可定制告警机制,允许用户对事件发送基于E-mail的告警,保证相关人员快速解决。

Zabbix提供接触的报表及实施的图形化数据处理,实现对监控主机7*24小时集中监控。

Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。而被监控的对象只需要支持SNMP协议或者允许Zabbix agents代理程序即可。服务端监听端口为10051,而被监控端即Zabbix --- agents代理程序监控10050端口。

2. Zabbix的官网

zabbix官网

3. Zabbix主要功能

Zabbix是一个高度集成的网络监控套件,可以实现如下功能

  1. 数据收集: 自定义间隔收集数据

  2. 灵活的阈值定义: 灵活的自定义故障阈值,Zabbix中称为触发器(trigger),存储在后端数据库中

  3. 高级警告配置: 可以自定义告警升级(escalation)、接收者及告警方式: 通过远程命令实行自动化动作

  4. 实施绘图: 通过内置的绘图引擎实现监控数据实时绘图

  5. 具备应对复杂环境情况: 通过Zabbix proxy可以非常容易的创建远程监控

4. Zabbix监控范畴

  • 硬件监控: Zabbix IPMI Interface。通过IPMI接口进行监控。我们可以通过标准的IPMI硬件接口监控被监控对象的物理特征。比如电压、温度、风扇状态、电源状态等。
  • 系统监控: Zabbix Agent Interface。通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
  • Java监控: Zabbix JMX Interface。通过JMX进行监控,JMX(java management extensions,即java管理拓展)。监控JVM虚拟机时,使用这种方法时非常不错的选择
  • 网络设备监控: Zabbix SNMP Interface。通过SNMP协议预备监控对象进行通信。SNMP协议全称为simple network managent protocol,被译为简单网络管理协议。通常来说我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议
  • 应用服务监控: Zabbix Agent UserParameter
  • MySQL数据库监控: percona-monitoring-plugins
  • URL监控: Zabbix Web监控

5. Zabbix监控组件

主要包括: Zabbix Server、Zabbix Proxy、Zabbix Agent

alt text

每个模块的工作职责:

  1. Zabbix Server: Zabbix Server为核心组件,用来获取agent存活状况以及监控数据。所有的配置,统计,操作数据均通过Server进行存取到database

  2. Zabbix Database: 用户存储所有zabbix配置的信息、监控数据的数据库

  3. Zabbix Web: Zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关配置信息。通常与Zabbix Server运行在同一主机上。也可以单独部署在独立的服务器上

  4. Zabbix Proxy: 常用于分布监控环境中,代理Zabbix-Server收集部分被监控的监控数据并统一发往Server端(通常大于500台主机中使用)

  5. Zabbix Agent: 部署在被监控主机上,负责收集被监控主机的数据,并发往Server端或Proxy端

另外,Zabbix Server、proxy、agent都会有自己的配置文件以及log文件,重要的参数都需要在这里配置

6. Zabbix常用的监控架构平台

server-agentd模式

将zabbix agent部署到被监控主机上,由agent采集数据,报告给zabbix server,zabbix server将从agent端接收到的信息存储与zabbix database。如果管理员需要查看各种监控信息,则需要zabbix web,zabbix web是使用PHP编写的。所以如果想要使用zabbix web展示相关监控信息,需要依赖LAMP或LNMP环境。不管是zabbix server还是zabbix web,他们都需要连接zabbix database获取相关数据

alt text

Server-proxy=agentd模式

当监控规模变得庞大时,我们可能会有成千上万台设备需要监控,那如何分摊巨大的监控压力呢?Zabbix天生就有处理这种问题能力。因为zabbix支持分布式监控,我们可以把成千上万的被监控对象分成不同的区域,每个区域中设置一台代理主机。区域内的每个被监控对象信息被agent采集,提交给代理主机,我们称这些代理主机为zabbix proxy。zabbix proxy再将收集到的信息统一提交给zabbix server处理。这样,zabbix proxy分摊了zabbix server的压力。同时我们能够统一的监控入口,监控所有的对象。

alt text

7. Zabbix运行过程

一个监控系统运行的大概旅程是这样的:

Agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端。zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式

主动: agent请求server获取监控列表,并主动将监控项内需要检测的数据提交给server/proxy

被动: server向agent请求获取监控项的数据,agent返回数据

三. 部署Zabbix

1. 部署前准备:关闭防火墙和SELinux

部署前先关闭防火墙和SELinux,避免它们拦截Zabbix各组件的通信

# 1. 关闭防火墙(临时+永久)
systemctl stop firewalld
systemctl disable firewalld

# 2. 临时关闭SELinux
setenforce 0
# 永久关闭SELinux(修改配置文件)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 3. 验证
systemctl status firewalld    # 显示 inactive(dead) 即已关闭
getenforce                    # 输出 Disabled 即已生效

2. 实验环境

主机 主机名 操作系统 IP地址 软件版本
Zabbix监控端 zabbix_server Rockylinux 9.6 192.168.100.103 Zabbix-7.0.29
Zabbix被监控端 zabbix_agent Rockylinux 9.6 192.168.100.106 Zabbix-7.0.29

3. 监控端zabbix_server上构建LNMP的环境

1) Yum安装LNMP平台

dnf -y install nginx mysql-server php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-bcmath php-zip php-curl

2) 配置MySQL

a. 启动MySQL

systemctl enable --now mysqld

b. 登录MySQL

[root@5 ~]# mysql -uroot -p
Enter password: 

mysql> 

c. 修改MySQL密码

mysql> alter user root@localhost identified by '1234.Com';
Query OK, 0 rows affected (0.01 sec)

mysql> \q
Bye

3) 修改php的配置文件,然后启动服务

d. 修改php的配置文件

cp /etc/php.ini{,.bak}
vi /etc/php.ini

我们需要修改的部分有

short_open_tag = Off
; 198行。是否允许使用短标签写PHP代码,改为On
expose_php = On
; 400行。禁止显示php的版本信息,改为Off
max_execution_time = 30
; 409行。PHP脚本的最大执行时间,改为300
max_input_time = 60
; 419行。以秒为单位对通过POST,GET以及PUT方式接收,改为300
; 在420行添加内容:always_populate_raw_post_data=-1
post_max_size = 8M
; 703行。上传文件大小,改为16M
;date.timezone =
; 932行。设置时区,取消注释并设置为PRC
; 在1561行添加内容: mbstring.func_overload = 0

可以使用如下命令修改

sed -i -e 's@short_open_tag = Off@short_open_tag = On@' \
    -e 's@expose_php = On@expose_php = Off@' \
    -e 's@max_execution_time = 30@max_execution_time = 300@' \
    -e 's@max_input_time = 60@max_input_time = 300@' \
    -e 's@post_max_size = 8M@post_max_size = 16M@' \
    -e 's@;date.timezone =@date.timezone = PRC@' \
    -e '419a always_populate_raw_post_data=-1' \
    -e '1560a mbstring.func_overload = 0' \
    /etc/php.ini

e. 修改php-fpm的配置文件

cp /etc/php-fpm.d/www.conf{,.bak}
vi /etc/php-fpm.d/www.conf

我们需要修改的行有

user = apache
group = apache
; 修改为nginx
listen = /run/php-fpm/www.sock
; 修改为listen = 127.0.0.1:9000
pm.max_children = 50
; 修改为300
pm.start_servers = 5
; 修改为10
pm.min_spare_servers = 5
; 修改为10
pm.max_spare_servers = 35
; 修改为50

可以使用以下命令修改

sed -i -e 's@user = apache@user = nginx@' \
    -e 's@group = apache@group = nginx@' \
    -e 's@listen = /run/php-fpm/www.sock@listen = 127.0.0.1:9000@' \
    -e 's@pm.max_children = 50@pm.max_children = 300@' \
    -e 's@pm.start_servers = 5@pm.start_servers = 10@' \
    -e 's@pm.min_spare_servers = 5@pm.min_spare_servers = 10@' \
    -e 's@pm.max_spare_servers = 35@pm.max_spare_servers = 50@' \
    /etc/php-fpm.d/www.conf

f. 启动php-fpm服务

[root@5 ~]# systemctl enable --now php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@5 ~]# ss -anp|grep 9000
tcp   LISTEN 0      511                                     127.0.0.1:9000                0.0.0.0:*     users:(("php-fpm",pid=14445,fd=10),("php-fpm",pid=14444,fd=10),("php-fpm",pid=14443,fd=10),("php-fpm",pid=14442,fd=10),("php-fpm",pid=14441,fd=10),("php-fpm",pid=14440,fd=10),("php-fpm",pid=14439,fd=10),("php-fpm",pid=14438,fd=10),("php-fpm",pid=14437,fd=10),("php-fpm",pid=14436,fd=10),("php-fpm",pid=14435,fd=8))

4) 修改nginx配置文件,然后启动服务

g. 备份并修改nginx的主配置文件

cp /etc/nginx/nginx.conf{,.bak}
vi /etc/nginx/nginx.conf

我们需要修改的部分有

default_type        application/octet-stream;
; 后面添加两行
; fastcgi_buffer_size 64k;
; fastcgi_buffers 4 64k;

可以使用如下命令

sed -i '/default_type/a fastcgi_buffer_size 64k;\nfastcgi_buffers 4 64k;' /etc/nginx/nginx.conf

h. 手写配置文件/etc/nginx/conf.d/default.conf

cat << 'EOF'|tee /etc/nginx/conf.d/default.conf
server {
    listen 80;
    server_name localhost;
    location / {
        root /usr/share/nginx/html;
        index index.php index.html index.htm;
    }
    location ~\.php$ {
        root /usr/share/nginx/html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
EOF

i. 测试并重载配置

nginx -t && systemctl enable --now nginx

5) 登录MySQL创建用于php连接的用户,并授予其相应权限

mysql -uroot -p1234.Com
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '1234.Com';
CREATE USER 'zabbix'@'127.0.0.1' IDENTIFIED BY '1234.Com';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'127.0.0.1';
FLUSH PRIVILEGES;
\q

4. 监控端zabbix_server上测试LNMP平台的搭建

1) 准备测试文件

cat << 'EOF'|tee /usr/share/nginx/html/test1.php
<?php
phpinfo();
?>
EOF

cat << 'EOF'|tee /usr/share/nginx/html/test2.php
<?php
$link=mysqli_connect('127.0.0.1','zabbix','1234.Com');
if($link) echo "恭喜你,数据库连接成功";
mysqli_close($link);
?>
EOF

2) 使用浏览器访问zabbix_server测试

测试1

alt text

测试2

alt text

5. 监控端zabbix_server上搭建zabbix-7.0.29

1) 下载zabbix

# 1. 下载源码包
wget -O zabbix-7.0.29.tar.gz https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.29.tar.gz

# 2. 下载官方 sha256 校验文件
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.29.tar.gz.sha256

# 3. 校验:-c 读取 sha256 文件里的值,和同名文件比对,输出 OK 即通过
printf '%s  %s\n' "$(cat zabbix-7.0.29.tar.gz.sha256)" "zabbix-7.0.29.tar.gz" | sha256sum -c -

2) 解压

 tar -xf zabbix-7.0.29.tar.gz -C /usr/local/

3) 为导入zabbix数据库提前放开权限

[root@5 ~]# mysql -uroot -p1234.Com
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> \q
Bye

4) 导入zabbix数据库

切记,一定要严格遵循顺序!!

cd /usr/local/zabbix-7.0.29/database/mysql/
mysql -uzabbix -p1234.Com zabbix < schema.sql
mysql -uzabbix -p1234.Com zabbix < images.sql
mysql -uzabbix -p1234.Com --default-character-set=utf8mb4 zabbix < data.sql

注: 如果导入失败,需要使用命令mysql -uroot -p1234.Com -e "DROP DATABASE zabbix; CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"删库并重建新库

5) 回收权限并验证

mysql -uroot -p1234.Com
mysql> USE zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SHOW TABLES;
+----------------------------+
| Tables_in_zabbix           |
...
| widget_field               |
+----------------------------+
203 rows in set (0.00 sec)

mysql> SET GLOBAL log_bin_trust_function_creators = 0;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> exit
Bye

6) 安装zabbix_server所需依赖

dnf -y install gcc make net-snmp-devel libcurl-devel libxml2-devel pcre2-devel OpenIPMI-devel libevent-devel
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.46-1.el9.x86_64.rpm-bundle.tar
tar -xf mysql-8.0.46-1.el9.x86_64.rpm-bundle.tar
dnf -y localinstall mysql-community-common-8.0.46*.rpm \
    mysql-community-client-plugins-8.0.46*.rpm \
    mysql-community-libs-8.0.46*.rpm \
    mysql-community-devel-8.0.46*.rpm

7) 创建zabbix运行用户,并赋权

groupadd zabbix
useradd -M -s /sbin/nologin -g zabbix zabbix

8) 编译安装zabbix

# 1. 配置
cd /usr/local/zabbix-7.0.29/
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi

# 2. 编译
make -j$(nproc)

# 3. 安装
make install

9) 修改zabbix_server配置文件

先创建服务运行所需要的目录

mkdir -p /usr/local/zabbix/logs/
mkdir -p /usr/local/etc/zabbix_agentd.conf.d
chown zabbix:zabbix /usr/local/zabbix/logs/
cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak}
vi /usr/local/zabbix/etc/zabbix_server.conf

要修改的行有

LogFile=/tmp/zabbix_server.log              
# 38行,修改为/usr/local/zabbix/logs/zabbix_server.log
# PidFile=/tmp/zabbix_server.pid            
# 68行,去掉注释并修改为/usr/local/zabbix/logs/zabbix_server.pid
# DBHost=localhost                          
# 88行,去掉注释
# DBPassword=                               
# 125行,去掉注释并修改为DBPassword=1234.Com
# DBPort=                                   
# 143行,去掉注释并修改为DBPort=3306
StatsAllowedIP=127.0.0.1
# 744行,改为StatsAllowedIP=0.0.0.0
# Include=/usr/local/etc/zabbix_server.conf.d/*.conf    
# 1127行,去掉注释

可以执行如下命令修改(方法1)

sed -i -e 's@LogFile=/tmp/zabbix_server\.log@LogFile=/usr/local/zabbix/logs/zabbix_server.log@' \
    -e 's@# PidFile=/tmp/zabbix_server\.pid@PidFile=/usr/local/zabbix/logs/zabbix_server.pid@' \
    -e 's@# DBHost=localhost@DBHost=localhost@' \
    -e 's@# DBPassword=@DBPassword=1234.Com@' \
    -e 's@# DBPort=@DBPort=3306@' \
    -e 's@StatsAllowedIP=127\.0\.0\.1@StatsAllowedIP=0.0.0.0@' \
    -e 's@# Include=/usr/local/etc/zabbix_server\.conf.d/*.conf@Include=/usr/local/etc/zabbix_server.conf.d/*.conf@' \
    /usr/local/zabbix/etc/zabbix_server.conf

或者粘贴如下内容

LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=1234.Com
DBPort=3306
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=0.0.0.0
EnableGlobalScripts=0

10) 修改zabbix_agent配置文件

cp /usr/local/zabbix/etc/zabbix_agentd.conf{,.bak}
vi /usr/local/zabbix/etc/zabbix_agentd.conf
# PidFile=/tmp/zabbix_agentd.pid
# 11行,修改为PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
# 30行,修改为LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
# Timeout=3
# 301行,去掉注释并修改为Timeout=15
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
# 551行,去掉注释

可以执行如下命令修改(方法1)

sed -i -e 's@# PidFile=/tmp/zabbix_agentd\.pid@PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid@' \
    -e 's@LogFile=/tmp/zabbix_agentd\.log@LogFile=/usr/local/zabbix/logs/zabbix_agentd.log@' \
    -e 's@# Timeout=3@Timeout=15@' \
    -e 's@# Include=/usr/local/etc/zabbix_agentd.conf\.d/\*\.conf@Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf@' \
    /usr/local/zabbix/etc/zabbix_agentd.conf

或者粘贴如下内容(方法2)

PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Timeout=15
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

11) 添加zabbix启动脚本,并启动服务

# 1. 启动写入脚本
cat << 'EOF'|tee /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=network.target

[Service]
Type=forking
PIDFILE=/usr/local/zabbix/logs/zabbix_server.pid
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

EOF

附: 加上zabbix_agent的启动脚本

cat << 'EOF'|tee /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/zabbix/logs/zabbix_agentd.pid
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

EOF

# 2. 重载,让系统识别服务
systemctl daemon-reload

# 3. 重启服务
systemctl restart zabbix-server.service

# 4. 开机自启动
systemctl enable zabbix-server.service

可以查看端口验证

[root@5 ~]# ss -tuanp|grep zabbix
tcp   LISTEN 0      4096           0.0.0.0:10051         0.0.0.0:*     users:(("zabbix_server",pid=31528,fd=10),("zabbix_server",pid=31527,fd=10),("zabbix_server",pid=31525,fd=10),("zabbix_server",pid=31524,fd=10),("zabbix_server",pid=31516,fd=10),("zabbix_server",pid=31508,fd=10),("zabbix_server",pid=31494,fd=10),("zabbix_server",pid=31493,fd=10),("zabbix_server",pid=31492,fd=10),("zabbix_server",pid=31489,fd=10),("zabbix_server",pid=31487,fd=10),("zabbix_server",pid=31484,fd=10),("zabbix_server",pid=31483,fd=10),("zabbix_server",pid=31479,fd=10),("zabbix_server",pid=31478,fd=10),("zabbix_server",pid=31477,fd=10),("zabbix_server",pid=31476,fd=10),("zabbix_server",pid=31474,fd=10),("zabbix_server",pid=31473,fd=10),("zabbix_server",pid=31472,fd=10),("zabbix_server",pid=31471,fd=10),("zabbix_server",pid=31470,fd=10),("zabbix_server",pid=31469,fd=10),("zabbix_server",pid=31468,fd=10),("zabbix_server",pid=31462,fd=10),("zabbix_server",pid=31460,fd=10),("zabbix_server",pid=31454,fd=10),("zabbix_server",pid=31453,fd=10),("zabbix_server",pid=31452,fd=10),("zabbix_server",pid=31451,fd=10),("zabbix_server",pid=31450,fd=10),("zabbix_server",pid=31449,fd=10),("zabbix_server",pid=31448,fd=10),("zabbix_server",pid=31447,fd=10),("zabbix_server",pid=31446,fd=10),("zabbix_server",pid=31445,fd=10),("zabbix_server",pid=31444,fd=10),("zabbix_server",pid=31443,fd=10),("zabbix_server",pid=31442,fd=10),("zabbix_server",pid=31441,fd=10),("zabbix_server",pid=31440,fd=10),("zabbix_server",pid=31439,fd=10),("zabbix_server",pid=31438,fd=10),("zabbix_server",pid=31437,fd=10),("zabbix_server",pid=31436,fd=10),("zabbix_server",pid=31434,fd=10),("zabbix_server",pid=31433,fd=10),("zabbix_server",pid=31432,fd=10),("zabbix_server",pid=31428,fd=10),("zabbix_server",pid=31427,fd=10),("zabbix_server",pid=31402,fd=10))
tcp   LISTEN 0      4096              [::]:10051            [::]:*     users:(("zabbix_server",pid=31528,fd=11),("zabbix_server",pid=31527,fd=11),("zabbix_server",pid=31525,fd=11),("zabbix_server",pid=31524,fd=11),("zabbix_server",pid=31516,fd=11),("zabbix_server",pid=31508,fd=11),("zabbix_server",pid=31494,fd=11),("zabbix_server",pid=31493,fd=11),("zabbix_server",pid=31492,fd=11),("zabbix_server",pid=31489,fd=11),("zabbix_server",pid=31487,fd=11),("zabbix_server",pid=31484,fd=11),("zabbix_server",pid=31483,fd=11),("zabbix_server",pid=31479,fd=11),("zabbix_server",pid=31478,fd=11),("zabbix_server",pid=31477,fd=11),("zabbix_server",pid=31476,fd=11),("zabbix_server",pid=31474,fd=11),("zabbix_server",pid=31473,fd=11),("zabbix_server",pid=31472,fd=11),("zabbix_server",pid=31471,fd=11),("zabbix_server",pid=31470,fd=11),("zabbix_server",pid=31469,fd=11),("zabbix_server",pid=31468,fd=11),("zabbix_server",pid=31462,fd=11),("zabbix_server",pid=31460,fd=11),("zabbix_server",pid=31454,fd=11),("zabbix_server",pid=31453,fd=11),("zabbix_server",pid=31452,fd=11),("zabbix_server",pid=31451,fd=11),("zabbix_server",pid=31450,fd=11),("zabbix_server",pid=31449,fd=11),("zabbix_server",pid=31448,fd=11),("zabbix_server",pid=31447,fd=11),("zabbix_server",pid=31446,fd=11),("zabbix_server",pid=31445,fd=11),("zabbix_server",pid=31444,fd=11),("zabbix_server",pid=31443,fd=11),("zabbix_server",pid=31442,fd=11),("zabbix_server",pid=31441,fd=11),("zabbix_server",pid=31440,fd=11),("zabbix_server",pid=31439,fd=11),("zabbix_server",pid=31438,fd=11),("zabbix_server",pid=31437,fd=11),("zabbix_server",pid=31436,fd=11),("zabbix_server",pid=31434,fd=11),("zabbix_server",pid=31433,fd=11),("zabbix_server",pid=31432,fd=11),("zabbix_server",pid=31428,fd=11),("zabbix_server",pid=31427,fd=11),("zabbix_server",pid=31402,fd=11))

12) 配置zabbix_server的web页面

cp -r /usr/local/zabbix-7.0.29/ui/* /usr/share/nginx/html
chown -R nginx.nginx /usr/share/nginx/html
chown -R nginx.nginx /var/lib/php/session/

13) 重启nginx,php-fpm服务

systemctl restart nginx php-fpm

四. 浏览器访问zabbix

1. 使用浏览器对zabbix_server页面进行配置

a. 打开浏览器输入192.168.100.103

b. 设置语言,然后点击下一步

alt text

c. 检查环境,确保环境符合条件要求

alt text

d. 配置zabbix连接数据库

alt text

e. 配置zabbix时区

alt text

f. 之后一直下一步

alt text

alt text

g. 登录zabbix

alt text

alt text

2. 将绘制图表中的乱码修改为中文

以下是乱码

alt text

修改操作:

# 1. 备份 Zabbix 原来的字体
cp /usr/share/nginx/html/assets/fonts/DejaVuSans.ttf{,.bak}

# 2. 将系统的中文字体覆盖
cp /usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc \
   /usr/share/nginx/html/assets/fonts/DejaVuSans.ttf

# 3. 让 PHP 重新加载字体 + 刷新浏览器
systemctl restart php-fpm

现在,我们就能看到新字体了

alt text

至此,我们在5上已经将zabbix_server部署完毕