8.5. 使用 FlowMetric API 配置自定义指标
您可以使用 flowlogs data 字段作为 Prometheus 标签,将 FlowMetric
API 配置为创建自定义指标。您可以在项目中添加多个 FlowMetric
资源,以查看多个仪表板视图。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题中,选择 FlowMetric。
- 在 Project: 下拉列表中,选择 Network Observability Operator 实例的项目。
- 点 Create FlowMetric。
配置
FlowMetric
资源,类似于以下示例配置:例 8.1. 生成一个指标,用于跟踪从集群外部源接收的 ingress 字节
apiVersion: flows.netobserv.io/v1alpha1 kind: FlowMetric metadata: name: flowmetric-cluster-external-ingress-traffic namespace: netobserv 1 spec: metricName: cluster_external_ingress_bytes_total 2 type: Counter 3 valueField: Bytes direction: Ingress 4 labels: [DstK8S_HostName,DstK8S_Namespace,DstK8S_OwnerName,DstK8S_OwnerType] 5 filters: 6 - field: SrcSubnetLabel matchType: Absence
- 1
FlowMetric
资源需要在FlowCollector
spec.namespace
中定义的命名空间中创建,默认为netobserv
。- 2
- Prometheus 指标的名称,它们在 web 控制台中的显示带有
netobserv-<metricName>
前缀。 - 3
type
指定指标类型。Counter
type
有助于计算字节和数据包。- 4
- 要捕获的流方向。如果没有指定,入口和出口数据都会捕获,这可能会导致重复计数。
- 5
- 标签定义了指标外,以及不同实体之间的关系,同时还定义了指标基数(cardinality)。例如,
SrcK8S_Name
是一个高基数指标。 - 6
- 根据列出的标准进一步细化结果。在本例中,通过仅匹配没有
SrcSubnetLabel
的流来实现只选择集群外部流量的目的。这假设启用了子网标签功能(通过spec.processor.subnetLabels
),这是默认行为。
验证
-
pod 刷新后,进入 Observe
Metrics。 -
在 Expression 字段中,键入指标名称来查看对应的结果。您也可以输入一个表达式,如
topk(5, sum(rate(netobserv_cluster_external_ingress_bytes_total{DstK8S_Namespace="my-namespace"}[2m])) by (DstK8S_HostName, DstK8S_OwnerName, DstK8S_OwnerType))
例 8.2. 显示集群外部入口流量的 RTT 延迟
apiVersion: flows.netobserv.io/v1alpha1 kind: FlowMetric metadata: name: flowmetric-cluster-external-ingress-rtt namespace: netobserv 1 spec: metricName: cluster_external_ingress_rtt_seconds type: Histogram 2 valueField: TimeFlowRttNs direction: Ingress labels: [DstK8S_HostName,DstK8S_Namespace,DstK8S_OwnerName,DstK8S_OwnerType] filters: - field: SrcSubnetLabel matchType: Absence - field: TimeFlowRttNs matchType: Presence divider: "1000000000" 3 buckets: [".001", ".005", ".01", ".02", ".03", ".04", ".05", ".075", ".1", ".25", "1"] 4
验证
-
pod 刷新后,进入 Observe
Metrics。 - 在 Expression 字段中,键入指标名称来查看对应的结果。
重要
高基数可能会影响 Prometheus 的内存用量。您可以检查特定标签是否以有高基数(Network Flows 格式参考)。