8.5. 使用 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 资源,类似于以下示例配置:

    例 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),这是默认行为。

    验证

    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))

    例 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
    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 字段中,键入指标名称来查看对应的结果。
重要

高基数可能会影响 Prometheus 的内存用量。您可以检查特定标签是否以有高基数(Network Flows 格式参考)。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.