代码之家  ›  专栏  ›  技术社区  ›  eventhorizon

普罗米修斯从未知数量的(docker-)主机中抓取

  •  2
  • eventhorizon  · 技术社区  · 7 年前

    我有一个Docker Swarm,其中有一个Prometheus容器和一个特定微服务的1-n容器。

    可以通过url访问微服务容器。我认为对这个url的请求是负载平衡的(当然……)。

    目前,我已经生成了两个微服务容器。查询指标现在似乎在两个容器之间切换。示例:总请求数:10,13,10,13,10,13,。。。

    这是我的普罗米修斯配置。我该怎么办?我不想每次杀死或启动微服务容器时都调整Prometheus配置。

    scrape_configs:
      - job_name: 'myjobname'
        metrics_path: '/prometheus'
        scrape_interval: 15s
        static_configs:
          - targets: ['the-service-url:8080']
            labels:
              application: myapplication
    

    更新1 我改变了我的配置如下,似乎工作。此配置使用Docker Swarm内部的dns查找,并查找运行指定服务的所有实例。

    scrape_configs:
      - job_name: 'myjobname'
        metrics_path: '/prometheus'
        scrape_interval: 15s
        dns_sd_configs:
          - names: ['tasks.myServiceName']
            type: A
            port: 8080
    

    这里的问题是:此配置是否识别一个Docker实例已停止,另一个实例已启动?

    更新2 我要的是一个参数:

    scrape_configs:
      - job_name: 'myjobname'
        metrics_path: '/prometheus'
        scrape_interval: 15s
        dns_sd_configs:
          - names: ['tasks.myServiceName']
            type: A
            port: 8080
            # The time after which the provided names are refreshed
            [ refresh_interval: <duration> | default = 30s ]
    

    这应该会奏效。

    1 回复  |  直到 4 年前
        1
  •  2
  •   eventhorizon    7 年前

    所以答案很简单: 有 multiple, documented ways to scrape . 我正在使用dns查找方式:

    scrape_configs:
        - job_name: 'myjobname'
            metrics_path: '/prometheus'
            scrape_interval: 15s
            dns_sd_configs:
                - names ['tasks.myServiceName']
                    type: A
                    port: 8080
                    refresh_interval: 15s