部署windows端的,因和服务端不在一个网络,会出现错误,主要是路由没返回的静态路由,2级路由是小米的,没法设置,(没去查看

容器介绍,

1、整体容器服务改动 → docker‑compose.yml

位置:你存放编排文件的目录

适合修改场景:

新增、删减监控容器(例如再加装日志组件 loki)

修改容器端口、开机策略、磁盘挂载目录、时区、特权权限

更换 cadvisor、grafana、prometheus 镜像版本

改完重载命令:

bash

docker‑compose up -d

2、监控采集规则、采集地址、采集间隔 → prometheus.yml

路径:/root/docker_data/prom_config/prometheus.yml

日常最常改动这个文件:

添加新设备、新容器的监控采集地址

修改 15 秒采集间隔、新增告警配置

给监控标签、主机备注名称

编辑保存之后重载生效,不用重启容器:

bash

curl -X POST http://127.0.0.1:9090/-/reload

3、仪表盘、数据源、面板配置(不需要改本地文件)

全部在 Grafana 网页后台操作:

新增 / 删除数据源、导入监控面板 8191、14282

调整图表样式、颜色、告警提醒

数据储存在 /root/docker_data/grafana_data,网页操作自动写入,不用手动编辑文件

简单总结

容器启停、镜像、挂载:改 docker‑compose.yml

采集任务、监控目标:改 prometheus.yml

图表看板:浏览器进入 Grafana 页面调整即可

内网部署段,是软路由

# compose 文件协议版本,version3 是软路由Docker最通用稳定版本
version: "3"

# 创建专属独立网桥,让 prometheus 和 grafana 内网互通,隔绝其他容器,避免端口冲突
networks:
  monitor-net:

services:
  prometheus:
    # 使用本地已经导入完毕的监控镜像
    image: prom/prometheus:latest
    # 设定容器固定名称,后续操作直接调用该名字
    container_name: prometheus
    # 容器崩溃、软路由重启,自动重启容器,实现开机自启
    restart: always
    # =========资源限制重点=========
    # mem_limit:512m 容器最大允许占用内存512MB,超过会被系统限制,防止监控吃光路由内存
    mem_limit: 512m
    # cpus:1.5 最多只能使用1.5个CPU核心,不会抢占软路由拨号、流控的处理器性能
    cpus: 1.5
    # 端口映射:主机9090端口 → 容器内9090,浏览器访问监控后台
    ports:
      - "9090:9090"
    # 目录挂载:主机文件夹映射进容器,配置、监控数据持久保存
    volumes:
      - /root/docker_data/prom_config:/etc/prometheus
      - /root/docker_data/prom_data:/prometheus
    # Prometheus 启动运行参数
    command:
      # 指定监控配置文件位置
      - --config.file=/etc/prometheus/prometheus.yml
      # 时序监控数据存储路径
      - --storage.tsdb.path=/prometheus
      # 监控数据只保留15天,过期自动清理,避免硬盘存满
      - --storage.tsdb.retention.time=15d
      # 开启配置热重载,修改配置无需重启容器
      - --web.enable-lifecycle
      # 关闭高危管理员API接口,规避内网安全风险
      - --web.enable-admin-api=false
    # 环境变量,设置容器时区为北京时间,监控时间不会错乱
    environment:
      TZ: Asia/Shanghai
    # 接入专属监控网桥
    networks:
      - monitor-net


  grafana:
    # 本地现成的可视化面板镜像
    image: grafana/grafana:latest
    # 容器固定名称
    container_name: grafana
    # 设备重启、程序异常后自动重启
    restart: always
    # 面板程序最大内存上限512MB
    mem_limit: 512m
    # 最多占用1颗CPU核心,节省R5C硬件资源
    cpus: 1
    # 网页端口,主机3000端口打开可视化仪表盘
    ports:
      - "3000:3000"
    # 挂载面板配置、图表数据,删除容器数据也不会丢失
    volumes:
      - /root/docker_data/grafana_data:/var/lib/grafana
    environment:
      # 同步东八区北京时间
      TZ: Asia/Shanghai
      # 关闭匿名访客登录,必须账号密码登录仪表盘
      GF_AUTH_ANONYMOUS_ENABLED: false
    # 加入监控网桥,和prometheus互相通信获取监控数据
    networks:
      - monitor-net

会有警告

oot@iStoreOS:~# docker-compose up -d
WARN[0000] /root/docker-compose.yml: the attribute version is obsolete, it wil l be ignored, please remove it to avoid potential confusion
[+] Running 3/5
✔ Network root_monitor-net Cre ated0.0s ner prometheus Creating 0.1s
⠙ Container grafana Sta rting0.2s
⠙ Container prometheus Sta rting0.2s
[+] Running 3/5he requested image's platform (linux/amd64) does not match the de ✔ Network root_monitor-net Cre ated0.0s a Your kernel does not support swap limit capabilities or the cgroup is ⠹ Container grafana Sta rting0.3s
⠹ Container prometheus Sta rting0.3s
[+] Running 3/5he requested image's platform (linux/amd64) does not match the de ✔ Network root_monitor-net Cre ated0.0s a Your kernel does not support swap limit capabilities or the cgroup is ⠸ Container grafana Sta rting0.4s
⠸ Container prometheus Sta rting0.4s
[+] Running 3/5he requested image's platform (linux/amd64) does not match the de ✔ Network root_monitor-net Cre ated0.0s a Your kernel does not support swap limit capabilities or the cgroup is ⠼ Container graf

报错声明

version 属性已经过时,可以直接删掉

新版‑docker‑compose 已经不需要版本声明,直接删除第一行 version:"3"

2、the requested image's platform (linux/amd64) does not match the device

你的 R5C 是 ARM‑aarch64 架构,但你导入的 prom/prometheus:latest 是 x86 (amd64) 版本镜像,架构不兼容,容器无法正常启动,这是最关键问题!

3、Your kernel does not support swap limit capabilities

iStoreOS 内核不支持内存交换分区限制,直接删掉 mem_limit、cpus 资源限制参数即可,软路由内核不支持 cgroup 内存管控

修正之后最终可用 compose(适配 R5C‑ARM 架构)

# 已删除过时的version字段
networks:
  monitor-net:

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - /root/docker_data/prom_config:/etc/prometheus
      - /root/docker_data/prom_data:/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --storage.tsdb.path=/prometheus
      - --storage.tsdb.retention.time=15d
      - --web.enable-lifecycle
      - --web.enable-admin-api=false
    environment:
      TZ: Asia/Shanghai
    networks:
      - monitor-net

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - /root/docker_data/grafana_data:/var/lib/grafana
    environment:
      TZ: Asia/Shanghai
      GF_AUTH_ANONYMOUS_ENABLED: false
    networks:
      - monitor-net
  1. 停止当前出错容器

bash

docker-compose down
  1. 删除现在 x86 架构、无法运行的 prometheus 镜像

bash

docker rmi prom/prometheus:latest

root@iStoreOS:~# docker logs prometheus
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
Error parsing command line arguments: unexpected false
prometheus: error: unexpected false
root@iStoreOS:~# docker logs grafana
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
root@iStoreOS:~#

故障 1:Prometheus 报错 unexpected‑false

根源:你的 yml 文件 command 参数依旧残留 --xxx=false

Prometheus 命令行参数属于开关,不支持 =true / =false;需要关闭该功能直接删掉整行参数

prometheus 的 command 命令行不能带任何 --xxx=false,开关参数只能开启、不能赋值 false

故障 2:Grafana 权限拒绝

挂载目录权限不足,容器内置普通用户无法写入文件夹,需要开放权限 + 指定 root 用户运行

步骤 1:先关停旧容器

bash

docker-compose down

步骤 2:给挂载目录全开权限(iStoreOS 必做)

bash

chmod -R 777 /root/docker_data

ommand 里面没有任何=false参数,grafana 强制 root 启动规避权限

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    network_mode: host
    volumes:
      - /root/docker_data/prom_config:/etc/prometheus
      - /root/docker_data/prom_data:/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --storage.tsdb.path=/prometheus
      - --storage.tsdb.retention.time=15d
      - --web.enable-lifecycle
    environment:
      TZ: Asia/Shanghai

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    network_mode: host
    user: root
    volumes:
      - /root/docker_data/grafana_data:/var/lib/grafana
    environment:
      TZ: Asia/Shanghai
      GF_AUTH_ANONYMOUS_ENABLED: false

network_mode: host 模式不需要 ports 端口映射,容器直接共用主机全部网卡,端口直接绑定宿主机;你不习惯 host 模式,那咱们切回桥接模式、手动写明端口,同时修复命令报错、权限问题。

root@iStoreOS:~# docker logs grafana
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
root@iStoreOS:~#
root@iStoreOS:~# chmod -R 777 /root/docker_data
root@iStoreOS:~# docker-compose down
[+] Running 3/3
 ✔ Container grafana         Removed                                                                                                                                                                     0.0s
 ✔ Container prometheus      Removed                                                                                                                                                                     0.0s
 ✔ Network root_monitor-net  Removed                                                                                                                                                                     0.2s
root@iStoreOS:~# ls
docker-compose.yml  docker_data         nohup.out           prometheus.tar
root@iStoreOS:~# vi docker-compose.yml
root@iStoreOS:~# cat > /root/docker_data/prom_config/prometheus.yml <<EOF
> global:
>   scrape_interval: 15s
> scrape_configs:
>   - job_name: "prometheus本体"
>     static_configs:
>       - targets: ["127.0.0.1:9090"]
> EOF
root@iStoreOS:~# docker-compose up -d
[+] Running 2/2
 ✔ Container grafana     Started                                                                                                                                                                         0.4s
 ✔ Container prometheus  Started                                                                                                                                                                         0.4s
root@iStoreOS:~# docker logs prometheus
time=2026-08-05T15:14:13.390+08:00 level=INFO source=main.go:1730 msg="updated GOGC" old=100 new=75
time=2026-08-05T15:14:13.391+08:00 level=INFO source=main.go:789 msg="Leaving GOMAXPROCS=4: CPU quota undefined" component=automaxprocs
time=2026-08-05T15:14:13.392+08:00 level=INFO source=memlimit.go:198 msg="GOMEMLIMIT is updated" component=automemlimit package=github.com/KimMachineGun/automemlimit/memlimit GOMEMLIMIT=3706715750 previous=9223372036854775807
time=2026-08-05T15:14:13.392+08:00 level=INFO source=main.go:896 msg="Starting Prometheus Server" mode=server version="(version=3.13.2, branch=HEAD, revision=bb5dff00cf8fdfbf5c65e0531aa835fa238a43a2)"
time=2026-08-05T15:14:13.392+08:00 level=INFO source=main.go:901 msg="operational information" build_context="(go=go1.26.5, platform=linux/arm64, user=root@56a9973e8bdd, date=20260730-11:34:45, tags=netgo,builtinassets)" host_details="(Linux 6.6.144 #0 SMP Wed Jul 29 05:40:29 2026 aarch64 iStoreOS (none))" fd_limits="(soft=1048576, hard=1048576)" vm_limits="(soft=unlimited, hard=unlimited)"
time=2026-08-05T15:14:14.275+08:00 level=INFO source=web.go:727 msg="Start listening for connections" component=web address=0.0.0.0:9090
time=2026-08-05T15:14:14.277+08:00 level=INFO source=main.go:1462 msg="Starting TSDB ..."
time=2026-08-05T15:14:14.294+08:00 level=INFO source=head.go:709 msg="Replaying on-disk memory mappable chunks if any" component=tsdb
time=2026-08-05T15:14:14.294+08:00 level=INFO source=head.go:795 msg="On-disk memory mappable chunks replay completed" component=tsdb duration=7µs
time=2026-08-05T15:14:14.294+08:00 level=INFO source=head.go:803 msg="Replaying WAL, this may take a while" component=tsdb
time=2026-08-05T15:14:14.296+08:00 level=INFO source=head.go:898 msg="WAL segment loaded" component=tsdb segment=0 maxSegment=0 duration=1.256764ms
time=2026-08-05T15:14:14.296+08:00 level=INFO source=head.go:935 msg="WAL replay completed" component=tsdb checkpoint_replay_duration=253.162µs wal_replay_duration=1.593048ms wbl_replay_duration=1.166µs chunk_snapshot_load_duration=0s mmap_chunk_replay_duration=7µs total_replay_duration=1.972498ms
time=2026-08-05T15:14:14.302+08:00 level=INFO source=tls_config.go:354 msg="Listening on" component=web address=[::]:9090
time=2026-08-05T15:14:14.303+08:00 level=INFO source=tls_config.go:357 msg="TLS is disabled." component=web http2=false address=[::]:9090
time=2026-08-05T15:14:14.309+08:00 level=INFO source=main.go:1483 msg="filesystem information" fs_type=OVERLAYFS_SUPER_MAGIC
time=2026-08-05T15:14:14.309+08:00 level=INFO source=main.go:1486 msg="TSDB started"
time=2026-08-05T15:14:14.309+08:00 level=INFO source=main.go:1684 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml
time=2026-08-05T15:14:14.310+08:00 level=INFO source=main.go:1100 msg="TSDB retention updated" duration=15d size=0B percentage=0
time=2026-08-05T15:14:14.314+08:00 level=INFO source=main.go:1723 msg="Completed loading of configuration file" db_storage=209.12µs remote_storage=7.874µs web_handler=2.625µs query_engine=2.917µs scrape=2.60511ms scrape_sd=146.122µs notify=5.833µs notify_sd=2.917µs rules=5.25µs tracing=24.207µs filename=/etc/prometheus/prometheus.yml totalDuration=4.12641ms
time=2026-08-05T15:14:14.314+08:00 level=INFO source=main.go:1447 msg="Server is ready to receive web requests."
time=2026-08-05T15:14:14.314+08:00 level=INFO source=manager.go:211 msg="Starting rule manager..." component="rule manager"
root@iStoreOS:~# docker logs grafana
Grafana server is running with elevated privileges. This is not recommended
logger=settings t=2026-08-05T15:14:14.988118138+08:00 level=info msg="Starting Grafana" version=13.1.2 commit=7f247b37a4e51a1ed33904ec63ac6c6087bf7f48 branch=release-13.1.2#patched compiled=2026-08-04T18:18:20+08:00
logger=settings t=2026-08-05T15:14:14.993309399+08:00 level=info msg="Unified migration configs enforced" storage_type=unified target=[all]
logger=settings t=2026-08-05T15:14:14.993480896+08:00 level=info msg="Enforcing mode 5 for resource in unified storage" resource=dashboards.dashboard.grafana.app
logger=settings t=2026-08-05T15:14:14.993515312+08:00 level=info msg="Enforcing mode 5 for resource in unified storage" resource=playlists.playlist.grafana.app
logger=settings t=2026-08-05T15:14:14.993540394+08:00 level=info msg="Enforcing mode 5 for resource in unified storage" resource=folders.folder.grafana.app
logger=settings t=2026-08-05T15:14:14.994382126+08:00 level=info msg="Config loaded from" file=/usr/share/grafana/conf/defaults.ini
logger=settings t=2026-08-05T15:14:14.994429667+08:00 level=info msg="Config loaded from" file=/etc/grafana/grafana.ini
logger=settings t=2026-08-05T15:14:14.994454166+08:00 level=info msg="Config overridden from command line" arg="default.paths.data=/var/lib/grafana"
logger=settings t=2026-08-05T15:14:14.994476624+08:00 level=info msg="Config overridden from command line" arg="default.paths.logs=/var/log/grafana"
logger=settings t=2026-08-05T15:14:14.994498207+08:00 level=info msg="Config overridden from command line" arg="default.paths.plugins=/var/lib/grafana/plugins"
logger=settings t=2026-08-05T15:14:14.994525914+08:00 level=info msg="Config overridden from command line" arg="default.paths.provisioning=/etc/grafana/provisioning"
logger=settings t=2026-08-05T15:14:14.994549539+08:00 level=info msg="Config overridden from command line" arg="default.log.mode=console"
logger=settings t=2026-08-05T15:14:14.994645787+08:00 level=info msg="Config overridden from Environment variable" var="GF_PATHS_DATA=/var/lib/grafana"
logger=settings t=2026-08-05T15:14:14.994679036+08:00 level=info msg="Config overridden from Environment variable" var="GF_PATHS_LOGS=/var/log/grafana"
logger=settings t=2026-08-05T15:14:14.994702952+08:00 level=info msg="Config overridden from Environment variable" var="GF_PATHS_PLUGINS=/var/lib/grafana/plugins"
logger=settings t=2026-08-05T15:14:14.99472541+08:00 level=info msg="Config overridden from Environment variable" var="GF_PATHS_PROVISIONING=/etc/grafana/provisioning"
logger=settings t=2026-08-05T15:14:14.994746701+08:00 level=info msg="Config overridden from Environment variable" var="GF_AUTH_ANONYMOUS_ENABLED=false"
logger=settings t=2026-08-05T15:14:14.994767409+08:00 level=info msg="Config overridden from Environment variable" var="GF_PATHS_HOME=/usr/share/grafana"
logger=settings t=2026-08-05T15:14:14.994787534+08:00 level=info msg="Config overridden from Environment variable" var="GF_PATHS_CONFIG=/etc/grafana/grafana.ini"
logger=settings t=2026-08-05T15:14:14.994808825+08:00 level=info msg=Target target=[all]
logger=settings t=2026-08-05T15:14:14.994851116+08:00 level=info msg="Path Home" path=/usr/share/grafana
logger=settings t=2026-08-05T15:14:14.994873865+08:00 level=info msg="Path Data" path=/var/lib/grafana
logger=settings t=2026-08-05T15:14:14.994896323+08:00 level=info msg="Path Logs" path=/var/log/grafana
logger=settings t=2026-08-05T15:14:14.994922572+08:00 level=info msg="Path Plugins" path="[/var/lib/grafana/plugins /usr/share/grafana/data/plugins-bundled]"
logger=settings t=2026-08-05T15:14:14.994958738+08:00 level=info msg="Path Provisioning" path=/etc/grafana/provisioning

下载windows Prometheus.WindowsExporte

PowerShell 一键安装(首选,不需要手动下载)
右键以管理员身份打开 PowerShell,运行:
powershell
winget install Prometheus.WindowsExporter -e --silent

步骤 2:定位 exe 完整路径

powershell

where.exe windows_exporter


PS C:\Users\Administrator> where.exe windows_exporter
C:\Users\Administrator\AppData\Local\Microsoft\WinGet\Links\windows_exporter.exe
PS C:\Users\Administrator>

sc.exe create windows_exporter binPath="C:\Users\Administrator\AppData\Local\Microsoft\WinGet\Links\windows_exporter.exe" start= auto

关键点:

  1. 写成 sc.exe,避开 PowerShell 别名

  2. start= 等号后面必须带空格

启动服务

net start windows_exporter

#查看状态 Get-Service windows_exporter

端口放行

New-NetFirewallRule -DisplayName "windows_exporter_9182" -Direction Inbound -LocalPort 9182 -Protocol TCP -Action Allow

PS C:\Users\Administrator> explorer C:\Users\Administrator\AppData\Local\Microsoft\WinGet\Packages 找到文件,改到其他文件路径

PS C:\Users\Administrator> sc.exe delete windows_exporter

[SC] DeleteService 成功

PS C:\Users\Administrator> sc.exe create windows_exporter binPath="C:\jisnkong\Prometheus.WindowsExporter_Microsoft.Winget.Source_8wekyb3d8bbwe\windows_exporter.exe" start= auto

[SC] CreateService 失败 1072:

指定的服务已标记为删除。

失败的原因,就是,需要重启powershell

安装之后程序存放路径:

C:\jisnkong\Prometheus.WindowsExporter_Microsoft.Winget.Source_8wekyb3d8bbwe\windows_exporter.exe

注册系统服务,开机后台启动

命令行使用管理员权限启动

命令提示符 (管理员)
sc create win_exporter binPath= "\"C:\jisnkong\Prometheus.WindowsExporter_Microsoft.Winget.Source_8wekyb3d8bbwe\windows_exporter.exe\" --web.listen-address=:9182" start= auto

net start win_exporter 启动服务

net stop win_exporter #停止监控

sc delete win_exporter #删除旧服务重装

sc query win_exporter #查看运行状态

防火墙放行 9182 端口,局域网可访问

cmd

netsh advfirewall firewall add rule name="windows_exporter 9182" dir=in action=allow protocol=TCP localport=9182

http://127.0.0.1:9182/metrics

直接先舍弃,windows ,那边,因为网络不同,

直接只先监控这个arm主机,和 上面的docker 容器,

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    network_mode: host
    volumes:
      - /root/docker_data/prom_config:/etc/prometheus
      - /root/docker_data/prom_data:/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --storage.tsdb.path=/prometheus
      - --storage.tsdb.retention.time=15d
      - --web.enable-lifecycle
    environment:
      TZ: Asia/Shanghai

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    network_mode: host
    user: root
    volumes:
      - /root/docker_data/grafana_data:/var/lib/grafana
    environment:
      TZ: Asia/Shanghai
      GF_AUTH_ANONYMOUS_ENABLED: false

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: always
    network_mode: host
    pid: host
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro

  cadvisor:
    image: gcr.nju.edu.cn/cadvisor/cadvisor:v0.47.2
    container_name: cadvisor
    restart: always
    network_mode: host
    privileged: true
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

监控架构整体介绍

整套由 4 个 Docker 容器组成,专门给你的 iStore‑OS 软路由做主机 + 容器监控:

  1. Prometheus:时序数据库,采集、存放各项硬件和容器监控数据

  2. Grafana:可视化仪表盘,图表展示 CPU、内存、硬盘、网速、Docker 容器占用

  3. node‑exporter:读取软路由整机系统硬件数据

  4. cAdvisor:专门抓取每一个 Docker 容器资源占用


需要手动创建的文件夹 & 文件

1、目录路径(全部放在 /root/docker_data 下面)

依次执行下面命令新建文件夹

bash

mkdir -p /root/docker_data/prom_config
mkdir -p /root/docker_data/prom_data
mkdir -p /root/docker_data/grafana_data

文件夹作用:

  1. /root/docker_data/prom_config:存放 prometheus 配置文件 prometheus.yml

  2. /root/docker_data/prom_data:存放监控历史数据库数据

  3. /root/docker_data/grafana_data:存放仪表盘、账号配置

2、必须新建两个文件

① docker‑compose.yml(启动编排文件)

yaml

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    network_mode: host
    volumes:
      - /root/docker_data/prom_config:/etc/prometheus
      - /root/docker_data/prom_data:/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --storage.tsdb.path=/prometheus
      - --storage.tsdb.retention.time=15d
      - --web.enable-lifecycle
    environment:
      TZ: Asia/Shanghai

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    network_mode: host
    user: root
    volumes:
      - /root/docker_data/grafana_data:/var/lib/grafana
    environment:
      TZ: Asia/Shanghai
      GF_AUTH_ANONYMOUS_ENABLED: false

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: always
    network_mode: host
    pid: host
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro

  cadvisor:
    image: gcr.nju.edu.cn/cadvisor/cadvisor:v0.47.2
    container_name: cadvisor
    restart: always
    network_mode: host
    privileged: true
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

② prometheus.yml(采集规则配置)

存放路径:/root/docker_data/prom_config/prometheus.yml

yaml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

rule_files:
  # - "alert_rules.yml"

scrape_configs:
  #监控prometheus自身状态
  - job_name: 'prometheus'
    static_configs:
      - targets: ['127.0.0.1:9090']

  #整机硬件资源监控
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['192.168.6.1:9100']
        labels:
          group: "linux服务器"
          name: "BWH-LA"
          ip: "192.168.6.1"

  #docker容器监控
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['127.0.0.1:8080']
        labels:
          group: "linux服务器"
          name: "BWH-LA"
          ip: "192.168.6.1"

三、逐个镜像详细解释、选用原因

1、prom/prometheus:latest

  • 用途:开源时序型监控数据库,定时抓取各项指标、储存历史数据

  • 为什么选它:

    监控体系最主流的采集储存引擎,生态成熟,绝大多数硬件、容器监控组件都适配 Prometheus;latest 代表官方最新稳定版本。

2、grafana/grafana:latest

  • 用途:监控可视化面板,把枯燥的数字做成曲线图、仪表盘

  • 为什么选它:

    行业最主流可视化工具,适配 Prometheus,网上有大量现成一键导入的软路由、主机、Docker 监控模板。

3、prom/node‑exporter:latest

  • 用途:读取 Linux 底层硬件信息(CPU、内存、磁盘、温度、网卡网速、负载)

  • 为什么选它:

    Prometheus 官方出品的主机采集器,兼容性最好,专门读取 /proc、/sys 系统文件获取硬件参数。

4、gcr.nju.edu.cn/cadvisor/cadvisor:v0.47.2

  • 原版官方地址:gcr.io/cadvisor/cadvisor

  • 南大镜像站只是国内加速镜像,程序本体一模一样

  • 用途:Docker 容器专属监控,可以单独查看每一个容器 CPU、内存、硬盘读写、网速

  • 选用 v0.47.2 原因:

    1. 新版部分版本在 iStore‑OS 底层内核容易出现兼容报错

    2. v0.47.2 是大量软路由用户实测稳定的版本

    3. 南京大学镜像源国内下载速度很快,不需要翻墙拉取谷歌仓库镜像

四、关键参数通俗讲解

  1. network_mode: host

    容器直接共用软路由本机网卡,端口直接开放在 192.168.6.1,无需手动映射端口

  • Prometheus:9090

  • Grafana:3000

  • node‑exporter:9100

  • cadvisor:8080

  1. volumes 挂载

    把宿主机文件夹映射进容器,保证重装容器之后配置、监控数据不会丢失

  2. privileged:true

    cadvisor 需要很高权限读取 docker 底层数据,必须开启特权模式

  3. restart:always

    Docker 开机自动启动,意外崩溃之后自动重启


五、完整部署顺序

  1. 创建 3 个文件夹

  2. 写入 docker‑compose.yml

  3. 写入 prometheus.yml

  4. 启动:docker‑compose up -d

  5. 浏览器访问

    • Prometheus:192.168.6.1:9090

    • Grafana 面板:192.168.6.1:3000

Grafana

Grafana

Grafana 用法

Grafana 是一款可视化监控面板工具,本身不会主动采集数据,只负责把各类监控数据源的数据做成曲线图、仪表盘、柱状图、告警。

一、能够对接的数据源(它可以搭配很多软件)

  1. Prometheus(你现在在用):最热门,服务器、软路由、Docker‑容器、硬件资源监控

  2. InfluxDB、TimescaleDB:时序数据库,网速、带宽、设备长时间数据

  3. MySQL、PostgreSQL:数据库的数据图表展示

  4. Loki:日志可视化,查看 Docker 容器日志、系统日志

  5. Redis、MQTT、Zabbix、Home‑Assistant:智能家居、路由器、传感器、宽带设备

/今天是添加prometherus'
"

点击左侧的Connections 下的 add new connection 就是你需要监控的元素了,,

Prometheus或者是在搜索框内搜索你所需的,数据源即你想监控的

选择普罗米修斯之后,

选择你的数据源了,add new data source

在这个URL 里添加,

下滑选择

Save & test

会出现保存成功的

然后去选择你需要面板,也可以自己手搓,

选择左侧的Dashboards ,点开New 下拉菜单的Import

如下图

然后选择load

我的是8191 软路由,

、主流主机面板对比,方便你挑选

表格

面板 ID 特点

8191 界面清爽、自带主机下拉筛选,软路由非常适配

1860(Node‑Exporter‑Full) 功能最全、指标最多,全网最通用老牌面板

11074 极简轻量化,低配机器不容易卡顿

你现在已经在用 8191 就完全够用,日常查看软路由硬件资源非常合适。

二、全套分类‑适配你整套环境的面板清单

1、Docker 容器监控(cadvisor)

14282(首选):每个容器独立 CPU、内存、网速、磁盘读写、容器运行状态

893:简易容器看板,适合只想简单看占用

2、软路由 iStore‑OS / OpenWrt 专用

13616:WAN 宽带流量、网速曲线图

17076:系统进程、TCP 连接数、负载详情

3、Prometheus 本身运行状态监控

3662:查看采集任务是否掉线、采集延迟、数据库存储空间

4、后续拓展(以后可以加装组件)

Loki 日志面板:13586,查看 docker 容器日志

网速带宽监控:10973