searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Prometheus基于k8s的自动发现

2023-10-07 06:05:22
63
0

prometheus基于k8s的自动发现方式主要支持以下5种角色(role):node、service、endpoint、pod、ingress。在实际部署中经常用到的是node、endpoints、pod三种,其中node适用于与节点相关的资源监控,比如node-exporter;pod和endpoints适用于直接采集pod实例提供的监控数据。

下面将具体说明node,endpoints,pod三种角色的可用label并举例说明其用法:

node

      可用标签

  •  __meta_kubernetes_node_name: node节点的名称,可通过 kubectl get node查看
  • __meta_kubernetes_node_label_<labelname>: k8s中node节点的标签.<labelname>代表标签名称,可通过kubectl get node --show-labels查看
  • __meta_kubernetes_node_labelpresent_<labelname>: 标签存在则为true.<labelname>代表标签名称
  • __meta_kubernetes_node_annotation_<annotationname>: k8s中node节点的注解.<annotationname>代表注解名称
  • __meta_kubernetes_node_address_<address_type>: 不同类型的node节点地址
  • instance: 从apiserver获取到的节点名称

      举例:

     

      在该例子中,利用了gpu节点的label:gpu-node="true"做了过滤,action为keep,实现了只采集gpu节点的node-exporter指标,可通过prometheus的接口(/api/v1/targets?state=active)查看过滤出来的targets

pod

      可用标签

  • __meta_kubernetes_namespace: pod所在的命名空间
  • __meta_kubernetes_pod_name: pod的名称
  • __meta_kubernetes_pod_ip: pod的ip
  • __meta_kubernetes_pod_label_<labelname>: pod的标签
  • __meta_kubernetes_pod_annotation_<annotationname>: pod的注解
  • __meta_kubernetes_pod_annotationpresent_<annotationname>: 注解存在则为true
  • __meta_kubernetes_pod_container_init: 如果容器是InitContainer,则为true
  • __meta_kubernetes_pod_container_name: 容器的名称
  • __meta_kubernetes_pod_container_port_name: 容器的端口名称
  • __meta_kubernetes_pod_container_port_number: 容器的端口号
  • __meta_kubernetes_pod_container_port_protocol: 容器的端口协议
  • __meta_kubernetes_pod_ready: pod的就绪状态,true或false。
  • __meta_kubernetes_pod_phase: pod的生命周期状态.Pending, Running, Succeeded, Failed or Unknown
  • __meta_kubernetes_pod_node_name: pod所在node节点名称
  • __meta_kubernetes_pod_host_ip: pod所在node节点ip
  • __meta_kubernetes_pod_controller_kind: pod控制器的类型ReplicaSet ,DaemonSet,Job,StatefulSet…
  • __meta_kubernetes_pod_uid: pod的uid
  • __meta_kubernetes_pod_controller_name: pod控制器的名称 

       举例

     

     其中__metrics_path__默认为/metrics,在该例子中替换成了/metric

endpoints

       可用标签

  • __meta_kubernetes_namespace : ep对象所在的命名空间
  • __meta_kubernetes_endpoints_name : ep的名称

     若endpoint是一个service,则会带上service的所有标签

  • __meta_kubernetes_namespace: service所在的命名空间
  • __meta_kubernetes_service_annotation_<annotationname>: k8s中service的注解
  • __meta_kubernetes_service_annotationpresent_<annotationname>: 注解存在则为true
  • __meta_kubernetes_service_cluster_ip: k8s中service的clusterIP
  • __meta_kubernetes_service_external_name: k8s中service的external_name
  • __meta_kubernetes_service_label_<labelname>: k8s中service的标签
  • __meta_kubernetes_service_labelpresent_<labelname>: 标签存在则为true
  • __meta_kubernetes_service_name: k8s中service的名称
  • __meta_kubernetes_service_port_name: k8s中service的端口
  • __meta_kubernetes_service_port_protocol: k8s中service的端口协议
  • __meta_kubernetes_service_type: k8s中service的类型  

    举例

     

        在该例子中,利用了service的annotation进行targets过滤。

0条评论
0 / 1000
莫****森
1文章数
0粉丝数
莫****森
1 文章 | 0 粉丝
莫****森
1文章数
0粉丝数
莫****森
1 文章 | 0 粉丝
原创

Prometheus基于k8s的自动发现

2023-10-07 06:05:22
63
0

prometheus基于k8s的自动发现方式主要支持以下5种角色(role):node、service、endpoint、pod、ingress。在实际部署中经常用到的是node、endpoints、pod三种,其中node适用于与节点相关的资源监控,比如node-exporter;pod和endpoints适用于直接采集pod实例提供的监控数据。

下面将具体说明node,endpoints,pod三种角色的可用label并举例说明其用法:

node

      可用标签

  •  __meta_kubernetes_node_name: node节点的名称,可通过 kubectl get node查看
  • __meta_kubernetes_node_label_<labelname>: k8s中node节点的标签.<labelname>代表标签名称,可通过kubectl get node --show-labels查看
  • __meta_kubernetes_node_labelpresent_<labelname>: 标签存在则为true.<labelname>代表标签名称
  • __meta_kubernetes_node_annotation_<annotationname>: k8s中node节点的注解.<annotationname>代表注解名称
  • __meta_kubernetes_node_address_<address_type>: 不同类型的node节点地址
  • instance: 从apiserver获取到的节点名称

      举例:

     

      在该例子中,利用了gpu节点的label:gpu-node="true"做了过滤,action为keep,实现了只采集gpu节点的node-exporter指标,可通过prometheus的接口(/api/v1/targets?state=active)查看过滤出来的targets

pod

      可用标签

  • __meta_kubernetes_namespace: pod所在的命名空间
  • __meta_kubernetes_pod_name: pod的名称
  • __meta_kubernetes_pod_ip: pod的ip
  • __meta_kubernetes_pod_label_<labelname>: pod的标签
  • __meta_kubernetes_pod_annotation_<annotationname>: pod的注解
  • __meta_kubernetes_pod_annotationpresent_<annotationname>: 注解存在则为true
  • __meta_kubernetes_pod_container_init: 如果容器是InitContainer,则为true
  • __meta_kubernetes_pod_container_name: 容器的名称
  • __meta_kubernetes_pod_container_port_name: 容器的端口名称
  • __meta_kubernetes_pod_container_port_number: 容器的端口号
  • __meta_kubernetes_pod_container_port_protocol: 容器的端口协议
  • __meta_kubernetes_pod_ready: pod的就绪状态,true或false。
  • __meta_kubernetes_pod_phase: pod的生命周期状态.Pending, Running, Succeeded, Failed or Unknown
  • __meta_kubernetes_pod_node_name: pod所在node节点名称
  • __meta_kubernetes_pod_host_ip: pod所在node节点ip
  • __meta_kubernetes_pod_controller_kind: pod控制器的类型ReplicaSet ,DaemonSet,Job,StatefulSet…
  • __meta_kubernetes_pod_uid: pod的uid
  • __meta_kubernetes_pod_controller_name: pod控制器的名称 

       举例

     

     其中__metrics_path__默认为/metrics,在该例子中替换成了/metric

endpoints

       可用标签

  • __meta_kubernetes_namespace : ep对象所在的命名空间
  • __meta_kubernetes_endpoints_name : ep的名称

     若endpoint是一个service,则会带上service的所有标签

  • __meta_kubernetes_namespace: service所在的命名空间
  • __meta_kubernetes_service_annotation_<annotationname>: k8s中service的注解
  • __meta_kubernetes_service_annotationpresent_<annotationname>: 注解存在则为true
  • __meta_kubernetes_service_cluster_ip: k8s中service的clusterIP
  • __meta_kubernetes_service_external_name: k8s中service的external_name
  • __meta_kubernetes_service_label_<labelname>: k8s中service的标签
  • __meta_kubernetes_service_labelpresent_<labelname>: 标签存在则为true
  • __meta_kubernetes_service_name: k8s中service的名称
  • __meta_kubernetes_service_port_name: k8s中service的端口
  • __meta_kubernetes_service_port_protocol: k8s中service的端口协议
  • __meta_kubernetes_service_type: k8s中service的类型  

    举例

     

        在该例子中,利用了service的annotation进行targets过滤。

文章来自个人专栏
监控技术
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0