Netdata 监控服务部署指南
📊 项目概述
本项目已集成 Netdata 监控服务,为 Maiban 健康管理系统提供全方位的实时监控能力。
Netdata 简介
Netdata 是一个开源的实时性能和健康监控系统,具有以下特点:
- ⚡ 实时监控:秒级数据采集,1秒延迟可视化
- 🎯 零配置:自动发现和监控容器及服务
- 🤖 AI 异常检测:边缘 ML 模型自动检测异常
- 💎 轻量级:仅占用 5% CPU 和 150MB 内存
- 🔌 全面集成:支持 800+ 集成,包括所有主流中间件
- 📈 美观界面:现代化的 Web 监控面板
GitHub: https://github.com/netdata/netdata ⭐ 76.5k stars
官网文档: https://learn.netdata.cloud
🎯 监控范围
Netdata 已配置监控以下组件:
1. 系统级监控
- ✅ CPU 使用率(整体和每个核心)
- ✅ 内存使用情况(RAM、SWAP)
- ✅ 磁盘 I/O 性能和使用率
- ✅ 网络流量和连接状态
- ✅ 系统负载和进程统计
2. 容器监控
- ✅ Docker 容器资源使用
- ✅ 容器网络流量
- ✅ 容器健康状态
3. 中间件监控
MySQL 数据库
- 查询性能(QPS、慢查询)
- 连接数统计
- InnoDB 缓冲池状态
- 锁和死锁检测
- 复制状态
Redis 缓存
- 命令执行统计
- 内存使用情况
- 键空间统计
- 持久化状态
- 连接数
MongoDB 文档数据库
- 操作统计(CRUD)
- 连接数和网络
- 内存和存储使用
- 副本集状态
Elasticsearch 搜索引擎
- 集群健康状态
- 索引性能统计
- JVM 内存使用
- 查询和索引速率
RabbitMQ 消息队列
- 队列长度和消息速率
- 连接数和通道数
- 内存使用
- 消息确认统计
4. 应用监控
- ✅ Nacos 服务发现健康检查
- ✅ MinIO 对象存储健康检查
- ✅ 各服务端口监控
- ✅ HTTP 端点健康检查
🚀 快速开始
方式一:使用管理脚本(推荐)
# 进入后端目录
cd /root/maiban/backend
# 启动 Netdata
./scripts/netdata-manage.sh start
# 查看状态
./scripts/netdata-manage.sh status
# 查看监控信息
./scripts/netdata-manage.sh info
# 交互式菜单
./scripts/netdata-manage.sh
方式二:使用 Docker Compose
cd /root/maiban/backend
# 启动 Netdata
docker-compose -f docker-compose-env.yml up -d netdata
# 查看日志
docker logs -f maiban-netdata
# 停止 Netdata
docker-compose -f docker-compose-env.yml stop netdata
方式三:启动所有服务
cd /root/maiban/backend
# 启动所有基础设施服务(包括 Netdata)
docker-compose -f docker-compose-env.yml up -d
🌐 访问监控面板
Netdata 启动后,可通过以下方式访问:
本地访问
http://localhost:19999
远程访问
http://服务器IP:19999
查看服务器IP
hostname -I | awk '{print $1}'
📖 使用指南
1. 监控面板导航
打开 Netdata 后,您会看到:
左侧菜单:按类别组织的所有监控指标
- System Overview(系统概览)
- CPUs(CPU监控)
- Memory(内存监控)
- Disks(磁盘监控)
- Networking(网络监控)
- Containers(容器监控)
- Applications(应用监控)
右上角功能:
- 🔍 搜索:快速查找指标
- ⏰ 时间范围选择:查看历史数据
- 🔄 刷新间隔设置
- ⚙️ 设置和配置
2. 查看特定服务监控
MySQL 监控
- 展开左侧菜单 → MySQL Local
- 查看指标:
- Queries(查询统计)
- Connections(连接数)
- InnoDB(存储引擎)
- Threads(线程状态)
Redis 监控
- 展开左侧菜单 → Redis Local
- 查看指标:
- Operations(操作统计)
- Memory(内存使用)
- Keys(键统计)
- Persistence(持久化)
容器监控
- 展开左侧菜单 → Containers
- 选择具体容器:
- maiban-mysql
- maiban-redis
- maiban-nacos
- 等等...
3. 异常检测
Netdata 内置 AI 异常检测功能:
- 点击图表上方的 AR 按钮启用异常率显示
- 异常值会以红色高亮显示
- 鼠标悬停查看具体数值和异常原因
4. 告警功能
Netdata 自动配置了数百个告警规则:
- 点击右上角 🔔 图标查看活动告警
- 红色:严重告警
- 橙色:警告
- 绿色:正常
5. 自定义仪表板
创建自定义视图:
- 点击右上角 ⚙️ → My Netdata
- 选择 Dashboard
- 拖拽想要的图表到自定义面板
- 保存配置
⚙️ 配置说明
配置文件位置
backend/data/netdata/
├── config/ # 配置文件目录
│ ├── go.d.conf # 监控模块配置
│ ├── 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/ # 数据存储目录
修改监控配置
- 编辑相应的配置文件
- 重启 Netdata 使配置生效:
./scripts/netdata-manage.sh restart
配置告警通知
编辑告警配置文件:
vim backend/data/netdata/config/health_alarm_notify.conf
钉钉通知配置示例
# 取消注释并填入您的配置
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@example.com"
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="admin@example.com"
配置完成后重启 Netdata。
🔧 故障排查
1. Netdata 无法启动
# 查看容器日志
docker logs maiban-netdata
# 检查端口占用
netstat -nltp | grep 19999
# 检查 Docker 是否正常
docker ps
2. 某些监控项无数据
MySQL 监控无数据:
- 检查 MySQL 是否已启动且可访问
- 检查配置文件中的连接信息是否正确
- 查看日志:
docker logs maiban-netdata | grep mysql
Redis 监控无数据:
- 确认 Redis 容器在同一网络
- 检查 Redis 连接地址和端口
容器监控无数据:
- 确认 Docker socket 已正确挂载
- 检查容器权限:
SYS_PTRACE和SYS_ADMIN
3. 访问面板显示错误
# 检查服务状态
./scripts/netdata-manage.sh status
# 测试 API
curl http://localhost:19999/api/v1/info
# 重启服务
./scripts/netdata-manage.sh restart
4. 性能影响
Netdata 占用资源过多时:
- 禁用不需要的监控模块:
vim backend/data/netdata/config/go.d.conf
将不需要的模块设为 no:
modules:
mysql: yes
redis: yes
mongodb: no # 禁用 MongoDB 监控
# ...
- 降低采集频率:
编辑各服务配置,调整 update_every 参数(单位:秒):
jobs:
- name: maiban-mysql
dsn: root:root123@tcp(mysql:3306)/
update_every: 5 # 从 1 秒改为 5 秒
📊 监控最佳实践
1. 关键指标
系统性能:
- CPU 使用率 < 80%
- 内存使用率 < 85%
- 磁盘 I/O 等待 < 10%
- 网络带宽充足
数据库性能:
- MySQL 慢查询数量
- Redis 内存使用情况
- 连接数是否正常
应用健康:
- 容器运行状态
- 服务端口可达性
- HTTP 响应时间
2. 告警设置
建议配置以下告警:
- 💾 磁盘使用率 > 85%
- 🔥 CPU 持续高负载 > 80%
- 💥 内存使用率 > 90%
- 🔌 关键服务不可用
- 📊 数据库连接数过高
- 🐌 慢查询增加
3. 定期检查
建议每天检查:
- 系统负载趋势
- 数据库性能指标
- 容器资源使用
- 告警历史记录
4. 性能优化
根据监控数据优化:
- 发现 MySQL 慢查询 → 优化索引
- Redis 内存不足 → 调整淘汰策略
- 容器资源不足 → 调整资源限制
- 磁盘 I/O 高 → 优化数据访问
🔒 安全建议
1. 访问控制
生产环境建议配置身份认证:
# 使用 Nginx 反向代理添加 Basic Auth
# 或使用防火墙限制访问 IP
2. 端口保护
# 仅允许内网访问
iptables -A INPUT -p tcp --dport 19999 -s 内网IP段 -j ACCEPT
iptables -A INPUT -p tcp --dport 19999 -j DROP
3. HTTPS 配置
生产环境建议使用 HTTPS:
# 使用 Nginx 反向代理配置 SSL
# 或使用 Netdata Cloud 的安全访问
🔗 高级功能
1. Netdata Cloud(可选)
Netdata Cloud 提供:
- 远程安全访问
- 多节点集中管理
- 团队协作
- 自定义仪表板保存
- 高级告警和通知
注册地址:https://app.netdata.cloud
2. 数据导出
Netdata 支持导出数据到:
- Prometheus
- Graphite
- OpenTSDB
- InfluxDB
- 等等...
3. 父子架构
对于大规模部署,可以配置:
- 多个 Netdata Agent 作为子节点
- 一个中心 Netdata Parent 汇总数据
🆘 获取帮助
官方资源
- 📖 官方文档:https://learn.netdata.cloud
- 💬 社区讨论:https://github.com/netdata/netdata/discussions
- 🐛 问题反馈:https://github.com/netdata/netdata/issues
- 💬 Discord:https://discord.gg/netdata
项目管理脚本
# 查看帮助
./scripts/netdata-manage.sh
# 可用命令:
# start - 启动服务
# stop - 停止服务
# restart - 重启服务
# status - 查看状态
# logs - 查看日志
# info - 显示监控信息
📝 更新日志
2025-10-23
- ✅ 集成 Netdata 监控服务
- ✅ 配置所有中间件监控
- ✅ 创建管理脚本
- ✅ 添加完整文档
📄 许可证
- Netdata Agent: GPL-3.0 License
- Netdata UI: 免费使用(闭源)
- 本项目文档: 与项目主许可证相同
注意:首次启动 Netdata 可能需要几分钟来初始化和发现所有服务,请耐心等待。监控数据会随着时间累积,建议持续运行以获得更好的分析效果。
