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, }, ]