kube-state-metrics常见监控指标&Prometheus内置函数

pod

kube_pod_info # 有关pod的信息。
kube_pod_start_time # pod的unix时间戳记中的开始时间。
kube_pod_completion_time #pod的unix时间戳记中的完成时间。
kube_pod_owner # 有关Pod所有者的信息。
kube_pod_labels # Kubernetes标签转换为Prometheus标签。
kube_pod_status_phase # Pod当前阶段。
kube_pod_status_ready # 描述容器是否准备好处理请求。
kube_pod_status_scheduled # 描述pod的调度过程的状态。
kube_pod_container_info # 有关容器中container的信息。
kube_pod_container_status_waiting # 描述容器当前是否处于等待状态。
kube_pod_container_status_waiting_reason # 描述容器当前处于等待状态的原因。
kube_pod_container_status_running # 描述容器当前是否处于运行状态。
kube_pod_container_status_terminated # 描述容器当前是否处于终止状态。
kube_pod_container_status_terminated_reason # 描述容器当前处于终止状态的原因。
kube_pod_container_status_last_terminated_reason # 描述容器处于终止状态的最后原因。
kube_pod_container_status_ready # Describes whether the containers readiness check succeeded.
kube_pod_container_status_restarts_total # 每个容器的容器重新启动次数。
kube_pod_container_resource_requests # 容器请求的请求资源数。
kube_pod_container_resource_limits # 容器请求的限制资源数量。
kube_pod_overhead
kube_pod_created # Unix创建时间戳。
kube_pod_deletion_timestamp # Unix删除时间戳
kube_pod_restart_policy # 描述此pod使用的重新启动策略。
kube_pod_init_container_info # 有关Pod中init容器的信息。
kube_pod_init_container_status_waiting # ,描述初始化容器当前是否处于等待状态。
kube_pod_init_container_status_waiting_reason # Describes the reason the init container is currently in waiting state.
kube_pod_init_container_status_running # 描述初始化容器当前是否处于运行状态。
kube_pod_init_container_status_terminated # 描述初始化容器当前是否处于终止状态。
kube_pod_init_container_status_terminated_reason # 描述初始化容器当前处于终止状态的原因。
kube_pod_init_container_status_last_terminated_reason # 描述初始化容器处于终止状态的最后原因。
kube_pod_init_container_status_ready # 描述初始化容器准备情况检查是否成功。
kube_pod_init_container_status_restarts_total  #Counter类型,初始化容器的重新启动次数。    
kube_pod_init_container_resource_limits # 初始化容器请求的限制资源数。
kube_pod_spec_volumes_persistentvolumeclaims_info # 有关Pod中持久卷声明卷的信息。
kube_pod_spec_volumes_persistentvolumeclaims_readonly # 描述是否以只读方式安装了持久卷声明。
kube_pod_status_reason # pod状态原因
kube_pod_status_scheduled_time # Pod移至计划状态时的Unix时间戳
kube_pod_status_unschedulable # 描述pod的unschedulable状态。

Deployment

kube_deployment_status_replicas  #deployment包含的副本个数
kube_deployment_status_replicas_available  #deployment的可用副本数
kube_deployment_status_replicas_unavailable  #deployment中不可用副本的数量
kube_deployment_status_replicas_updated  #deployment的更新副本数
kube_deployment_status_observed_generation  #deployment控制器观察到的生成
kube_deployment_status_condition  #部署的当前状态condition
kube_deployment_spec_replicas  #deployment所需的Pod数
kube_deployment_spec_paused  #deployment是否暂停,并且deployment控制器不会处理。
kube_deployment_spec_strategy_rollingupdate_max_surge  #滚动更新deployment期间的最大不可用副本数。
kube_deployment_metadata_generation  #代表期望状态的特定生成的序列号
kube_deployment_labels  #Kubernetes标签转换为Prometheus标签
kube_deployment_created  #Unix创建时间戳

StatefulSet

kube_statefulset_status_replicas # StatefulSet的副本数。
kube_statefulset_status_replicas_current # StatefulSet的当前副本数。
kube_statefulset_status_replicas_ready #StatefulSet的就绪副本数。
kube_statefulset_status_replicas_updated #StatefulSet的更新副本数。
kube_statefulset_status_observed_generation #StatefulSet控制器观察到的生成。
kube_statefulset_replicas #StatefulSet所需的pod数。
kube_statefulset_metadata_generation #表示StatefulSet所需状态的特定生成的序列号。
kube_statefulset_created #Unix创建时间戳。
kube_statefulset_labels #Kubernetes标签转换为Prometheus标签。
kube_statefulset_status_current_revision #指示用于按顺序[0,currentReplicas)生成Pod的StatefulSet的版本。
kube_statefulset_status_update_revision #指示用于按顺序[replicas-updatedReplicas,replicas]生成Pod的StatefulSet的版本

Endpoint

kube_endpoint_address_not_ready  #endpoint中not ready的addresses数
kube_endpoint_address_available  #endpoint中可用的addresses数
kube_endpoint_info  #有关endpoint的信息
kube_endpoint_labels  #Kubernetes标签转换为Prometheus标签
kube_endpoint_created  #Unix创建时间戳

Node

kube_node_info # 有关群集节点的信息。
kube_node_labels # Kubernetes标签转换为Prometheus标签。
kube_node_role # 集群节点的角色。
kube_node_spec_unschedulable # 节点是否可以调度新的Pod。
kube_node_spec_taint # 群集节点的污点。
kube_node_status_capacity # 节点不同资源的容量。
kube_node_status_allocatable # 可用于调度的节点的不同资源的可分配资源。
kube_node_status_condition # 群集节点的状况。
kube_node_created # Unix创建时间戳。

Service

kube_service_info # 有关service的信息。
kube_service_labels # Kubernetes标签转换为Prometheus标签。
kube_service_created # Unix创建时间戳。
kube_service_spec_type # Type about service.
kube_service_spec_external_ip # 服务外部IP。 每个IP一个组。
kube_service_status_load_balancer_ingress # 服务负载均衡器入口状态

Secret

kube_secret_info # 有关secret的信息。
kube_secret_type # Type about secret.
kube_secret_labels # Kubernetes标签转换为Prometheus标签。
kube_secret_created # Unix创建时间戳。
kube_secret_metadata_resource_version # 代表secret特定版本的资源版本。

DaemonSet

kube_daemonset_created  # Unix创建时间戳
kube_daemonset_status_current_number_scheduled  # 运行至少一个且应该运行的守护程序容器的节点数。
kube_daemonset_status_desired_number_scheduled  # 应该运行守护程序容器的节点数。
kube_daemonset_status_number_available  # 应该运行守护程序容器并具有一个或多个守护程序容器正在运行并且可用的节点数
kube_daemonset_status_number_misscheduled  # 运行守护程序容器但不应该运行的节点数。
kube_daemonset_status_number_ready  # 应该运行守护程序容器并已运行一个或多个守护程序容器并准备就绪的节点数。
kube_daemonset_status_number_unavailable  # 应该运行守护程序容器且没有任何守护程序容器正在运行并且可用的节点数
kube_daemonset_updated_number_scheduled  # 正在运行更新的守护程序pod的节点总数
kube_daemonset_metadata_generation  # 代表所需状态的特定生成的序列号。
kube_daemonset_labels  # Kubernetes标签转换为Prometheus标签。

内置函数

瞬时数据 (Instant vector): 包含一组时序,每个时序只有一个点,例如:http_requests_total

区间数据 (Range vector): 包含一组时序,每个时序有多个点,例如:http_requests_total[5m]

纯量数据 (Scalar): 纯量只有一个数字,没有时序,例如:count(http_requests_total)

irate与rate

irate和rate都会用于计算某个指标在一定时间间隔内的变化速率。

但是它们的计算方法有所不同:

irate取的是在指定时间范围内的最近两个数据点来算速率;

irate适合快速变化的计数器(counter)

rate取的是在指定时间范围内的所有数据点,算出一组速率,然后取平均值作为结果。

rate适合缓慢变化的计数器(counter)

如下计算QPS:

sum(irate(http_server_requests_seconds_count{namespace=”cpaas-prod”}[5m])):用irate计算QPS

计算方式:(v[-1] – v[0]) / (time(v[-1]) – time(v[0]))

使用rate计算快速变化的样本平均增长率时,容易陷入长尾问题,因为它用平均值将峰值削平了,无法反映时间口内样本数据的快速变化。与rate类似,irate同样可以计算counter的平均增长率,但其反映出的是瞬时增长率。

sum(rate(http_server_requests_seconds_count{namespace=”cpaas-prod”}[5m])) :用rate计算QPS

计算方式:(lastValue – firstValue) / Range

经过计算后,就可以得到QPS,即每秒的请求数

经过如下两个图表的对比,明显发现,irate计算出的图表比较尖锐,rate计算出的比较平滑

聚合函数:sum sum (求和)

上面第二点计算QPS的时候,其实已经用到了sum函数:sum(irate(http_server_requests_seconds_count{namespace=”cpaas-prod”}[5m]))

先看不使用sum的情况:irate(http_server_requests_seconds_count{namespace=”cpaas-prod”}[5m])

如下图所示:查出的是每个uri的qps,我们需要计算的是应用总的QPS,因此要用sum,即把所有QPS加起来

根据某个标签求和: sum by (channelId)(http_server_requests_seconds_count)

按照用户算qps

等价于

sum(http_server_requests_seconds_count) by (channelId)

absent absent(v instant-vector) :传入一个瞬时非空向量则返回空向量,否则返回不带名称值为1的指标,用来监控空数据的情况,即nodata监控

absent(http_0000_requests_seconds_count{namespace=”cpaas-prod”})

delta与idelta delta(v range-vector) :参数是一个区间向量,返回一个瞬时向量。它计算一个区间向量 v 的第一个元素和最后一个元素之间的差值 和张羽看了prometheus的实现代码,可以简单理解为就是最后一个点的值减去第一个点的值。 但是实际上真实场景中,第一个点和最后一个点不可能每次都正好每和时间区间的第一个时间点和最后一个时间点相吻合,所以prometheus在代码中做了大量的计算,由于涉及到很多除法运算,因此结果一般都是小数 idelta(v range-vector) :参数是一个区间向量, 返回一个瞬时向量。它计算最新的 2 个样本值之间的差值。(当区间内仅有一个向量时无返回值)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇