Zabbix监控Web服务器和MySQL服务器
本文详细介绍了Zabbix监控系统的部署和配置过程。主要内容包括:1)在被监控Web主机和数据库主机上安装配置Zabbix Agent;2)在监控服务器上部署Zabbix Server、MySQL数据库和Web界面;3)通过手动和自动发现两种方式添加监控主机;4)为不同主机绑定相应的监控模板;5)特别说明了MySQL数据库监控的配置方法。案例涵盖了Zabbix监控系统的基本部署流程,包括服务安装、
前言: 本案例旨在熟悉和掌握Zabbix相关的技术
| 服务器IP | 描述 | 软件 |
| node2:192.168.30.13 | Zabbix Service服务器 | Zabbix Service、Zabbix |
| control:192.168.30.129 | web服务器 | Linux、Apache、Mysq、lPHP、Zabbix |
| node1:192.168.30.11 | 数据库服务器 | Linux、MySQL、Zabbix |
| ch:192.168.5.2 | 管理员电脑 | Windows |
1.被控制端配置(Web主机192.168.30.129)
dnf -y install \
https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
dnf -y install zabbix-agent #安装被监控端软件包
vim /etc/zabbix/zabbix_agentd.conf # 修改被监控端配置文件
PidFile=/run/zabbix/zabbix_agentd.pid # 进程PID文件
LogFile=/var/log/zabbix/zabbix_agentd.log # 日志文件
Server=127.0.0.1,192.168.30.12 # 允许连接的监控服务器IP
Hostname=bbs.example.com # 被监控主机名
Include=/etc/zabbix/zabbix_agentd.d/*.conf # 加载额外配置
被监控主机(192.168.30.129)需在
Server参数中填写 Zabbix 监控服务器的 IP( 192.168.30.12),配置完成后 Zabbix Agent 会监听 10050 端口,供监控服务器采集数据。
# 启动并设置 Zabbix Agent 开机自启:
systemctl enable zabbix-agent.service --now
# 查看端口监听:
ss -ntulp | grep zabbix
# 配置防火墙允许访问 Zabbix Agent 端口(默认 10050):
firewall-cmd --permanent --add-service=zabbix-agent
# 重新加载防火墙配置
firewall-cmd --reload

2.被控制端配置(Database主机192.168.30.11)
为了监控数据库业务,需先准备数据库基础环境,创建数据库并写入测试数据,创建账号并设置密码。数据库密码:A@123456
这里省略MySQL初始化
mysql -u root -p
CREATE DATABASE test;
USE test;
# 创建数据表:departments
CREATE TABLE departments (
dept_id int(4) NOT NULL AUTO_INCREMENT,
dept_name varchar(10) DEFAULT NULL,
PRIMARY KEY (`dept_id`)
);
# 插入数据
INSERT INTO departments VALUES
(1,'人事部'),(2,'财务部'),(3,'运维部'),(4,'开发部'),
(5,'测试部'),(6,'市场部'),(7,'销售部'),(8,'法务部');
# 创建数据表: employees
CREATE TABLE employees (
employee_id int(6) NOT NULL AUTO_INCREMENT,
name varchar(10) DEFAULT NULL,
hire_date date DEFAULT NULL,
birth_date date DEFAULT NULL,
email varchar(25) DEFAULT NULL,
phone_number char(11) DEFAULT NULL,
dept_id int(4) DEFAULT NULL,
PRIMARY KEY (employee_id),
KEY dept_id_fk (dept_id),
CONSTRAINT dept_id_fk FOREIGN KEY (dept_id)
REFERENCES departments (dept_id)
);
# 插入数据
INSERT INTO employees VALUES
(1,'张三','2023-01-21','1991-05-13','zs@test.cn','13591491431',1),
(2,'李四','2022-03-21','1994-01-25','lw@tedu.cn','15628557234',1),
(3,'王五','2022-01-19','1994-01-25','ww@tedu.cn','13845285867',1);
# 创建用户test
CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';
# 设置用户test权限
GRANT ALL ON test.* to 'test'@'localhost';
# 退出MySQL
quit
安装Zabbix
dnf -y install \
https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
# 安装被监控端软件包
dnf -y install zabbix-agent
修改配置文件zabbix_agentd.conf
vim /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid # 进程PID文件
LogFile=/var/log/zabbix/zabbix_agentd.log # 日志文件
Server=127.0.0.1,192.168.30.13 # 允许连接的监控服务器IP
Hostname=bbs.example.com # 被监控主机名
Include=/etc/zabbix/zabbix_agentd.d/*.conf # 加载额外配置
被监控主机(如 192.168.30.11)需在
Server参数中填写 Zabbix 监控服务器的 IP( 192.168.30.12),配置完成后 Zabbix Agent 会监听 10050 端口,供监控服务器采集数据。
# 启动并设置 Zabbix Agent 开机自启:
systemctl enable zabbix-agent.service --now
# 查看端口监听:
ss -ntulp | grep zabbix
# 配置防火墙允许访问 Zabbix Agent 端口(默认 10050):
firewall-cmd --permanent --add-service=zabbix-agent
# 重新加载防火墙配置
firewall-cmd --reload
3.监控服务器配置(192.168.30.13)
Zabbix 监控的数据需要保存在数据库中,所以我们需要在 Zabbix 监控服务器上安装数据库软件。
Zabbix 支持 MySQL 数据库和 PostgreSQL 数据库,我选择的是是 MySQL 数据库。
Zabbix 通过
zabbix-server连接zabbix-agent获取监控数据,之后将监控数据保存在数据库中。Zabbix 为我们提供了zabbix-web软件包,该软件包提供的是基于 PHP 的动态网页,我们需要部署一个 LNMP 架构来驱动该 PHP 网页。管理员即可通过浏览器访问网页查看监控数据。即便想要自己监控自己,监控服务器也需要安装
zabbix-agent软件包。注意:如果使用源码安装Zabbix,则可以在源码包的ui子目录中可以找到PHP动态网页文件
#安装zabbix
dnf -y install \
https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
# 部署LNMP架构
dnf -y install nginx php-fpm mysql-server
# 启动数据库服务
systemctl enable mysqld --now
# 启动php-fpm服务
systemctl enable php-fpm --now
# 启动Nginx服务
systemctl enable nginx --now
# 安装监控服务器软件
dnf -y install zabbix-server-mysql
# 安装监控的命令行工具
dnf -y install zabbix-get
# 安装被监控软件包
dnf -y install zabbix-agent
# 安装动态网页包(文件存放于/usr/share/zabbix)
dnf -y install zabbix-web zabbix-web-mysql
# 安装zabbix-nginx-conf 与zabbix-sql-scripts软件包
dnf -y install zabbix-nginx-conf zabbix-sql-scripts
安装
zabbix-nginx-conf软件包后,会自动生成/etc/nginx/conf.d/zabbix.conf文件,该配置文件定义了一个 Nginx 虚拟主机,设置网站根目录为/usr/share/zabbix,默认首页为index.php,开启fastcgi功能,支持PHP动态网页
cat /etc/nginx/conf.d/zabbix.conf
保持里面的内容,不需要修改
注意,一般listen和server_name可能是被注释的,需要启用
server {
listen 8080;
server_name example.com;
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location /vendor {
deny all;
return 404;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
}
}
Zabbix 监控服务器将获取的监控数据保存到数据库,如果需要将数据写入数据库,则需要在数据库软件中有对应的数据库和数据表,管理员需要自己创建数据库。
安装
zabbix-sql-scripts软件包,会自动生成/usr/share/zabbix-sql-scripts/mysql/server.sql.gz文件,这是server.sql的 gzip 压缩文件,而server.sql文件是数据库的备份文件。我们将
server.sql文件导入数据库即可在任意计算机上还原Zabbix需要的数据表,这样子Zabbix在获取到监控数据后就可以将这些数据写入对应的数据表中。
# 登录数据库(默认管理员无密码)可以进去后设置密码,也可以暂时性不设置
mysql
# 创建支持中文的数据库
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
# 创建数据库账号zabbix,并设置密码,企业环境中建议使用强密码
CREATE USER zabbix@localhost IDENTIFIED BY 'password';
# 给账号zabbix授权
GRANT ALL PRIVILEGES on zabbix.* TO zabbix@localhost;
# 允许创建存储函数
SET global log_bin_trust_function_creators = 1;
# 操作完成退出数据库
quit;
# 切换到zabbix-sql-scripts下的mysql目录
cd /usr/share/zabbix-sql-scripts/mysql/
# 解压缩数据文件
gunzip server.sql.gz
# 使用zabbix账号读取server.sql文件中的备份数据,将数据导入名称为zabbix的数据库中
mysql --default-character-set=utf8mb4 -uzabbix zabbix -p < server.sql
cd # 回家目录
mysql # 进数据库
# 还原函数限制
SET global log_bin_trust_function_creators = 0;
exit;
编辑 Zabbix 服务端配置文件
/etc/zabbix/zabbix_server.conf
vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log # 日志文件
LogFileSize=0 # 日志级别(默认 info,0 表示不限制日志大小)
PidFile=/run/zabbix/zabbix_server.pid # 进程 PID 文件路径
DBName=zabbix # 非常重要:指定将监控的数据写入到哪个数据库中
DBUser=zabbix # 非常重要:指定哪个账号连接数据库服务
DBPassword=password # 非常重要:指定数据库账号的密码,默认该行被注释,需要启用
启动服务与防火墙配置
# 启动监控服务
systemctl enable zabbix-server --now
# 启动被监控端服务
systemctl enable zabbix-agent --now
# 设置防火墙规则,允许访问zabbix-server
firewall-cmd --permanent --add-service=zabbix-server
# 设置防火墙规则,允许访问Web服务
firewall-cmd --permanent --add-service=http
# 重新加载防火墙规则
firewall-cmd --reload
4.初始化监控服务器
接下来在本地电脑的:C:\Windows\System32\drivers\etc\hosts
中添加域名解析:
192.168.30.13 zabbix.example.com
再访问zabbix.example.com:8080就可以进入zabbix初始化了
注意:Web 服务器缺少对应的语言本地化包,需要中文的可以使用
dnf -y install glibc-langpack-zh再重启 Nginx 和 PHP-FPM 使本地化配置生效
systemctl restart nginx php-fpm

选择用户zabbix




初始化完成后,使用默认的管理员用户登录
用户名称:Admin
密码:zabbix

进去后显示的就是首页

5.手动添加监控主机
初始化 Zabbix 监控页面后,默认 Zabbix 监控服务器就可以自己监控自己了。
但是,如果想要让 Zabbix 监控服务器监控 Web 主机和 Database 主机,则需要管理员单独添加需要监控的主机。可以手动添加监控主机,也可以通过自动发现添加监控主机。
我们先通过手动添加的方式添加 Web 主机,在登录 Zabbix 监控页面后,单击 “配置” 菜单下面的 “主机” 子菜单,在右边的页面中找到 “创建主机” 按钮,单击该按钮,如图所示,弹出 “New host” 对话框。
(图为 Zabbix 界面截图,包含 “监测”“服务”“资产记录”“报表”“配置” 等菜单,“配置” 下有 “主机群组”“模板”“主机”“维护” 子菜单,界面中还有 “创建主机”“导入” 按钮及相关监控配置项)
我们需要在主机名称后面添加需要监控的主机名称或 IP 地址。如果使用主机名称,则需要提前做域名解析。“可见的名称” 是我们对被监控主机的标识(可以任意设置),这里我们直接使用 IP 地址
在添加被监控主机后,监控服务器 zabbix-server 进程会连接被监控主机 zabbix-agent 的 10050 端口,获取监控数据。但是,一台主机可被监控的数据太多了,到底要监控哪些数据。Zabbix 通过监控模板定义了具体需要监控哪些数据,Zabbix 软件在安装时默认就提供了很多内嵌的模板,我们可以单击 “模块” 后面的 “选择” 按钮,根据分类找到适合自己的模板,因为这台 Web 主机是一台 Linux 主机,所以我们选择 “Templates/Operating Systems” 这个模板分类,在右侧勾选 “Linux by Zabbix agent” 选项,单击 “选择” 按钮

在生产环境中我们通常需要监控很多主机,如果每台被监控主机都是一个独立的个体,那么管理起来会很不方便,因此 Zabbix 提供了主机组的功能。我们可以把很多台被监控主机放到相同的监控组中,这样后期管理会更加方便。Zabbix 默认内嵌了很多组,如果管理员感觉不合适,也可以自己创建任意名称的主机组,这里我们将被监控主机加入内嵌的 Linux Servers 组。



这里提示无法添加主机,我们需要添加接口,然后输入IP就可以添加了


6.查看监控数据
监控主机已经添加完成,并且绑定了 Linux by Zabbix agent 监控模板,这个 Zabbix 内嵌的监控模板可以让我们监控 Web 主机的几十项数据,如何查看这些数据呢?单击 “监测” 菜单下面的 “最新数据” 子菜单,在右边的页面中单击 “主机群组” 对应的 “选择” 按钮,勾选 “Linux servers” 复选框,单击下方的 “选择” 按钮,如图 所示。

因为前面在添加主机时已经把 Web 主机添加到 Linux servers 组,所以在选择 Linux servers 组后,我们可以单击 “主机” 对应的 “选择” 按钮,目前在 Linux servers 组中只有一台被监控主机(web_bbs),勾选 “web_bbs” 复选框,单击 “选择” 按钮,如图1 所示。在主机选择完毕后,单击 “应用” 按钮即可查看被监控主机的监控数据,如图 2 所示。


图1展示的是众多监控数据中的一部分,比如 Web 主机(192.168.0.100)的 CPU 1 分钟负载为 0.24。单击某个监控项目后面的 “图形” 按钮,还可以查看使用监控数据绘制的动态监控图形,如图2所示。如果图中显示的 “□” 是因为当前 Zabbix 语言环境为中文而显示的乱码。如果把 Zabbix 语言环境调整为英文,则可以正常显示。如图 所示,last 代表最近一次获取的监控数据值,min、avg 和 max 分别代表当前所有数据的最小值、平均值和最大值。


7.绑定更加多监控模板
前面我们通过 Zabbix 内嵌的 Linux by Zabbix agent 监控模板,就可以监控一台 Linux 主机,并获取该主机的几十项数据。Zabbix 官方团队在定义内嵌的 Linux by Zabbix agent 监控模板时,主要目的是监控一台 Linux 主机,主要监控的数据包括:Linux 系统的 CPU 负载、硬盘及分区数据、内存数据、网络流量等。但是这个模板并不能监控这台 Linux 主机上面的各种服务,比如 LAMP 服务。
在我们的服务器环境中,Web 主机(192.168.30.129)就是一台 LAMP 主机,并且该 LAMP 主机上面还运行着一个论坛网址。如果我们想要监控 Apache httpd 服务,就需要给 Web 主机绑定相关的监控模板。单击 “配置” 菜单下面的 “主机” 子菜单,在右边的页面中找到需要绑定模板的主机(web_bbs),如图 1所示,勾选 “web_bbs” 复选框即可。

如果不想再绑定该模板,则可以单击 “取消链接并清理” 按钮。如果想要添加更多模板该如何操作呢?首先需要单击模板下面的 “选择” 按钮,如图1 所示,然后在弹出的 “模板” 对话框中单击 “主机群组” 对应的 “选择” 按钮,单击 “Templates” 模板,如图 2所示。


在弹出的 “模板” 对话框中勾选 “Apache by HTTP” 复选框,单击下方的 “选择” 按钮,如图 1 所示,在模板选择完成后单击 “更新” 按钮即可完成模板的绑定,如图 2所示。



在绑定新的模板后,等待片刻后,就可以在“监测”菜单下面的“最新数据”子菜单里面找到对应主机的最新监控数据了

8.自动发现监控主机
当需监控的设备数量增多时,手动添加监控设备会面临挑战,此时可利用 Zabbix 的自动发现功能,实现批量添加监控主机、自动将主机加入组、自动绑定模板,以及自动创建监控项和图形等操作。
完成自动发现需两个步骤:
- 第一步:创建自动发现规则监控服务器会依据规则扫描设备,例如检测主机是否能 ping 通、是否安装了 Zabbix_agent、是否监听 10050 端口,或其他服务器的特定端口等,只要扫描到满足条件的主机即可触发自动发现流程。
- 第二步:创建自动发现对应的动作用于完成后续的主机添加等操作。
现如今:
我们已经添加了Zabbix 监控服务器(192.168.30.13)和被监控 Web 服务器(192.168.30.129),此外,还有一台数据库服务器(192.168.30.11),在数据库服务器这台主机上我们安装部署了MySQL服务并监听了3306端口,下面我们就通过自动发现功能自动添加被监控主机,并绑定Linux by Zabbix agent监控模板
点击”配置“菜单下面的”自动发现“子菜单,点击右上角的”创建发现规则“按钮,如图:

在弹出的 “自动发现规则” 对话框中填写自动发现规则的名称(名称可以任意,例如中填写的 “自动发现规则”,对话框中填写的 IP 地址范围为 192.168.30.10-254,需要根据自己的名称、实际网络中 IP 地址范围来定。
这里填写的 IP 地址范围为 192.168.30.10-254,需要发现的是自己的名称(可以任意),这里案例中的所有主机,在 192.168.30.10-254 之间的数据库主机 192.168.30.11,Zabbix 会扫描的 IP 地址范围是 192.168.30.10-254 之间的所有主机,在生产环境中时间间隔为 1h,在实验中为了快速看到实验效果,将重复间隔的设置为 60s,单击 “添加” 按钮,在弹出的对话框中设置扫描的检查条件,检查类型为 TCP,因为要监控数据库,所以端口范围为 3306单击 “添加” 按钮,设置完成后效果如图 所示。

在创建自动发现规则后,还需要创建自动发现的动作。单击 “配置” 菜单下面的 “动作” 菜单,单击上角的 “创建动作” 按钮,如图 1 所示。在弹出的对话框中填写动作名称(名称可以任意),单击 “条件” 下面的 “添加” 按钮,在弹出的 “新的触发条件” 对话框中设置 “类型” 为 “自动发现规则”,“操作者” 为 “等于”,自动发现规则为 “find_mysqlserver”,单击 “添加” 按钮,如图 2所示。


单击 “操作” 选项卡下面的 “添加” 按钮,在弹出的 “操作细节” 对话框中设置具体的操作动作,将 “Operation” 设置为 “添加到主机群组”,将 “主机群组” 设置为 “Linux servers”,单击 “Add” 按钮,如图 1所示。

再次单击 “添加” 按钮,将 “Operation” 设置为 “与模板关联”,将模板设置为 “Linux by Zabbix agent”,如图1 所示。


至此每隔 60s Zabbix 就会自动扫描一遍 192.168.30.10-254 之间的所有主机,检查这些主机是否开启了 3306 端口,如果开启了,则自动将主机添加到服务器组,并自动给该主机绑定监控模板。一段时间后,单击 “配置” 菜单下面的 “主机” 子菜单,在右边的页面中即可找到自动添加的主机。如果我们给计算机提前做了域名解析,则自动发现的主机会直接匹配域名。如果没有域名,则添加的是主机的 IP 地址,如图 1所示。

9.监控MySQL数据库
前面我们通过自动发现添加了数据库主机并自动绑定了监控模板 Linux by Zabbix agent,该模板的作用是监控 Linux 服务器的数据信息。
Database 主机是一台数据库主机,如果我们需要监控 MySQL 数据库的各项监控指标,则通过 Zabbix 默认提供的 MySQL by Zabbix agent 监控模板即可监控 MySQL 数据库服务器。
Database 被监控主机安装了 zabbix-agent 后会自动生成 /usr/share/doc/zabbix-agent/userparameter_mysql.conf 这个数据库监控配置文件,在该文件中定义了监控数据库数据的具体命令。我们首先需要修改 zabbix-agent 的主配置文件,在主配置文件中通过 Include 语句加载该监控配置文件。在加载了 userparameter_mysql.conf 监控配置文件后,监控命令需要知道连接数据库的账号和密码,只有有了账号和密码,监控命令才可以连接数据库服务,查询相关监控数据。默认 userparameter_mysql.conf 会到 /var/lib/zabbix 目录中的.my.cnf 文件读取数据库的账号和密码,我们需要自己创建目录和文件,并在文件中填写自己数据库的账号和密码。前面我们在准备 Database 服务器环境时创建了 test 账号,该账号的密码为 test,授权该账号拥有对数据库的所有权限。
vim /etc/zabbix/zabbix_agentd.conf
# 在末尾添加如下
Include=/usr/share/doc/zabbix-agent/userparameter_mysql.conf
mkdir /var/lib/zabbix/ # 创建目录
vim /var/lib/zabbix/.my.cnf
[client]
user=test
password=test
systemctl restart zabbix-agent.service # 重启服务
在被监控主机(192.168.30.11)完成以上操作后,我们还需要回到 Zabbix 监控 Web 页面,给被监控主机(192.168.30.11)绑定新的 MySQL by Zabbix agent 监控模板。
单击 “配置” 菜单下面的 “主机” 子菜单,在右边的页面中找到 Database 主机(192.168.0.101),并勾选该主机。在弹出的 “主机” 对话框中单击模板后面的 “选择” 按钮。在弹出的 “模板” 对话框中勾选 “MySQL by Zabbix agent” 复选框,单击 “选择” 按钮,如图 1 所示页面,返回如图 2 所示页面后单击 “更新” 按钮。


在正确绑定模板后,等待一段时间,就可以”监测“菜单下面的”最新数据“子菜单中查看相关的监控数据了,如图1、2所示。


更多推荐


所有评论(0)