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