我的Prometheus实例当前已部署到K8s集群的外部。 我看了下面的文章: https://www.linkedin.com/pulse/monitoring-kubernetes-prometheus-outside-cluster-steven-acreman
,这为通过api服务器访问K8s服务提供了一个很好的主意。我仍在尝试使其工作(卡有证书问题)。
但是,我的问题是,我们不能使用Prometheus代替入口控制器主机名来刮擦度量标准端点。 还是那是一种标准方法?
我找不到相同的单个文档或实现。 请建议是否有人实现了上述方案或上面有任何文档。
答案 0 :(得分:1)
我会使用Kubernetes SD configurations,并冒险使用各种角色来发现目标。
Kubernetes SD配置允许从Kubernetes' REST API检索抓取目标,并始终与集群状态保持同步。
您可以使用角色类型endpoints
:
endpoints
角色从列出的服务端点发现目标。对于每个端点地址,每个端口都发现一个目标。如果端点由Pod支持,则该Pod的所有其他未绑定到端点端口的容器端口也会被发现为目标。可用的元标签:
__meta_kubernetes_namespace
:端点对象的名称空间。__meta_kubernetes_endpoints_name
:端点对象的名称。- 对于直接从端点列表中发现的所有目标(未从基础容器中另外推断出的那些目标),将附加以下标签:
__meta_kubernetes_endpoint_hostname
:端点的主机名。__meta_kubernetes_endpoint_node_name
:托管端点的节点的名称。__meta_kubernetes_endpoint_ready
:将端点的就绪状态设置为true
或false
。__meta_kubernetes_endpoint_port_name
:端点端口的名称。__meta_kubernetes_endpoint_port_protocol
:端点端口的协议。__meta_kubernetes_endpoint_address_target_kind
:端点地址目标的种类。__meta_kubernetes_endpoint_address_target_name
:端点地址目标的名称。- 如果端点属于服务,则会附加
role: service
发现的所有标签。- 对于吊舱支持的所有目标,将附加
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
:入口协议方案,如果设置了TLS配置,则为https
。默认为http
。__meta_kubernetes_ingress_path
:来自入口规范的路径。默认为/
。
如果您想查看为Kubernetes配置Prometheus的详细示例,请参阅this file。
您可能还会对第三方Prometheus Operator感兴趣,该第三方可自动在Kubernetes上建立Peometheus。