Appearance
数据监控面板
通过 Prometheus + Grafana 组合,搭建功能强大的 NAS 系统监控面板,实时查看系统状态、资源使用情况和历史趋势。
📋 功能特性
- ✅ 实时监控:CPU、内存、磁盘、网络使用率
- ✅ 历史数据:长期存储和趋势分析
- ✅ 可视化图表:丰富的图表类型和自定义仪表板
- ✅ 告警通知:阈值告警,多渠道通知
- ✅ 移动端适配:随时随地查看系统状态
- ✅ 插件扩展:支持 Docker、应用监控等
🚀 快速部署
1. 创建目录结构
bash
mkdir -p /volume1/docker/monitoring/{prometheus,grafana}2. Docker Compose 部署
创建 docker-compose.yml:
yaml
version: '3'
services:
# Prometheus - 数据采集和存储
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus/data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=30d'
- '--web.enable-lifecycle'
ports:
- "9090:9090"
networks:
- monitoring
# Node Exporter - 系统指标采集
node_exporter:
image: prom/node-exporter:latest
container_name: node_exporter
restart: unless-stopped
command:
- '--path.rootfs=/host'
pid: host
volumes:
- '/:/host:ro,rslave'
ports:
- "9100:9100"
networks:
- monitoring
# Grafana - 可视化展示
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=your_password
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
volumes:
- ./grafana/data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
- ./grafana/dashboards:/var/lib/grafana/dashboards
ports:
- "3000:3000"
depends_on:
- prometheus
networks:
- monitoring
networks:
monitoring:
driver: bridge3. Prometheus 配置
创建 prometheus/prometheus.yml:
yaml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']
# Docker 容器监控
- job_name: 'docker'
static_configs:
- targets: ['cadvisor:8080']4. 启动服务
bash
docker-compose up -d📊 Grafana 配置
1. 首次登录
访问 http://your-nas-ip:3000
- 默认账号:
admin - 默认密码:你在 docker-compose 中设置的密码
2. 添加数据源
- 点击 Configuration → Data Sources
- 点击 Add data source
- 选择 Prometheus
- 配置:
- Name:
Prometheus - URL:
http://prometheus:9090
- Name:
- 点击 Save & Test
3. 导入仪表板
推荐导入的仪表板 ID:
- Node Exporter Full:
1860 - Docker and System Monitoring:
2686 - Host Dashboard:
10180
导入步骤:
- 点击 Create → Dashboard
- 点击 Import
- 输入仪表板 ID
- 选择 Prometheus 数据源
- 点击 Import
📈 常用监控指标
CPU 监控
promql
# CPU 使用率
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# CPU 温度
node_hwmon_temp_celsius内存监控
promql
# 内存使用率
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
# 交换空间使用率
(1 - (node_memory_SwapFree_bytes / node_memory_SwapTotal_bytes)) * 100磁盘监控
promql
# 磁盘使用率
(1 - (node_filesystem_avail_bytes / node_filesystem_size_bytes)) * 100
# 磁盘 I/O
rate(node_disk_read_bytes_total[5m])
rate(node_disk_written_bytes_total[5m])网络监控
promql
# 网络流量
rate(node_network_receive_bytes_total[5m])
rate(node_network_transmit_bytes_total[5m])
# 网络连接数
node_netstat_Tcp_CurrEstab🔔 告警配置
1. 创建告警规则
在 Grafana 中:
- 点击 Alerting → Notification policies
- 添加通知渠道(邮件、钉钉、企业微信等)
2. 常见告警阈值
yaml
# CPU 使用率超过 80%
CPU 使用率 > 80% 持续 5 分钟
# 内存使用率超过 85%
内存使用率 > 85% 持续 5 分钟
# 磁盘使用率超过 90%
磁盘使用率 > 90%
# 系统负载过高
系统负载 > CPU 核心数 * 2
# 温度过高
CPU 温度 > 80°C🎯 进阶用法
Docker 容器监控
添加 cAdvisor:
yaml
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
restart: unless-stopped
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8080:8080"
networks:
- monitoring应用监控
- MySQL: 使用 mysqld_exporter
- PostgreSQL: 使用 postgres_exporter
- Nginx: 使用 nginx-prometheus-exporter
- Redis: 使用 redis_exporter
日志监控
集成 Loki:
yaml
loki:
image: grafana/loki:latest
container_name: loki
restart: unless-stopped
ports:
- "3100:3100"
volumes:
- ./loki:/etc/loki
networks:
- monitoring🔧 常见问题
Q1: Grafana 无法连接 Prometheus?
A:
- 检查容器网络是否互通
- 确认 Prometheus 服务正常运行
- 检查数据源 URL 是否正确
Q2: 数据采集不完整?
A:
- 检查 Node Exporter 权限
- 确认防火墙设置
- 查看 Prometheus 日志
Q3: 历史数据丢失?
A:
- 检查数据目录挂载
- 确认 retention 配置
- 查看磁盘空间
Q4: 仪表板加载缓慢?
A:
- 减少查询时间范围
- 优化 PromQL 查询
- 增加 Prometheus 内存
🔒 安全建议
- 修改默认密码:立即更改 admin 密码
- 限制访问:配置防火墙规则
- 使用 HTTPS:配置反向代理和 SSL 证书
- 定期备份:备份 Grafana 配置和数据
- 权限控制:创建不同权限的用户
📱 移动端查看
Grafana 官方 App
- iOS: 搜索 "Grafana"
- Android: 搜索 "Grafana"
配置服务器地址后即可随时随地查看监控数据。
💡 提示:建议定期备份 Prometheus 数据和 Grafana 配置,避免数据丢失。
更新时间: 2026-03-18