麦瓣健康麦瓣健康
首页
  • APP产品开发方案
  • 商业调查报告
  • 后端技术架构
  • Docker Compose部署指南
  • 技师端-功能模块与微服务对应关系
  • 数据库设计
  • 分布式事务一致性
  • 日志管理与配置
  • Netdata监控系统
  • 系统总览
  • 文档导航
  • 代码审计智能体
  • 测试生成智能体
  • 运维诊断智能体
  • APP测试智能体
  • API自动化测试多智能体协作系统
  • 项目规划
  • 开发工作手册
  • 开发周期管理
  • 任务看板总览
  • Week 3任务看板
  • Week 3周例会
  • Week 4任务看板
  • Week 5任务看板
  • Week 6任务看板
  • APP测试设备采购清单
  • 用户端APP
  • 用户端APP功能脑图
  • 技师端APP
  • 技师端APP功能脑图
  • 后台管理
  • 大数据屏幕
  • 技师端-账户系统需求明细
原型图(Demo)
GitHub
首页
  • APP产品开发方案
  • 商业调查报告
  • 后端技术架构
  • Docker Compose部署指南
  • 技师端-功能模块与微服务对应关系
  • 数据库设计
  • 分布式事务一致性
  • 日志管理与配置
  • Netdata监控系统
  • 系统总览
  • 文档导航
  • 代码审计智能体
  • 测试生成智能体
  • 运维诊断智能体
  • APP测试智能体
  • API自动化测试多智能体协作系统
  • 项目规划
  • 开发工作手册
  • 开发周期管理
  • 任务看板总览
  • Week 3任务看板
  • Week 3周例会
  • Week 4任务看板
  • Week 5任务看板
  • Week 6任务看板
  • APP测试设备采购清单
  • 用户端APP
  • 用户端APP功能脑图
  • 技师端APP
  • 技师端APP功能脑图
  • 后台管理
  • 大数据屏幕
  • 技师端-账户系统需求明细
原型图(Demo)
GitHub
  • 技术架构

    • 麦瓣健康后端技术架构文档
    • /Docker部署指南.html
    • 技师端功能模块与微服务对应关系
    • 数据库设计文档
    • 麦瓣健康 - 微服务分布式事务一致性设计方案
    • 日志管理与配置说明
    • Netdata 监控系统技术文档

Netdata 监控系统技术文档

项目名称: 麦瓣健康 - Netdata 实时监控系统
监控版本: Netdata v2.7.2
文档版本: v1.0
最后更新: 2025-10-23

文档说明: 本文档详细描述了麦瓣健康项目的 Netdata 监控系统完整架构、功能配置、使用指南和最佳实践。涵盖系统监控、容器监控、中间件监控、AI 异常检测、告警系统等所有核心功能。


目录

  1. 技术架构概览
  2. 核心功能特性
  3. 部署架构设计
  4. 监控功能详解
  5. 配置管理
  6. AI/ML 异常检测
  7. 告警系统
  8. API 接口使用
  9. 性能与资源
  10. 运维管理
  11. 故障排查
  12. 最佳实践
  13. 安全配置
  14. 集成与扩展
  15. 技术栈对比

一、技术架构概览

1.1 系统定位

Netdata 是麦瓣健康项目的实时监控系统,提供全栈可观测性能力:

  • 实时性: 1 秒采集间隔,实时数据可视化
  • 零配置: 自动发现所有服务和容器
  • AI 驱动: 边缘 ML 模型自动异常检测
  • 轻量级: 仅占用 5% CPU + 150MB 内存
  • 全面性: 覆盖系统、容器、中间件、应用层

1.2 技术选型理由

对比项NetdataPrometheus + Grafana选择理由
部署复杂度⭐ 5分钟⭐⭐⭐ 30+分钟快速部署
配置复杂度⭐ 零配置⭐⭐⭐⭐ 大量配置降低运维成本
数据采集⭐ 1秒⭐⭐⭐ 15-60秒实时性要求
仪表板⭐ 自动生成⭐⭐⭐ 手动创建开箱即用
异常检测⭐ 内置 AI⭐⭐⭐⭐ 需额外配置智能化
资源占用⭐ 150MB⭐⭐⭐ 500MB+资源友好
学习曲线⭐ 极低⭐⭐⭐⭐ 较高团队效率

选择 Netdata 的核心原因:

  1. 微服务架构复杂,需要快速发现问题
  2. 团队规模小,需要低运维成本
  3. 实时性要求高,1秒延迟满足需求
  4. AI 异常检测减少人工监控负担

1.3 部署信息

服务名称: maiban-netdata
镜像版本: netdata/netdata:stable (v2.7.2)
访问地址: http://localhost:19999
部署方式: Docker Compose
数据持久化: 本地存储
网络模式: Bridge Network

1.4 监控规模统计

监控项数量说明
监控图表总数2,371 个实时采集
监控容器数11 个自动发现
告警规则377+ 条预配置
MySQL 图表42 个完整监控
Elasticsearch 图表84 个完整监控
容器监控图表359 个进程+资源
系统监控图表39 个CPU/内存/磁盘/网络
健康检查41 个HTTP+端口

二、核心功能特性

2.1 功能矩阵

功能类别功能项状态说明
系统监控CPU 监控✅多核心、详细分解
内存监控✅RAM + SWAP
磁盘监控✅I/O + 使用率
网络监控✅流量 + 连接
进程监控✅自动发现
容器监控Docker 容器✅11 个容器
资源使用✅CPU + 内存
网络流量✅进出流量
状态监控✅健康检查
中间件监控MySQL✅42 个指标
Redis✅容器级
MongoDB✅进程级
Elasticsearch✅84 个指标
RabbitMQ✅容器+HTTP
Nacos✅健康检查
健康检查HTTP 端点✅20 个检查
端口监控✅21 个端口组
AI 功能异常检测✅每指标独立
模式识别✅基于历史
告警系统预配置规则✅377+ 条
多通道通知✅可配置
API 接口RESTful API✅完整
数据查询✅历史+实时
Web 界面仪表板✅自动生成
自定义视图✅支持

2.2 核心优势

1) 实时性能卓越

采集间隔: 1 秒
可视化延迟: 1 秒
历史数据: 可查询任意时间段
数据精度: 毫秒级

2) 零配置自动化

自动发现: ✅ 容器、进程、服务
自动配置: ✅ 监控指标、图表
自动告警: ✅ 377+ 预配置规则
自动优化: ✅ 资源自适应

3) AI 异常检测

训练方式: 每个指标独立训练
训练数据: 基于历史行为
检测方式: 实时在线检测
准确率: 随时间提升

4) 资源占用极低

CPU 使用: ~5% (正常运行)
内存占用: ~150MB (含所有功能)
磁盘 I/O: 最小化 (17分钟刷新)
网络流量: 最小化

三、部署架构设计

3.1 容器架构

┌─────────────────────────────────────────────────────────┐
│                  maiban-netdata 容器                      │
│  ┌───────────────────────────────────────────────────┐  │
│  │           Netdata 核心服务 (v2.7.2)               │  │
│  ├───────────────────────────────────────────────────┤  │
│  │  • Web Server (端口 19999)                        │  │
│  │  • Data Collector                                 │  │
│  │  • ML Engine                                      │  │
│  │  • Alert Engine                                   │  │
│  │  • Plugin Manager                                 │  │
│  └───────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
           │                     │                │
           │ Docker Socket       │ Host /proc     │ Host /sys
           ▼                     ▼                ▼
   ┌──────────────┐      ┌──────────────┐  ┌──────────────┐
   │ 容器监控       │      │ 系统监控       │  │ 网络监控       │
   │ (11 containers)│     │ (CPU/Mem/Disk)│  │ (Connections)  │
   └──────────────┘      └──────────────┘  └──────────────┘

3.2 Docker Compose 配置

# docker-compose-env.yml
services:
  netdata:
    image: netdata/netdata:stable
    container_name: maiban-netdata
    hostname: maiban-monitoring
    ports:
      - "19999:19999"
    cap_add:
      - SYS_PTRACE      # 进程追踪权限
      - SYS_ADMIN       # 系统管理权限
    security_opt:
      - apparmor:unconfined
    environment:
      TZ: Asia/Shanghai
      DO_NOT_TRACK: 1   # 禁用匿名统计
    volumes:
      # Docker 监控
      - /var/run/docker.sock:/var/run/docker.sock:ro
      # 系统监控
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      # 配置和数据持久化
      - ./data/netdata/config:/etc/netdata
      - ./data/netdata/cache:/var/cache/netdata
      - ./data/netdata/lib:/var/lib/netdata
      # 日志监控
      - ./logs:/host/logs:ro
    networks:
      - maiban-network
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:19999/api/v1/info"]
      interval: 30s
      timeout: 10s
      retries: 3

3.3 网络架构

┌─────────────────── maiban-network (Bridge) ──────────────────┐
│                                                               │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │   MySQL     │  │   Redis     │  │  Elasticsearch │        │
│  │  (3306)     │  │  (6379)     │  │   (9200)      │        │
│  └──────┬──────┘  └──────┬──────┘  └──────┬────────┘        │
│         │                │                 │                  │
│         └────────────────┼─────────────────┘                  │
│                          │                                    │
│                   ┌──────▼────────┐                          │
│                   │   Netdata     │◄──── HTTP监控            │
│                   │  (19999)      │◄──── 端口检查            │
│                   └───────────────┘◄──── MySQL专用监控        │
│                          ▲                                    │
└──────────────────────────┼────────────────────────────────────┘
                           │
                           │ 访问
                    ┌──────▼────────┐
                    │   浏览器       │
                    │  :19999       │
                    └───────────────┘

3.4 数据流向

[采集层] → [存储层] → [处理层] → [展示层]

1. 采集层:
   • go.d.plugin  (Go 插件: MySQL, Redis, ES等)
   • apps.plugin  (进程监控)
   • cgroups.plugin  (容器监控)
   • proc.plugin  (系统监控)

2. 存储层:
   • 内存数据库 (实时数据)
   • 磁盘数据库 (历史数据)
   • 分层存储:
     - Tier 0: 秒级精度
     - Tier 1: 分钟级精度
     - Tier 2: 小时级精度

3. 处理层:
   • ML Engine (异常检测)
   • Alert Engine (告警处理)
   • Query Engine (数据查询)

4. 展示层:
   • Web UI (仪表板)
   • REST API (数据接口)
   • WebSocket (实时推送)

3.5 目录结构

backend/
├── docker-compose-env.yml          # Docker Compose 配置
├── data/netdata/                   # Netdata 数据目录
│   ├── config/                     # 配置文件
│   │   ├── netdata.conf           # 主配置
│   │   ├── go.d.conf              # Go 插件配置
│   │   ├── go.d/                  # 各服务监控配置
│   │   │   ├── mysql.conf         # MySQL 监控
│   │   │   ├── redis.conf         # Redis 监控
│   │   │   ├── mongodb.conf       # MongoDB 监控
│   │   │   ├── rabbitmq.conf      # RabbitMQ 监控
│   │   │   ├── elasticsearch.conf # ES 监控
│   │   │   ├── httpcheck.conf     # HTTP 检查
│   │   │   └── portcheck.conf     # 端口检查
│   │   └── health_alarm_notify.conf # 告警通知配置
│   ├── cache/                      # 缓存目录
│   └── lib/                        # 数据库文件
├── scripts/                        # 管理脚本
│   ├── netdata-manage.sh          # 管理脚本
│   └── test-netdata.sh            # 测试脚本
└── docs/技术架构/                  # 文档
    └── Netdata监控系统技术文档.md  # 本文档

四、监控功能详解

4.1 系统级监控

4.1.1 CPU 监控(完整)

监控指标 (39 个系统图表):

system.cpu               # CPU 总体使用率
  ├─ user                # 用户态 CPU
  ├─ system              # 系统态 CPU
  ├─ nice                # Nice 进程 CPU
  ├─ iowait              # I/O 等待
  ├─ irq                 # 硬件中断
  ├─ softirq             # 软件中断
  ├─ steal               # 虚拟化窃取
  └─ idle                # 空闲 CPU

system.cpu_some_pressure  # CPU 压力监控
system.intr               # 中断统计
system.ctxt               # 上下文切换
system.forks              # 进程创建
system.active_processes   # 活跃进程数

使用场景:

  • 发现 CPU 瓶颈
  • 识别高 CPU 进程
  • 分析 I/O 等待问题
  • 监控系统负载

4.1.2 内存监控(完整)

监控指标:

system.ram               # 内存使用
  ├─ used                # 已使用
  ├─ cached              # 缓存
  ├─ buffers             # 缓冲区
  └─ free                # 空闲

system.swap              # Swap 使用
mem.available            # 可用内存
mem.page_faults          # 页错误
mem.committed            # 已提交内存
mem.kernel               # 内核内存

告警阈值:

  • 警告: 内存使用 > 80%
  • 严重: 内存使用 > 90%
  • Swap 使用 > 20% 警告

4.1.3 磁盘监控(完整)

监控指标:

system.io                # 磁盘 I/O
  ├─ reads               # 读操作
  └─ writes              # 写操作

disk_space._            # 磁盘使用率
disk_ops._              # IOPS 统计
disk_iotime._           # I/O 时间
disk_await._            # I/O 等待时间
disk_svctm._            # 服务时间
disk_util._             # 使用率

告警阈值:

  • 磁盘使用 > 80% 警告
  • 磁盘使用 > 90% 严重
  • I/O 等待 > 10% 警告

4.1.4 网络监控(完整)

监控指标:

system.net               # 网络流量
net.eth0                 # 网卡流量
  ├─ received            # 接收
  └─ sent                # 发送

net.packets              # 数据包统计
net.errors               # 错误统计
net.drops                # 丢包统计
net.fifo                 # FIFO 错误
ipv4.tcpsock             # TCP 连接
ipv4.tcphandshake        # TCP 握手

4.2 容器监控(完整)

4.2.1 监控的 11 个容器

1. maiban-mysql          MySQL 8.0 数据库
2. maiban-es             Elasticsearch 7.17.3
3. maiban-netdata        Netdata 自身
4. maiban-minio          MinIO 对象存储
5. redis                 Redis 7 缓存
6. rabbitmq              RabbitMQ 3.9 消息队列
7. mongo                 MongoDB 4 文档数据库
8. nacos-registry        Nacos 2.1 服务发现
9. logstash              Logstash 7.17.3 日志
10. kibana               Kibana 7.17.3 可视化
11. nginx                Nginx 1.22 Web服务器

4.2.2 容器监控指标(每个容器)

资源使用 (cgroup 监控):

cgroup_<容器>.cpu         # CPU 使用
  ├─ user                 # 用户态
  ├─ system               # 系统态
  └─ throttled            # 限流次数

cgroup_<容器>.mem         # 内存使用
  ├─ ram                  # RAM 使用
  ├─ swap                 # Swap 使用
  ├─ cache                # 缓存
  └─ rss                  # 常驻内存

cgroup_<容器>.io          # 磁盘 I/O
  ├─ read                 # 读操作
  └─ write                # 写操作

cgroup_<容器>.throttle    # I/O 限流
cgroup_<容器>.pgfaults    # 页错误

Docker 状态监控:

docker_local.container_<容器>_state         # 容器状态
docker_local.container_<容器>_health_status # 健康状态

4.2.3 容器自动发现

Netdata 通过 Docker Socket 自动发现容器:

# 自动发现流程
1. 监听 Docker Socket (/var/run/docker.sock)
2. 获取容器列表和元数据
3. 为每个容器创建 cgroup 监控
4. 自动识别容器名称和镜像
5. 实时更新容器列表

监控详情:

  • 容器启动/停止自动更新
  • 支持容器重命名
  • 自动获取容器标签
  • 监控容器资源限制

4.3 中间件监控(完整)

4.3.1 MySQL 数据库监控(42 个图表)

配置信息:

# config/go.d/mysql.conf
jobs:
  - name: maiban-mysql-local
    dsn: root:root123@tcp(172.17.0.1:3306)/
    update_every: 1
    autodetection_retry: 10

完整监控指标:

  1. 查询性能监控:
mysql_*.queries              # 每秒查询数 (QPS)
mysql_*.queries_type         # 查询类型分布
  ├─ SELECT                  # 查询操作
  ├─ INSERT                  # 插入操作
  ├─ UPDATE                  # 更新操作
  ├─ DELETE                  # 删除操作
  ├─ REPLACE                 # 替换操作
  └─ CALL                    # 存储过程调用

mysql_*.slow_queries         # 慢查询统计
mysql_*.handlers             # 处理器统计
  1. 连接管理:
mysql_*.connections          # 连接数统计
mysql_*.connections_active   # 活跃连接
mysql_*.threads              # 线程统计
mysql_*.thread_cache_misses  # 线程缓存未命中
mysql_*.connection_errors    # 连接错误
  1. InnoDB 引擎:
mysql_*.innodb_buffer_pool_size        # 缓冲池大小
mysql_*.innodb_buffer_pool_usage       # 缓冲池使用
mysql_*.innodb_buffer_pool_pages       # 缓冲池页面
mysql_*.innodb_buffer_pool_read_ahead  # 预读
mysql_*.innodb_buffer_pool_read_requests # 读请求
mysql_*.innodb_buffer_pool_write_requests # 写请求
mysql_*.innodb_log_waits               # 日志等待
mysql_*.innodb_row_lock                # 行锁统计
  1. 表操作:
mysql_*.table_locks          # 表锁统计
mysql_*.table_open_cache     # 表打开缓存
mysql_*.join_issues          # JOIN 问题
mysql_*.sort_issues          # 排序问题
mysql_*.tmp                  # 临时表使用
  1. 网络与流量:
mysql_*.net                  # 网络流量
mysql_*.binlog_cache         # Binlog 缓存
mysql_*.binlog_stmt_cache    # Binlog 语句缓存

性能分析场景:

  • 慢查询识别和优化
  • 连接池配置优化
  • InnoDB 缓冲池调优
  • 锁等待问题诊断

4.3.2 Elasticsearch 监控(84 个图表)

配置信息:

# config/go.d/elasticsearch.conf
jobs:
  - name: maiban-es-local
    url: http://172.17.0.1:9200
    update_every: 1
    cluster_health: yes
    cluster_stats: yes
    indices_stats: yes

完整监控指标:

  1. 集群健康:
elasticsearch_*.cluster_health_status      # 集群状态 (Green/Yellow/Red)
elasticsearch_*.cluster_nodes_count        # 节点数量
elasticsearch_*.cluster_shards_count       # 分片数量
elasticsearch_*.cluster_pending_tasks      # 待处理任务
elasticsearch_*.cluster_relocating_shards  # 重定位分片
  1. 索引操作:
elasticsearch_*.indices_indexing_operations         # 索引操作速率
elasticsearch_*.indices_indexing_operations_current # 当前索引操作
elasticsearch_*.indices_indexing_operations_time    # 索引时间
elasticsearch_*.indices_delete_operations           # 删除操作
elasticsearch_*.indices_refresh_operations          # 刷新操作
elasticsearch_*.indices_flush_operations            # 落盘操作
  1. 搜索性能:
elasticsearch_*.indices_search_operations        # 搜索操作速率
elasticsearch_*.indices_search_queries           # 查询统计
elasticsearch_*.indices_search_fetches           # 获取统计
elasticsearch_*.indices_search_operations_time   # 搜索时间
elasticsearch_*.indices_query_cache              # 查询缓存
elasticsearch_*.indices_fielddata                # 字段数据缓存
  1. JVM 监控:
elasticsearch_*.jvm_memory_heap_usage            # 堆内存使用
elasticsearch_*.jvm_memory_heap_utilization      # 堆内存利用率
elasticsearch_*.jvm_memory_pool_young_usage      # 年轻代内存
elasticsearch_*.jvm_memory_pool_survivor_usage   # 幸存区内存
elasticsearch_*.jvm_memory_pool_old_usage        # 老年代内存
elasticsearch_*.jvm_gc_count                     # GC 次数
elasticsearch_*.jvm_gc_time                      # GC 时间
elasticsearch_*.jvm_threads                      # JVM 线程
  1. 节点资源:
elasticsearch_*.node_disk_usage                  # 磁盘使用
elasticsearch_*.node_breakers_tripped            # 断路器触发
elasticsearch_*.node_http_connections            # HTTP 连接
elasticsearch_*.transport_rx                     # 传输接收
elasticsearch_*.transport_tx                     # 传输发送

性能优化建议:

  • 监控堆内存使用,避免 OOM
  • 优化索引刷新间隔
  • 调整查询缓存大小
  • 监控 GC 频率和时间

4.3.3 Redis 监控(容器级)

监控方式: 通过 cgroup 监控 Redis 容器

监控指标:

cgroup_redis.cpu             # CPU 使用率
cgroup_redis.mem             # 内存使用
cgroup_redis.io              # 磁盘 I/O
cgroup_redis.throttled       # CPU 限流
cgroup_redis.pgfaults        # 页错误
cgroup_redis.writeback       # 写回统计

扩展监控 (可选): 如需 Redis 专用指标(命令统计、键空间等),可配置:

# config/go.d/redis.conf
jobs:
  - name: maiban-redis-local
    address: 172.17.0.1:6379
    update_every: 1

4.3.4 MongoDB 监控(进程级)

监控方式: 监控 mongod 进程

监控指标:

app.mongod_cpu_utilization   # CPU 使用率
app.mongod_mem_usage         # 内存使用
app.mongod_disk_logical_io   # 逻辑 I/O
app.mongod_disk_physical_io  # 物理 I/O
app.mongod_fds_open          # 打开的文件描述符
app.mongod_threads           # 线程数
app.mongod_uptime            # 运行时间

扩展监控 (可选):

# config/go.d/mongodb.conf
jobs:
  - name: maiban-mongo-local
    uri: mongodb://172.17.0.1:27017
    update_every: 1

4.3.5 RabbitMQ 监控

监控方式:

  1. 容器资源监控 (cgroup)
  2. HTTP 健康检查

监控指标:

# 容器监控
cgroup_rabbitmq.cpu          # CPU 使用
cgroup_rabbitmq.mem          # 内存使用
cgroup_rabbitmq.io           # 磁盘 I/O

# HTTP 健康检查
httpcheck_rabbitmq-management.request_status    # 管理界面状态
httpcheck_rabbitmq-management.response_time     # 响应时间

扩展监控 (可配置):

# config/go.d/rabbitmq.conf
jobs:
  - name: maiban-rabbitmq-local
    url: http://172.17.0.1:15672
    username: guest
    password: guest
    collect_queues_metrics: yes

可监控:

  • 队列长度和消息速率
  • 连接数和通道数
  • 消息确认统计
  • 内存和磁盘使用

4.3.6 Nacos 监控

监控方式: HTTP 健康检查 + 端口监控

监控指标:

httpcheck_nacos-health.request_status           # HTTP 状态
httpcheck_nacos-health.response_time            # 响应时间
portcheck_*.port_8848_status                    # 端口状态
portcheck_*.port_8848_connection_latency        # 连接延迟

4.3.7 MinIO 监控

监控方式: HTTP 健康检查 + 容器监控

监控指标:

httpcheck_minio-health.request_status           # 健康状态
httpcheck_minio-health.response_time            # 响应时间
cgroup_maiban-minio.cpu                         # CPU 使用
cgroup_maiban-minio.mem                         # 内存使用

4.4 健康检查监控(41 个图表)

4.4.1 HTTP 端点检查(20 个检查)

配置信息:

# config/go.d/httpcheck.conf
jobs:
  - name: elasticsearch-health
    url: http://172.17.0.1:9200/_cluster/health
    update_every: 10
    timeout: 5
    
  - name: kibana-health
    url: http://172.17.0.1:5601/api/status
    
  - name: minio-health
    url: http://172.17.0.1:9000/minio/health/live
    
  - name: nacos-health
    url: http://172.17.0.1:8848/nacos/
    
  - name: rabbitmq-management
    url: http://172.17.0.1:15672/

监控指标 (每个端点):

httpcheck_<name>.request_status         # 请求状态 (成功/失败)
httpcheck_<name>.response_time          # 响应时间 (ms)
httpcheck_<name>.response_length        # 响应长度 (bytes)
httpcheck_<name>.current_state_duration # 状态持续时间

告警规则:

  • 连续 3 次失败触发告警
  • 响应时间 > 5 秒警告
  • 响应时间 > 10 秒严重

4.4.2 端口监控(21 个端口组)

配置信息:

# config/go.d/portcheck.conf
jobs:
  - name: key-services-ports
    host: 172.17.0.1
    ports: [3306, 6379, 27017, 5672, 8848, 9200, 15672]
    update_every: 10

监控的关键端口:

3306    MySQL 数据库
6379    Redis 缓存
27017   MongoDB 数据库
5672    RabbitMQ AMQP
8848    Nacos 服务发现
9200    Elasticsearch
15672   RabbitMQ 管理界面

监控指标 (每个端口):

portcheck_*.port_<number>_status              # 端口状态 (开放/关闭)
portcheck_*.port_<number>_connection_latency  # 连接延迟 (ms)
portcheck_*.port_<number>_current_state_duration # 状态持续时间

4.5 应用进程监控(完整)

4.5.1 自动发现的进程

Netdata 自动监控以下关键进程:

1. mysqld                MySQL 数据库进程
2. mongod                MongoDB 进程
3. redis-server          Redis 进程
4. java (多个)           Java 应用进程
5. nginx                 Nginx 进程
6. dockerd               Docker 守护进程
7. AliYunDunMonitor      阿里云安全监控
8. 等等...

4.5.2 进程监控指标(每个进程)

CPU 监控:

app.<进程>_cpu_utilization       # CPU 使用率
app.<进程>_cpu_context_switches  # 上下文切换

内存监控:

app.<进程>_mem_usage             # 物理内存使用
app.<进程>_mem_private_usage     # 私有内存
app.<进程>_vmem_usage            # 虚拟内存
app.<进程>_mem_page_faults       # 页错误

磁盘 I/O 监控:

app.<进程>_disk_logical_io       # 逻辑 I/O (读/写)
app.<进程>_disk_physical_io      # 物理 I/O (实际磁盘)

文件和线程:

app.<进程>_fds_open              # 打开的文件描述符
app.<进程>_fds_open_limit        # 文件描述符限制
app.<进程>_threads               # 线程数
app.<进程>_processes             # 进程数
app.<进程>_uptime                # 运行时间

五、配置管理

5.1 配置文件结构

data/netdata/config/
├── netdata.conf                    # 主配置文件
├── go.d.conf                       # Go 插件总配置
├── go.d/                           # 各服务监控配置
│   ├── mysql.conf                  # MySQL 监控
│   ├── redis.conf                  # Redis 监控
│   ├── mongodb.conf                # MongoDB 监控
│   ├── rabbitmq.conf               # RabbitMQ 监控
│   ├── elasticsearch.conf          # Elasticsearch 监控
│   ├── httpcheck.conf              # HTTP 健康检查
│   └── portcheck.conf              # 端口监控
└── health_alarm_notify.conf        # 告警通知配置

5.2 主配置文件 (netdata.conf)

[global]
    # 运行模式
    run as user = netdata
    hostname = maiban-monitoring
    
    # 历史数据保留
    history = 3600              # 秒,默认1小时
    memory mode = dbengine      # 数据库引擎模式
    page cache size = 64        # MB,页缓存大小
    dbengine multihost disk space = 256  # MB,磁盘空间

[web]
    # Web 界面配置
    bind to = *:19999
    default backend = yes
    
[cloud]
    # 禁用云功能
    enabled = no
    
[registry]
    # 禁用注册表
    enabled = no

[plugins]
    # 插件配置
    go.d = yes
    apps = yes
    proc = yes
    cgroups = yes
    
[ml]
    # 机器学习配置
    enabled = yes
    maximum num samples to train = 14400    # 4小时数据
    minimum num samples to train = 900      # 15分钟数据
    train every = 3600                      # 每小时训练
    number of models per dimension = 1

5.3 MySQL 监控配置详解

# go.d/mysql.conf
jobs:
  - name: maiban-mysql-local
    dsn: root:root123@tcp(172.17.0.1:3306)/
    update_every: 1                    # 采集间隔(秒)
    autodetection_retry: 10            # 自动重试次数
    priority: 70000                    # 优先级
    
    # 可选配置
    timeout: 2                         # 超时时间
    my_cnf: /etc/mysql/my.cnf         # MySQL 配置文件路径

DSN 格式说明:

[username[:password]@][protocol[(address)]]/[dbname][?param1=value1&...&paramN=valueN]

5.4 告警通知配置

# health_alarm_notify.conf

# 全局设置
DEFAULT_RECIPIENT_EMAIL=""
DEFAULT_HEALTH_ALARM_NOTIFY_REPEAT_INTERVAL="900"  # 15分钟

# 钉钉机器人
DINGTALK_WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
DINGTALK_WEBHOOK_SECRET="YOUR_SECRET"
DEFAULT_RECIPIENT_DINGTALK="maiban-monitoring"

# 企业微信
WECOM_WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"
DEFAULT_RECIPIENT_WECOM="maiban-monitoring"

# 邮件通知
EMAIL_SENDER="netdata@maiban.com"
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="admin@maiban.com"

# Slack
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
DEFAULT_RECIPIENT_SLACK="monitoring"

六、AI/ML 异常检测

6.1 工作原理

[历史数据采集] → [特征提取] → [模型训练] → [异常检测] → [告警]
       ↑               ↓             ↓            ↓
    持续学习 ←─── 反馈循环 ←── 模型更新 ←── 检测结果

核心特点:

  1. 每个指标独立训练 - 不是共享一个模型
  2. 基于历史行为 - 根据过去的数据学习正常模式
  3. 边缘计算 - 在本地运行,不需要云服务
  4. 自动化 - 无需人工干预

6.2 训练过程

# 伪代码示例
def train_ml_model(metric):
    # 1. 收集历史数据(至少15分钟)
    history_data = collect_history(metric, min_samples=900)
    
    # 2. 特征提取
    features = extract_features(history_data)
    
    # 3. 训练模型(使用统计方法)
    model = train_statistical_model(features)
    
    # 4. 保存模型
    save_model(metric, model)
    
    # 5. 每小时重新训练
    schedule_retrain(interval=3600)

6.3 异常检测算法

Netdata 使用基于统计的方法:

  1. 正态分布假设 - 假设数据符合正态分布
  2. 标准差检测 - 超过 3σ 视为异常
  3. 滑动窗口 - 使用最近的 N 个数据点
  4. 动态阈值 - 根据历史数据自动调整

检测公式:

异常率 = |当前值 - 均值| / 标准差
异常 = 异常率 > 阈值(通常为3)

6.4 使用方法

在 Web 界面中:

  1. 打开任意监控图表
  2. 点击图表上方的 "AR" 按钮
  3. 图表会显示异常率(Anomaly Rate)
  4. 红色区域表示 AI 检测到的异常

配置参数:

[ml]
    enabled = yes                              # 启用 ML
    maximum num samples to train = 14400       # 最大训练样本(4小时)
    minimum num samples to train = 900         # 最小训练样本(15分钟)
    train every = 3600                         # 训练间隔(秒)
    diff num samples = 1                       # 差分样本数
    smooth num samples = 3                     # 平滑样本数
    lag num samples = 5                        # 滞后样本数

6.5 限制和注意事项

❌ 不支持的功能:

  • 不能更换 ML 算法
  • 不能调整模型参数
  • 不能导入外部模型
  • 不能自定义特征工程

✅ 可以配置的:

  • 启用/禁用 ML 功能
  • 训练样本数量
  • 训练频率
  • 异常检测敏感度(间接通过告警阈值)

七、告警系统

7.1 告警架构

[数据采集] → [指标评估] → [告警引擎] → [通知分发]
                  ↓
           [告警规则库]
           - 377+ 预配置规则
           - 自定义规则

7.2 预配置告警规则

系统资源告警:

# CPU 使用率
cpu.10min_cpu_usage:
  - warn: > 75%
  - crit: > 90%
  - duration: 10 分钟

# 内存使用率
mem.10min_mem_usage:
  - warn: > 80%
  - crit: > 90%
  - duration: 10 分钟

# 磁盘空间
disk_space.10min_disk_space:
  - warn: > 80%
  - crit: > 90%
  - duration: 10 分钟

# Swap 使用
mem.swap_usage:
  - warn: > 20%
  - crit: > 50%

服务健康告警:

# HTTP 端点不可用
httpcheck.web_service_no_connection:
  - crit: 失败率 > 50%
  - duration: 5 分钟

# 端口不可达
portcheck.connection_fails:
  - crit: 连续失败 3 次

# MySQL 慢查询
mysql.10s_slow_queries:
  - warn: > 10 次/秒
  - crit: > 50 次/秒

7.3 告警状态

状态说明颜色
CLEAR正常,无告警绿色
WARNING警告,需要关注橙色
CRITICAL严重,需要立即处理红色

7.4 告警通知渠道

支持的通知方式:

  1. 钉钉机器人
  2. 企业微信机器人
  3. 邮件 (SMTP)
  4. Slack
  5. Discord
  6. Telegram
  7. PagerDuty
  8. Webhook (自定义)

配置示例:

# 钉钉通知
SEND_DINGTALK="YES"
DINGTALK_WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=xxx"
DEFAULT_RECIPIENT_DINGTALK="ops-team"

# 企业微信
SEND_WECOM="YES"
WECOM_WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
DEFAULT_RECIPIENT_WECOM="ops-team"

# 邮件
SEND_EMAIL="YES"
EMAIL_SENDER="netdata@maiban.com"
DEFAULT_RECIPIENT_EMAIL="ops@maiban.com"

7.5 告警静默

临时静默:

# 静默特定主机的告警(1小时)
curl "http://localhost:19999/api/v1/manage/health?silencers=add&host=*&alarms=*&duration=3600"

# 静默特定告警
curl "http://localhost:19999/api/v1/manage/health?silencers=add&alarms=cpu_usage&duration=1800"

八、API 接口使用

8.1 核心 API 列表

API 端点方法说明
/api/v1/infoGET系统信息
/api/v1/chartsGET图表列表
/api/v1/chartGET单个图表信息
/api/v1/dataGET查询数据
/api/v1/alarmsGET告警列表
/api/v1/alarm_logGET告警历史
/api/v1/allmetricsGET所有指标

8.2 常用 API 示例

1. 获取系统信息:

curl "http://localhost:19999/api/v1/info" | jq '.'

2. 查询 CPU 数据:

# 查询最近 60 秒的 CPU 数据
curl "http://localhost:19999/api/v1/data?chart=system.cpu&after=-60&points=60"

# 查询特定时间范围
curl "http://localhost:19999/api/v1/data?chart=system.cpu&after=1698000000&before=1698003600"

3. 查询 MySQL 查询统计:

curl "http://localhost:19999/api/v1/data?chart=mysql_maiban-mysql-local.queries&points=60"

4. 获取告警列表:

curl "http://localhost:19999/api/v1/alarms" | jq '.alarms'

5. 导出 Prometheus 格式:

curl "http://localhost:19999/api/v1/allmetrics?format=prometheus"

8.3 数据查询参数

chart      - 图表名称(必填)
after      - 起始时间(Unix时间戳或相对时间-60)
before     - 结束时间(Unix时间戳)
points     - 返回的数据点数量
group      - 聚合方法(average, min, max, sum)
gtime      - 聚合时间窗口(秒)
options    - 选项(absolute, percentage, etc.)
dimensions - 指定维度

九、性能与资源

9.1 资源使用统计

实际测试数据(麦瓣健康项目):

CPU 使用:      ~5% (峰值 8%)
内存占用:      ~150MB (稳定)
磁盘写入:      最小化(17分钟批量写入)
磁盘占用:      ~500MB (1周历史数据)
网络流量:      可忽略

9.2 性能优化配置

数据保留策略:

[global]
    # Tier 0: 秒级精度
    dbengine disk space MB = 256
    
    # Tier 1: 分钟级精度
    dbengine tier 1 disk space MB = 256
    dbengine tier 1 update every iterations = 60
    
    # Tier 2: 小时级精度
    dbengine tier 2 disk space MB = 64
    dbengine tier 2 update every iterations = 60

采集优化:

[plugins]
    # 禁用不需要的插件
    charts.d = no
    node.d = no
    python.d = no
    
    # 调整采集频率
    update every = 1  # 秒,可调整为2或5

9.3 扩展性

支持的规模:

  • 单节点: 10,000+ 指标
  • 父子架构: 100,000+ 指标
  • Netdata Cloud: 无限扩展

父子架构示例:

[Parent Netdata] ←─ 流式传输 ←─ [Child Netdata 1]
       ↑                      ←─ [Child Netdata 2]
       │                      ←─ [Child Netdata 3]
   集中存储                      ...

十、运维管理

10.1 管理脚本

脚本位置: backend/scripts/netdata-manage.sh

功能列表:

# 状态管理
./netdata-manage.sh status    # 查看状态
./netdata-manage.sh start     # 启动服务
./netdata-manage.sh stop      # 停止服务
./netdata-manage.sh restart   # 重启服务

# 日志管理
./netdata-manage.sh logs      # 查看日志

# 信息查询
./netdata-manage.sh info      # 显示监控信息

# 卸载清理
./netdata-manage.sh uninstall # 卸载(保留配置)
./netdata-manage.sh clean     # 完全清理

10.2 日常维护

每日检查:

# 1. 检查服务状态
docker ps | grep netdata

# 2. 检查告警
curl -s http://localhost:19999/api/v1/alarms | jq '.alarms'

# 3. 检查磁盘使用
du -sh /root/maiban/backend/data/netdata/

每周维护:

# 1. 清理旧数据(可选)
# Netdata 会自动清理,通常不需要手动操作

# 2. 检查日志大小
du -sh /root/maiban/backend/data/netdata/cache/

# 3. 备份配置
tar -czf netdata-config-$(date +%Y%m%d).tar.gz \
    /root/maiban/backend/data/netdata/config/

10.3 服务自动拉起配置 ⚡

重要说明: Netdata 是监控工具,不直接支持服务拉起,但可通过以下方式实现:

方案一:Docker 自动重启(推荐)✅

在 docker-compose-env.yml 中配置:

services:
  mysql:
    restart: unless-stopped  # 容器异常退出时自动重启
  redis:
    restart: unless-stopped
  elasticsearch:
    restart: unless-stopped
  # 其他所有服务都配置 restart 策略

重启策略说明:

策略行为推荐场景
no不自动重启(默认)测试环境
always总是重启核心服务
unless-stopped除非手动停止才重启⭐ 推荐
on-failure仅失败时重启任务型服务

方案二:Netdata 告警 + 自动化脚本

配置步骤:

1. 自动重启脚本已创建:

backend/scripts/auto-restart-service.sh  # 已配置并可执行

2. 告警规则已配置:

backend/data/netdata/config/health.d/docker-auto-restart.conf

3. 生效配置:

cd /root/maiban/backend
docker-compose -f docker-compose-env.yml restart netdata

已配置自动重启的服务:

  • ✅ MySQL (30秒延迟)
  • ✅ Elasticsearch (30秒延迟)
  • ✅ Redis (30秒延迟)
  • ✅ MongoDB (30秒延迟)
  • ✅ RabbitMQ (30秒延迟)
  • ✅ Nacos (30秒延迟)
  • ✅ MinIO (30秒延迟)
  • ✅ Nginx (30秒延迟)

查看重启日志:

tail -f /root/maiban/backend/logs/auto-restart.log

工作流程:

1. Netdata 检测到容器停止 (每10秒检查)
2. 等待30秒确认容器未自动恢复
3. 触发告警,执行自动重启脚本
4. 脚本尝试重启服务
5. 验证服务是否成功启动
6. 记录日志(成功/失败)

注意事项:

  1. 方案一是首选:简单、可靠、Docker 原生支持
  2. 方案二适合需要自定义逻辑:如发送通知、执行健康检查、记录详细日志
  3. 两种方案可同时使用:形成双保险机制
  4. 避免无限重启:设置 30 秒延迟,防止频繁重启
  5. 查看日志确认:定期检查 /root/maiban/backend/logs/auto-restart.log

10.4 升级策略

升级步骤:

# 1. 备份配置和数据
tar -czf netdata-backup.tar.gz data/netdata/

# 2. 停止服务
docker-compose -f docker-compose-env.yml stop netdata

# 3. 拉取新镜像
docker pull netdata/netdata:stable

# 4. 启动服务
docker-compose -f docker-compose-env.yml up -d netdata

# 5. 验证
docker logs maiban-netdata

十一、故障排查

11.1 常见问题

问题 1: 容器无法启动

# 检查错误日志
docker logs maiban-netdata

# 常见原因:
# 1. 端口冲突 - 检查 19999 端口
# 2. 权限不足 - 检查 Docker socket 权限
# 3. 资源不足 - 检查系统资源

问题 2: 某些监控无数据

# 检查插件状态
docker exec maiban-netdata netdatacli reload-health

# 查看插件日志
docker logs maiban-netdata 2>&1 | grep "mysql"

# 重启服务
docker-compose -f docker-compose-env.yml restart netdata

问题 3: 内存占用过高

# 检查数据库大小
docker exec maiban-netdata du -sh /var/cache/netdata/

# 优化配置
# 减少 dbengine disk space
# 增加 update every 间隔

11.2 调试模式

# 启用调试日志
docker exec maiban-netdata \
    netdata -D

# 查看详细日志
docker exec maiban-netdata \
    cat /var/log/netdata/debug.log

11.3 数据修复

# 重建数据库(会丢失历史数据)
docker-compose -f docker-compose-env.yml stop netdata
rm -rf data/netdata/cache/*
rm -rf data/netdata/lib/*
docker-compose -f docker-compose-env.yml start netdata

十二、最佳实践

12.1 监控规划

1. 确定监控范围:

- 系统资源(CPU、内存、磁盘、网络)
- 容器状态(资源使用、健康检查)
- 中间件性能(MySQL、Redis、ES等)
- 应用指标(响应时间、错误率)
- 业务指标(订单量、用户数等)

2. 设置告警阈值:

# 根据业务特点调整
CPU:     警告 75%, 严重 90%
内存:     警告 80%, 严重 90%
磁盘:     警告 80%, 严重 90%
响应时间: 警告 500ms, 严重 1000ms

3. 配置通知渠道:

- 严重告警: 钉钉 + 邮件 + 电话
- 警告告警: 钉钉
- 工作时间: 全部通知
- 非工作时间: 仅严重告警

12.2 性能优化建议

1. 根据负载调整采集频率:

# 低负载环境
update every = 2  # 2秒采集

# 高负载环境
update every = 5  # 5秒采集

2. 禁用不需要的监控:

[plugins]
    charts.d = no        # 禁用 charts.d 插件
    python.d = no        # 禁用 Python 插件

3. 优化数据保留:

# 根据需求调整历史数据保留时间
[global]
    dbengine disk space MB = 128  # 减少到 128MB

12.3 安全最佳实践

1. 限制访问:

# 使用防火墙限制访问
iptables -A INPUT -p tcp --dport 19999 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 19999 -j DROP

2. 配置反向代理:

# Nginx 配置示例
server {
    listen 443 ssl;
    server_name netdata.maiban.com;
    
    location / {
        proxy_pass http://localhost:19999;
        proxy_set_header Host $host;
        auth_basic "Netdata Monitoring";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

3. 使用 Netdata Cloud(可选):

  • 提供安全的远程访问
  • 支持 SSO 单点登录
  • 基于角色的访问控制

十三、安全配置

13.1 访问控制

方法 1: Nginx 反向代理 + Basic Auth

server {
    listen 80;
    server_name netdata.maiban.com;
    
    location / {
        proxy_pass http://127.0.0.1:19999;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        
        # Basic Auth
        auth_basic "Netdata Monitoring";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

创建密码文件:

htpasswd -c /etc/nginx/.htpasswd admin

方法 2: IP 白名单

# 仅允许内网访问
iptables -A INPUT -p tcp --dport 19999 -s 172.16.0.0/12 -j ACCEPT
iptables -A INPUT -p tcp --dport 19999 -j DROP

13.2 数据安全

1. 配置数据加密:

[web]
    # 启用 SSL(需要配置证书)
    ssl certificate = /path/to/cert.pem
    ssl private key = /path/to/key.pem

2. 敏感数据处理:

# 配置文件权限
chmod 600 data/netdata/config/go.d/mysql.conf
chown netdata:netdata data/netdata/config/go.d/mysql.conf

13.3 审计日志

# 启用访问日志
[web]
    access log = /var/log/netdata/access.log
    
# 查看访问日志
docker exec maiban-netdata tail -f /var/log/netdata/access.log

十四、集成与扩展

14.1 与 Prometheus 集成

导出指标到 Prometheus:

# prometheus.yml
scrape_configs:
  - job_name: 'netdata'
    metrics_path: '/api/v1/allmetrics'
    params:
      format: ['prometheus']
    static_configs:
      - targets: ['localhost:19999']

14.2 与 Grafana 集成

添加 Netdata 数据源:

  1. 安装 Grafana Netdata 插件
  2. 添加数据源,类型选择 "Netdata"
  3. 配置 URL: http://localhost:19999
  4. 导入 Netdata 官方仪表板

14.3 与告警平台集成

Webhook 集成:

# health_alarm_notify.conf
SEND_CUSTOM="YES"
CUSTOM_SENDER="curl"
DEFAULT_RECIPIENT_CUSTOM="http://your-alerting-system.com/webhook"

14.4 自定义插件

创建自定义采集器:

# 示例: 自定义 Python 采集器
/usr/libexec/netdata/python.d/
    └── custom_collector.chart.py

# 配置
/etc/netdata/python.d/
    └── custom_collector.conf

十五、技术栈对比

15.1 与其他监控系统对比

特性NetdataPrometheus + GrafanaZabbixDatadog
部署难度⭐ 简单⭐⭐⭐ 复杂⭐⭐⭐⭐ 很复杂⭐⭐ 中等
配置难度⭐ 零配置⭐⭐⭐⭐ 大量配置⭐⭐⭐⭐ 大量配置⭐⭐ 中等
实时性1秒15-60秒1-60秒10秒
资源占用150MB500MB+300MB+N/A
AI 异常检测✅ 内置❌ 需额外配置❌ 无✅ 内置
成本免费免费免费/付费付费
学习曲线⭐ 极低⭐⭐⭐⭐ 高⭐⭐⭐⭐ 高⭐⭐ 中等
可扩展性⭐⭐⭐ 中等⭐⭐⭐⭐⭐ 很好⭐⭐⭐⭐ 好⭐⭐⭐⭐⭐ 很好
社区支持⭐⭐⭐⭐ 活跃⭐⭐⭐⭐⭐ 很活跃⭐⭐⭐ 中等⭐⭐⭐⭐ 活跃

15.2 适用场景分析

选择 Netdata 的场景: ✅ 中小型项目(< 100 服务器) ✅ 需要快速部署 ✅ 团队规模小,运维能力有限 ✅ 实时性要求高 ✅ 预算有限

选择 Prometheus + Grafana 的场景: ✅ 大型分布式系统 ✅ 需要灵活的自定义配置 ✅ 有专业运维团队 ✅ 需要长期历史数据 ✅ 需要复杂的查询和分析

选择 Zabbix 的场景: ✅ 传统IT运维 ✅ 需要强大的告警功能 ✅ 网络设备监控 ✅ 需要事件关联分析

选择 Datadog 的场景: ✅ 预算充足 ✅ 需要 SaaS 服务 ✅ 需要 APM 功能 ✅ 需要日志、监控、追踪一体化


十六、项目集成说明

16.1 与麦瓣健康项目的集成

监控的服务:

1. 基础设施层:
   - MySQL 8.0 (maiban-mysql)
   - Redis 7 (redis)
   - MongoDB 4 (mongo)
   - Elasticsearch 7.17.3 (maiban-es)
   - RabbitMQ 3.9 (rabbitmq)
   - Nacos 2.1 (nacos-registry)
   - MinIO (maiban-minio)

2. 日志处理层:
   - Logstash 7.17.3 (logstash)
   - Kibana 7.17.3 (kibana)

3. Web 服务层:
   - Nginx 1.22 (nginx)

16.2 监控覆盖矩阵

服务容器监控进程监控专用监控健康检查
MySQL✅✅✅ (42指标)✅
Redis✅✅❌✅
MongoDB✅✅❌✅
Elasticsearch✅✅✅ (84指标)✅
RabbitMQ✅✅❌✅
Nacos✅✅❌✅
MinIO✅✅❌✅
Logstash✅✅❌❌
Kibana✅✅❌✅
Nginx✅✅❌❌

16.3 告警配置建议

针对麦瓣健康业务的告警:

# 数据库告警
mysql.slow_queries:
  warn: > 10 次/秒
  crit: > 50 次/秒
  action: 检查慢查询日志,优化 SQL

mysql.connections_active:
  warn: > 100
  crit: > 150
  action: 检查连接泄露,增加连接池

# 缓存告警
redis.memory_usage:
  warn: > 80%
  crit: > 90%
  action: 清理缓存或扩容

# 搜索告警
elasticsearch.cluster_status:
  warn: yellow
  crit: red
  action: 检查分片状态,修复索引

# 消息队列告警
rabbitmq.queue_messages:
  warn: > 10000
  crit: > 50000
  action: 检查消费者,增加处理能力

十七、未来规划

17.1 功能扩展计划

短期(1-3个月):

  • [ ] 配置钉钉/企业微信告警通知
  • [ ] 添加自定义业务指标监控
  • [ ] 配置 Nginx 反向代理
  • [ ] 优化告警规则

中期(3-6个月):

  • [ ] 部署 Netdata Parent 节点
  • [ ] 实现多节点集中监控
  • [ ] 集成到 CI/CD 流程
  • [ ] 添加自定义仪表板

长期(6-12个月):

  • [ ] 接入 Netdata Cloud
  • [ ] 实现跨地域监控
  • [ ] 与 APM 系统集成
  • [ ] 自动化性能优化建议

17.2 优化方向

  1. 监控完善:

    • 添加 Redis 专用监控
    • 添加 MongoDB 专用监控
    • 监控 Java 应用 JVM 指标
    • 添加业务指标监控
  2. 告警优化:

    • 根据实际业务调整阈值
    • 添加告警抑制规则
    • 配置告警升级策略
  3. 性能优化:

    • 根据实际负载调整采集频率
    • 优化数据保留策略
    • 评估是否需要父子架构

十八、总结

18.1 核心价值

Netdata 为麦瓣健康项目提供了:

  1. 全面的可观测性 - 2,371 个监控指标覆盖所有层面
  2. 实时问题发现 - 1秒延迟,快速定位故障
  3. 智能异常检测 - AI 驱动,减少人工监控负担
  4. 零配置部署 - 5分钟上线,降低运维成本
  5. 资源友好 - 仅占用 5% CPU + 150MB 内存

18.2 关键指标

✅ 监控图表:      2,371 个
✅ 监控容器:      11 个
✅ 告警规则:      377+ 条
✅ MySQL 监控:    42 个指标
✅ Elasticsearch: 84 个指标
✅ 健康检查:      41 个检查点
✅ 资源占用:      5% CPU + 150MB
✅ 数据精度:      1 秒采集
✅ 部署时间:      < 10 分钟
✅ 学习成本:      极低

18.3 最佳实践总结

  1. 每日检查: 查看监控面板和告警状态
  2. 每周维护: 检查磁盘使用,备份配置
  3. 持续优化: 根据监控数据优化系统性能
  4. 及时响应: 配置告警通知,快速处理问题
  5. 文档更新: 记录配置变更和故障处理经验

附录

附录 A:快速参考

访问地址:

  • 本地: http://localhost:19999
  • 外网: http://172.29.140.61:19999

管理命令:

cd /root/maiban/backend

# 服务管理
./scripts/netdata-manage.sh status
./scripts/netdata-manage.sh restart
./scripts/netdata-manage.sh logs

# Docker 命令
docker-compose -f docker-compose-env.yml up -d netdata
docker-compose -f docker-compose-env.yml restart netdata
docker logs -f maiban-netdata

API 接口:

# 系统信息
curl http://localhost:19999/api/v1/info

# 查询数据
curl "http://localhost:19999/api/v1/data?chart=system.cpu&after=-60"

# 告警列表
curl http://localhost:19999/api/v1/alarms

附录 B:配置文件模板

完整配置文件已创建在:

/root/maiban/backend/data/netdata/config/

附录 C:故障排查清单

□ 检查容器是否运行: docker ps | grep netdata
□ 检查端口是否可达: curl http://localhost:19999
□ 检查日志是否有错误: docker logs maiban-netdata
□ 检查配置文件语法: docker exec maiban-netdata netdata -W buildinfo
□ 检查磁盘空间: df -h
□ 重启服务: docker-compose restart netdata

附录 D:参考资源

官方资源:

  • 官方网站: https://www.netdata.cloud
  • 官方文档: https://learn.netdata.cloud
  • GitHub: https://github.com/netdata/netdata
  • 社区论坛: https://github.com/netdata/netdata/discussions

相关文档:

  • 部署指南: /root/maiban/docs/技术架构/Netdata监控部署指南.md
  • 快速参考: /root/maiban/backend/NETDATA-README.md
  • 测试报告: /root/maiban/backend/NETDATA-TEST-REPORT.md

文档结束

版本: v1.0
最后更新: 2025-10-23
维护者: 麦瓣健康技术团队
状态: ✅ 生产就绪


本文档详细描述了 Netdata 监控系统在麦瓣健康项目中的完整实现,涵盖了从架构设计、功能配置、使用指南到最佳实践的所有方面。建议结合实际使用情况持续更新和完善。

在 GitHub 上编辑此页
最后更新: 2025/11/10 10:53
贡献者: David, Claude, Claude Code
Prev
日志管理与配置说明