gpt4 book ai didi

kubernetes - 普罗米修斯只刮掉一个 pod

转载 作者:行者123 更新时间:2023-12-03 09:47:48 24 4
gpt4 key购买 nike

我正在使用 Prometheus 从我的 pod 中抓取指标。我感兴趣的应用程序通过一个提供访问的服务复制了几次。 Prometheus 使用此服务来抓取指标。在我的应用程序中,指标设置如下:

import * as Prometheus from 'prom-client';

const httpRequestDurationMicroseconds = new Prometheus.Histogram({
name: 'transaction_amounts',
help: 'Amount',
labelNames: ['amount'],
buckets: [0, 5, 15, 50, 100, 200, 300, 400, 500, 10000],
});

const totalPayments = new Prometheus.Counter('transaction_totals', 'Total payments');

我正在使用 helm 安装 Prometheus 并且刮取配置如下所示:
prometheus.yml:
rule_files:
- /etc/config/rules
- /etc/config/alerts

scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
- job_name: transactions
scrape_interval: 1s
static_configs:
- targets:
- transaction-metrics-service:3001

我可以看到 prometheus 内部的指标,但它似乎只来自一个 pod。例如,在 Prometheus 中,当我查询 transaction_totals 时它给:

enter image description here

我不认为 instance label 可以唯一标识我的 pod。我应该怎么做才能查询所有 pod?

最佳答案

而不是使用 static_config只抓取一台主机,尝试使用 kubernetes_sd_configs Prometheus 提供的 Kubernetes 服务发现。
你的配置文件看起来像这样:

- job_name: 'kubernetes-pods'

kubernetes_sd_configs:
- role: pod

relabel_configs:
# only scrape when annotation prometheus.io/scrape: 'true' is set
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: (.+):(?:\d+);(\d+)
replacement: ${1}:${2}
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name

然后将注释添加到您的 Kubernetes 部署 yaml 配置中,如下所示:
kind: Deployment

...

spec:
template:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "<< PORT OF YOUR CONTAINER >>"


你可以看到一个 full working example here .

关于kubernetes - 普罗米修斯只刮掉一个 pod ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com