Zabbix Agent 5.0 (armhf) 纯主动模式极致轻量化部署笔记

本文档记录了在低资源 ARM 开发板(香橙派 Zero 3,1核1G 内存,TF 卡存储)上,通过免安装方式提取 Zabbix Agent 5.0 二进制文件,并对接 Podman 部署的 Zabbix Server 7.0 的完整调优过程。

核心目标是:极致节省内存(实际占用约 2MB)物理阻断磁盘 I/O 写入(零写盘,保护 TF 卡寿命)


一、 架构设计与准备工作

1. 监控模式选择

放弃传统的被动模式(Server 轮询 Agent),采用纯主动模式(Active Mode)

  • 优势:Agent 启动后单向向 Server 投递数据。开发板无需监听 10050 端口,节约网络连接开销,降低内存占用。Server 无需感知开发板的内网 IP。

2. 环境说明

  • 被监控端(香橙派):主机名 pbsbc01h3,内网 IP 192.168.1.9,运行从 Debian 11 提取的 Zabbix Agent 5.0 (armhf) 二进制程序。
  • 服务端(Podman):运行 zabbix-server-pgsql:alpine-7.0-latestzabbix-web-nginx-pgsql:alpine-7.0-latest

二、 服务端(Podman 容器)关键配置

为了接收主动模式 Agent 汇聚的数据,Zabbix Server 容器必须对外暴露 10051 端口,而 Web 前端容器只需暴露网页端口。

1. Zabbix Server 容器配置

重新运行容器或修改 podman-compose.yml,务必打通 10051 端口映射:

zabbix-server:
  image: docker.io/zabbix/zabbix-server-pgsql:alpine-7.0-latest
  ports:
    - "10051:10051"  # 主动模式数据接收核心端口
  # 其他环境变量及数据库连接配置保持不变

2. Zabbix Web 前端容器配置

前端仅用于数据展示,无需暴露 10051 端口:

zabbix-web:
  image: docker.io/zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
  ports:
    - "8181:8080"    # 映射外部 8181 端口用于浏览器访问

三、 客户端(香橙派)环境初始化

由于采用免安装的二进制提取方式,系统缺少必要的运行环境,需手动补齐用户和目录。

1. 创建运行用户

Zabbix 出于安全机制拒绝以 root 身份运行,必须为其创建专用的系统用户(不允许登录):

sudo groupadd --system zabbix
sudo useradd --system -g zabbix -d /var/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

2. 创建依赖目录

Zabbix Agent 启动时会校验扩展配置目录,若不存在会导致进程闪退:

sudo mkdir -p /etc/zabbix/zabbix_agentd.conf.d

四、 客户端配置文件调优(零 I/O 与轻量化)

编写 /etc/zabbix/zabbix_agentd.conf,通过以下参数关闭被动监听、重定向日志并收紧缓冲区,实现全运行周期零磁盘写入。

执行以下命令直接覆盖生成配置文件(请将 ServerActive 修改为实际的宿主机 IP):

sudo bash -c 'cat > /etc/zabbix/zabbix_agentd.conf <<EOF
# ================= 零 I/O 磁盘保护配置 =================
# 核心调优:将日志直接定向到 Linux 物理黑洞,完全不产生磁盘 I/O 写入
LogType=file
LogFile=/dev/null
DebugLevel=2

# ================= 极致轻量化进程配置 =================
# 核心调优:设为 0 表示彻底关闭被动监听,不开启 10050 端口,极省内存
StartAgents=0

# ================= 基础网络与身份配置 =================
# 服务端宿主机 IP 地址
ServerActive=192.168.1.X
# 必须与系统 uname -a 显示的主机名严格一致
Hostname=pbsbc01h3

# ================= 内存缓冲区限制配置 =================
# 限制断网或突发情况下的内存缓存,防止撑爆 1G 内存
BufferSend=5
BufferSize=100
EOF'

五、 Systemd 服务管理配置

由于 Agent 在纯主动模式下默认会派生子进程后退出前台壳程序,Systemd 必须配置为 forking 类型,否则会导致服务被系统误杀。

1. 编写服务脚本

编辑 /etc/systemd/system/zabbix-agent.service

[Unit]
Description=Zabbix Agent (Extracted 5.0 armhf)
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
Restart=on-failure
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

2. 启动并固化服务

# 重新加载 systemd 配置文件
sudo systemctl daemon-reload

# 充设失败计数并启动服务
sudo systemctl reset-failed zabbix-agent
sudo systemctl enable zabbix-agent --now

# 检查运行状态
sudo systemctl status zabbix-agent

标准运行状态指标参考

  • Active: active (running)
  • Tasks: 3 (仅包含主进程、collector 进程、active checks 进程)
  • Memory: 2.0M 左右

六、 Zabbix 7.0 Web 网页端配置规范

进入 http://服务器IP:8181 后台,添加主机时需严格遵循以下规则,防止因架构不匹配触发系统误报。

1. 主机基本信息

  • Host name (主机名称):必须填写 pbsbc01h3(必须与 Agent 配置文件中的 Hostname 绝对一致,大小写敏感)。
  • Templates (模板):选择 Linux by Zabbix agent active(专用于主动模式)。

2. 同时启用 ICMP Ping 监控的接口联动

若需要同时监控主机的在线状态(宕机告警),需加挂 ICMP Ping 模板。由于该模板需要明确的物理探测目标,配置如下:

  • Interfaces (接口):添加一个 Agent 类型的接口。
  • IP address:填入香橙派实际内网 IP 192.168.1.9
  • Port:填入 10050(虽然香橙派已关闭此端口,但 ICMP 仅抓取此行的 IP 执行 ping 命令,不探测端口,因此安全)。

3. 可用性图标(ZBX)状态说明

配置完成后,主机列表中的 ZBX 可用性图标将长期保持灰色

  • 说明:此为正常现象。Zabbix 官方机制规定 ZBX 绿灯仅在被动模式(Server 成功连通 10050 端口)时亮起。纯主动模式下 Server 不主动连接 Agent,故图标不亮。只要 Latest data 中数据正常刷新、ICMP 曲线连续,即代表监控正常。

七、 跨大版本兼容问题修复(Too many parameters 报错)

1. 问题现象

除核心系统指标外,监控项 Checksum of /etc/passwd 报错:Too many parameters 且无数据。

2. 原因分析

  • Zabbix 5.0 Agent 仅支持单参数语法:vfs.file.cksum[file]
  • Zabbix 7.0 模板默认下发多参数语法:vfs.file.cksum[file,<mode>](如 vfs.file.cksum[/etc/passwd,sha256])。老版本 Agent 无法解析第二个参数导致拒绝执行。

3. 解决步骤

  1. 登录 Web 端,进入 Data collection (数据收集) -> Hosts (主机) -> 点击 pbsbc01h3Items (监控项)
  2. 搜索 /etc/passwd,点击进入 Checksum of /etc/passwd
  3. Key (键值) 修改为老版本兼容的单参数格式:

    vfs.file.cksum[/etc/passwd]
    
  4. 点击 Update 保存,并执行 Execute now 强制刷新。
  5. 结果验证:报错消失,成功获取文件校验和数值(如 2191322237)。此数值为标准 cksum 算法结果,若文件被篡改该数字会突变并触发系统告警。

标签: none

添加新评论