Prometheus不是在虚拟机上运行,​​而是在本地Docker上运行

时间:2018-07-10 14:30:02

标签: docker virtual-machine prometheus

我正在尝试在虚拟机上运行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中的问题可能是什么?

1 个答案:

答案 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'

这似乎可行。