From a33158ef529842f55e435121b725e43299ea47c4 Mon Sep 17 00:00:00 2001 From: "dongsheng.qi" Date: Mon, 9 Oct 2023 14:00:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=8F=AF=E8=A7=82?= =?UTF-8?q?=E6=B5=8B=E6=80=A7=E4=B8=AD=E8=AF=B7=E6=B1=82=E6=97=B6=E5=BB=B6?= =?UTF-8?q?=E5=9B=BE=E7=9A=84=E6=8C=87=E6=A0=87=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../polaris/monitor/registryMonitor/types.ts | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/web/src/polaris/monitor/registryMonitor/types.ts b/web/src/polaris/monitor/registryMonitor/types.ts index 8aaba484..2288d182 100644 --- a/web/src/polaris/monitor/registryMonitor/types.ts +++ b/web/src/polaris/monitor/registryMonitor/types.ts @@ -115,12 +115,12 @@ export const getQueryMap = { name: '均值', query: interfaceName && podName - ? `avg(client_rq_timeout{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` + ? `avg(client_rq_timeout_avg{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` : interfaceName - ? `avg(client_rq_timeout{api=~"${interfaceName}"}) or on() vector(0)` + ? `avg(client_rq_timeout_avg{api=~"${interfaceName}"}) or on() vector(0)` : podName - ? `avg(client_rq_timeout{polaris_server_instance="${podName}"}) or on() vector(0)` - : `avg(client_rq_timeout) or on() vector(0)`, + ? `avg(client_rq_timeout_avg{polaris_server_instance="${podName}"}) or on() vector(0)` + : `avg(client_rq_timeout_avg) or on() vector(0)`, boardFunction: AvgReduceFunction, unit: 'ms', minStep: 60, @@ -130,12 +130,12 @@ export const getQueryMap = { name: '最大值', query: interfaceName && podName - ? `max(client_rq_timeout{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` + ? `max(client_rq_timeout_avg{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` : interfaceName - ? `max(client_rq_timeout{api=~"${interfaceName}"}) or on() vector(0)` + ? `max(client_rq_timeout_avg{api=~"${interfaceName}"}) or on() vector(0)` : podName - ? `max(client_rq_timeout{polaris_server_instance="${podName}"}) or on() vector(0)` - : `max(client_rq_timeout) or on() vector(0)`, + ? `max(client_rq_timeout_avg{polaris_server_instance="${podName}"}) or on() vector(0)` + : `max(client_rq_timeout_avg) or on() vector(0)`, boardFunction: MaxReduceFunction, unit: 'ms', minStep: 60, @@ -145,12 +145,12 @@ export const getQueryMap = { name: '最小值', query: interfaceName && podName - ? `min(client_rq_timeout{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` + ? `min(client_rq_timeout_avg{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` : interfaceName - ? `min(client_rq_timeout{api=~"${interfaceName}"}) or on() vector(0)` + ? `min(client_rq_timeout_avg{api=~"${interfaceName}"}) or on() vector(0)` : podName - ? `min(client_rq_timeout{polaris_server_instance="${podName}"}) or on() vector(0)` - : `min(client_rq_timeout) or on() vector(0)`, + ? `min(client_rq_timeout_avg{polaris_server_instance="${podName}"}) or on() vector(0)` + : `min(client_rq_timeout_avg) or on() vector(0)`, boardFunction: MinReduceFunction, unit: 'ms', minStep: 60, @@ -160,12 +160,12 @@ export const getQueryMap = { name: 'P99', query: interfaceName && podName - ? `quantile(0.99, client_rq_timeout{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` + ? `quantile(0.99, client_rq_timeout_avg{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` : interfaceName - ? `quantile(0.99, client_rq_timeout{api=~"${interfaceName}"}) or on() vector(0)` + ? `quantile(0.99, client_rq_timeout_avg{api=~"${interfaceName}"}) or on() vector(0)` : podName - ? `quantile(0.99, client_rq_timeout{polaris_server_instance="${podName}"}) or on() vector(0)` - : `quantile(0.99, client_rq_timeout) or on() vector(0)`, + ? `quantile(0.99, client_rq_timeout_avg{polaris_server_instance="${podName}"}) or on() vector(0)` + : `quantile(0.99, client_rq_timeout_avg) or on() vector(0)`, asyncBoardFunction: async () => { const res = await getMonitorData({ start, @@ -173,12 +173,12 @@ export const getQueryMap = { step: interval, query: interfaceName && podName - ? `quantile(0.99, client_rq_timeout{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` + ? `quantile(0.99, client_rq_timeout_avg{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` : interfaceName - ? `quantile(0.99, client_rq_timeout{api=~"${interfaceName}"}) or on() vector(0)` + ? `quantile(0.99, client_rq_timeout_avg{api=~"${interfaceName}"}) or on() vector(0)` : podName - ? `quantile(0.99, client_rq_timeout{polaris_server_instance="${podName}"}) or on() vector(0)` - : `quantile(0.99, client_rq_timeout) or on() vector(0)`, + ? `quantile(0.99, client_rq_timeout_avg{polaris_server_instance="${podName}"}) or on() vector(0)` + : `quantile(0.99, client_rq_timeout_avg) or on() vector(0)`, }) const point = res?.[0]?.values?.[0] if (!point) return '-' @@ -193,12 +193,12 @@ export const getQueryMap = { name: 'P95', query: interfaceName && podName - ? `quantile(0.95, client_rq_timeout{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` + ? `quantile(0.95, client_rq_timeout_avg{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` : interfaceName - ? `quantile(0.95, client_rq_timeout{api=~"${interfaceName}"}) or on() vector(0)` + ? `quantile(0.95, client_rq_timeout_avg{api=~"${interfaceName}"}) or on() vector(0)` : podName - ? `quantile(0.95, client_rq_timeout{polaris_server_instance="${podName}"}) or on() vector(0)` - : `quantile(0.95, client_rq_timeout) or on() vector(0)`, + ? `quantile(0.95, client_rq_timeout_avg{polaris_server_instance="${podName}"}) or on() vector(0)` + : `quantile(0.95, client_rq_timeout_avg) or on() vector(0)`, asyncBoardFunction: async () => { const res = await getMonitorData({ start, @@ -206,12 +206,12 @@ export const getQueryMap = { step: interval, query: interfaceName && podName - ? `quantile(0.95, client_rq_timeout{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` + ? `quantile(0.95, client_rq_timeout_avg{api=~"${interfaceName}",polaris_server_instance="${podName}"}) or on() vector(0)` : interfaceName - ? `quantile(0.95, client_rq_timeout{api=~"${interfaceName}"}) or on() vector(0)` + ? `quantile(0.95, client_rq_timeout_avg{api=~"${interfaceName}"}) or on() vector(0)` : podName - ? `quantile(0.95, client_rq_timeout{polaris_server_instance="${podName}"}) or on() vector(0)` - : `quantile(0.95, client_rq_timeout) or on() vector(0)`, + ? `quantile(0.95, client_rq_timeout_avg{polaris_server_instance="${podName}"}) or on() vector(0)` + : `quantile(0.95, client_rq_timeout_avg) or on() vector(0)`, }) const point = res?.[0]?.values?.[0] if (!point) return '-' From 6b7c03c396836ee41f927cc55e0443906de535f8 Mon Sep 17 00:00:00 2001 From: "dongsheng.qi" Date: Wed, 11 Oct 2023 17:14:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=95=B0greph=E4=B8=BA=E9=80=9F=E7=8E=87?= =?UTF-8?q?=E6=8C=87=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitor/serviceMonitor/overview/Page.tsx | 18 +++++++++- .../monitor/serviceMonitor/service/Page.tsx | 1 + .../polaris/monitor/serviceMonitor/types.ts | 36 +++++++++++-------- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/web/src/polaris/monitor/serviceMonitor/overview/Page.tsx b/web/src/polaris/monitor/serviceMonitor/overview/Page.tsx index 90e994c8..725e18c4 100644 --- a/web/src/polaris/monitor/serviceMonitor/overview/Page.tsx +++ b/web/src/polaris/monitor/serviceMonitor/overview/Page.tsx @@ -12,6 +12,22 @@ import { FilterType } from '../Page' interface Props extends DuckCmpProps { filterMap: Record } + +function getButtonValue(step: React.ReactNode): string { + if (typeof step === 'string') { + return step; + } else if (React.isValidElement(step)) { + const selectElement = step as React.ReactElement; + if (React.isValidElement(selectElement.props.children)) { + const buttonElement = selectElement.props.children as React.ReactElement; + if (typeof buttonElement.props.value === 'string') { + return buttonElement.props.value; + } + } + } + return ''; +} + export default function Overview(props: Props) { const { duck, store, filterMap, dispatch } = props const { selector, creators } = duck @@ -43,7 +59,7 @@ export default function Overview(props: Props) { diff --git a/web/src/polaris/monitor/serviceMonitor/service/Page.tsx b/web/src/polaris/monitor/serviceMonitor/service/Page.tsx index 7a77f31d..e69bbdb5 100644 --- a/web/src/polaris/monitor/serviceMonitor/service/Page.tsx +++ b/web/src/polaris/monitor/serviceMonitor/service/Page.tsx @@ -325,6 +325,7 @@ export default function Overview(props: Props) { calleeService: service, calleeMethod: interfaceName, calleeInstance: currentInstance?.ip, + step: step, })} cardProps={{ bordered: true }} cardBodyProps={{ title: '服务请求数' }} diff --git a/web/src/polaris/monitor/serviceMonitor/types.ts b/web/src/polaris/monitor/serviceMonitor/types.ts index 237554e1..a3e234ad 100644 --- a/web/src/polaris/monitor/serviceMonitor/types.ts +++ b/web/src/polaris/monitor/serviceMonitor/types.ts @@ -1,6 +1,6 @@ import moment from 'moment' import { getMonitorData } from '../models' -import { SumUpReduceFunction, AvgReduceFunction, MaxReduceFunction, MinReduceFunction } from '../types' +import { SumUpReduceFunction, AvgReduceFunction, MaxReduceFunction, MinReduceFunction, LatestValueReduceFunction } from '../types' export enum MetricName { Request = 'Request', @@ -21,7 +21,7 @@ export const DefaultLineColors = Object.values(LineColor) export const getQueryMap = { [MetricName.Request]: (queryParam = {} as any) => { - const { calleeNamespace, calleeService, calleeMethod, calleeInstance } = queryParam + const { calleeNamespace, calleeService, calleeMethod, calleeInstance, step } = queryParam const conditionSets = { CalleeNamespace: calleeNamespace ? `callee_namespace="${calleeNamespace}"` : '', CalleeService: calleeService ? `callee_service="${calleeService}"` : '', @@ -32,37 +32,43 @@ export const getQueryMap = { .filter(([, value]) => !!value) .map(([, value]) => value) const conditionString = conditions.join(',') + // 最小精度限制 + let stepReq = step + if (stepReq < 60) { + stepReq = 60 + } return [ { - name: '总请求数', + name: '请求数', query: conditions.length - ? `sum(upstream_rq_total{${conditionString}}) or on() vector(0)` - : 'sum(upstream_rq_total) or on() vector(0)', - boardFunction: SumUpReduceFunction, + ? `sum(rate(upstream_rq_total{${conditionString}}[${stepReq}s])) or on() vector(0)` + : `sum(rate(upstream_rq_total{}[${stepReq}s])) or on() vector(0)`, + boardFunction: LatestValueReduceFunction, minStep: 60, + noLine: true, }, { name: '成功请求数', query: conditions.length - ? `sum(upstream_rq_total{callee_result="success",${conditionString}}) or on() vector(0)` - : 'sum(upstream_rq_total{callee_result="success"}) or on() vector(0)', - boardFunction: SumUpReduceFunction, + ? `sum(rate(upstream_rq_total{callee_result="success",${conditionString}} [${stepReq}s])) or on() vector(0)` + : `sum(rate(upstream_rq_total{callee_result="success"}[${stepReq}s])) or on() vector(0)`, + boardFunction: LatestValueReduceFunction, minStep: 60, }, { name: '限流请求数', query: conditions.length - ? `sum(upstream_rq_total{callee_result="flow_control",${conditionString}}) or on() vector(0)` - : 'sum(upstream_rq_total{callee_result="flow_control"}) or on() vector(0)', - boardFunction: SumUpReduceFunction, + ? `sum(rate(upstream_rq_total{callee_result="flow_control",${conditionString}}[${stepReq}s])) or on() vector(0)` + : `sum(rate(upstream_rq_total{callee_result="flow_control"}[${stepReq}s])) or on() vector(0)`, + boardFunction: LatestValueReduceFunction, minStep: 60, }, { name: '熔断请求数', query: conditions.length - ? `sum(upstream_rq_total{callee_result="reject",${conditionString}}) or on() vector(0)` - : 'sum(upstream_rq_total{callee_result="reject"}) or on() vector(0)', - boardFunction: SumUpReduceFunction, + ? `sum(rate(upstream_rq_total{callee_result="reject",${conditionString}}[${stepReq}s])) or on() vector(0)` + : `sum(rate(upstream_rq_total{callee_result="reject"}[${stepReq}s])) or on() vector(0)`, + boardFunction: LatestValueReduceFunction, minStep: 60, }, ]