先来说说什么是 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数据库
使用命令的方式创建 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;
解压前面下载到本地的源码文件,进入
/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
函数
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
目录中的所有内容,上传到刚才新建的站点根目录中,访问站点并根据流程安装程序,开始使用。
默认用户名:Admin 默认密码:zabbix
监控多个服务器
只需要在你想要监控的服务器上部署 Zabbix Agent 程序,放行 10050
端口,然后在你的服务端的 Web 后台添加相应的主机即可。这里不再赘述了,部署方法参照 官网 以及这个视频:主机监控部署。