先来说说什么是 Zabbix,Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,简单来说就是服务器的监控面板程序。这个程序是开源免费的,我使用它是主要是为了监控我的多台服务器运行状态并告警。

Zabbix 由两部分构成,Zabbix Server(服务端) 与可选组件 Zabbix Agent(客户端)。Zabbix Server 可以通过 SNMP,Zabbix Agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能。Zabbix 可以运行在 Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X 等各种平台上。

环境

AlmaLinux 9/CentOS Stream9、LNMP

部署

Zabbix 需要 LNMP 或者 LAMP 环境,由于我的服务器已经部署了宝塔面板的 LNMP 环境,所以我需要基于宝塔安装 Zabbix Server。

注:以下为编译安装,我更推荐使用 Docker 安装

1. 创建用户

为了安全考虑,Zabbix 只使用普通用户运行,假如你当前用户是 zhang3,那么你运行它,它便使用 zhang3 身份运行。但是如果你在 root 环境下运行 Zabbix,那么 Zabbix 将会主动使用 zabbix 用户来运行。假如你的系统没有名叫 zabbix 的用户,那么你需要创建一个用户,如下:

groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

2. 安装 Zabbix 所需依赖

dnf -y install epel-release
dnf -y install net-snmp-devel fping OpenIPMI-devel

3. 下载 Zabbix 源码并解压

wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.2.tar.gz
tar -zxvf zabbix-7.0.0.tar.gz

4. 创建Zabbix数据库

  1. 使用命令的方式创建 zabbix 数据库,创建完成后去 宝塔面板-数据库-从服务器获取 就可以看到新建的数据库了。

mysql -uroot -p
password
MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
MariaDB [(none)]> create user zabbix@localhost identified by 'password';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit;
  1. 解压前面下载到本地的源码文件,进入 /database/mysql 目录,分别按顺序导入 schema.sql、images.sql、data.sql 这三个文件,这样数据库就创建完成并导入初始数据了。

mysql -uroot -p
password
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> source ~/zabbix-7.0.0/database/mysql/schema.sql;
MariaDB [zabbix]> source ~/zabbix-7.0.0/database/mysql/images.sql;
MariaDB [zabbix]> source ~/zabbix-7.0.0/database/mysql/data.sql;
MariaDB [zabbix]> quit;

mysql -uroot -p
password
MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
MariaDB [(none)]> quit;

5.编译解压后的程序

构建 Zabbix 服务器、Zabbix 代理或 Zabbix 代理需要带有 GNU 扩展的 C99。可以通过设置 CFLAGS="-std=gnu99" 明确指定此版本:

export CFLAGS="-std=gnu99"
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-agent2 --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-openssl --with-ssh2 --enable-proxy --enable-java --with-ldap

若无报错则开始编译安装

make install

6. 更新 Zabbix 的配置文件

  • 编辑 Zabbix 服务器配置文件/usr/local/zabbix/etc/zabbix_server.conf
    更改 DBName,DBUser和DBPassword 这三个值,即上面创建的 zabbix 数据库名称、用户名、密码

nano /usr/local/zabbix/etc/zabbix_server.conf
  • 编辑 Zabbix 代理配置文件/usr/local/zabbix/etc/zabbix_agentd.conf
    必须在文件中指定 Zabbix 服务器IP 地址。来自其他主机的连接将被拒绝

nano /usr/local/zabbix/etc/zabbix_agentd.conf

nano /usr/local/zabbix/etc/zabbix_agent2.conf

在宝塔面板安全里放行 10050,10051 端口

7. 修改宝塔 PHP 配置

将下图的红框中的值改为 300,删除禁用函数中的 putenv 函数

2024-07-14-tuavbn.png

2024-07-14-noudaf.png

8. 启动 Zabbix 程序

#配置zabbix-server

nano /usr/lib/systemd/system/zabbix-server.service
 
[Unit]
Description = Zabbix Server
After = syslog.target network.target
 
[Service]
Type = forking
Restart = on-failure
PIDFile = /tmp/zabbix_server.pid
KillMode = control-group
ExecStart = /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
RestartSec = 10s
TimeoutSec = 0
User = zabbix
Group = zabbix
 
[Install]
WantedBy = multi-user.target



#配置zabbix-agent

nano /usr/lib/systemd/system/zabbix-agent.service


[Unit]
Description = Zabbix Agent
After = syslog.target network.target
 
[Service]
Type = forking
Restart = on-failure
PIDFile = /tmp/zabbix_agent.pid
KillMode = control-group
ExecStart = /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
RestartSec = 10s
TimeoutSec = 0
User = zabbix
Group = zabbix
 
[Install]
WantedBy = multi-user.target


#配置zabbix-agent

nano /usr/lib/systemd/system/zabbix-agent2.service

[Unit]
Description = Zabbix Agent2
After = syslog.target network.target
 
[Service]
Type = forking
Restart = on-failure
PIDFile = /tmp/zabbix_agent2.pid
KillMode = control-group
ExecStart = /usr/local/zabbix/sbin/zabbix_agent2 -c /usr/local/zabbix/etc/zabbix_agent2.conf
RestartSec = 10s
TimeoutSec = 0
User = zabbix
Group = zabbix
 
[Install]
WantedBy = multi-user.target

设置开机自动启动

systemctl enable zabbix-server.service
systemctl enable zabbix-agent.service
systemctl enable zabbix-agent2.service

systemctl start zabbix-server.service
systemctl start zabbix-agent.service
systemctl start zabbix-agent2.service

systemctl status zabbix-server.service
systemctl status zabbix-agent.service
systemctl status zabbix-agent2.service

部署 Zabbix Web 端

将本地解压的 Zabbix 源码文件中的 ui 目录中的所有内容,上传到刚才新建的站点根目录中,访问站点并根据流程安装程序,开始使用。

2024-07-14-swcbqh.png

2024-07-14-erpdrw.png

2024-07-14-ehjpbt.png

2024-07-14-jwzrhh.png

2024-07-14-zxqqxv.png

默认用户名:Admin 默认密码:zabbix

监控多个服务器

只需要在你想要监控的服务器上部署 Zabbix Agent 程序,放行 10050 端口,然后在你的服务端的 Web 后台添加相应的主机即可。这里不再赘述了,部署方法参照 官网 以及这个视频:主机监控部署