飞牛NAS监控体系搭建:Prometheus + Grafana
飞牛NAS作为一款功能强大的国产NAS系统,其底层基于Debian Linux,为我们提供了极高的可玩性。当你的设备上运行着Docker容器、各类服务,并挂载着多块硬盘时,一个直观的监控面板能让你对系统健康状况了如指掌。本文将手把手带你从零开始,在飞牛NAS上搭建一套专业的Prometheus + Grafana监控体系,实时掌握CPU、内存、磁盘IO及网络流量等核心指标。
为什么选择Prometheus + Grafana
飞牛自带的资源监控虽能满足基本需求,但无法自定义图表、无法关联多主机数据、历史数据留存时间短。Prometheus负责采集和存储时序数据,Grafana则负责将数据以精美的仪表盘呈现。这套组合是业界标准,完全免费且社区生态丰富,尤其适合飞牛这种基于Linux的系统。
第一步:准备目录结构与基础镜像
首先,通过SSH登录你的飞牛NAS,或者直接在飞牛的“SSH终端”功能中操作。我们将在Docker存储目录下创建专用文件夹。
sudo mkdir -p /vol1/docker/monitoring/prometheus
sudo mkdir -p /vol1/docker/monitoring/grafana
这里假设你的Docker数据目录在 /vol1/docker,请根据实际安装路径调整。接着,我们需要拉取两个官方镜像,建议使用Docker Compose统一管理。
第二步:编写docker-compose.yml
在监控目录下创建编排文件:
sudo nano /vol1/docker/monitoring/docker-compose.yml
粘贴以下内容:
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./prometheus/data:/prometheus
ports:
- "9090:9090"
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.retention.time=30d'
networks:
- monitor-net
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin123
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- ./grafana/data:/var/lib/grafana
ports:
- "3000:3000"
depends_on:
- prometheus
networks:
- monitor-net
networks:
monitor-net:
driver: bridge
注意,我们将Grafana默认管理员密码设为 admin123,首次登录后请立即修改。数据持久化目录已挂载到本地,重启容器不会丢失配置。
第三步:配置Prometheus采集规则
Prometheus需要知道要监控什么。我们先创建其配置文件:
sudo nano /vol1/docker/monitoring/prometheus/prometheus.yml
写入以下基础配置:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['192.168.1.100:9100']
这里 192.168.1.100 替换为你飞牛NAS的实际内网IP。为了采集系统指标,我们需要在宿主机上运行一个Node Exporter。在飞牛上,最方便的是直接下载二进制文件运行,或者通过另一个Docker容器暴露9100端口。推荐使用host网络模式运行Node Exporter容器,这样能直接看到宿主机真实指标。
在docker-compose.yml中追加一个服务:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
network_mode: host
pid: host
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
然后回到Prometheus配置中,将node job的目标地址改为 192.168.1.100:9100(因为采用host网络,端口直接暴露在NAS的IP上)。
第四步:启动服务并验证
在 /vol1/docker/monitoring 目录下执行:
sudo docker-compose up -d
等待镜像拉取和启动。检查容器状态:
sudo docker ps | grep -E 'prometheus|grafana|node-exporter'
访问 http://你的NASIP:9090/targets,如果看到三个target都是UP状态,说明采集正常。Grafana则通过 http://你的NASIP:3000 访问,使用 admin 和密码 admin123 登录。
第五步:导入仪表盘
登录Grafana后,点击左侧“+”号,选择“Import”。在Import via panel json框中输入官方仪表盘ID 1860(这是Node Exporter Full模板,专为Linux主机设计)。点击Load,选择数据源为Prometheus,然后Import。
稍等片刻,你就能看到精美的系统监控面板,包含CPU使用率、负载、内存、磁盘空间、网络流量、IO等十几个图表。如果某些图表显示No Data,请检查node exporter的采集路径是否正确。
第六步:进阶优化与告警配置
监控体系搭建后,建议设置简单的告警规则。在Prometheus配置目录新建 alerts.yml,并修改主配置文件引用它。
创建规则文件:
sudo nano /vol1/docker/monitoring/prometheus/alerts.yml
内容示例:
groups:
- name: node_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 10m
labels:
severity: warning
annotations:
summary: "CPU使用率超过85%"
description: "实例 {{ $labels.instance }} 的CPU使用率持续高于85%"
然后修改prometheus.yml,在global下添加 rule_files: - 'alerts.yml',重启Prometheus容器。在Grafana中配置告警渠道(如邮件、钉钉),即可实现异常通知。
另外,如果你希望监控飞牛上的Docker容器状态,可以额外部署 cadvisor 容器,并添加到Prometheus的scrape_config中,这里不再赘述。
总结
通过以上步骤,你在飞牛NAS上成功搭建了一套可扩展的监控系统。Prometheus负责高效采集和存储指标,Grafana提供了直观的可视化界面,而Node Exporter打通了宿主机数据的最后一公里。这套方案完全自托管,数据不经过第三方云端,保障了隐私。后续你可以根据需求自由添加Exporter(如监控硬盘SMART状态、Docker容器等),并定制专属的告警规则,让飞牛NAS真正成为一台可观测、可预警的可靠家庭服务器。
暂无评论,来说两句吧