Prometheus - Kubernetes 中角色端点和角色 pod 的服务发现用例

jia*_*wei 5 kubernetes prometheus

在阅读 Prometheus 配置文档和一些示例抓取配置时,我发现了一些带有 role service& role endpoints& role的 kubernetes_sd_configspod

- job_name: kube-state-metrics
  kubernetes_sd_configs:
  - role: endpoints
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_service_label_(.+)
  - action: keep
    regex: prometheus;kube-state-metrics
    source_labels:
    - __meta_kubernetes_namespace
    - __meta_kubernetes_pod_label_component
Run Code Online (Sandbox Code Playgroud)
- honor_labels: true
  job_name: prometheus-pushgateway
  kubernetes_sd_configs:
  - role: service
  relabel_configs:
  - action: keep
    regex: pushgateway
    source_labels:
    - __meta_kubernetes_service_annotation_prometheus_io_probe
Run Code Online (Sandbox Code Playgroud)
- job_name: node-exporter
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)
  - action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    source_labels:
    - __address__
    - __meta_kubernetes_pod_container_port_number
    target_label: __address__
Run Code Online (Sandbox Code Playgroud)

看起来所有这些角色都可以从实例中获取指标,

我们什么时候应该使用端点以及什么时候应该使用 pod?

编辑:我真正的问题是,如果它们都发现了抓取目标,我应该使用哪个角色(端点或 Pod)?

你喜欢哪个?有什么例子吗?

小智 3

Prometheus 中的 Kubernetes SD 有一个所谓的 \xe2\x80\x9croles\xe2\x80\x9d 的集合,它定义了如何收集和显示指标。每个角色都有自己的一组标签,您已经从官方文档中了解了这些标签。您感兴趣的是:

\n
    \n
  • service:将找到并返回每个服务及其端口

    \n
  • \n
  • pod:将找到 pod 并返回其容器作为从中获取指标的目标

    \n
  • \n
  • endpoints:将从每个端点为集群中找到的每个服务创建目标

    \n
  • \n
\n

下面是一些示例:

\n\n

关于您的其他问题:

\n
\n
    \n
  1. 角色服务用作黑盒探测。它不会报告此服务背后有多少后端

    \n
  2. \n
  3. 角色端点用于公开 Web 服务的服务(有一个\n要连接的 http 端点)

    \n
  4. \n
  5. 一般使用pod

    \n
  6. \n
\n
\n

几乎是的。请注意,它pod role会发现所有 Pod 并将其容器公开为目标。

\n

我还强烈建议您查看以下来源:

\n\n

请告诉我这是否有帮助。

\n