Skip to main content

监控指标

OpenKruise Agents 通过两个组件对外暴露 Prometheus 指标:

  • Sandbox Controller —— 调谐 SandboxSandboxSetSandboxClaim 等资源,输出每个实例的状态、生命周期与异常类指标。
  • Sandbox Manager —— 提供 E2B 协议接入与 Sandbox 路由 / 代理数据面,输出请求级别的领取(claim)、生命周期、路由与配额指标。

本文介绍指标端点、Prometheus 抓取配置,以及在 openkruise/agents 仓库 master 分支上注册的全部指标。

端点

组件HTTP 路径默认端口说明
Sandbox Manager/metrics8080--port/metrics 处理器挂在主服务 mux 上。如需独立监听端口,可使用 --metrics-port
Sandbox Controller/metrics8443--metrics-bind-address标准的 controller-runtime 指标端点,通过 HTTPS 提供服务。

Sandbox Controller 的指标端点受 controller-runtime 的认证 / 鉴权过滤器保护,抓取端必须提供有权访问 /metricsServiceAccount Token。

Prometheus 抓取配置

自建 Prometheus(prometheus.yml

scrape_configs:
- job_name: sandbox-manager
scrape_interval: 30s
scrape_timeout: 30s
metrics_path: /metrics
scheme: http
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- sandbox-system # 替换为 Sandbox Manager 实际部署的命名空间
relabel_configs:
- source_labels: [__meta_kubernetes_endpoint_port_name]
regex: manager
action: keep

- job_name: sandbox-controller
scrape_interval: 30s
scrape_timeout: 30s
metrics_path: /metrics
scheme: https
authorization:
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- sandbox-system
relabel_configs:
- source_labels: [__meta_kubernetes_endpoint_port_name]
regex: https
action: keep

Prometheus Operator(ServiceMonitor

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: sandbox-manager
namespace: sandbox-system
labels:
release: prometheus # 需要与 Prometheus Operator 的 serviceMonitorSelector 匹配
spec:
namespaceSelector:
matchNames:
- sandbox-system
selector:
matchLabels:
app.kubernetes.io/name: sandbox-manager
endpoints:
- port: manager # Service 中指向容器端口 8080 的端口名
path: /metrics
interval: 30s
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: sandbox-controller
namespace: sandbox-system
labels:
release: prometheus
spec:
namespaceSelector:
matchNames:
- sandbox-system
selector:
matchLabels:
app.kubernetes.io/name: sandbox-controller
control-plane: controller-manager
endpoints:
- port: https
path: /metrics
scheme: https
interval: 30s
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true

指标清单

下文列出的指标名与源码中注册的名称完全一致,未追加任何 namespace 或 subsystem 前缀。两个组件还会暴露标准的 controller-runtimeworkqueue_*rest_client_*go_*process_* 指标,为节省篇幅不在表中重复列出。

Sandbox Controller

源码位置:pkg/controller/sandbox/metrics.gopkg/controller/sandboxset/metrics.gopkg/controller/sandboxclaim/metrics.gopkg/controller/sandboxclaim/core/metrics.go

Sandbox 实例状态

状态类 Gauge 仅在 Sandbox 处于对应状态时才会输出。

指标类型标签说明
sandbox_infoGaugenamespacename,以及通过白名单透出的标签常量 1 序列,承载 Sandbox 的静态元信息。
sandbox_labelsGauge动态,由 --metric-labels-allowlist 控制常量 1 序列,将选定的 Sandbox 标签透出为 Prometheus 标签。
sandbox_createdGaugenamespacenameSandbox 创建时间的 Unix 时间戳。
sandbox_deletion_timestampGaugenamespacenamemetadata.deletionTimestamp 的 Unix 时间戳(若已设置)。
sandbox_status_phaseGaugenamespacenamephase当前 status.phasePendingRunningPausedResumingFailedSucceededTerminating),活跃 phase 取值为 1
sandbox_status_readyGaugenamespacenameReady 时为 1,否则为 0
sandbox_status_ready_timeGaugenamespacename上次进入 Ready 状态的 Unix 时间戳。
sandbox_status_inplace_updatingGaugenamespacenameInplaceUpdate 条件为 False(即正在原地升级)时为 1
sandbox_status_inplace_updating_timeGaugenamespacenameInplaceUpdate 上次变为 False 的 Unix 时间戳。
sandbox_status_unpausedGaugenamespacenameSandboxPaused 条件为 False 时为 1
sandbox_status_unpaused_timeGaugenamespacenameSandboxPaused 上次变为 False 的 Unix 时间戳。
sandbox_status_unresumedGaugenamespacenameSandboxResumed 条件为 False 时为 1
sandbox_status_unresumed_timeGaugenamespacenameSandboxResumed 上次变为 False 的 Unix 时间戳。
sandbox_status_abnormalGaugenamespacenametype观察到指定 type 的异常状况时为 1
sandbox_status_abnormal_timeGaugenamespacenametype上次观察到该异常状况的 Unix 时间戳。
sandbox_runtime_container_abnormalGaugenamespacenamecontainer运行时容器处于异常状态时为 1
sandbox_runtime_container_abnormal_timeGaugenamespacenamecontainer上次观察到容器异常状态的 Unix 时间戳。

Sandbox 生命周期计数与耗时

指标类型标签说明
sandbox_creation_totalCounternamespaceresult控制器尝试创建 Sandbox 的次数,按结果区分。
sandbox_creation_duration_secondsHistogramnamespace从 Sandbox 创建到 Ready 的耗时。
sandbox_pause_totalCounternamespaceresult控制器执行的休眠操作次数。
sandbox_pause_duration_secondsHistogramnamespace控制器侧休眠操作的耗时。
sandbox_resume_totalCounternamespaceresult控制器执行的唤醒操作次数。
sandbox_resume_duration_secondsHistogramnamespace控制器侧唤醒操作的耗时。
sandbox_inplace_update_duration_secondsHistogramnamespace原地升级的耗时。
sandbox_deletion_duration_secondsHistogramnamespace从设置 deletionTimestamp 到完全删除的耗时。

SandboxSet

指标类型标签说明
sandboxset_createdGaugenamespacenameSandboxSet 创建时间的 Unix 时间戳。
sandboxset_replicasGaugenamespacename当前 status.replicas
sandboxset_available_replicasGaugenamespacename当前 status.availableReplicas
sandboxset_desired_replicasGaugenamespacename当前 spec.replicas
sandboxset_updated_replicasGaugenamespacename当前 status.updatedReplicas
sandboxset_updated_available_replicasGaugenamespacename当前 status.updatedAvailableReplicas
sandboxset_sandboxes_created_totalCounternamespacename该 SandboxSet 创建的 Sandbox 总数。
sandboxset_sandboxes_claimed_totalCounternamespacename该 SandboxSet 中已被领取的 Sandbox 总数。

SandboxClaim

指标类型标签说明
sandbox_claim_infoGaugenamespacename,以及 selector 透出的标签常量 1 序列,承载 SandboxClaim 的静态元信息。
sandbox_claim_createdGaugenamespacenameSandboxClaim 创建时间的 Unix 时间戳。
sandbox_claim_status_phaseGaugenamespacenamephaseSandboxClaim 当前所处的阶段。
sandbox_claim_start_timeGaugenamespacename开始领取的 Unix 时间戳。
sandbox_claim_completion_timeGaugenamespacename领取完成的 Unix 时间戳。
sandbox_claim_claimed_replicasGaugenamespacename当前已领取的副本数。
sandbox_claim_desired_replicasGaugenamespacenamespec 中期望的副本数。
sandbox_claim_duration_secondsHistogramnamespace控制器侧观测到的端到端领取耗时。
sandboxset_claims_totalCounternamespacename每个 SandboxSet 上观察到的领取事件总数。
sandboxclaim_expired_totalCounternamespace在被满足前过期的 SandboxClaim 数量。

Sandbox Manager

源码位置:pkg/sandbox-manager/metrics.gopkg/servers/e2b/metrics.gopkg/proxy/metrics.gopkg/sandbox-manager/quota/metrics.gopkg/sandbox-manager/infra/sandboxcr/metrics.go

领取(Claim)链路

指标类型标签说明
sandbox_claim_totalCounternamespaceresultlock_typeSandbox Manager 收到的领取请求数。
sandbox_claim_creation_responsesCounternamespaceresult由领取触发的 Sandbox 创建次数,按结果区分。
sandbox_claim_duration_secondsHistogramnamespaceSandbox Manager 侧观测到的端到端领取耗时。
sandbox_claim_retriesHistogramnamespace满足一次领取所需的重试次数。

生命周期操作

指标类型标签说明
sandbox_clone_totalCounternamespaceresult收到的 Sandbox 克隆请求数。
sandbox_clone_duration_secondsHistogramnamespace克隆操作的耗时。
sandbox_delete_responsesCounternamespaceresult收到的删除请求数。
sandbox_delete_duration_secondsHistogramnamespace删除操作的耗时。
sandbox_pause_responsesCounternamespaceresultSandbox Manager 收到的休眠请求数。
sandbox_pause_duration_secondsHistogramnamespaceSandbox Manager 侧观测到的休眠耗时。
sandbox_resume_responsesCounternamespaceresultSandbox Manager 收到的唤醒请求数。
sandbox_resume_duration_secondsHistogramnamespaceSandbox Manager 侧观测到的唤醒耗时。
sandbox_snapshot_totalCounternamespaceresultE2B Server 收到的快照创建请求数。
sandbox_snapshot_duration_secondsHistogramnamespace快照创建耗时。

sandbox_pause_duration_secondssandbox_resume_duration_seconds 在 Sandbox Manager 与 Sandbox Controller 中各自独立注册,是两组不同的序列、由不同的抓取 job 拉取。比较时请保留 job 标签。

路由与代理

指标类型标签说明
sandbox_routesGauge——当前代理路由表中的路由数量。
sandbox_peersGauge——已连接的 Peer 节点数。
sandbox_route_sync_totalCounternamespacetyperesult已执行的路由同步操作数。
sandbox_route_sync_duration_secondsHistogramnamespacetype路由同步操作的耗时。

配额

指标类型标签说明
sandbox_manager_quota_acquire_totalCounternamespaceresult尝试获取配额的次数。
sandbox_manager_quota_release_totalCounternamespaceresult尝试释放配额的次数。
sandbox_manager_quota_backend_errors_totalCounternamespaceerror_type配额后端返回错误的次数。
sandbox_manager_quota_breaker_state_totalCounternamespacefromto配额熔断器状态切换次数。
sandbox_manager_quota_breaker_open_duration_secondsHistogramnamespace配额熔断器处于打开状态的累计时长。
sandbox_manager_quota_antidrift_skipped_totalCounternamespacereason跳过的反漂移(anti-drift)调谐次数。
sandbox_manager_quota_antidrift_errors_totalCounternamespaceerror_type反漂移调谐失败次数。
sandbox_manager_quota_antidrift_event_release_totalCounternamespaceresult事件驱动的反漂移配额释放次数。

基础设施回退

指标类型标签说明
sandbox_get_claimed_fallback_totalCounternamespacereasonSandbox Manager 在读取已领取 Sandbox 时触发回退的次数。
sandboxcr_quota_source_event_drop_totalCounternamespacereason监听 Sandbox CR 时被丢弃的配额来源事件数。

推荐的告警与面板

以下 PromQL 仅作为起点,阈值请结合实际流量画像调整。

  • 资源池枯竭 —— sum(sandboxset_available_replicas) by (namespace, name) == 0sum(sandboxset_desired_replicas) by (namespace, name) > 0
  • 领取耗时 —— histogram_quantile(0.95, sum(rate(sandbox_claim_duration_seconds_bucket[5m])) by (le, namespace))
  • 领取失败率 —— sum(rate(sandbox_claim_total{result!="success"}[5m])) by (namespace) / sum(rate(sandbox_claim_total[5m])) by (namespace)
  • 生命周期回归 —— 周环比对比 sandbox_pause_duration_seconds_bucketsandbox_resume_duration_seconds_bucketsandbox_clone_duration_seconds_bucket 的 p95。
  • 路由不稳定 —— rate(sandbox_route_sync_total{result!="success"}[5m]) > 0,或 sandbox_peers 低于预期副本数。
  • 配额后端压力 —— rate(sandbox_manager_quota_backend_errors_total[5m]) 持续大于 0,或 sandbox_manager_quota_breaker_state_total{to="open"} 持续上升。
  • 控制器健康度 —— 标准的 controller_runtime_reconcile_errors_totalworkqueue_unfinished_work_secondsrest_client_requests_total{code=~"5.."}

注意事项