apiserver指标分析

红米2年前技术文章1328

概述

kube-apiserver 是集群所有请求的入口,指标的分析可以反应集群的健康状态。

Apiserver 的指标可以分为以下几大类:

  • 请求速率和延迟

  • 控制器队列的性能

  • etcd 的性能

  • 进程状态:文件系统、内存、CPU

  • golang 程序的状态:GC、进程、线程

基于 RED 方法,评估 apiserver 服务的一些指标:

  • Rate 速率:每秒的请求数。

  • Error 错误:失败的那些请求的数量。

  • Duration 持续时间:这些请求所花费的时间

请求速率和延迟

Rate 速率

sum(rate(apiserver_request_count[5m])) by (resource, subresource, verb)

该查询会列出Kubernetes资源各种操作的五分钟的速率。操作有:WATCH,PUT,POST,PATCH,LIST,GET,DELETE和CONNECT

Error 错误

rate(apiserver_request_count{code=~"^(?:5..)$"}[5m]) / rate(apiserver_request_count[5m])

此查询获取5分钟内错误率与请求率的比率

Duration 请求时间

histogram_quantile(0.9, sum(rate(apiserver_request_latencies_bucket[5m]))
by (le, resource, subresource, verb) ) / 1e+06

查看 90%情况下请求的时间分布

队列情况

所有资源的请求都会被 apiserver 中的 controller 处理,controller 维护了队列,队列的一些指标可以反应资源处理的速度等指标

以apiserver_admission_controller为例:

  • apiserver_admission_controller_admission_duration_seconds:准入控制器的处理时间 以秒为单位),通过名称进行标识,并针对每个操作以及API资源和类型(验证或准入)进行细分。

  • apiserver_admission_controller_admission_latencies_milliseconds 延迟*

ETCD 的指标

API Server对etcd 的读写有缓存

  • etcd_helper_cache_entry_count —缓存中的元素数。

  • etcd_helper_cache_hit_count —缓存命中计数。

  • etcd_helper_cache_miss_count —缓存未命中计数。

  • etcd_request_cache_add_latencies_summary —将条目添加到缓存的时间(以微秒为单位)。

程序指标

apiserver 是 go 程序,目前所有 prometheus 采集的指标都会包含 golang 程序指标,如:

  • go_gc_duration_seconds 程序 GC 的耗时

  • go_gc_duration_seconds_count 程序 GC 的次数

  • go_gc_duration_seconds_quantile 程序 GC 的耗时分布

  • go_goroutines goroutines信息

  • go_info go环境信息

request

  • apiserver_request 请求信息

  • apiserver_request_count 请求次数

  • apiserver_request_duration_seconds 请求耗时

response

  • apiserver_response_sizes 每个组,版本,动作,资源,子资源,范围和组件的响应大小分布(以字节为单位)

  • apiserver_response_sizes_bucket 区间分布

  • apiserver_response_sizes_count 返回的数量

audit

  • apiserver_audit_event: 审计事件

  • apiserver_audit_requests_rejected:审核拒绝的请求

参考

访问 apiserver 的 metric 时需要的参数


相关文章

cattle-cluster-agent产生的僵尸进程处理

cattle-cluster-agent产生的僵尸进程处理

现象zabbix告警服务器存在僵尸进程排查步骤1、登陆服务器使用top命令,确认下僵尸进程数量。2、使用ps -aux | grep Z命令,过滤出僵尸进程PID。3、根据查到的PID,借助ps命令,...

Spark接入Kerberos交互式命令窗口提交任务

Spark接入Kerberos交互式命令窗口提交任务

1. Spark-shell首先需要使用有操作hdfs文件权限的keytab用户认证,认证上之后可以通过spark-shell交互命令行窗口执行任务如果集成了Ranger组件,如果创建的普通用户没有在...

MySQL 闪回技术总结

MySQL 闪回技术总结

一、闪回技术汇总1. 第一类为以 patch 形式集成到官方工具 mysqlbinlog 中,阿里彭立勋 2012 年曾提交过相关工具;2. 第二类是独立工具,通过伪装 Slave 拉取 Binlog...

MySQL运维实战(5.4) MySQL元数据乱码

表结构Comment乱码如果DDL实际编码和character_set_client设置不一致,也会引起乱码。$ cat test_comment_utf8.sql create...

 oracle11g打补丁31718723报错Operation not permitted

oracle11g打补丁31718723报错Operation not permitted

oracle11g 在打gi补丁的时候报错如下:原因:参考mos(Doc ID 2668094.1)可知因为Linux/Unix平台上,安装后一些Oracle可执行文件的权限需要修改成root。这是以...

压测实操--kafka broker压测方案

压测实操--kafka broker压测方案

环境信息:操作系统centos7.9,kafka版本为hdp集群中的2.0版本。kafka broker参数num.replica.fetchers:副本抓取的相应参数,如果发生ISR频繁进出的情况或...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。