飞牛NAS监控体系搭建:Prometheus + Grafana
为什么要在飞牛NAS上搭建监控体系
飞牛NAS作为家庭或小型企业的数据中枢,承担着文件存储、备份、媒体服务等核心任务。随着使用深入,你可能会有这样的疑问:CPU负载是否过高?内存是否吃紧?硬盘温度是否异常?这些指标单靠在飞牛后台界面查看,不仅不够直观,更无法形成持续追踪。这时候,一套专业的监控体系就派上了用场。
Prometheus 和 Grafana 的组合是目前业界最流行的开源监控方案。Prometheus负责采集和存储时序数据,Grafana负责将数据可视化呈现。在飞牛NAS的Docker环境中部署这套体系,可以让你通过精美的仪表盘实时掌握NAS的运行状态,甚至设置告警规则,防患于未然。
前期准备:Docker环境与端口规划
飞牛NAS内置了Docker管理器,这为我们部署容器提供了极大便利。在开始之前,请确保你的飞牛系统已经升级到最新版本,并且Docker服务正常运行。
你需要规划以下端口: - Prometheus Web界面:9090 - Node Exporter(用于采集系统指标):9100 - Grafana Web界面:3000
这些端口在飞牛NAS上应当未被占用。你可以在SSH终端中使用 netstat -tuln | grep -E '9090|9100|3000' 检查端口占用情况。
第一步:部署Node Exporter采集系统指标
Node Exporter是Prometheus官方提供的系统指标采集器,可以收集CPU、内存、磁盘、网络等基础指标。在飞牛NAS的Docker中运行它非常简单。
打开飞牛NAS的Docker管理器,选择“镜像管理” -> “拉取镜像”,输入 prom/node-exporter:latest 并拉取。或者,你直接在SSH终端中执行:
docker pull prom/node-exporter:latest
拉取完成后,创建一个名为 node-exporter 的容器,执行以下命令:
docker run -d --restart=always \
--name node-exporter \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
prom/node-exporter:latest \
--path.rootfs=/host
关键参数说明:
- --net="host" 使用宿主机网络,让Node Exporter直接暴露在物理网络上,避免端口映射带来的性能损耗。
- --pid="host" 允许采集进程相关的指标。
- -v "/:/host:ro,rslave" 将宿主机根目录挂载为只读,用于采集磁盘和文件系统信息。
运行后,通过 http://你的NAS IP:9100/metrics 即可看到大量系统指标数据。如果能看到类似 node_cpu_seconds_total 的文本输出,说明采集成功。
第二步:部署Prometheus服务端
Prometheus负责从Node Exporter拉取数据并存储。你需要先准备一个配置文件。
在飞牛NAS的文件管理器中,创建一个持久化目录,例如 /docker/prometheus。在该目录下新建 prometheus.yml 文件,内容如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
这里 scrape_interval 是采集频率,15秒一次对于家庭NAS来说已经足够。targets 指定了Node Exporter的地址,由于Prometheus也使用宿主机网络模式,所以直接用 localhost 即可指向本机9100端口。
拉取Prometheus镜像:
docker pull prom/prometheus:latest
启动Prometheus容器:
docker run -d --restart=always \
--name prometheus \
--net="host" \
-v /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /docker/prometheus/data:/prometheus \
prom/prometheus:latest \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus
这里 -v /docker/prometheus/data:/prometheus 将数据持久化到宿主机,避免容器重启后数据丢失。
访问 http://你的NAS IP:9090,在Prometheus的Web界面中,点击“Status” -> “Targets”,应该能看到 node 这个job状态为 UP。在查询框中输入 up 并执行,如果返回值为1,说明一切正常。
第三步:部署Grafana实现可视化
Grafana是展示数据的利器,它支持Prometheus作为数据源,并提供了大量现成的仪表盘模板。
拉取Grafana镜像:
docker pull grafana/grafana:latest
启动Grafana容器:
docker run -d --restart=always \
--name grafana \
--net="host" \
-v /docker/grafana/data:/var/lib/grafana \
grafana/grafana:latest
同样使用宿主机网络模式,并将数据持久化到 /docker/grafana/data。
访问 http://你的NAS IP:3000,默认用户名和密码均为 admin,首次登录会要求修改密码。
第四步:配置Grafana数据源与仪表盘
登录Grafana后,点击左侧齿轮图标 -> “Data Sources” -> “Add data source”。选择“Prometheus”,在URL栏输入 http://localhost:9090,点击“Save & Test”。如果显示绿色提示“Data source is working”,说明连接成功。
接下来导入仪表盘。点击左侧“+”图标 -> “Import”,在“Import via grafana.com”输入框填写ID 1860(这是Node Exporter Full仪表盘的官方ID),点击“Load”。在接下来的页面中,选择刚刚创建的数据源,点击“Import”。
几秒钟后,一个完整的系统监控仪表盘就会呈现在你面前。你可以看到CPU使用率、内存占用、磁盘读写IO、网络流量、磁盘温度(如果硬盘支持)等大量指标。所有图表都是实时刷新的,并且支持自定义时间范围。
如果需要更精细的监控,比如某个特定进程的资源占用,可以在Prometheus的配置文件中新增 scrape_config 段,或者添加其他Exporter(如用于监控Docker容器的cAdvisor)。Grafana也支持导入更多专业仪表盘,比如用于监控MySQL、Nginx等的模板。
第五步:设置告警(可选)
Grafana内置了告警功能。例如,当CPU温度超过70度时发送邮件通知。在仪表盘中打开某个图表,编辑面板,切换到“Alert”选项卡,配置触发条件和通知渠道。通知渠道支持邮件、钉钉、Slack等,需要在“Alerting” -> “Notification channels”中先配置好。
总结
通过以上步骤,你已经在飞牛NAS上成功搭建了一套完整的Prometheus + Grafana监控体系。这套系统不仅美观直观,而且完全开源免费。Node Exporter负责底层数据采集,Prometheus负责存储和查询,Grafana负责展示和告警,三者分工明确、协同工作。现在,你随时可以通过浏览器打开Grafana,一眼看清NAS的健康状况,再也不用担心数据丢失或性能瓶颈。如果你愿意,还可以继续扩展监控范围,比如加入对Docker容器、UPS电源甚至智能家居设备的监控,让飞牛NAS成为你数字生活的真正控制中心。