8.7. 使用 FlowMetric API 配置自定义 chart
您可以在 OpenShift Container Platform web 控制台中为仪表板生成图表,如果您是管理员,可以通过定义 FlowMetric 资源的 charts 部分在 Dashboard 菜单中查看。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题中,选择 FlowMetric。
- 在 Project: 下拉列表中,选择 Network Observability Operator 实例的项目。
- 点 Create FlowMetric。
-
配置
FlowMetric资源,类似于以下示例配置:
例 8.3. 用于跟踪从集群外部源接收的 ingress 字节的图表
apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
name: flowmetric-cluster-external-ingress-traffic
namespace: netobserv
# ...
charts:
- dashboardName: Main
title: External ingress traffic
unit: Bps
type: SingleStat
queries:
- promQL: "sum(rate($METRIC[2m]))"
legend: ""
- dashboardName: Main
sectionName: External
title: Top external ingress traffic per workload
unit: Bps
type: StackArea
queries:
- promQL: "sum(rate($METRIC{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace, DstK8S_OwnerName)"
legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
# ...
- 1
FlowMetric资源需要在FlowCollectorspec.namespace中定义的命名空间中创建,默认为netobserv。
验证
-
pod 刷新后,进入到 Observe
Dashboards。 搜索 NetObserv / Main 仪表板。查看 NetObserv / Main 仪表板下的两个面板,或您创建的仪表板名称(可选):
- 一个静态的文本形式的统计数据,显示所有维度中的全局外部入口率总和
- 一个时间序列图,为每个目标工作负载显示相同指标
有关查询语言的更多信息,请参阅 Prometheus 文档。
例 8.4. 集群外部入口流量的 RTT 延迟的图表
apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
name: flowmetric-cluster-external-ingress-traffic
namespace: netobserv
# ...
charts:
- dashboardName: Main
title: External ingress TCP latency
unit: seconds
type: SingleStat
queries:
- promQL: "histogram_quantile(0.99, sum(rate($METRIC_bucket[2m])) by (le)) > 0"
legend: "p99"
- dashboardName: Main
sectionName: External
title: "Top external ingress sRTT per workload, p50 (ms)"
unit: seconds
type: Line
queries:
- promQL: "histogram_quantile(0.5, sum(rate($METRIC_bucket{DstK8S_Namespace!=\"\"}[2m])) by (le,DstK8S_Namespace,DstK8S_OwnerName))*1000 > 0"
legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
- dashboardName: Main
sectionName: External
title: "Top external ingress sRTT per workload, p99 (ms)"
unit: seconds
type: Line
queries:
- promQL: "histogram_quantile(0.99, sum(rate($METRIC_bucket{DstK8S_Namespace!=\"\"}[2m])) by (le,DstK8S_Namespace,DstK8S_OwnerName))*1000 > 0"
legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
# ...
这个示例使用 histogram_quantile 函数来显示 p50 和 p99。
您可以通过将指标 $METRIC_sum 除以$METRIC_count 来显示平均直方图。它们在创建直方图时自动生成。在上例中,要执行此操作的 Prometheus 查询如下:
promQL: "(sum(rate($METRIC_sum{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace,DstK8S_OwnerName) / sum(rate($METRIC_count{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace,DstK8S_OwnerName))*1000"
验证
-
pod 刷新后,进入到 Observe
Dashboards。 - 搜索 NetObserv / Main 仪表板。查看 NetObserv / Main 仪表板下的新面板,或您创建的仪表板名称(可选)。
有关查询语言的更多信息,请参阅 Prometheus 文档。