9.6. 使用 FlowMetric API 配置自定义指标


您可以使用 flowlogs data 字段作为 Prometheus 标签,将 FlowMetric API 配置为创建自定义指标。您可以在项目中添加多个 FlowMetric 资源,以查看多个仪表板视图。

流程

  1. 在 Web 控制台中,进入到 Operators Installed Operators
  2. NetObserv OperatorProvided APIs 标题中,选择 FlowMetric
  3. Project: 下拉列表中,选择 Network Observability Operator 实例的项目。
  4. Create FlowMetric
  5. 配置 FlowMetric 资源,类似于以下示例配置:

    例 9.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
    Copy to Clipboard Toggle word wrap
    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),这是默认行为。

    验证

    1. pod 刷新后,进入 Observe Metrics
    2. Expression 字段中,键入指标名称来查看对应的结果。您也可以输入一个表达式,如 topk(5, sum(rate(netobserv_cluster_external_ingress_bytes_total{DstK8S_Namespace="my-namespace"}[2m])) by (DstK8S_HostName, DstK8S_OwnerName, DstK8S_OwnerType))

    例 9.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
    Copy to Clipboard Toggle word wrap
    1
    FlowMetric 资源需要在 FlowCollector spec.namespace 中定义的命名空间中创建,默认为 netobserv
    2
    type 指定指标类型。Histogram type 可用于延迟值 (TimeFlowRttNs)。
    3
    由于在流中 Round-trip time (RTT) 的单位为纳秒,需要将这个值除以十亿(1 billion)转换为秒,这是 Prometheus 指南中的标准。
    4
    自定义存储桶指定 RTT 的精度,其最佳精度范围介于 5ms 和 250ms 之间。

    验证

    1. pod 刷新后,进入 Observe Metrics
    2. Expression 字段中,键入指标名称来查看对应的结果。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat