跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Zabbix 生产环境 FastDFS 模板化监控实战

介绍在 Zabbix 中实现 FastDFS 分布式文件存储系统的模板化监控方案。通过设计关键指标(进程、端口、ACTIVE 数),编写 fdfs_monitor 脚本统计活跃节点,结合宏控制与触发器逻辑,解决了仅监控进程端口无法覆盖 Storage 未注册 ACTIVE 的问题。方案支持多实例配置,提供灾难级与高级告警分级,确保生产环境中间件可用性。

筑梦师发布于 2026/3/23更新于 2026/9/1174 浏览
Zabbix 生产环境 FastDFS 模板化监控实战

前言

在生产环境中,FastDFS 作为分布式文件存储系统,其健康状态直接影响业务可用性。常见问题包括 Storage 或 Tracker 进程挂掉、端口未监听、Storage 未 ACTIVE 注册。传统只监控进程或端口容易漏掉 Storage 未注册 ACTIVE 的情况,本文将分享模板化、宏控制、可扩展的监控实践。

1️⃣ 监控指标设计

关键指标

指标说明类型
Storage 进程数fdfs_storaged 是否运行proc.num[fdfs_storaged]
Tracker 进程数fdfs_trackerd 是否运行proc.num[fdfs_trackerd]
Storage 端口Storage 服务是否监听端口net.tcp.listen[23000]
Tracker 端口Tracker 服务是否监听端口net.tcp.listen[22122]
Storage ACTIVE 数Storage 是否 ACTIVE 注册到 Trackerfastdfs.active.count(脚本统计)

注意:仅依赖进程和端口不足以保证 Storage 可用,ACTIVE 数监控可覆盖业务实际可用性。

2️⃣ Active count 脚本

使用 fdfs_monitor 解析 Storage ACTIVE 状态:

#!/bin/bash
CONF="/etc/fdfs/storage.conf"
# 统计 ACTIVE Storage 数
ACTIVE=$(fdfs_monitor $CONF 2>/dev/null |grep -v 'DEBUG'|grep -c 'ACTIVE')
# 输出数字
echo ${ACTIVE:-0}
  • 保存为 /usr/local/bin/fastdfs_active.sh
  • Zabbix UserParameter 配置:
UserParameter=fastdfs.active.count,/usr/local/bin/fastdfs_active.sh
  • 脚本返回数字 → 触发器直接判断 <{$FDFS_STORAGE_MIN}

3️⃣ 模板宏设计

宏名默认值说明
{$FDFS_STORAGE_MIN}1Storage 进程或 ACTIVE 最小值,挂掉触发告警
{$FDFS_TRACKER_MIN}1Tracker 进程最小值
{$FDFS_STORAGE_PORT}23000Storage 端口
{$FDFS_TRACKER_PORT}22122Tracker 端口

优点:端口或实例数变动只需修改宏,无需改模板或触发器。

4️⃣ Zabbix 模板触发器设计

监控项表达式告警等级说明
Storage 进程last(/fastdfs/proc.num[fdfs_storaged])<{$FDFS_STORAGE_MIN}DisasterStorage 进程挂掉
Tracker 进程last(/fastdfs/proc.num[fdfs_trackerd])<{$FDFS_TRACKER_MIN}DisasterTracker 进程挂掉
Storage 端口last(/fastdfs/net.tcp.listen[{$FDFS_STORAGE_PORT}])=0HighStorage 端口未监听
Tracker 端口last(/fastdfs/net.tcp.listen[{$FDFS_TRACKER_PORT}])=0HighTracker 端口未监听
ACTIVE countlast(/fastdfs/fastdfs.active.count)<{$FDFS_STORAGE_MIN}DisasterStorage ACTIVE 数低于最小值

5️⃣ 宏与触发器逻辑表格

Storage 进程数{$FDFS_STORAGE_MIN}触发器状态
11不触发 ✅
01触发告警 ✅
10不触发 ❌ (逻辑不正确)
00不触发 ❌

提示:宏值必须 ≥ 最小正常实例数,才能保证挂掉触发告警。

6️⃣ 生产运维建议

  1. 主机级宏覆盖
    • 不同主机可以覆盖模板默认宏值,支持多实例或端口差异
  2. 结合业务可用性
    • 后续可加上传/下载测试脚本,验证真实业务是否可用
  3. 告警等级设计
    • 进程或 ACTIVE 数挂掉 → Disaster
    • 端口未监听 → High

7️⃣ 总结

  • FastDFS 生产监控不能只看进程和端口
  • Active count 脚本 + 宏控制 + 模板化触发器 是最佳实践
  • 模板可复用、可扩展,支持多实例、多端口
  • 触发器逻辑和宏值表格帮助快速理解告警触发条件

通过这种方式,你可以在 Zabbix 中实现 统一、标准化、生产级中间件监控。

zabbix 模板 yaml 文件

zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: 5b250e5b377a494e92556c1e7b119187
      name: prod
  templates:
    - uuid: be9c2c98858140d98bbb29f90d1593f3
      template: fastdfs
      name: fastdfs
      description: fastdfs 监控模板,需要搭配脚本
      vendor:
        name: xmyx
        version: '1.0'
  groups:
    - name: prod
  items:
    - uuid: fb5702bae92c4679a4830bdf7dc26519
      name: 'active count'
      type: ZABBIX_ACTIVE
      key: fastdfs.active.count
      history: 2d
      trends: 2d
      triggers:
        - uuid: c57259b0460f4eea8ab8de69e6d419ce
          expression: 'last(/fastdfs/fastdfs.active.count)<{$FDFS_STORAGE_MIN}'
          name: 'active count'
          priority: WARNING
          manual_close: 'YES'
    - uuid: 70be6c9786c4460a9095df0bafbce71e
      name: 'fdfs_storaged port'
      type: ZABBIX_ACTIVE
      key: 'net.tcp.listen[{$FDFS_STORAGE_PORT}]'
      history: 2d
      trends: 2d
      triggers:
        - uuid: ec6730a47d7743df9623adfc37dd2e0c
          expression: 'last(/fastdfs/net.tcp.listen[{$FDFS_STORAGE_PORT}])=0'
          name: 'fdfs storage port'
          priority: WARNING
          manual_close: 'YES'
    - uuid: 37398fc21154458caf61ba6e080fc52e
      name: 'fdfs_trackerd port'
      type: ZABBIX_ACTIVE
      key: 'net.tcp.listen[{$FDFS_TRACKER_PORT}]'
      history: 2d
      trends: 2d
      triggers:
        - uuid: eb5deb12f7f341a4aba5a230b7eccc86
          expression: 'last(/fastdfs/net.tcp.listen[{$FDFS_TRACKER_PORT}])=0'
          name: 'fdfs tracker port'
          priority: WARNING
          manual_close: 'YES'
    - uuid: 54b985f59b3942dc9e30f877fac34dee
      name: 'nginx port'
      type: ZABBIX_ACTIVE
      key: 'net.tcp.listen[{$NGINX_PORT}]'
      history: 2d
      trends: 2d
      triggers:
        - uuid: 8c5b56acde894ca5adfc09a40bc2e6d9
          expression: 'last(/fastdfs/net.tcp.listen[{$NGINX_PORT}])=0'
          name: 'fdfs nginx port'
          priority: WARNING
          manual_close: 'YES'
    - uuid: 6683f668bccf4b70bb6b93db03742c75
      name: 'fdfs_storaged process'
      type: ZABBIX_ACTIVE
      key: 'proc.num[fdfs_storaged]'
      history: 2d
      trends: 2d
      triggers:
        - uuid: b1755554db084454ba26c51417c2073e
          expression: 'last(/fastdfs/proc.num[fdfs_storaged])<{$FDFS_STORAGE_MIN}'
          name: 'fdfs storage process'
          priority: WARNING
          manual_close: 'YES'
    - uuid: bb0ed58f4e3e40d88273c8c5d15559f1
      name: 'fdfs_trackerd process'
      type: ZABBIX_ACTIVE
      key: 'proc.num[fdfs_trackerd]'
      history: 2d
      trends: 2d
      triggers:
        - uuid: 33062b7b35504a31bc5b5cd751af3b0b
          expression: 'last(/fastdfs/proc.num[fdfs_trackerd])<{$FDFS_TRACKER_MIN}'
          name: 'fdfs tracker process'
          priority: WARNING
          manual_close: 'YES'
    - uuid: 1b152c0c7c0649b7ac7091bbd1a82ba8
      name: 'nginx process'
      type: ZABBIX_ACTIVE
      key: 'proc.num[nginx]'
      history: 2d
      trends: 2d
      triggers:
        - uuid: 2fc9460d77db445abd0fff8c524b6dd3
          expression: 'last(/fastdfs/proc.num[nginx])<{$FDFS_NGINX_MIN}'
          name: 'fdfs nginx process'
          priority: WARNING
          manual_close: 'YES'
  macros:
    - macro: '{$FDFS_NGINX_MIN}'
      value: '1'
      description: fdfs_nginx 进程触发器
    - macro: '{$FDFS_STORAGE_MIN}'
      value: '1'
      description: fdfs_storaged 进程触发器
    - macro: '{$FDFS_STORAGE_PORT}'
      value: '23000'
      description: fdfs_storaged 端口
    - macro: '{$FDFS_TRACKER_MIN}'
      value: '1'
      description: fdfs_trackerd 进程触发器
    - macro: '{$FDFS_TRACKER_PORT}'
      value: '22122'
      description: fdfs_trackerd 端口
    - macro: '{$NGINX_PORT}'
      value: '8888'
      description: fdfs_nginx 端口

目录

  1. 前言
  2. 1️⃣ 监控指标设计
  3. 关键指标
  4. 2️⃣ Active count 脚本
  5. 统计 ACTIVE Storage 数
  6. 输出数字
  7. 3️⃣ 模板宏设计
  8. 4️⃣ Zabbix 模板触发器设计
  9. 5️⃣ 宏与触发器逻辑表格
  10. 6️⃣ 生产运维建议
  11. 7️⃣ 总结
  12. zabbix 模板 yaml 文件

更多推荐文章

查看全部
  • 用 nanobot 搭建 QQ AI 机器人并扩展搜索引擎
  • Whisper-WebUI 本地部署与核心功能详解
  • OpenClaw 与 Claude Code、Cursor、Copilot 的区别
  • 华为 OD 机试:停车场最短路径规划 Python&JS 实现
  • HarmonyOS Canvas 绘图实战:从静态圆到动态交互
  • Web 团队开发 App,是否应该选择 Capacitor?
  • 大模型服务选型实战:AI Ping 性能评测工具深度体验
  • 动态规划(DP)基础:状态表示与转移方程详解
  • C++ vector 容器:底层原理、扩容机制与实战用法详解
  • GitNexus 核心引擎:索引、社区检测与混合搜索
  • C++17 标准库:std::any 类型擦除容器详解
  • Fluid 数据编排能力原理解析
  • 从 Oracle 到金仓 KES:PL/SQL 兼容性与 JSON 处理实战
  • Axure 实现 AI 对话机器人原型,支持自动回复与打字效果
  • Mac 端 Git 基础概念与 PyCharm 使用指南
  • AI 编程工具深度对比:Cursor、Copilot、Trae 与 Claude Code
  • DeepSeek 深度使用指南与提示词实战技巧
  • C++ 核心概念与常见面试题解析
  • 前端开发三年职业成长回顾:从传统软件到互联网实战
  • 快速排序深度解析与实战优化

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online