Prometheus从未知数量的(docker-)主机上刮掉

时间:2017-11-15 18:43:39

标签: docker dynamic load-balancing prometheus

我的下一个问题:

我有一个带有prometheus容器的docker swarm和一个用于特定微服务的1-n容器。

微服务容器可以通过URL访问。 我想这个URL的请求是负载平衡的(当然......)。

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

这是我的prometheus配置。我需要做什么? 每次我杀死或启动一个微服务容器时我都不想调整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

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

更新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 ]

应该这样做...... THX用于阅读; - )

1 个答案:

答案 0 :(得分:0)

所以答案很简单: 有multiple, documented ways to scrape。 我正在使用dns-lookup-way:

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