【问题标题】:Prometheus scrape from unknown number of (docker-)hostsPrometheus 从未知数量的(docker-)主机中抓取
【发布时间】:2017-11-15 18:43:38
【问题描述】:

我有一个带有 Prometheus 容器和 1-n 个用于特定微服务的容器的 Docker Swarm。

可以通过 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

这里的问题是:这个配置是否识别出一个 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 ]

这应该可以解决问题。

【问题讨论】:

  • 您能否直接访问服务,也许在不同的端口上?您是否能够使用服务发现技术,例如 Consul 或 DNS 发现?
  • @TobyJackson:好像你几乎在我通过大量谷歌搜索找到答案的同时给出了“正确”提示:-)

标签: docker dynamic load-balancing prometheus


【解决方案1】:

所以答案很简单: 有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

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 2021-06-14
    • 2019-06-03
    • 2018-09-21
    • 1970-01-01
    • 2014-10-11
    • 2017-08-29
    • 2018-01-30
    相关资源
    最近更新 更多