我正在尝试在虚拟机上运行prometheus。我有几个要监视的微服务,它们正在vm上运行。我将以下内容添加到docker-compose.yml文件之一:
prometheus:
image: prom/prometheus:v2.1.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
然后我将prometheus.yml文件添加到与上述docker-compose相同的文件夹中。
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'radios-service'
metrics_path: '/prometheus-metrics'
static_configs:
- targets: ['radios-service:8080']
- job_name: 'websocket-service'
metrics_path: '/prometheus-websocket'
static_configs:
- targets: ['websocket-service:8080']
这可以通过我的命令行在docker上成功运行,但是当我尝试在vm上运行它时会抛出此错误:
错误:对于Prometheus无法启动服务Prometheus:b'OCI运行时 创建失败:container_linux.go:348:启动容器进程 引起“ process_linux.go:402:容器初始化引起 \“ rootfs_linux.go:58:安装\\” / usr / local / bin / prometheus.yml \\“ 到rootfs \\“ / var / lib / docker / overlay2 / f4b34c5866b191683d4e8c08e59fb14f56127cbcd67a603225954dd59c0a6a50 / merged \\” 在 \\“ / var / lib / docker / overlay2 / f4b34c5866b191683d4e8c08e59fb14f56127cbcd67a603225954dd59c0a6a50 / merged / etc / prometheus / prometheus.yml \\” 导致\\“不是目录\\” \“”:未知:您是否要挂载 目录到文件上(反之亦然)?检查指定的主机 路径存在,并且是预期的类型'错误:在遇到错误 提出项目。
但是当我在本地运行它时不会引发任何问题。 vm中的问题可能是什么?
答案 0 :(得分:0)
我通过编辑docker compose中的volumes行解决了这个问题。我猜在Linux机器上,您需要提供绝对路径。我将prometheus.yml放在/ home /目录中,并将路径更改为如下所示:
prometheus:
image: prom/prometheus:v2.1.0
volumes:
- /home/prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
这似乎可行。