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
  • 描述: 当前打开的文件描述符数量 / 最大文件描述符数量
  • 用途: 监控文件描述符使用情况,防止资源耗尽

关键监控指标

高优先级指标

  1. Webhook 错误率: controller_runtime_webhook_requests_total{code="500"} 的增长率
  2. Webhook 延迟: controller_runtime_webhook_latency_seconds 的 P95、P99 分位数
  3. 证书错误: certwatcher_read_certificate_errors_total 的增长
  4. 内存使用: process_resident_memory_bytesgo_memstats_heap_inuse_bytes
  5. 文件描述符使用率: process_open_fds / process_max_fds

中等优先级指标

  1. 并发请求数: controller_runtime_webhook_requests_in_flight
  2. GC 性能: go_gc_duration_seconds
  3. Goroutine 数量: go_goroutines
  4. 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 资源的准入控制效果。同时,系统资源指标有助于进行容量规划和性能优化。

0%