K8S体系监控-kube-state-metrics集群资源监控

kube-state-metrics 指标数据

1、kube-state-metrics说明

kube-state-metrics关注于获取k8s各种资源的最新状态,如deployment或者daemonset,之所以没有把kube-state-metrics纳入到metric-server的能力中,是因为他们的关注点本质上是不一样的。metric-server仅仅是获取、格式化现有数据,写入特定的存储,实质上是一个监控系统。而kube-state-metrics是将k8s的运行状况在内存中做了个快照,并且获取新的指标,但他没有能力导出这些指标。

2、Node节点数量监控

PromQL语句:

kube_node_info{
    
    instance="10.42.4.65:8080"}

说明:可以查询到K8S集群对应多少Node节点,可以和实际的节点数比较告警,也可以制作大屏

3、集群节点状态错误

PromQL语句:

kube_node_status_condition{
    
    condition="Ready",status!="true"}==1

说明:监控集群节点状态是否错误,如何值是1就是有错误可以告警

4、集群节状态是否准备好

PromQL语句:

kube_node_status_condition{
    
    condition="Ready",status="true"} == 0

说明:监控集群节点状态是否准备好,有点像kubectl get node获取的状态

4.1、集群节点内存或磁盘资源是否短缺

PromQL语句:

kube_node_status_condition{
    
    condition=~"OutOfDisk|MemoryPressure|DiskPressure",status!="false"}==1
5、集群中存在失败的PVC监控

PromQL语句:

kube_persistentvolumeclaim_status_phase{
    
    phase="Failed"}==1
6、集群中存在启动失败的Pod监控

PromQL语句:

kube_pod_status_phase{
    
    phase=~"Failed|Unknown"}==1
7、最近30分钟内有Pod容器重启监控

PromQL语句:

changes(kube_pod_container_status_restarts_total[30m])
8、节点CPU请求总核数(单位cores)

PromQL语句:

sum(kube_pod_container_resource_requests_cpu_cores{
    
    })

说明:监控容器请求的CPU内核数

9、节点CPU限制总核数

PromQL语句:

sum(kube_pod_container_resource_limits_cpu_cores{
    
    })
10、节点CPU总量

PromQL语句:

sum(kube_node_status_capacity_cpu_cores{
    
    }) 
11、节点内存请求值(bytes 1024/1024/1024后为GB)

PromQL语句:

sum(kube_pod_container_resource_requests_memory_bytes{
    
    })/1024/1024/1024
12、节点内存限制值

PromQL语句:

sum(kube_pod_container_resource_limits_memory_bytes{
    
    })
13、节点内存总量

PromQL语句:

sum(kube_node_status_capacity_memory_bytes{
    
    }/1024/1024/1024)
14、节点不可用监控

PromQL语句:

sum(kube_node_spec_unschedulable{
    
    node=~"$node"})
15、Pod 的生命周期监控

PromQL语句:

kube_pod_status_phase{
    
    phase=~"Pending|Running"} == 1

说明:kube_pod_status_phase可以统计Pod的数量,phase的值:Running(运行中)Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。至少有一个容器仍在运行,或者正处于启动或重启状态。官网对Pod 的生命周期说明:
https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/
PromQL语句:

sum(kube_pod_status_phase{
    
    namespace=~".*", phase="Pending"}==1)

说明:监控悬决的Pods数量;Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间
PromQL语句:

sum(kube_pod_status_phase{
    
    namespace=~".*", phase="Failed"}==1)

说明:监控成功终止的Pods数量;Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止。也就是说,容器以非 0 状态退出或者被系统终止
PromQL语句:

sum(kube_pod_status_phase{
    
    namespace=~".*", phase="Succeeded"}==1)

说明:监控成功终止的Pods数量;Pod 中的所有容器都已成功终止,并且不会再重启
PromQL语句:

sum(kube_pod_status_phase{
    
    namespace=~".*", phase="Unknown"}==1)

说明:监控未知的Pods数量;因为某些原因无法取得 Pod 的状态。这种情况通常是因为与 Pod 所在主机通信失败

16、监控K8S已运行的容器

PromQL语句:

kube_pod_container_status_running{
    
    namespace=~".*"}==1

说明:监控正在运行容器数量;可以绘制K8S集群的容器数量

17、监控K8S等待创建的容器

PromQL语句:

kube_pod_container_status_waiting{
    
    namespace=~".*"}==1

说明:监控K8S等待创建的容器;可以监控容器

18、监控K8S停止的容器

PromQL语句:

kube_pod_container_status_terminated{
    
    namespace=~".*"}==1

说明:监控K8S停止的容器;可以监控容器

19、监控作业中心成功数

PromQL语句:

sum(kube_job_status_succeeded{
    
    namespace=~".*"})

说明:监控作业中心成功数;可以监控作业执行的成功数

20、监控每个部署的副本数

PromQL语句:

sum(kube_deployment_status_replicas{
    
    namespace=~".*"})

说明:kube_deployment_status_replicas 表示每个部署的副本数,这值是Status.Replicas;
kube_deployment_spec_replicas表示部署所需的吊舱数。这值是Spec.Replicas资源定义副本数
kube_deployment_status_replicas_available 正在运行副本数
kube_deployment_status_replicas_updated 更新的副本数
kube_deployment_status_replicas_unavailable 不可用的副本数

21、集群磁盘使用率

PromQL语句:

(sum (node_filesystem_size_bytes{
    
    nodename=~".*"}) - sum (node_filesystem_free_bytes{
    
    nodename=~".*"})) / sum (node_filesystem_size_bytes{
    
    nodename=~".*"})

说明:监控K8S集群磁盘使用率

22、集群监控磁盘卷可用空间的

PromQL语句:

kubelet_volume_stats_available_bytes / kubelet_volume_stats_capacity_bytes * 100 < 10

说明:监控K8S监控磁盘卷可用空间的,小于10就告警

23、集群监控预测磁盘卷7天是否满

PromQL语句:

predict_linear(kubelet_volume_stats_available_bytes[1h], 7 * 24 * 3600) < 0

说明:监控K8S集群监控预测磁盘卷7天是否满,小于0就告警

24、集群监控PV使用状态监控

PromQL语句:

kube_persistentvolume_status_phase{
    
    phase=~"Failed|Pending"} > 0
  • kube_persistentvolume_status_phase:PV使用状态

说明:监控K8S集群监控PV使用状态,大于0就告警

24、集群监控StatefulSet是否down

PromQL语句:

(kube_statefulset_status_replicas_ready / kube_statefulset_status_replicas_current) != 1

说明:监控K8S集群StatefulSet是否down,不于1就告警

25、集群监控HPA动态伸缩异常

PromQL语句:

(sum(kube_hpa_status_condition{
    
    condition="ScalingLimited",status="true"}) by (hpa,namespace)) == 1

说明:监控K8S集群HPA动态伸缩异常,等于1就告警

25、集群监控当前5分钟POD重启的次数

PromQL语句:

rate(kube_pod_container_status_restarts_total[5m]) * 60 * 5 >2

说明:监控K8S集群监控当前5分钟POD重启的次数,大于2就告警

25、集群监控replicaset副本数状态

PromQL语句:

kube_replicaset_spec_replicas != kube_replicaset_status_ready_replicas

说明:监控K8S集群集群监控replicaset副本数状态,不等异常
同理:

kube_deployment_spec_replicas != kube_deployment_status_replicas_available
kube_statefulset_status_replicas_ready != kube_statefulset_status_replicas
kube_deployment_status_observed_generation != kube_deployment_metadata_generation
kube_statefulset_status_observed_generation != kube_statefulset_metadata_generation

猜你喜欢

转载自blog.csdn.net/qq_31555951/article/details/108984023