k8s组件监控指标

Counter(计数器):

  • Counter 类型代表一个累积的指标数据,其单调递增,只增不减。在应用场景中,像是请求次数、错误数量等等,就非常适合用 Counter 来做指标类型,另外 Counter 类型,只有在被采集端重新启动时才会归零。

Gauge(仪表盘):

  • Gauge 类型代表一个可以任意变化的指标数据,其可增可减。在应用场景中,像是 Go 应用程序运行时的 Goroutine 的数量就可以用该类型来表示,在系统中统计 CPU、Memory 等等时很常见,而在业务场景中,业务队列的数量也可以用 Gauge 来统计,实时观察队列数量,及时发现堆积情况,因为其是浮动的数值,并非固定的,侧重于反馈当前的情况

Histogram(累积直方图):

  • Histogram 类型将会在一段时间范围内对数据进行采样(通常是请求持续时间或响应大小等等),并将其计入可配置的存储桶(bucket)中,后续可通过指定区间筛选样本,也可以统计样本总数。

Summary(摘要):

  • Summary 类型将会在一段时间范围内对数据进行采样,但是与 Histogram 类型不同的是 Summary 类型将会存储分位数(在客户端进行计算),而不像 Histogram 类型,根据所设置的区间情况统计存储。提供三种摘要指标: 样本值的分位数分布情况,所有样本值的大小总和,样本总数

k8s 核心组建监控项

组建名称

kube-controller-manager

描述 监控项 类型 告警指标 单位 触发条件 告警等级
该容器服务累计消耗的用户CPU时间 负载较高 container_cpu_user_seconds_total counter sum(rate(container_cpu_user_seconds_total{pod=~"kube-controller-manager.*",container_name!="POD"}[5m]))by(pod) >5s P2
已经申请的内存+工作集使用的内存 container_memory_usage_bytes gauge sum(rate(container_memory_usage_bytes{pod=~"kube-controller-manager.*",container_name!="POD"}[5m])/1024/1024)by(pod) MB >10M P3
工作队列处理的添加总数 workqueue_adds_total counter sum(rate(workqueue_adds_total{job=~"kubernetes-controller-manager"}[5m]))
工作队列的当前深度 表示当前活动的协调循环的数量。这个数在大多数情况下应该保持接近于零。任何持续时间高于 0 的值都表示协调循环卡住了 workqueue_depth gauge workqueue_depth{job=~"kubernetes-controller-manager"} >1 P1
工作队列延迟: 执行各种操作以维持集群所需状态所需的时间。项目在被请求之前在工作队列中停留的时间 workqueue_queue_duration_seconds_bucket

Histogram

histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job="kubernetes-controller-manager"}[5m])) by(le)) >5 P2

kube-scheduler

描述 监控项 类型 告警指标 单位 触发条件 告警等级
该容器服务累计消耗的用户(user)CPU时间 container_cpu_user_seconds_total counter sum(rate(container_cpu_user_seconds_total{pod=~"kube-scheduler.*",container_name!="POD"}[5m]))by(pod) >1s,>5s,>10s P3,P2,P1
已经申请的内存+工作集使用的内存 container_memory_usage_bytes gauge sum(rate(container_memory_usage_bytes{pod=~"kube-scheduler.*",container_name!="POD"}[5m])/1024/1024)by(pod) MB >10M,>20M>40M P3,P2,P1
pending pod数量

scheduler_pending_pods

Histogram

sum(scheduler_pending_pods{job="kubernetes-scheduler"})by(queue) >5,>10,>30 P3,P2,P1
binding y延时 scheduler_binding_duration_seconds_count counter sum(rate(scheduler_binding_duration_seconds_count{job="kubernetes-scheduler"}[5m])) >1 P1
volume速率 scheduler_volume_scheduling_duration_seconds_count counter sum(rate(scheduler_volume_scheduling_duration_seconds_count{job="kubernetes-scheduler"}[5m])) >1 P2
rest client请求时延 rest_client_request_duration_seconds_bucket counter histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{job="kubernetes-scheduler"}[5m])) by (verb, url, le)) >1 P

kube-apiserver

描述 监控项 类型 告警指标 单位 触发条件 告警等级
该容器服务累计消耗的用户(user)CPU时间 container_cpu_user_seconds_total counter sum(rate(container_cpu_user_seconds_total{pod=~"kube-apiserver.*",container_name!="POD"}[5m]))by(pod) >1s,>5s,>10s P3,P2,P1
已经申请的内存+工作集使用的内存 container_memory_usage_bytes gauge sum(rate(container_memory_usage_bytes{pod=~"kube-apiserver.*",container_name!="POD"}[5m])/1024/1024)by(pod) MB >150M,>300M>600M P3,P2,P1
请求耗时

apiserver_request_duration_seconds_sum

gauge sum(rate(apiserver_request_duration_seconds_sum{job="apiserver"}[5m]))
错误请求(4xx,5xx) apiserver_request_total gauge sum(rate(apiserver_request_total{job="apiserver",code=~"[45].."}[5m]))by (resource,subresource,verb) /sum(rate(apiserver_request_total{job="apiserver"}[5m])) by (resource,subresource,verb) > 0.05 P2
待处理的请求数量 apiserver_current_inflight_requests gauge sum(apiserver_current_inflight_requests{job="apiserver"}) >200,>400 P2,P1
工作队列处理的添加总数 workqueue_adds_total counter sum(rate(workqueue_adds_total{job="apiserver"}[5m])) > 100 P2
项目在被请求之前在工作队列中停留的时间(以秒为单位)。 workqueue_queue_duration_seconds_bucket counter

histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{ job="apiserver"}[5m])) by (le))

>0.5s P1

etcd

描述 监控项 类型 告警指标 单位 触发条件 告警等级
是否有主 etcd_server_has_leader counter sum(etcd_server_has_leader{job="etcd"}) =2,=1,=0 P2,P1,P0
etcd的磁盘存储总共占用的空间 etcd_mvcc_db_total_size_in_bytes counter sum(etcd_mvcc_db_total_size_in_bytes{job="etcd"}/1024/1024/1024) by (instance) GB 200 P3
etcd 磁盘 fsync 持续时间 etcd_disk_wal_fsync_duration_seconds_bucket counter

histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket{job="etcd"}[5m])) by (etcd, le))

>0.05s,>0.1s,>0.5s P3,P2,P1
etcd磁盘提交写入延时 etcd_disk_backend_commit_duration_seconds_bucket counter

histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job="etcd"}[5m])) by (etcd, le))

>0.25s,>0.5s>1s P3,P2,P1

参考:

Kubernetes API server — Splunk Observability Cloud documentation

Kubernetes API server metrics

报警规则说明 - Prometheus监控 - 阿里云

你可能感兴趣的:(kubernetes,kubernetes,Prometheus)