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 1 # ... charts: - dashboardName: Main 2 title: External ingress traffic unit: Bps type: SingleStat queries: - promQL: "sum(rate($METRIC[2m]))" legend: "" - dashboardName: Main 3 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
资源需要在FlowCollector
spec.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 1 # ... charts: - dashboardName: Main 2 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 3 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 4 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 文档。