#Linux监控与安全Day01:Zabbix部署全流程,基础监控配置与自定义监控项

前言

在企业级运维中,监控系统是保障业务稳定运行的核心,Zabbix 作为一款高度集成的开源分布式监控解决方案,凭借其强大的数据采集、告警和可视化能力,成为了运维工程师的必备工具。

一、监控概述

1.1 监控的核心目的

监控本身无法解决问题,监控系统的核心目的在于主动发现问题而非被动响应故障,主要实现两大目标:

  • 报告系统运行状况:同时全面监控系统的每一个组件,包括吞吐量、响应时间、资源使用率等关键指标
  • 提前发现潜在问题:在故障发生前识别性能瓶颈,为系统优化提供数据支撑,避免业务中断

1.2 监控的资源类型

Zabbix 可以监控两大类资源:

  • 公开数据
    • Web、FTP、SSH、数据库等应用服务
    • TCP/UDP 端口的可用性
  • 私有数据
    • CPU、内存、磁盘、网卡流量等系统资源使用信息
    • 用户、进程等运行状态信息

1.3 主流监控软件对比

  • 系统监控命令:ps(进程)、uptime(平均负载)、free(可用内存)、df -h(磁盘)、ifconfig(查看ip和网卡)、ss(-s查看不同连接状态)、ping、traceroute(路由追踪,最多30跳)、iostat(查看磁盘读写性能)、sar(全栈监控) 等,适合临时排查问题

  • 自动化监控软件

    • Cacti:基于 SNMP 协议,以强大的绘图能力见长,现基本被淘汰
    • Nagios:基于 Agent 监控,拥有完善的状态检查和报警机制,插件生态丰富
    • Zabbix:集以上二者优势于一身,支持多种监控机制,具备分布式监控能力,是目前企业级应用最广泛的监控系统

Prometheus是一款主打容器与云原生监控的监控软件,高可用特性突出,在监控软硬件方面性能不如Zabbix,但在容器、K8s 环境则更推荐 Prometheus

1.4 Zabbix 核心架构

Zabbix 采用C/S(客户端/服务器) 模式采集数据,B/S(浏览器/服务器) 模式实现 Web 管理

Zabbix应用拓扑:

  • 监控服务器
    • 需要使用Web页面操作,因此需要先部署LNMP
    • 监控服务器可以通过 SNMP 或 Agent 采集数据,将采集的数据存储在 MySQL、Oracle 等数据库中
    • 监控服务器通过 LNMP 架构提供 Web 管理界面
  • 被监控主机
    • 如果通过agent采集数据,需要安装 Zabbix Agent 客户端
    • 如果通过SNMP 协议采集数据,无需安装额外客户端,因为网络设备通常支持 SNMP 协议

二、实验环境准备

补充:实验环境需关闭selinux与防火墙,实际生产环境中只需要放行端口(10050、10051、80)

本次实验使用 3 台虚拟机搭建 Zabbix 监控集群,所有虚拟机均基于 Rocky Linux 8 系统:

所有虚拟机配置完成后,使用 WindTerm 等 SSH 客户端远程连接进行操作。

使用zabbix-server主机监控web1、web2

zabbix监控端部署步骤

1、部署LNMP平台。Zabbix Web 界面依赖 LNMP 环境运行,因此需要先在监控服务器上部署 LNMP

  • Nginx:配置动静分离,增加关于php缓存的配置
  • Php-fpm:修改配置文件,使php-fpm使用9000端口
  • MariaDB:安装

2、安装Zabbix监控端和被监控端

  • 安装依赖包
  • 源码编译安装zabbix_server、zabbix_agent
    (注意,这里会创建一个linux里的zabbix用户,主要用来运行

zabbix_server 服务进程和 zabbix_agentd 代理进程,要与数据库中的授权用户进行区分)

3、配置数据库

  • 创建存储监控数据的库zabbix
  • 授权连接数据库的用户zabbix(数据库用户)。它的作用是:
    • 1:用于zabbix_server连接数据库(zabbix_server会将监控数据存进数据库)
    • 2:用于php连接数据库(php用来读取数据库数据)
  • 使用模板文件还原存储数据的表格

4、上线监控页面

  • 上线zabbix监控的web页面至Nginx的网页根目录
  • 修改**/etc/php.ini**文件,修改zabbix页面要求的指定参数
  • 初始化zabbix监控页面,配置 PHP 操作数据库的参数,告知php从哪里取数据

5、启动zabbix_server服务

  • 修改**/usr/local/etc/zabbix_server.conf**配置文件,告知zabbix监控端采集到的数据存储位置
  • 启动zabbix_server、zabbix_agentd
  • 刷新监控网页,没有警告即可

三、部署 LNMP 平台

Zabbix Web 界面依赖 LNMP 环境运行,因此需要先在监控服务器上部署 LNMP。

3.1 源码编译安装 Nginx

nginx-1.22.1.tar.gz 提前上传至 zabbix-server 的 /root 目录:

shell 复制代码
# 安装依赖包
[root@zabbix-server ~]# dnf -y install gcc make pcre-devel openssl-devel 

# 创建运行 Nginx 的用户
[root@zabbix-server ~]# useradd nginx

# 解压源码包
[root@zabbix-server ~]# tar -xf /root/nginx-1.22.1.tar.gz
[root@zabbix-server ~]# cd nginx-1.22.1

# 配置编译参数
[root@zabbix-server nginx-1.22.1]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module

# 编译并安装
[root@zabbix-server nginx-1.22.1]# make && make install

# 验证安装
[root@zabbix-server nginx-1.22.1]# ls /usr/local/nginx

修改 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf,支持 PHP 动态请求:

shell 复制代码
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
http{
    ...略...
    fastcgi_buffers 8 16k;                # 缓存 PHP 生成的页面内容
    fastcgi_buffer_size 32k;              # 缓存 PHP 生成的头部信息
    fastcgi_connect_timeout 300;          # 连接 PHP 的超时时间
    fastcgi_send_timeout 300;             # 发送请求的超时时间
    fastcgi_read_timeout 300;             # 读取请求的超时时间
    #这几行不加会报错,非重点内容
    ...略...
    server {
        ...略...
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  #注释掉本行
            include        fastcgi.conf;  #后缀改为.conf
        }

        ...略...
    }
}

3.2 配置 PHP

Zabbix 6.4.7 要求 PHP 版本 ≥ 7.4,因此采用离线安装方式。将 php7.4.tar.gz (可提前从从官方或可信镜像站提前下载)上传至 zabbix-server 的 /root 目录:

shell 复制代码
# 解压压缩包
[root@zabbix-server ~]# tar -xf php7.4.tar.gz
[root@zabbix-server ~]# cd php74

# 安装 PHP 相关软件
[root@zabbix-server php74]# dnf -y localinstall *.rpm

# 修改 php-fpm 配置文件,监听 9000 端口
[root@zabbix-server ~]# vim /etc/php-fpm.d/www.conf
...略...
;listen = /run/php-fpm/www.sock  #38行左右。注释此行
listen = 127.0.0.1:9000          #加入此行
#只允许 本机(127.0.0.1) 连接 9000 端口,外部服务器无法连接,安全性高
#因为nginx和PHP-FPM 都在同一台服务器,所以配置成127.0.0.1
#如果Web 服务器(Nginx)在另一台机器,就需要配置成:listen = listen = **本机内网IP**:9000

#重新启动服务
[root@zabbix-server ~]# systemctl restart php-fpm            

# 验证 PHP 版本
[root@zabbix-server ~]# php -v
PHP 7.4.19 (cli) (built: May  4 2021 11:06:37) ( NTS )

3.3 配置 MariaDB

Zabbix 6.4.7 要求 MariaDB 版本 ≥ 10.6,但内置的版本不满足条件,因此同样采用离线安装。将 mariadb10.6.tar.gz 上传至 zabbix-server 的 /root 目录:

shell 复制代码
# 解压压缩包
[root@zabbix-server ~]# tar -xf mariadb10.6.tar.gz
[root@zabbix-server ~]# cd mariadb10.6/

# 安装 MariaDB 相关软件
[root@zabbix-server mariadb10.6]# dnf -y localinstall *.rpm

3.4 启动 LNMP 服务并测试

shell 复制代码
# 启动数据库并设置开机自启
[root@zabbixserver ~]# systemctl enable mariadb --now

# 启动 PHP-FPM 并设置开机自启
[root@zabbixserver ~]# systemctl enable php-fpm --now

# 启动 Nginx
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx

# 编写测试页面
[root@zabbixserver ~]# vim /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>

# 访问测试
[root@zabbixserver ~]# curl 192.168.8.100/test.php
33

四、Zabbix 服务端部署

4.1 源码编译安装 Zabbix

  • 首先需要安装四个依赖:
    • net-snmp-devel
    • libcurl-devel
    • libevent-devel
    • libxml2-devel
    • 然后创建运行Zabbix的系统用户zabbix ,切记指定解释器禁止登陆 (这个zabbix系统用户主要用于运行zabbix进程
      (Zabbix本身是c语言写的,需要安装gcc,make等依赖,此处没有安装是因为之前安装nginx时已经安装过)
shell 复制代码
# 安装 Zabbix 依赖包
[root@zabbix-server ~]# dnf -y install net-snmp-devel libcurl-devel libevent-devel libxml2-devel

# 创建运行 Zabbix 的用户(禁止登录系统)
[root@zabbix-server ~]# useradd -s /sbin/nologin zabbix
  • zabbix-6.4.7.tar.gz 上传至 zabbix-server 的 /root 目录,解压并切入对应目录:
shell 复制代码
# 解压源码包
[root@zabbix-server ~]# tar -xf zabbix-6.4.7.tar.gz
[root@zabbix-server ~]# cd zabbix-6.4.7/
  • 初始化编译参数并安装:
shell 复制代码
# 配置编译参数
[root@zabbix-server zabbix-6.4.7]# ./configure \
--enable-server \        # 启用 Zabbix 服务端功能,充当监控中心、数据处理与管理
--enable-agent \        # 启用 Zabbix 客户端功能(此处用于监控自身),被监控主机上的数据采集器
--with-mysql \          # 支持 MySQL/MariaDB 数据库
--with-mysql \          # 支持 MySQL/MariaDB 数据库
--with-net-snmp \       # 支持 SNMP 监控
--with-libcurl \        # 支持 Web 监控、API 监控和 HTTPS
--with-libxml2          # 支持 XML 数据解析

# 编译并安装
[root@zabbix-server zabbix-6.4.7]# make install
  • 安装验证:
shell 复制代码
# 验证安装目录
[root@zabbix-server zabbix-6.4.7]# ls /usr/local/etc/  #配置文件(告诉 zabbix 怎么运行)
[root@zabbix-server zabbix-6.4.7]# ls /usr/local/bin/   #普通命令 / 客户端工具(给普通用户用)
[root@zabbix-server zabbix-6.4.7]# ls /usr/local/sbin/   #服务端核心程序(给管理员 / 系统用),环境变量目录,里面的程序可以直接当作命令执行

4.2 配置 Zabbix 数据库

  • 创建zabbix服务存储监控数据的数据库:zabbix库
  • 授权php网页使用的连接用户:zabbix,密码zabbix

Zabbix 服务端(zabbix_server) 和 Web 前端(PHP) 都需要使用这个数据库用户zabbix连接数据库。

php页面在运行过程中要连接数据库,使用独立专用账号,符合最小权限安全原则。

若用户不存在或未授权,Zabbix 无法正常运行。

sql 复制代码
# 进入数据库
[root@zabbix-server ~]# mysql

# 创建 zabbix 数据库,使用 utf8 字符集
MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;

# 授权 zabbix 用户访问数据库。密码为zabbix
MariaDB [(none)]> GRANT ALL ON zabbix.* TO zabbix@"localhost" IDENTIFIED BY 'zabbix';

# 刷新授权表
MariaDB [(none)]> FLUSH PRIVILEGES;

# 退出数据库
MariaDB [(none)]> EXIT;
  • 使用zabbix模板文件还原数据库(zabbix自带)
  • 导入 Zabbix 数据库模板文件注意顺序不能颠倒):
shell 复制代码
[root@zabbix-server zabbix-6.4.7]# cd database/mysql/
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < data.sql

这些数据库文件的作用:

schema.sql:创建数据表结构

images.sql:图标、界面相关数据

data.sql:模板、监控项等基础预置数据

这些库用于存储监控数据

4.3 Zabbix Web 图形界面初始化

  • 将zabbix的php监控页面发布至Nginx的网页根目录
bash 复制代码
[root@zabbix-server mysql]# cd /root/zabbix-6.4.7/ui/
[root@zabbix-server ui]# cp -r * /usr/local/nginx/html/          #将页面放到nginx根目录
[root@zabbix-server ui]# chmod  -R 777 /usr/local/nginx/html/    
#授予权限.实验环境临时赋权方便排错,生产环境不建议使用777最大权限

授予权限这一步是因为我们发现/root/zabbix-6.4.7/ui/所属用户默认为本系统uid1000的普通用户,所以需要修改权限避免后续因权限问题出错

  • 为满足zabbix初始化,需要修改php相关配置,否则在初始化的时候会提示异常
  • 修改配置文件:/etc/php.ini
shell 复制代码
[root@zabbix-server ~]# vim /etc/php.ini    #修改配置文件,不要抄行号,以实际情况为主
923 date.timezone = Asia/Shanghai          #时区调整为 Asia/Shanghai
694 post_max_size = 32M                    #最大执行时间,秒
388 max_execution_time = 300               #POST(上传提交)数据最大容量
398 max_input_time = 300                   #服务器接收数据的时间限制

# 重启 PHP-FPM 使配置生效
[root@zabbix-server ~]# systemctl restart php-fpm

在 Windows 浏览器中访问 http://192.168.8.100/index.php,按照以下步骤完成初始化:

  1. 欢迎页面:点击 "Next step"
  1. 环境检查:确保所有 PHP 扩展和配置都满足要求,点击 "Next step"
  1. 数据库配置:输入数据库主机 localhost(若zabbix和数据库在两个服务器,就要写远程数据库的地址)、数据库名 zabbix、用户名 zabbix(这里的用户是数据库授权的用户)、密码 zabbix,点击 "Next step"

此处配置数据库的目的就是为 Zabbix Web 前端(PHP)提供数据库访问凭证,实现页面查询、配置修改等功能;同时配合后续配置的 zabbix_server.conf,让 Zabbix 整个系统(服务端 + 前端)共用一套数据库,完成数据采集、存储、展示、管理全流程,这也是整套 Zabbix 监控平台正常运行的核心前提

  1. 服务器设置:设置 Zabbix 服务器名称为 zabbix-server,点击 "Next step"
  1. 预安装摘要:确认所有信息无误,点击 "Next step"
  1. 安装完成:点击 "Finish"

4.4 登录 Zabbix 并设置中文

  • 默认登录信息:
    • 用户名:Admin(注意首字母大写)
    • 密码:zabbix

但是我们会发现全是乱码:

切换界面后出现英文报错 / 乱码,原因是系统(Linux 系统)缺少 en_US.UTF-8 语言区域配置。本机已存在中文区域 zh_CN.UTF-8,因此切换为中文界面即可正常使用

登录后,点击左下角用户头像 → "User settings" → "Language" 选择 "Chinese (zh_CN)",点击 "Update" 即可切换为中文界面。

4.5 启动 Zabbix 服务

修改 Zabbix 服务端配置文件 /usr/local/etc/zabbix_server.conf

shell 复制代码
[root@zabbix-server~]# vim /usr/local/etc/zabbix_server.conf
87 DBHost=localhost                               #数据库主机(去掉注释顶格写)
99 DBName=zabbix                                  #设置数据库名称
115 DBUser=zabbix                                 #设置数据库账户
123 DBPassword=zabbix                             #设置数据库密码(去掉注释顶格写))
38 LogFile=/tmp/zabbix_server.log                 #设置日志

本配置指定了zabbix_server将接收的agent监控数据存储在数据库的相关参数

  • 启动zabbix相关服务
    • 启动zabbix_server服务,端口号:10051
    • 启动zabbix_agent服务,端口号:10050
shell 复制代码
# 启动 Zabbix 服务端(默认端口 10051)
[root@zabbix-server mariadb10.6]# zabbix_server
[root@zabbix-server mariadb10.6]# ss -nutlp | grep :10051

# 启动 Zabbix 客户端(监控自身,默认端口 10050)
[root@zabbix-server mariadb10.6]# zabbix_agentd
[root@zabbix-server mariadb10.6]# ss -nutlp | grep :10050

# 设置开机自启。/etc/rc.d/rc.local是开机后系统会自动读取的文件,所以可以使用
[root@zabbix-server ~]# echo zabbix_server >> /etc/rc.d/rc.local
[root@zabbix-server ~]# echo zabbix_agentd >> /etc/rc.d/rc.local
[root@zabbix-server ~]# echo exit 0 >> /etc/rc.d/rc.local  #务必添加这个结尾
[root@zabbix-server ~]# chmod +x /etc/rc.d/rc.local

使用/etc/rc.d/rc.local实现开机自启简单易用,但实际生产环境建议使用service文件配置systemd服务单元进行管理会更加专业,配置详情参考:# Linux运维Day02

再次访问 Zabbix Web 界面,底部的 "Zabbix server is not running" 警告消失,说明服务启动成功。

数据库打通分为两步:

  • 第一步先把Web 前端(PHP)和数据库打通(即前面图形化页面的数据库配置)
  • 第二步再把zabbix-server 后台进程和数据库打通,让数据能采集进来(即/usr/local/etc/zabbix_server.conf文件的配置)

五、Zabbix 被监控端部署

以 web1 主机为例,web2 主机操作完全相同。

5.1 源码编译安装 Zabbix Agent

zabbix-6.4.7.tar.gz 上传至 web1 的 /root 目录:

shell 复制代码
# 安装依赖包
[root@web1 ~]# dnf -y install gcc make pcre-devel autoconf
# pcre-devel兼容正则表达式库;autoconf = 自动配置工具,若实际生产使用的版本较低可能不会自动生成配置文件,安装此软件包为了保险起见

# 解压源码包
[root@web1 ~]# tar -xf zabbix-6.4.7.tar.gz
[root@web1 ~]# cd zabbix-6.4.7/

# 仅编译安装 Agent 客户端
[root@web1 zabbix-6.4.7]# ./configure --enable-agent

# 编译并安装
[root@web1 zabbix-6.4.7]# make install

# 验证安装
[root@web1 ~]# ls /usr/local/etc
[root@web1 ~]# ls /usr/local/bin
[root@web1 ~]# ls /usr/local/sbin

5.2 配置 Zabbix Agent

修改 被监控端Agent 配置文件 /usr/local/etc/zabbix_agentd.conf

shell 复制代码
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf  #修改配置文件,不要抄行号
113 Server=127.0.0.1,192.168.8.100                # 允许哪些服务器监控本机
167 ServerActive=192.168.8.100:10051              # 主动上报数据的服务器(即监控端的)地址和端口
30 LogFile=/tmp/zabbix_agentd.log                 # 日志文件路径

5.3 启动 Agent 服务

shell 复制代码
# 创建运行 Agent 的用户
[root@web1 zabbix-6.4.7]# useradd -s /sbin/nologin zabbix

# 启动 Agent 服务
[root@web1 zabbix-6.4.7]# zabbix_agentd
[root@web1 zabbix-6.4.7]# ss -nutlp | grep :10050

# 设置开机自启
[root@web1 ~]# echo zabbix_agentd >> /etc/rc.d/rc.local
[root@web1 ~]# echo exit 0 >> /etc/rc.d/rc.local 
[root@web1 ~]# chmod +x /etc/rc.d/rc.local

这里已经在后端把相关的内容配置好了,后面还需要在图形页面进行操作才能对本主机进行监控

六、基础监控配置

6.1 添加监控主机

  1. 登录 Zabbix Web 界面,点击左侧菜单栏 监测 → 主机 → 创建主机
  2. 填写主机信息:
    • 主机名称:web1(尽可能与真实主机名保持一致)
    • 可见的名称:web1
    • 主机群组:选择 Linux servers
    • 接口:类型选择 Agent,IP 地址填写 192.168.8.101,端口保持 10050
  3. 切换到 模板 标签页,点击 选择 ,搜索并添加 Linux by Zabbix agent 模板
  4. 点击 添加 完成主机创建

监控模板中包含了众多的监控项 (就是监控的具体内容),类似于套餐

(这些模板包含了许多类型的监控模板,如对Nginx,数据库的监控模板,也有区分agent和snmp监控方式的监控模板,还有华为,思科,戴尔等知名大厂的监控模板)

如果后续想要为该主机添加

6.2 常用监控指标

常用监控指标:

  • Space utilization:以百分比显示的磁盘利用率
  • Used space:已用磁盘空间
  • Available memory:可用内存
  • CPU idle time:CPU空闲时间。不宜过低。
  • Load average (1m avg)、Load average (5m avg)、Load average (15m avg):CPU1分钟、5分钟、15分钟的平均负载。这个值不应长期大于核心数。
  • Interface eth0: Bits received:网卡接收到的数据量
  • Interface eth0: Bits sent:网卡发送的数据量
  • Number of processes:系统运行的进程数
  • Number of logged in users:已登陆的用户数

6.3 查看监控数据

点击左侧菜单栏监测 → 主机 ,点击主机 web1 ,进入对应主机的最新数据

页面。点击图形 ,即可查看所有监控项的实时数据。

点击右上角的按钮可以按照时间查看历史数据的趋势图。

七、自定义监控项

Zabbix 内置的监控项无法满足所有业务需求,我们可以通过自定义监控项来监控任何我们关心的指标。

  • 需要在被控端创建key,被监控端 被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。
  • 需要在web页面中 创建监控项,监控项对应key值。
  • 需求:实现自定义监控web1主机的用户数量

配置思路:

被监控端:

  • 修改zabbix_agentd.conf文件,开启自定义监控功能,开启自定义文件位置
  • 在调用配置文件目录中编写配置文件
    • 此文件包含自定义监控key 及获取值的具体命令
    • 使用zabbix_get自测
      监控端:
  • 创建模板组
  • 创建监控模板
  • 向自定义模板创建监控项
    • 自定义监控项的键值必须与被监控端自定义监控key值一致
  • 将自定义模板绑定至被监控主机
  • 查看数据验证

7.1 开启被监控端自定义监控功能

在 web1 主机上修改 Agent 配置文件:

shell 复制代码
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
345 UnsafeUserParameters=1                          # 是否允许自定义支持key(去掉注释,顶格写,0改为1)
329 Include=/usr/local/etc/zabbix_agentd.conf.d/    # 加载配置文件目录(去掉注释,顶格写),自定义文件(也就是key)的存放目录

7.2 创建自定义监控 Key

在被监控端创建并编写自定义监控脚本:

shell 复制代码
[root@web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
[root@web1 zabbix_agentd.conf.d]# vim usercount

# 自定义监控项语法:UserParameter=key名称,执行命令
UserParameter=usercount,sed -n '$=' /etc/passwd
#usercount就是key,sed -n '$=' /etc/passwd给key提供值

倘若要写多个自定义key,一个自定义key建议只写一个功能命令

重启 Agent 服务并验证自定义 Key:

shell 复制代码
# 重启 Agent
[root@web1 zabbix_agentd.conf.d]# killall -9 zabbix_agentd
[root@web1 zabbix_agentd.conf.d]# zabbix_agentd

# 验证自定义 Key 是否生效
[root@web1 zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -k usercount
#-s指定数据源,-k指定key

7.3 创建自定义模板

  1. 登录 Zabbix Web 界面,点击左侧菜单栏 数据采集 → 模板组 → 创建名为Mygroup1的模板组
  2. 输入模板组名称 Mygroup1,点击 添加
  1. 点击 数据采集 → 模板 → 创建模板
  2. 填写模板信息:
    • 模板名称:Template_usercount
    • 可见的名称:Template_usercount
    • 模板群组:选择 Mygroup1
  3. 点击 添加 完成模板创建

7.4 创建自定义监控项

  1. 在模板列表中找到 Template_usercount,点击后方的 监控项

  2. 点击 创建监控项,填写以下信息:

    • 名称:usercount
    • 类型:Zabbix 客户端
    • 键值:usercount必须与被监控端定义的 Key值完全一致
    • 信息类型:数字(无正负)
    • 单位:
    • 更新间隔:30s
  1. 点击 添加 完成监控项创建

7.5 关联模板到主机

  1. 点击左侧菜单栏 监测 → 主机 ,找到 web1 主机,点击后方的 模板
  1. 点击 选择 ,搜索并添加 Template_usercount 模板

可以直接输入模板名进行搜索:

也可以点击旁边的选择,根据模板分组进行搜索:

  1. 点击 更新 完成关联

7.6 验证自定义监控

在 web1 主机上批量创建用户,观察监控数据变化:

shell 复制代码
[root@web1 ~]# vim useradd.sh
#!/bin/bash
for i in {1..10}
do
  useradd tuser$i
done

[root@web1 ~]# chmod +x useradd.sh
[root@web1 ~]# ./useradd.sh

等待 30 秒后,在 Zabbix Web 界面的 最新数据 中可以看到系统用户数量发生变化,说明自定义监控项配置成功。

八、学习总结

本次实验完成了 Zabbix 监控环境的完整部署,重点掌握了自定义监控项的配置流程。后续将继续学习触发器、告警等高级功能。

  1. LNMP 环境部署:掌握了 Nginx 源码编译、PHP 和 MariaDB 的离线安装与配置
  2. Zabbix 服务端部署:掌握了 Zabbix 源码编译、数据库配置、Web 初始化和服务启动
  3. Zabbix 客户端部署:掌握了 Agent 客户端的安装、配置和启动方法
  4. 基础监控配置:掌握了添加监控主机、关联模板和查看监控数据的流程
  5. 自定义监控项:掌握了从被监控端定义 Key 到 Web 端创建监控项的完整流程

Zabbix 的功能远不止于此,后续我们将继续学习触发器配置、告警通知、分布式监控等高级功能,打造一个完整的企业级监控体系。

相关推荐
swordbob1 小时前
prototype 注入到 singleton 里,prototype是否还是线程安全的
安全·spring·单例模式·原型模式
顾凌陵1 小时前
PHP序列化漏洞实战:反序列化攻击的奥秘
安全·网络安全
Tipriest_1 小时前
没有nvidia的卡上装sogou拼音的特殊处理
运维·服务器·mysql
San813_LDD1 小时前
[HTTPS/TCP]从文件索引到HTTP服务:Everything局域网共享文件实战
运维·tcp/ip·计算机网络·https
盒子69102 小时前
图生图大模型对于各种复杂的图片如何做负载均衡呢?
运维·负载均衡
2401_834636994 小时前
Linux 负载均衡全实战:Nginx+HAProxy+LVS 从原理到落地
linux·nginx·负载均衡
鹏大师运维10 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰10 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
云边云科技_云网融合10 小时前
云边云科技亮相 2026 WOD 制造业数智化博览会 云网融合赋能制造焕新
人工智能·科技·安全·制造