具有多个副本的 Docker Swarm 上的 Prometheus 监控

问题描述 投票:0回答:1

我正在尝试使用 Prometheus 监控使用 Express 构建的 Node.js API,但在导出指标时遇到问题,因为它通过 Docker Swarm 在服务器上运行,大约有 6 个副本。我尝试配置 dns_sd_configs,但每个实例都会创建一个新计数器。我想将它们分组以在Grafana中创建图表,例如2XX请求、5XX请求等

我的服务名称是 backend-server,我想从端口 9464 和端点 /api/metrics 抓取数据。我按如下方式配置了 prometheus.yaml:

- job_name: 'dockerswarm'
  dockerswarm_sd_configs:
    - host: unix:///var/run/docker.sock
      role: tasks
  relabel_configs:
    # Only keep containers that should be running.
    - source_labels: [__meta_dockerswarm_task_desired_state]
      regex: running
      action: keep
    # Only keep containers with the specific service name.
    - source_labels: [__meta_dockerswarm_service_name]
      regex: backend-server
      action: keep
    - source_labels: [__meta_dockerswarm_node_address]
      target_label: __address__
      replacement: $1:9464/api/metrics

它没有抛出任何错误,但它没有出现在我的应用程序的目标中......

root@srv:~# docker service ls | grep backend
z5bnz2t5riw8   backend-server            replicated   6/6        xx/xx/backend-server:x           *:3000->3000/tcp

root@srv:~# docker service ls | grep promethe
8zlh5kwfx8ks   prometheus                replicated   1/1        prom/prometheus:v2.52.0          *:9090->9090/tcp

我按如下方式配置它以使其工作。

scrape_configs:
  - job_name: cadvisor
    scrape_interval: 1m
    static_configs:
      - targets:
          - cadvisor:8080
  - job_name: node
    scrape_interval: 1m
    static_configs:
      - targets: ['host.docker.internal:9100', 'victoria.consorcio.local:9100']
  - job_name: backend
    scrape_interval: 15s
    metrics_path: /victoria/api/metrics
    dns_sd_configs:
      - names:
          - 'tasks.backend-server'
        type: 'A'
        port: 9464

但是计数器会为每个实例创建一个。

error_counter_total{instance="10.0.1.15:9464", job="backend", method="POST", status="401"}
error_counter_total{instance="10.0.1.16:9464", job="backend", method="POST", status="401"}
node.js docker prometheus docker-swarm
1个回答
0
投票

Prometheus 容器已成功抓取所有 6 个副本。因此,您可以简单地使用 PromQL 在 Grafana 仪表板中对结果进行聚合和分组。

例如,您可以使用以下查询在 Grafana 中创建一个面板,以对所有节点上 500 个响应代码的计数进行求和:

sum(error_counter_total{job="backend", method="POST", status="500"})
.

您可以在此处查看其他聚合运算符。

© www.soinside.com 2019 - 2024. All rights reserved.