ACS Agent Sandbox 通过 Sandbox Controller 和 Sandbox Manager 两个核心组件暴露 Prometheus 指标,覆盖实例生命周期、资源状态及各类运行时等维度。可通过阿里云Prometheus监控或自建Prometheus两种方案采集这些指标,并通过 Grafana 大盘进行可视化监控。
适用范围
-
在集群组件管理页面,确认以下组件版本:
-
ack-agent-sandbox-controller:版本>=v0.5.14。 -
ack-sandbox-manager:版本>=v0.6.1。
-
为Agent Sandbox开启Prometheus监控
阿里云Prometheus
-
进入ARMS Prometheus控制台接入管理页面,在页面左上角选择集群所在地域。在已接入环境页签搜索定位目标集群,单击实例名称进入实例详情页。
-
在实例详情页,单击组件类型右侧的新增接入。在右侧弹窗中搜索并单击Agent Sandbox 监控,保持默认接入名称,单击确定。
自建Prometheus
配置采集规则
ACS Agent Sandbox监控涉及两个组件的指标采集:
-
Sandbox Controller:由集群托管,通过Kubernetes API Server的
/metrics端点暴露指标。 -
Sandbox Manager:部署在
sandbox-system命名空间,通过HTTP端口8080的/metrics路径暴露指标。
开源Prometheus
在prometheus.yml的scrape_configs中添加以下采集任务。
Sandbox Controller
scrape_configs:
- job_name: agent-sandbox-controller
scrape_interval: 30s
scrape_timeout: 30s
metrics_path: /metrics
scheme: https
honor_labels: true
honor_timestamps: true
params:
hosting: ["true"]
job: ["agent-sandbox-controller"]
kubernetes_sd_configs:
- role: endpoints
namespaces:
names: [default]
authorization:
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
insecure_skip_verify: false
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
server_name: kubernetes
relabel_configs:
- source_labels: [__meta_kubernetes_service_label_component]
separator: ;
regex: apiserver
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_service_label_provider]
separator: ;
regex: kubernetes
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_endpoint_port_name]
separator: ;
regex: https
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
target_label: namespace
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Node;(.*)
target_label: node
replacement: ${1}
action: replace
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Pod;(.*)
target_label: pod
replacement: ${1}
action: replace
- source_labels: [__meta_kubernetes_service_name]
separator: ;
regex: (.*)
target_label: service
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_service_name]
separator: ;
regex: (.*)
target_label: job
replacement: ${1}
action: replace
- source_labels: [__meta_kubernetes_service_label_component]
separator: ;
regex: (.+)
target_label: job
replacement: ${1}
action: replace
- separator: ;
regex: (.*)
target_label: endpoint
replacement: https
action: replace
Sandbox Manager
scrape_configs:
- job_name: sandbox-manager
scrape_interval: 30s
scrape_timeout: 30s
metrics_path: /metrics
scheme: http
honor_labels: true
honor_timestamps: true
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- sandbox-system
relabel_configs:
- source_labels:
- __meta_kubernetes_endpoint_port_name
separator: ;
regex: manager
replacement: $1
action: keep
Prometheus Operator
社区版 Prometheus Operator 使用ServiceMonitor自定义资源配置采集规则。
Sandbox Controller
-
将以下内容保存为
sandbox-controller-servicemonitor.yaml。apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: release: ack-prometheus-operator # 请根据 prometheus operator的labelselector配置按需更改 name: sandbox-controller namespace: monitoring spec: endpoints: - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token bearerTokenSecret: key: '' honorLabels: true honorTimestamps: true interval: 30s params: hosting: - 'true' job: - agent-sandbox-controller path: /metrics port: https relabelings: - action: keep regex: https sourceLabels: - __meta_kubernetes_endpoint_port_name - action: replace sourceLabels: - __meta_kubernetes_namespace targetLabel: namespace - action: replace regex: Node;(.*) replacement: '${1}' separator: ; sourceLabels: - __meta_kubernetes_endpoint_address_target_kind - __meta_kubernetes_endpoint_address_target_name targetLabel: node - action: replace regex: Pod;(.*) replacement: '${1}' separator: ; sourceLabels: - __meta_kubernetes_endpoint_address_target_kind - __meta_kubernetes_endpoint_address_target_name targetLabel: pod - action: replace sourceLabels: - __meta_kubernetes_service_name targetLabel: service - action: replace regex: ^$ sourceLabels: - __meta_kubernetes_service_label_component targetLabel: __tmp_job_fallback - action: replace regex: (.+); replacement: '${1}' separator: ; sourceLabels: - __meta_kubernetes_service_name - __meta_kubernetes_service_label_component targetLabel: job - action: replace replacement: https targetLabel: endpoint scheme: https scrapeTimeout: 30s tlsConfig: ca: {} caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt cert: {} serverName: kubernetes jobLabel: component namespaceSelector: matchNames: - default selector: matchLabels: component: apiserver provider: kubernetes -
创建ServiceMonitor资源。
kubectl apply -f sandbox-controller-servicemonitor.yaml
Sandbox Manager
将以下ServiceMonitor内容保存为YAML文件并执行kubectl apply -f创建资源。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
release: ack-prometheus-operator # 必须与 Prometheus Operator 的 serviceMonitorSelector 匹配,否则不会被发现采集;请根据实际 labelselector 按需更改
app.kubernetes.io/instance: ack-sandbox-manager
app.kubernetes.io/name: ack-sandbox-manager
component: sandbox-manager
name: sandbox-manager
namespace: sandbox-system
spec:
endpoints:
- interval: 30s
path: /metrics
port: manager
namespaceSelector:
matchNames:
- sandbox-system
selector:
matchLabels:
app.kubernetes.io/instance: ack-sandbox-manager
app.kubernetes.io/name: ack-sandbox-manager
component: sandbox-manager
查看监控大盘
阿里云Prometheus
登录容器计算服务控制台,在左侧导航栏选择运维管理 > Prometheus 监控,在其他页签中可查看以下Sandbox监控大盘。
-
Sandbox Instance:查看具体Sandbox实例的状态、生命周期和资源使用情况。
-
Sandbox Controller:查看整体Sandbox资源生命周期的云端管控情况,包括实例资源统计和生命周期管控性能。
-
Sandbox Manager:查看Sandbox资源声明的执行情况,如E2B协议的执行性能。
自建Prometheus
如使用自建Prometheus方案,可导入以下Grafana大盘JSON模板并配置对应数据源。
|
大盘名称 |
版本 |
说明 |
获取方式 |
|
Sandbox Instance |
v1.0.1 |
Sandbox实例的Meta信息、当前状态和资源使用情况监控。 |
|
|
Sandbox Controller |
v1.0.1 |
整体Sandbox资源生命周期的云端管控情况,包括实例资源统计和生命周期管控性能。 |
|
|
Sandbox Manager |
v1.0.1 |
Sandbox资源声明的执行情况,如E2B协议的执行性能。 |
计费说明
指标说明
以下列出Sandbox Controller和Sandbox Manager两个组件暴露的Prometheus指标,供配置告警规则或自定义大盘时参考。
Sandbox Controller指标
Sandbox Controller负责Sandbox实例和SandboxSet资源的生命周期管控,以下指标来自Controller的/metrics端点。
Sandbox实例指标
用于观测集群中各个Sandbox实例的基本信息、生命周期状态和就绪情况。
状态类指标(如sandbox_status_unpaused、sandbox_status_unpaused_time、sandbox_status_inplace_updating等)仅在实例进入对应状态后才会产生时间序列。若集群中没有实例处于该状态(例如从未执行过休眠操作),查询对应指标的结果为空,属正常现象,并非采集失败。
|
指标名称 |
类型 |
说明 |
标签 |
|
|
Gauge |
Sandbox实例的Unix创建时间戳 |
|
|
|
Gauge |
Sandbox实例当前所处阶段(当前阶段值为1)。 |
|
|
|
Gauge |
Sandbox实例是否处于Ready状态(1为true,0为false) |
|
|
|
Gauge |
Sandbox实例最后一次转变为Ready状态的Unix时间戳 |
|
|
|
Gauge |
Sandbox实例InplaceUpdate条件是否为False(1为False,0为其他) |
|
|
|
Gauge |
Sandbox实例SandboxPaused条件是否为False(1为False,0为其他) |
|
|
|
Gauge |
Sandbox实例SandboxPaused条件转变为False的Unix时间戳 |
|
|
|
Gauge |
Sandbox实例InplaceUpdate条件转变为False的Unix时间戳 |
|
Sandbox实例资源指标
Sandbox实例对应Pod,资源指标与集群cAdvisor Pod资源指标保持一致。详细指标说明请参见容器集群基础指标。
SandboxSet指标
用于观测SandboxSet资源的副本状态,判断是否存在副本不足或扩缩容异常。
|
指标名称 |
类型 |
说明 |
标签 |
|
|
Gauge |
SandboxSet当前副本数 |
|
|
|
Gauge |
SandboxSet当前可用副本数 |
|
|
|
Gauge |
SandboxSet期望副本数 |
|
Sandbox Manager指标
Sandbox Manager负责处理Sandbox资源的申请(Claim)、生命周期操作(克隆、删除、暂停、恢复、快照)和路由代理,以下指标来自Manager的/metrics端点。
Sandbox Claim指标
用于观测Sandbox资源申请(Claim)操作的执行情况,包括成功率、耗时和重试次数。
|
指标名称 |
类型 |
说明 |
标签 |
|
|
Counter |
Claim操作总次数 |
- |
|
|
Counter |
Sandbox创建请求总次数及结果 |
|
|
|
Histogram |
Claim操作总耗时(秒) |
- |
|
|
Histogram |
每次Claim操作的重试次数 |
- |
生命周期操作指标
用于观测各类Sandbox生命周期操作的执行耗时和结果,帮助评估操作性能和排查失败。
|
指标名称 |
类型 |
说明 |
标签 |
|
|
Histogram |
Sandbox克隆操作耗时(秒) |
- |
|
|
Histogram |
Sandbox删除操作耗时(秒) |
- |
|
|
Counter |
Sandbox删除请求总次数及结果 |
|
|
|
Histogram |
Sandbox暂停操作耗时(秒) |
- |
|
|
Histogram |
Sandbox恢复操作耗时(秒) |
- |
|
|
Histogram |
Sandbox快照创建耗时(秒) |
- |
路由与网络指标
用于观测Sandbox Manager代理路由表和Peer节点的状态,以及路由同步操作的性能。
|
指标名称 |
类型 |
说明 |
标签 |
|
|
Gauge |
代理路由表中当前路由数量 |
- |
|
|
Gauge |
当前连接的Peer节点数量 |
- |
|
|
Histogram |
路由同步操作耗时(秒) |
- |
|
|
Counter |
路由同步操作总次数 |
- |