Netdata 监控系统技术文档
项目名称: 麦瓣健康 - Netdata 实时监控系统
监控版本: Netdata v2.7.2
文档版本: v1.0
最后更新: 2025-10-23
文档说明: 本文档详细描述了麦瓣健康项目的 Netdata 监控系统完整架构、功能配置、使用指南和最佳实践。涵盖系统监控、容器监控、中间件监控、AI 异常检测、告警系统等所有核心功能。
目录
一、技术架构概览
1.1 系统定位
Netdata 是麦瓣健康项目的实时监控系统,提供全栈可观测性能力:
- 实时性: 1 秒采集间隔,实时数据可视化
- 零配置: 自动发现所有服务和容器
- AI 驱动: 边缘 ML 模型自动异常检测
- 轻量级: 仅占用 5% CPU + 150MB 内存
- 全面性: 覆盖系统、容器、中间件、应用层
1.2 技术选型理由
| 对比项 | Netdata | Prometheus + Grafana | 选择理由 |
|---|---|---|---|
| 部署复杂度 | ⭐ 5分钟 | ⭐⭐⭐ 30+分钟 | 快速部署 |
| 配置复杂度 | ⭐ 零配置 | ⭐⭐⭐⭐ 大量配置 | 降低运维成本 |
| 数据采集 | ⭐ 1秒 | ⭐⭐⭐ 15-60秒 | 实时性要求 |
| 仪表板 | ⭐ 自动生成 | ⭐⭐⭐ 手动创建 | 开箱即用 |
| 异常检测 | ⭐ 内置 AI | ⭐⭐⭐⭐ 需额外配置 | 智能化 |
| 资源占用 | ⭐ 150MB | ⭐⭐⭐ 500MB+ | 资源友好 |
| 学习曲线 | ⭐ 极低 | ⭐⭐⭐⭐ 较高 | 团队效率 |
选择 Netdata 的核心原因:
- 微服务架构复杂,需要快速发现问题
- 团队规模小,需要低运维成本
- 实时性要求高,1秒延迟满足需求
- 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
完整监控指标:
- 查询性能监控:
mysql_*.queries # 每秒查询数 (QPS)
mysql_*.queries_type # 查询类型分布
├─ SELECT # 查询操作
├─ INSERT # 插入操作
├─ UPDATE # 更新操作
├─ DELETE # 删除操作
├─ REPLACE # 替换操作
└─ CALL # 存储过程调用
mysql_*.slow_queries # 慢查询统计
mysql_*.handlers # 处理器统计
- 连接管理:
mysql_*.connections # 连接数统计
mysql_*.connections_active # 活跃连接
mysql_*.threads # 线程统计
mysql_*.thread_cache_misses # 线程缓存未命中
mysql_*.connection_errors # 连接错误
- 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 # 行锁统计
- 表操作:
mysql_*.table_locks # 表锁统计
mysql_*.table_open_cache # 表打开缓存
mysql_*.join_issues # JOIN 问题
mysql_*.sort_issues # 排序问题
mysql_*.tmp # 临时表使用
- 网络与流量:
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
完整监控指标:
- 集群健康:
elasticsearch_*.cluster_health_status # 集群状态 (Green/Yellow/Red)
elasticsearch_*.cluster_nodes_count # 节点数量
elasticsearch_*.cluster_shards_count # 分片数量
elasticsearch_*.cluster_pending_tasks # 待处理任务
elasticsearch_*.cluster_relocating_shards # 重定位分片
- 索引操作:
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 # 落盘操作
- 搜索性能:
elasticsearch_*.indices_search_operations # 搜索操作速率
elasticsearch_*.indices_search_queries # 查询统计
elasticsearch_*.indices_search_fetches # 获取统计
elasticsearch_*.indices_search_operations_time # 搜索时间
elasticsearch_*.indices_query_cache # 查询缓存
elasticsearch_*.indices_fielddata # 字段数据缓存
- 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 线程
- 节点资源:
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 监控
监控方式:
- 容器资源监控 (cgroup)
- 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&...¶mN=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 工作原理
[历史数据采集] → [特征提取] → [模型训练] → [异常检测] → [告警]
↑ ↓ ↓ ↓
持续学习 ←─── 反馈循环 ←── 模型更新 ←── 检测结果
核心特点:
- 每个指标独立训练 - 不是共享一个模型
- 基于历史行为 - 根据过去的数据学习正常模式
- 边缘计算 - 在本地运行,不需要云服务
- 自动化 - 无需人工干预
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 使用基于统计的方法:
- 正态分布假设 - 假设数据符合正态分布
- 标准差检测 - 超过 3σ 视为异常
- 滑动窗口 - 使用最近的 N 个数据点
- 动态阈值 - 根据历史数据自动调整
检测公式:
异常率 = |当前值 - 均值| / 标准差
异常 = 异常率 > 阈值(通常为3)
6.4 使用方法
在 Web 界面中:
- 打开任意监控图表
- 点击图表上方的 "AR" 按钮
- 图表会显示异常率(Anomaly Rate)
- 红色区域表示 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 告警通知渠道
支持的通知方式:
- 钉钉机器人
- 企业微信机器人
- 邮件 (SMTP)
- Slack
- Discord
- Telegram
- PagerDuty
- 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/info | GET | 系统信息 |
/api/v1/charts | GET | 图表列表 |
/api/v1/chart | GET | 单个图表信息 |
/api/v1/data | GET | 查询数据 |
/api/v1/alarms | GET | 告警列表 |
/api/v1/alarm_log | GET | 告警历史 |
/api/v1/allmetrics | GET | 所有指标 |
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. 记录日志(成功/失败)
注意事项:
- 方案一是首选:简单、可靠、Docker 原生支持
- 方案二适合需要自定义逻辑:如发送通知、执行健康检查、记录详细日志
- 两种方案可同时使用:形成双保险机制
- 避免无限重启:设置 30 秒延迟,防止频繁重启
- 查看日志确认:定期检查
/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 数据源:
- 安装 Grafana Netdata 插件
- 添加数据源,类型选择 "Netdata"
- 配置 URL:
http://localhost:19999 - 导入 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 与其他监控系统对比
| 特性 | Netdata | Prometheus + Grafana | Zabbix | Datadog |
|---|---|---|---|---|
| 部署难度 | ⭐ 简单 | ⭐⭐⭐ 复杂 | ⭐⭐⭐⭐ 很复杂 | ⭐⭐ 中等 |
| 配置难度 | ⭐ 零配置 | ⭐⭐⭐⭐ 大量配置 | ⭐⭐⭐⭐ 大量配置 | ⭐⭐ 中等 |
| 实时性 | 1秒 | 15-60秒 | 1-60秒 | 10秒 |
| 资源占用 | 150MB | 500MB+ | 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 优化方向
监控完善:
- 添加 Redis 专用监控
- 添加 MongoDB 专用监控
- 监控 Java 应用 JVM 指标
- 添加业务指标监控
告警优化:
- 根据实际业务调整阈值
- 添加告警抑制规则
- 配置告警升级策略
性能优化:
- 根据实际负载调整采集频率
- 优化数据保留策略
- 评估是否需要父子架构
十八、总结
18.1 核心价值
Netdata 为麦瓣健康项目提供了:
- 全面的可观测性 - 2,371 个监控指标覆盖所有层面
- 实时问题发现 - 1秒延迟,快速定位故障
- 智能异常检测 - AI 驱动,减少人工监控负担
- 零配置部署 - 5分钟上线,降低运维成本
- 资源友好 - 仅占用 5% CPU + 150MB 内存
18.2 关键指标
✅ 监控图表: 2,371 个
✅ 监控容器: 11 个
✅ 告警规则: 377+ 条
✅ MySQL 监控: 42 个指标
✅ Elasticsearch: 84 个指标
✅ 健康检查: 41 个检查点
✅ 资源占用: 5% CPU + 150MB
✅ 数据精度: 1 秒采集
✅ 部署时间: < 10 分钟
✅ 学习成本: 极低
18.3 最佳实践总结
- 每日检查: 查看监控面板和告警状态
- 每周维护: 检查磁盘使用,备份配置
- 持续优化: 根据监控数据优化系统性能
- 及时响应: 配置告警通知,快速处理问题
- 文档更新: 记录配置变更和故障处理经验
附录
附录 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 监控系统在麦瓣健康项目中的完整实现,涵盖了从架构设计、功能配置、使用指南到最佳实践的所有方面。建议结合实际使用情况持续更新和完善。
