系统环境

标题 版本 备注
系统版本 ubuntu 22.04.3 LTS (Jammy Jellyfish) -
内核版本 5.15.0-91-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux -
Tengine v3.1.0 -
PHP v7.4.30 -
MariaDB v10.11.7 -
Zabbix v6.4.14 -
Java v8u361 -

Zabbix 简介

zabbix 官方网址: https://www.zabbix.com/

Zabbix是一个开源的企业级分布式监控解决方案,用于监控各种网络服务、服务器和网络硬件的性能和可用性。它提供了出色的可扩展性和灵活性,可以监控从小型环境到大型复杂环境的各种IT基础设施。

Zabbix的主要特点包括:

  1. 分布式监控:Zabbix采用分布式架构,支持代理和无代理两种监控模式,能够监控大规模的网络环境。

  2. 多平台支持:Zabbix可以监控各种操作系统和硬件平台,包括Linux、Windows、Unix、网络设备等。

  3. 丰富的监控项目:Zabbix可监控CPU、内存、磁盘利用率、网络带宽、进程、服务、Web场景等多种监控项目。

  4. 灵活的通知机制:Zabbix支持多种通知方式,如电子邮件、短信、脚本执行等,可根据预定义的触发条件发送警报。

  5. 强大的数据可视化:Zabbix提供了图形化的Web界面和丰富的报表功能,方便用户查看和分析监控数据。

  6. 自动化操作:Zabbix支持自动化远程命令执行,可对异常情况进行自动化处理和恢复。

  7. 监控模板和自动发现:Zabbix内置了丰富的监控模板,并支持自动发现新加入的设备。

  8. 高性能和容错性:Zabbix具有高性能和容错能力,可以在不中断运行的情况下进行配置更改和软件升级。

Zabbix广泛应用于各种企业环境中,用于监控IT基础设施的健康状况和可用性,及时发现和解决潜在问题,确保系统的稳定运行。它的开源性和强大功能使其成为广受欢迎的企业级监控解决方案之一。

LTMP 环境部署

关于 LTMP 环境中的 Tengine 安装,请参考:在 ubuntu 22.04 中,通过源码编译安装 LTMP 中的 Tengine 服务(不支持 Lua 脚本语言)

关于 zabbix-web-server 虚拟主机的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name _;

location / {
root /data/website/zabbix/ui;
index index.php;
}

location ~ \.php$ {
root /data/website/zabbix/ui;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

关于 LTMP 环境中的 MariaDB 安装,请参考:在 ubuntu 22.04 中,通过二进制安装 MariaDB 服务

关于 zabbix-server 数据库的创建及授权如下:

1
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
-- 登陆数据库
root@instance-2UkeKOzr:~# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 184
Server version: 10.11.7-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

-- 创建 zabbix 数据库
MariaDB [(none)]> create database zabbix;
Query OK, 1 row affected (0.002 sec)

-- 授权
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbix2024';
Query OK, 0 rows affected (0.004 sec)

-- 使授权立即生效
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.003 sec)

-- 退出数据库
MariaDB [(none)]> exit
Bye

关于 LTMP 环境中的 PHP 安装,请参考:在 ubuntu 22.04 中,通过源码编译安装 LNMP 中的 PHP 环境

关于 JAVA 环境部署,请参考:在 ubuntu 22.04 中,通过二进制安装 Java 环境

Zabbix 安装

1.安装必要的依赖包:

1
apt install -y libsnmp-dev libevent-dev golang libssh2-1-dev libopenipmi-dev

2.添加运行 zabbix 的用户 zabbix:

1
useradd -s /sbin/nologin zabbix

3.点击这里下载 zabbix 源码文件到服务器的 /usr/local/src/ 目录下:

1
wget -O /usr/local/src/zabbix-6.4.14.tar.gz https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.14.tar.gz

4.将下载的 zabbix 源码包解压至下载目录:

1
tar -zxf /usr/local/src/zabbix-6.4.14.tar.gz -C /usr/local/src/

5.进入解压目录:

1
cd /usr/local/src/zabbix-6.4.14

服务端 - zabbix-server

1.配置编译参数:

1
./configure --prefix=/usr/local/zabbix_server --enable-server --enable-proxy --enable-agent --enable-agent2 --enable-webservice --enable-java --with-mysql --with-libxml2 --with-net-snmp --with-ssh2 --with-zlib --with-libevent --with-openssl --with-libcurl --with-libpcre2 --with-iconv --with-openipmi

2.执行 make 命令开始编译:

1
make

3.执行 make install 命令开始安装:

1
make install

4.在 /etc/profile.d/ 目录下创建 zabbix 系统环境配置文件 zabbix.sh ,内容为:

1
2
3
4
cat << 'EOF' > /etc/profile.d/zabbix.sh
ZABBIX_HOME=/usr/local/zabbix_server
PATH=$PATH:${ZABBIX_HOME}/bin:${ZABBIX_HOME}/sbin
EOF

5.执行命令 source /etc/profile.d/zabbix.sh 使环境配置立即生效:

1
source /etc/profile.d/zabbix.sh

6.执行命令 zabbix_server --vesion 看能否正常输出 zabbix 版本号,如果能正常输出,则代表 zabbix 环境配置完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@instance-2UkeKOzr:/usr/local/zabbix_server/etc# zabbix_server --version
zabbix_server (Zabbix) 6.4.14
Revision 0a50e619ef7 22 April 2024, compilation time: May 9 2024 09:23:53

Copyright (C) 2024 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 3.0.2 15 Mar 2022
Running with OpenSSL 3.0.2 15 Mar 2022

注意: 如果你在执行上面的命令时,报 zabbix_server: error while loading shared libraries: libmariadb.so.3: cannot open shared object file: No such file or directory 错误,则可以使用下面方法解决。

1.使用 find 命令查找 mairaidb 库文件:

1
2
root@instance-2UkeKOzr:/usr/local/zabbix_server/etc# find /* -type f -iname libmariadb.so.*
/usr/local/mysql/lib/libmariadb.so.3

2.然后将查找到的文件软链接到 /usr/lib/ 目录下即可

1
root@instance-2UkeKOzr:/usr/local/zabbix_server/etc# ln -s /usr/local/mysql/lib/libmariadb.so.3 /usr/lib/

7.在 /lib/systemd/system/ 目录下创建 zabbix 启动文件 zabbix_server.service ,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat << 'EOF' > /lib/systemd/system/zabbix_server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/usr/local/zabbix_server/etc/zabbix_server.conf"
#EnvironmentFile=-/etc/sysconfig/zabbix-server
User=zabbix
Group=zabbix
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix_server/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target
EOF

8.编辑 zabbix_server 安装目录 /usr/local/zabbix_server/etc 下的 zabbix_server.conf 文件,配置内容为(主要是配置数据库的连接):

1
2
3
4
5
6
7
8
9
10
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix2024
DBSocket=/tmp/mysql.socket
DBPort=3306
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

9.导入 zabbix 初始化数据到 mariadb 数据库中:

1
2
3
4
5
mysql -uzabbix -p -h 127.0.0.1 zabbix < /usr/local/src/zabbix-6.4.14/database/mysql/schema.sql

mysql -uzabbix -p -h 127.0.0.1 zabbix < /usr/local/src/zabbix-6.4.14/database/mysql/images.sql

mysql -uzabbix -p -h 127.0.0.1 zabbix < /usr/local/src/zabbix-6.4.14/database/mysql/data.sql

10.执行命令,加载 zabbix_server 启动脚本:

1
systemctl daemon-reload

网页端 - zabbix-server

1.将 zabbix 解压目录 /usr/local/src/zabbix-6.4.14 下的 ui 目录复制到 nginx web 目录 /data/website/zabbix/ 目录下:

1
cp -r /usr/local/src/zabbix-6.4.14/ui /data/website/zabbix/

2.打开浏览器,输入服务器IP开始安装 zabbix_web 端,如下图:

注意: 如果你在安装的时候同我一样,无法选择中文支持,那么请按照下面方法操作

1.执行命令 apt install -y language-pack-zh-hans language-pack-zh-hans-base 这2个中文语言包:

1
apt install -y language-pack-zh-hans language-pack-zh-hans-base

2.然后执行下命令 locale -a 查看是否有 zh_CN.UTF-8

1
2
3
4
5
6
7
root@instance-2UkeKOzr:~# locale -a
C
C.utf8
POSIX
en_US.utf8
zh_CN.utf8
zh_SG.utf8

3.执行命令 locale-gen 生成语言:

1
2
3
4
5
6
root@instance-2UkeKOzr:~# locale-gen 
Generating locales (this might take a while)...
en_US.UTF-8... done
zh_CN.UTF-8... done
zh_SG.UTF-8... done
Generation complete.

4.重启下 nginx 和 php-fpm 服务:

1
systemctl restart nginx.service php-fpm.service

最后,再次刷新下安装网页!

3.编辑 php 安装目录 /usr/local/php/etc/ 目录下的 php.ini 文件,调整下面三个参数:

1
2
3
sed -i 's/post_max_size = 8M/post_max_size = 16M/' /usr/local/php/etc/php.ini
sed -i 's/max_input_time = 60/max_input_time = 300/' /usr/local/php/etc/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 300/' /usr/local/php/etc/php.ini

然后重启下 php-fpm 和 nginx 服务:

1
systemctl restart nginx.service php-fpm.service

确保 zabbix 安装步骤的 检查必要条件 通过:

4.在 配置数据库链接 页面根据创建的数据库信息填入对应的栏中,如下图:

5.在 设置 页面根据自身需求填入相应信息,如下图:

6.安装前的信息确认,如下图:

7.在安装界面根据提示,下载 zabbix.conf.php 文件,上传到服务器的 zabbix web 目录/data/website/zabbix/ui/ 下的 conf/ 目录下:

8.由于你 php 运行的用户是 php-fpm, 则需要将 zabbix web 目录所属主和组都修改为 php-fpm,否则安装完 zabbix web 后,会提示 Configuration file error 错误:

1
chown -R php-fpm:php-fpm /data/website/zabbix

再次刷新 zabbix web 页面,如下图:

9.使用默认账号(Admin)密码(zabbix)登陆后,发现系统信息板块中的 zabbix 服务器运行状态 ,这是因为我们还未启动服务器上的 zabbix_server 服务,如图:

10.切换到服务器命令行终端,执行命令:

1
systemctl enable --now zabbix_server.service

再次刷新 zabbix web 页面,如图: