跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Shell / Bash

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

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

筑梦师发布于 2026/3/23更新于 2026/5/921 浏览
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 文件
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 华为 OD 机试:分割均衡字符串 Python 解法
  • FastAPI + SQLAlchemy 构建高性能 RESTful API 接口实战
  • OpenClaw 接入微信实现 AI 自动回复实战指南
  • 提升 AI 生成文本自然度的 15 个提示词策略
  • 五大国产 AI 工具实战指南:豆包即梦剪映飞书扣子
  • 为何推荐 Eclipse Temurin 作为首选 OpenJDK 发行版
  • C++ 动态规划:调手表问题求解
  • sscom软件
  • Vue3 开发实战:主流 AI 代码助手选择与 VSCode 配置
  • 无人机航拍图像处理:目标跟踪与场景重建
  • AI 产品经理工作全流程详解:从需求定义到模型验收
  • Python 为何成为 AI 开发主流语言?对比 Java 与 Ruby
  • WebUI 界面交互优化:手机检测系统上传失败重试机制与用户体验改进
  • AI 大模型时代:开发工程师与管理者应对机遇与挑战
  • AI 工具泛滥时代,为何单纯技能越来越不值钱?
  • 前端地理空间分析的轻量级解决方案:Turf.js 实战解析
  • whisperX 入门指南:从安装到实现语音识别
  • AI 编程工具深度对比:Cursor、Copilot、Trae 与 Claude Code
  • Python 视频转图片:OpenCV 帧提取与时间间隔方案
  • 主流 AI 编程工具对比:TRAE、Qoder、Cursor 与 Copilot 选型指南

相关免费在线工具

  • 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