
cilium-operator-alibabacloud metrics 命令完全指南实时查询阿里云版 Cilium Operator 指标状态【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium导读cilium-operator-alibabacloud metrics是 Cilium Operator阿里云 AlibabaCloud 变体内置的指标查询子命令允许运维人员在不额外部署 Prometheus 抓取链路的情况下直接通过 Operator API 服务读取当前进程的 Prometheus 指标快照并以表格或结构化格式输出到终端。本文以仓库内自动生成的命令参考文档 cilium-operator-alibabacloud_metrics.md 为骨架结合 operator/cmd/metrics.go、operator/cmd/metrics_list.go 及 Operator API 服务端实现完整讲解该命令的用法、参数、底层数据流与常见排障场景。命令概览两条子命令的分工在 Cilium 仓库中metrics是挂在cilium-operator-alibabacloud根命令下的一个聚合命令组cobra command group其定义位于 operator/cmd/metrics.govar MetricsCmd cobra.Command{ Use: metrics, Short: Access metric status of the operator, } func init() { MetricsCmd.AddCommand(MetricsListCmd) MetricsCmd.AddCommand(operatorFeatures.NewDumpCmd()) }从源码结构可以看出metrics命令组目前包含两个子命令子命令作用说明metrics list列出 Operator 的全部指标通过 HTTP 调用 Operator API 的GET /metrics/接口将指标以表格或 JSON/YAML 输出metrics dump将指标导出到输出目录隐藏命令Hidden: true用于将 feature metrics 导出为feature-metrics.prom文件其实现位于 pkg/metrics/features/operator/features.go官方文档记录的命令结构cilium-operator-alibabacloud_metrics.md### Options -h, --help help for metrics ### SEE ALSO * [cilium-operator-alibabacloud](https://link.gitcode.com/i/a57aa25699febf6a7e5be038c0526707) - Run cilium-operator-alibabacloud * [cilium-operator-alibabacloud metrics list](https://link.gitcode.com/i/a8644bfa1ca0de3e2797df59e46b5c03) - List all metrics for the operatormetrics本身没有业务参数仅提供-h, --help查看帮助真正承担查询工作的是metrics list。metrics list读取 Operator 指标的核心命令命令参考文档 cilium-operator-alibabacloud_metrics_list.md 给出了完整的用法与参数定义cilium-operator-alibabacloud metrics list [flags] ### Options -h, --help help for list -p, --match-pattern string Show only metrics whose names match matchpattern -o, --output string json| yaml| jsonpath{} -s, --server-address string Address of the operator API server (default localhost:9234)参数逐一解析-s, --server-address默认localhost:9234指定 Operator API 服务器的地址。默认值localhost:9234并非硬编码在命令中而是来自常量api.OperatorAPIServeAddrDefault定义于 operator/api/cell.go。该地址与 Operator 启动参数--operator-api-serve-addr一一对应——也就是说查询端地址必须与 Operator 实际监听地址匹配。在 operator/api/cell.go 中// OperatorAPIServeAddr is the ip:port on which to serve api requests OperatorAPIServeAddr operator-api-serve-addr // OperatorAPIServeAddrDefault is the default ip:port value OperatorAPIServeAddrDefault localhost:9234服务端启动时通过cell.Config(defaultConfig)注入该配置默认即localhost:9234并在 operator/api/server.go 中监听。需要注意一个特殊行为当--operator-api-serve-addr被设置为空字符串时服务端会同时在127.0.0.1:0与[::1]:0两个 localhost 地址上各启动一个随机端口监听见 operator/api/server.go此时查询端需要知道实际分配到的端口。-p, --match-pattern默认空按正则表达式过滤指标名。该参数在 operator/cmd/metrics_list.go 中被编译为正则后逐条匹配re, err : regexp.Compile(matchPattern) ... for _, metric : range res.Payload { if re.MatchString(metric.Name) { metrics append(metrics, metric) } }注意默认空字符串在 Go 正则中可匹配任何字符串空模式匹配一切因此不传该参数等价于列出全部指标。想精确匹配建议显式使用^...$锚定例如-p ^cilium_operator_。-o, --output默认表格输出格式支持json、yaml、jsonpath{}。该选项由command.AddOutputOption(MetricsListCmd)注入见 operator/cmd/metrics_list.go当检测到输出选项被设置时走结构化输出分支if command.OutputOption() { if err : command.PrintOutput(metrics); err ! nil { os.Exit(1) } return }-h, --help查看子命令帮助。底层数据流从 CLI 到 API 再到 Prometheus 注册表metrics list的完整调用链清晰可循是一条「CLI → Operator API HTTP → metrics handler → Prometheus Registry」的链路CLI 构造 HTTP 客户端命令通过 go-swagger 生成的客户端访问 Operator APIoperator/cmd/metrics_list.goc : client.NewHTTPClientWithConfig( strfmt.Default, client.DefaultTransportConfig().WithHost(operatorAddr)) res, err : c.Metrics.GetMetrics(metricsApi.NewGetMetricsParams())对应服务端路由为GET /metrics/API 定义与客户端代码生成自api/v1/operator下的 OpenAPI 规范。服务端 handler 处理请求Operator API 服务在启动时将metrics.GetMetricsHandler挂载到路由上operator/api/server.go实际 handler 由 operator/api/metrics.go 提供func (h *metricsHandler) Handle(params metrics.GetMetricsParams) middleware.Responder { m, err : opMetrics.DumpMetrics(h.registry) if err ! nil { return metrics.NewGetMetricsFailed() } return metrics.NewGetMetricsOK().WithPayload(m) }注意newMetricsHandler依赖注入的是*ciliumMetrics.RegistryPrometheus 注册表因此读到的是 Operator 进程内实时指标。指标序列化DumpMetrics位于 operator/metrics/legacy.go它调用reg.Gather()抓取 DTO 指标再按类型转换成[]*models.Metric。其中各类型的转换规则可作为解读输出结果的依据Counter / Gauge / Untyped直接取当前值Histogram输出三个带quantile标签0.5、0.9、0.99的条目值为对应分位数Summary为每个预定义分位数输出一个条目同样带quantile标签其他类型直接跳过。响应模型单个指标的数据结构定义在 api/v1/operator/models/metric.gotype Metric struct { Labels map[string]string json:labels,omitempty Name string json:name,omitempty Value float64 json:value,omitempty }CLI 渲染回到命令端非结构化输出模式下指标被tabwriter排版为Metric Labels Value三列表格标签以keyvalue空格分隔的形式呈现operator/cmd/metrics_list.go。实战示例1. 列出全部指标表格模式默认情况下列出 Operator 的全部指标快照cilium-operator-alibabacloud metrics list输出形如Metric Labels Value cilium_operator_ces_ciliumendpoints_queued_for_sync ciliumendpointx 0.000000 cilium_operator_identity_count identityin-use 123.000000 ...2. 按正则过滤指标只查看名称匹配cilium_operator前缀的指标cilium-operator-alibabacloud metrics list --match-pattern ^cilium_operator_简写形式-p ^cilium_operator_。3. 结构化输出便于脚本消费# JSON 输出 cilium-operator-alibabacloud metrics list -o json # YAML 输出 cilium-operator-alibabacloud metrics list -o yaml # JSONPath 提取所有指标名 cilium-operator-alibabacloud metrics list -o jsonpath{range .items[*]}{.name}{\n}{end}4. 指定 Operator API 地址当 Operator 不在本机默认地址监听时例如--operator-api-serve-addr0.0.0.0:9234或非默认端口需要显式指定cilium-operator-alibabacloud metrics list --server-address 10.0.0.5:9234简写形式-s 10.0.0.5:9234。若目标地址无法连接命令会以Cannot get metrics list: err的形式终止。与 Prometheus 抓取链路的关系metrics list是运维层面的「按需查询」通道它与常规的 Prometheus 抓取通道是互补关系常规监控Operator 通过--operator-prometheus-serve-addr默认:9963暴露 Prometheus metrics 端口由 Prometheus 定时抓取。文档见 cilium-operator-alibabacloud.md对应参数如--operator-prometheus-enable-tls、--operator-prometheus-tls-cert-file等还支持 TLS/mTLS 加密抓取按需排障当 Prometheus 链路不可用或需要快速确认某个指标当前值尤其是带 quantile 的直方图分位数时metrics list通过 Operator API默认localhost:9234直达进程内注册表无需任何抓取配置。需要说明的是metrics list返回的是瞬时快照而非时间序列它适合即时诊断不适合作为长期监控数据源。阿里云变体的适用背景cilium-operator-alibabacloud是 Cilium Operator 面向阿里云环境的专用二进制与通用 Operator 的差异集中在云集成层面其默认--ipam后端为alibabacloud并额外提供--alibaba-cloud-release-excess-ips、--alibaba-cloud-vpc-id、--instance-tags-filter等阿里云 ENI 相关参数见 cilium-operator-alibabacloud.md。而metrics/metrics list命令本身定义在共享的 operator/cmd/metrics.go 中因此本节描述的命令行为、参数与数据流同样适用于其他 Operator 变体如cilium-operator-aws、cilium-operator-azure、cilium-operator-generic。在阿里云环境排障时可重点结合 IPAM/ENI 相关指标判断地址分配与回收是否正常。小结cilium-operator-alibabacloud metrics是命令组核心子命令为metrics list查询走 Operator API默认localhost:9234由 operator/api/metrics.go 中的 handler 从 Prometheus 注册表取数经 operator/metrics/legacy.go 序列化后返回三个实用参数--server-address服务地址、--match-pattern正则过滤、--outputjson/yaml/jsonpath 结构化输出Histogram 指标会被展开为quantile0.5/0.9/0.99三个条目解读输出时需留意该命令适合按需诊断长期监控请使用--operator-prometheus-serve-addr暴露的抓取端点。若需要了解 Operator 的整体健康状态可配合同组的 cilium-operator-alibabacloud status 命令使用。【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考