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 |