【问题标题】:Prometheus to scrape K8s Ingress EndpointsPrometheus 抓取 K8s Ingress Endpoints
【发布时间】:2019-06-17 20:59:42
【问题描述】:

我的 Prometheus 实例目前部署在 K8s 集群之外。 我浏览了以下文章: https://www.linkedin.com/pulse/monitoring-kubernetes-prometheus-outside-cluster-steven-acreman

这为通过 api 服务器访问 K8s 服务提供了一个很好的思路。我仍在努力使其工作(遇到证书问题)。

但是,我的问题是我们不能使用 Prometheus 来 scape 入口控制器主机名来抓取指标端点。 或者这甚至是一种标准方法?

我找不到相同的单个文档或实现。 请建议是否有人实现了上述场景或有任何文档。

【问题讨论】:

  • 您能否提供更详细的说明来说明您在寻找什么?什么样的指标?
  • 来自我的 REST API 的指标。我们在集群上部署了多个微服务,我们通过入口通过不同的路径上下文访问它们。我想知道我们是否必须使用 Prometheus“kubernetes_sd_config”并通过 Kube-Proxy 访问服务或直接使用入口端点,即“myvip.com/app1/metrics”或“myvip.com/app2/metrics” " 获取指标

标签: kubernetes prometheus nginx-ingress


【解决方案1】:

我会使用Kubernetes SD configurations,并利用角色来发现目标。

Kubernetes SD 配置允许从 Kubernetes' REST API 检索抓取目标,并始终与集群状态保持同步。

你可以使用角色类型endpoints:

endpoints 角色从列出的服务端点发现目标。对于每个端点地址,每个端口都会发现一个目标。如果端点由 pod 支持,则该 pod 的所有其他容器端口(未绑定到端点端口)也会被发现为目标。

可用的元标签:

  • __meta_kubernetes_namespace:端点对象的命名空间。
  • __meta_kubernetes_endpoints_name:端点对象的名称。
  • 对于直接从端点列表中发现的所有目标(未从底层 pod 额外推断的目标),附加以下标签:
    • __meta_kubernetes_endpoint_hostname:端点的主机名。
    • __meta_kubernetes_endpoint_node_name:托管端点的节点的名称。
    • __meta_kubernetes_endpoint_ready:设置为truefalse 表示端点的就绪状态。
    • __meta_kubernetes_endpoint_port_name:端点端口的名称。
    • __meta_kubernetes_endpoint_port_protocol:端点端口的协议。
    • __meta_kubernetes_endpoint_address_target_kind:端点地址目标的种类。
    • __meta_kubernetes_endpoint_address_target_name:端点地址目标的名称。
  • 如果端点属于服务,则附加role: service 发现的所有标签。
  • 对于由 pod 支持的所有目标,都附加了 role: pod 发现的所有标签。

或角色类型ingress

ingress 角色为每个入口的每个路径发现一个目标。这对于入口的黑盒监控通常很有用。地址将设置为入口规范中指定的主机。

可用的元标签:

  • __meta_kubernetes_namespace:入口对象的命名空间。
  • __meta_kubernetes_ingress_name:入口对象的名称。
  • __meta_kubernetes_ingress_label_<labelname>:来自入口对象的每个标签。
  • __meta_kubernetes_ingress_labelpresent_<labelname>: true 用于入口对象的每个标签。
  • __meta_kubernetes_ingress_annotation_<annotationname>:来自入口对象的每个注释。
  • __meta_kubernetes_ingress_annotationpresent_<annotationname>: true 用于入口对象的每个注释。
  • __meta_kubernetes_ingress_scheme:入口协议方案,https 如果设置了 TLS 配置。默认为http
  • __meta_kubernetes_ingress_path:入口规范的路径。默认为/

如果您想查看为 Kubernetes 配置 Prometheus 的详细示例,请参阅this file

您也可能对第 3 方 Prometheus Operator 感兴趣,它可以在 Kubernetes 之上自动设置 Peometheus。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2019-07-29
    • 2020-11-06
    • 2019-03-24
    • 2020-01-31
    • 1970-01-01
    相关资源
    最近更新 更多