apiserver指标分析

红米2年前技术文章1454

概述

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 时需要的参数


相关文章

Flume使用案例之监控端口数据

监控端口数据目标:Flume监控一端Console,另一端Console发送消息,使被监控端实时显示。分步实现:1. 安装telnet工具yum -y install telnet2. 创建Flume...

8.0 新特性-Generated Invisible Primary Key

8.0 新特性-Generated Invisible Primary Key

说明MySQL Innodb 引擎采用的是 IOT(索引组织表)存储方式,主键的重要性就不言而喻。在早期版本用户如果没有显式指定主键,会自动生成隐藏主键 row_id 来组织 B+ 树,隐藏主键 ro...

理解YAML文件

YAML 基础它的基本语法规则如下:大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可# 表示注释,从这个字符一直到行尾,都会...

MySQL优化器特性(二)MRR优化

MySQL优化器特性(二)MRR优化

Index Range Scan索引范围扫描的一般步骤:1、根据where条件,从B+树定位到第一条记录。2、从索引页子节点中获取到行号(rowid),根据rowid回表查询数据。3、使用额外的whe...

oracle手工管理的不完全恢复

一)使用当前控制文件做不完全恢复示例1: 恢复过去某个时间点误删除的table(基于时间点的不完全恢复)前提:在这个状态下先在OS下做一个数据文件和控制文件的冷备。SQL> shutdown i...

Doris性能测试

Doris性能测试

1.性能测试(1)环境信息硬件环境 软件环境l Doris 部署 3BE 3FE;l 内核版本:Linux version 5.5.0-96-genericl 操作系统版本:CentOS Linux...

发表评论    

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