Karmada Webhook Prometheus 指标详解
目录
概述
Karmada Webhook 是 Karmada 多集群管理系统中的重要组件,负责处理准入控制(Admission Control)请求。本文档详细解释了 Karmada Webhook 组件暴露的 Prometheus 监控指标,帮助运维人员更好地监控和维护 Karmada 系统。
指标分类
1. 证书监控指标
certwatcher_read_certificate_errors_total
- 类型: Counter
- 描述: 证书读取错误总数
- 用途: 监控证书读取过程中的错误情况
- 标签: 无
- 监控建议: 该指标应保持为 0,如果出现增长需要立即检查证书配置
certwatcher_read_certificate_total
- 类型: Counter
- 描述: 证书读取总次数
- 用途: 监控证书读取的频率
- 标签: 无
- 监控建议: 正常情况下该指标会随着证书轮换而增长
2. Webhook 延迟指标
controller_runtime_webhook_latency_seconds
- 类型: Histogram
- 描述: 处理准入请求的延迟直方图
- 用途: 监控不同 Webhook 端点的响应时间分布
- 标签:
webhook
: Webhook 端点路径/convert
: 资源转换 Webhook/mutate-multiclusterservice
: MultiClusterService 变更 Webhook/mutate-work
: Work 资源变更 Webhook/validate-multiclusterservice
: MultiClusterService 验证 Webhook
- 监控建议:
- 关注 P95、P99 延迟
/convert
端点处理量最大,需要重点监控/mutate-work
端点处理 Work 资源,延迟应保持在合理范围内
3. Webhook 请求状态指标
controller_runtime_webhook_requests_in_flight
- 类型: Gauge
- 描述: 当前正在处理的准入请求数量
- 用途: 监控 Webhook 的并发处理能力
- 标签:
webhook
: Webhook 端点路径
- 监控建议: 该指标反映系统负载,持续高值可能表示性能瓶颈
controller_runtime_webhook_requests_total
- 类型: Counter
- 描述: 按 HTTP 状态码统计的准入请求总数
- 用途: 监控 Webhook 请求的成功率和错误率
- 标签:
code
: HTTP 状态码(200 表示成功,500 表示服务器错误)webhook
: Webhook 端点路径
- 监控建议:
- 监控错误率(500 状态码的比例)
- 关注各个 Webhook 端点的请求分布
4. Go 运行时指标
go_gc_duration_seconds
- 类型: Summary
- 描述: 垃圾回收暂停时间的摘要统计
- 用途: 监控 Go 程序的垃圾回收性能
- 标签:
quantile
(分位数) - 监控建议: GC 暂停时间过长可能影响 Webhook 响应性能
go_goroutines
- 类型: Gauge
- 描述: 当前存在的 goroutine 数量
- 用途: 监控并发处理能力和潜在的 goroutine 泄漏
- 监控建议: 持续增长可能表示 goroutine 泄漏
go_info
- 类型: Gauge
- 描述: Go 环境信息
- 标签:
version
(Go 版本) - 用途: 记录运行时 Go 版本信息
5. 内存统计指标
go_memstats_alloc_bytes
- 类型: Gauge
- 描述: 当前分配且仍在使用的字节数
- 用途: 监控当前内存使用情况
go_memstats_alloc_bytes_total
- 类型: Counter
- 描述: 总分配字节数(包括已释放的)
- 用途: 监控内存分配总量
go_memstats_heap_*
- 类型: Gauge
- 描述: 堆内存相关统计
- 包括:
heap_alloc_bytes
: 堆已分配字节数heap_idle_bytes
: 堆空闲字节数heap_inuse_bytes
: 堆使用中字节数heap_objects
: 堆对象数量heap_released_bytes
: 释放到操作系统的堆字节数heap_sys_bytes
: 从系统获取的堆字节数
6. 进程级指标
process_cpu_seconds_total
- 类型: Counter
- 描述: 进程消耗的总 CPU 时间(用户态+内核态)
- 用途: 监控 CPU 使用情况
process_resident_memory_bytes
- 类型: Gauge
- 描述: 常驻内存大小
- 用途: 监控实际物理内存使用
process_virtual_memory_bytes
- 类型: Gauge
- 描述: 虚拟内存大小
- 用途: 监控虚拟内存使用
process_open_fds / process_max_fds
- 类型: Gauge
- 描述: 当前打开的文件描述符数量 / 最大文件描述符数量
- 用途: 监控文件描述符使用情况,防止资源耗尽
关键监控指标
高优先级指标
- Webhook 错误率:
controller_runtime_webhook_requests_total{code="500"}
的增长率 - Webhook 延迟:
controller_runtime_webhook_latency_seconds
的 P95、P99 分位数 - 证书错误:
certwatcher_read_certificate_errors_total
的增长 - 内存使用:
process_resident_memory_bytes
和go_memstats_heap_inuse_bytes
- 文件描述符使用率:
process_open_fds / process_max_fds
中等优先级指标
- 并发请求数:
controller_runtime_webhook_requests_in_flight
- GC 性能:
go_gc_duration_seconds
- Goroutine 数量:
go_goroutines
- CPU 使用:
process_cpu_seconds_total
的增长率
告警建议
错误类告警
- Webhook 错误率 > 1%
- 证书读取错误 > 0
- 文件描述符使用率 > 80%
性能类告警
- Webhook P99 延迟 > 1s
- 内存使用 > 1GB
- GC 暂停时间 > 100ms
- Goroutine 数量 > 1000
容量类告警
- 并发请求数持续 > 100
- CPU 使用率 > 80%
- 虚拟内存使用 > 2GB
总结
Karmada Webhook 的监控指标涵盖了证书管理、请求处理、系统资源等多个维度。通过合理配置这些指标的监控和告警,可以及时发现和解决 Webhook 组件的性能问题,确保 Karmada 多集群管理系统的稳定运行。
重点关注 Webhook 的错误率和延迟指标,这些直接影响到 Kubernetes 资源的准入控制效果。同时,系统资源指标有助于进行容量规划和性能优化。