8

我正在尝试使用 prometheus kubernetes 抓取 pod 级别的信息。这是我正在使用的配置:

 - job_name: 'kubernetes-pods'

  kubernetes_sd_configs:
  - api_servers:
    - 'https://kubernetes.default'
    role: pod
  relabel_configs:
  - 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_pod_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_pod_name]
    action: replace
    target_label: kubernetes_pod_name

但我没有看到有关 grafana 的任何信息。我需要对我的应用程序进行任何更改吗? 快照

4

3 回答 3

6

使用该配置,第一个操作要求使用prometheus.io/scrape=true. 您是否在相关的 pod 上设置了该注释?

于 2017-01-18T18:08:17.517 回答
1

意识到,

这里有一个配置错误: __meta_kubernetes_pod_namespace does not exist and should be __meta_kubernetes_namespace

此致,

巴特

于 2017-07-04T14:44:12.290 回答
0

你应该确保你的 Grafana 图表使用的数据确实存在于 Prometheus 中。

我假设您使用的是这个默认的 Grafana 仪表板

您的 Grafana 查询可能如下所示:

sum (container_memory_working_set_bytes{pod_name=~"^$Pod$"}) / sum (machine_memory_bytes{kubernetes_io_hostname=~"^$Node$"}) * 100

因此,您必须确保container_memory_working_set_bytes记录该指标并且它有一个 field pod_name

如果没有记录指标,您必须在 prometheus 的日志中进行一些挖掘,以检查它是否能够抓取 API。

如果指标存在但标签错误,您可以在 Grafana 中调整查询或relabel_config在 Prometheus 中添加另一个。见官方文档

于 2017-01-18T19:30:44.213 回答