本期主要介绍在 Debian 11 环境下,安装 Zabbix 6.4 监控系统,使用 MySQL 作为后端数据库,和 Nginx 作为 Web 服务器。

通过此篇文章,你将了解如何在这个环境下,安装和配置 Zabbix 监控系统,并掌握如何设计一个可扩展、易维护的监控环境。

一、安装依赖库 NGINX、MYSQL

2.1、安装必要的依赖库

1
2
sudo apt-get update
sudo apt-get install -y wget tar gcc make

2.2、装 Nginx 和 PHP

1
sudo apt-get install -y nginx php-fpm php-mysql php-gd php-xml php-bcmath php-mbstring php-ldap

2.3、安装 MySQL 数据库(如果你使用 PostgreSQL,则需要安装 PostgreSQL 数据库)

总所周知,这教程不止 Debian 可以用,Ubuntu 也可以,所以这一步有个问题,非 Debian Stretch 版用第一条命令,Stretch 版用第二条命令。

你可以使用 apt-cache search mysql-server搜索 MYSQL 包,Debian11 搜索到的包如下:

1
2
3
4
mariadb-server-10.5 - MariaDB database server binaries
mariadb-server-core-10.5 - MariaDB database core server files
default-mysql-server - MySQL database server binaries and system database setup (metapackage)
default-mysql-server-core - MySQL database server binaries (metapackage)

1.png

在 Debian Bullseye 中,mysql-client 包已经包含在 default-mysql-servermariadb-server 包中。

① 安装 MYSQL

1
2
3
4
# 非 Stretch 版
sudo apt-get install -y mysql-server mysql-client
# Stretch 版
sudo apt-get install default-mysql-server

Debian 开始从 Stretch 版本起,MariaDB 逐渐替代 MYSQL,这主要是由于开发者之间的一些分歧和 MySQL 的所有权变更。

MariaDB 是 MySQL 的一个社区驱动的分支,最初由 MySQL 的创始人 Michael Widenius 创建。它由一些核心 MySQL 开发人员创建和维护,并且具有与 MySQL兼 容的 API 和命令行工具,使得从 MySQL 迁移到 MariaDB 更加容易。

相比原生 MySQL,MariaDB 具有一些新的功能和性能改进,包括更好的查询优化,更好的索引性能,更好的复制,更好的安全性等等。此外,MariaDB 具有更加民主和开放的开发过程,使得社区用户可以更加轻松地参与到项目的发展中来。

虽然 MariaDB 在某些方面优于 MySQL,但这并不意味着 MariaDB 适用于所有情况。对于某些具体的应用场景,MySQL 可能仍然比MariaDB 更为适合。

不过不知道为什么我安装的是MYSQL,进去还是 MariaDB 🤣🤣🤣

3.png

② 启动 MYSQL

1
2
3
4
5
# 启动 MYSQL
sudo systemctl start mysql
# 开机自启 MYSQL
sudo systemctl enable mysql
# 查询 MYSQL 状态

2.png

二、安装 Zabbix server、Web 前端、Agent

安装 Zabbix 存储库

1
2
3
wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian11_all.deb
dpkg -i zabbix-release_6.4-1+debian11_all.deb
apt update

由于网络原因你可能没法安装?反正我这里是没法装,我这里解决办法是为其下载添加代理。

三、配置环境

3.1、创建一个新的数据库和用户供 Zabbix 使用

⚠️ 记住将 123456 替换为你自己的密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 登录到 MySQL
sudo mysql -u root -p

# 创建名为 zabbix 的数据库
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;

# 创建名为 zabbixuser 的用户,密码为 123456,并授权其可以访问 zabbix 数据库
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbixuser'@'localhost' IDENTIFIED BY '123456';

# 刷新权限
FLUSH PRIVILEGES;

# 退出 MySQL
exit

3.2、导入初始架构和数据

1
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

问题 ①:

如果报错:ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)

错误原因:因为你执行的命令不包含密码。需要将 -p 选项之后的空格替换为你的密码(下面的123456换成你的zabbix用户密码)

解决方法:

1
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p123456 zabbix

问题 ②:

如果报错:ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)

错误原因:因为 MySQL 没有将用户授予访问 zabbix 数据库的权限。

解决方法:

1
2
3
4
5
6
7
8
9
# 登录 MySQL:
sudo mysql -u root -p

# 授予 zabbix 用户访问 zabbix 数据库的权限:
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'YourPassword';
FLUSH PRIVILEGES;

# 退出 MySQL:
exit;

3.3、配置 Zabbix_Server 文件

/etc/zabbix/zabbix_server.conf 配置文件中设置 MySQL 数据库参数:

1
2
3
4
5
DBName=zabbix
DBUser=zabbixuser
DBPassword=123456
DBHost=localhost
DBPort=3306

⚠️ 这里配置不正确会导致无法启动

3.4、配置 Nginx 文件

/etc/nginx/sites-available/default/etc/zabbix/nginx.conf,这两个文件都是 Nginx Web 服务器的配置文件。/etc/nginx/sites-available/default 是 Nginx 默认的站点配置文件,其中包含服务器块和位置块等 Nginx 的基本配置格式。默认情况下,这个文件定义了 Nginx 默认网站的配置信息,可以在此文件中定义更多的虚拟主机。

/etc/zabbix/nginx.conf 则是针对 Zabbix 监控系统设计的 Nginx 配置文件。它定义了一些特定的页面和请求的反向代理,以便更好地支持 Zabbix 前端的操作。此文件的配置主要关注于 Zabbix 的性能和安全方面。

① 方法一(推荐)、修改 etc/zabbix/nginx.conf 配置文件

取消 listenserver_name前面的注释即可

1
2
listen 8080;
server_name example.com;

4.png

② 方法二、修改/etc/nginx/sites-available/default 配置文件

添加以下配置:

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
server {
listen 80 default_server;
listen [::]:80 default_server;

server_name your-server-name; # 你的服务器的名称

root /usr/share/zabbix;

index index.php;

location / {
try_files $uri $uri/ =404;
}

location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 可能需要更改版本号
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /(api|conf|include|js|locale|plugins|usr|libexec|sql|testdata)/ {
deny all;
}
}

四、启动、初次访问 Zabbix

1、重启 Nginx 和 Zabbix Server

1
2
sudo systemctl restart nginx
sudo systemctl restart zabbix-server

2、初次访问设定

在启动 Nginx 和 zabbix-server 后,在地址栏中输入 Zabbix Server 的 IP 地址,后面加上 /zabbix

1
2
# 我这里端口没有改,是默认的8080,如果你改成了80或者443就不需要加端口
http://192.168.80.150:8080/zabbix

如果无法访问请关闭 SElinux、防火墙或者开放端口

① 这里有个语言包红色感叹号,不用管它,按照提示下一步即可。

6.png

② 这里我们需要再一次输入数据库密码。

7.png

③ Zabbix server name 处输入 Zabbix 服务器名称。

8.png

④ 安装完成

9.png

在登录页面中,输入默认用户名 Admin 和密码 zabbix,然后单击 “Log in” 按钮,如果登录成功,你将看到 Zabbix Web 界面,可以通过这个界面管理和监控主机、应用、服务等资源。

五、安装语言包

我这台 Debian 是最小化安装,也没别的语言包,所以进去一堆感叹号提示找不到语言包。

10.png

① 首先执行下列命令查看已安装的语言环境

1
locale -a

② 安装locales软件包

1
sudo apt install locales

③ 配置语言环境

1
sudo dpkg-reconfigure locales

在这里选择要安装的语言环境,通常我们不需要全部选择安装,选择需要的即可

语言项非常多,通过鼠标滚轮、PageUp或者PageDown可以上下翻页,有的终端也可以用HomeEnd跳转到开头或者结尾,上下键逐个移动光标,翻到最下面可以找到中文语言环境。

这里我安装了 英文和中文两种语言(按下空格即可选择,前面带星号(\*)即被选中):

11-12合并.jpg

安装完成后按回车需要选择使用的语言,我安装语言包只是为了 Zabbix 用,所以还是继续用 en_US

13.png

语言包安装完成后重启 Linux 系统即可生效

1
reboot

④ 再次登录 Zabbix Web设置语言

重启之后我们再来看,发现语言包已经被加载到了,这里选择中文即可

14.png

15.png

六、Zabbix 无法启动查错

zabbix-server 服务无法启动可能有配置的问题或者是端口被占用等问题引起的,那么多问题挨个猜怕是不行/

如果出台错误,建议按照以下步骤查找问题并解决:

① 确保zabbix_server包已经安装

1
which zabbix_server

输出:/usr/sbin/zabbix_server

② 运行以下命令查看详细的错误信息:

1
2
3
4
5
6
# 启动状态
systemctl status zabbix-server.service
# 启动该服务
systemctl start zabbix-server.service
# 查看详细的服务日志
journalctl -u zabbix-server.service

③ 检查 zabbix-server 的配置文件,确保它是正确的。您可以使用以下命令检查 zabbix-server 的配置是否存在错误:

1
zabbix_server -c /etc/zabbix/zabbix_server.conf -t item
1
2
3
4
5
6
7
8
9
10
正确的输出:👇

root@debian11:~# zabbix_server -c /etc/zabbix/zabbix_server.conf -t item
zabbix_server [1186]: invalid option -- t
usage:
zabbix_server [-c config-file]
zabbix_server [-c config-file] -R runtime-option
zabbix_server -h
zabbix_server -V

如果有任何问题,它将输出有关配置错误的详细信息。

  1. 检查端口是否被占用。如果端口被占用,您需要释放端口或更改 zabbix-server 的配置文件以使用其他端口。
  2. 最后,检查 zabbix-server 的日志文件以获取有关它不能启动的其他详细信息。日志文件通常在/var/log/zabbix/目录下。