diff --git a/src/components/StatusPanel/index.less b/src/components/StatusPanel/index.less deleted file mode 100644 index 43ebc9f4..00000000 --- a/src/components/StatusPanel/index.less +++ /dev/null @@ -1,43 +0,0 @@ -.status-panel { - display: inline-flex; - list-style: none; - margin-bottom: 0; - align-items: center; - - li { - font-size: 12px; - - span { - color: #000; - opacity: 0.7; - padding-left: 10px; - font-size: 12px; - } - - &::before { - content: ""; - display: inline-block; - width: 10px; - height: 10px; - border-radius: 50%; - margin-right: 6px; - } - } - - .normal { - color: rgba(41, 195, 119, 1); - padding-right: 25px; - - &::before { - background-color: rgba(41, 195, 119, 1); - } - } - - .abnormal { - color: rgba(226, 95, 95, 1); - - &::before { - background-color: rgba(226, 95, 95, 1); - } - } -} diff --git a/src/components/StatusPanel/index.tsx b/src/components/StatusPanel/index.tsx deleted file mode 100644 index a0d76e81..00000000 --- a/src/components/StatusPanel/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import React, { useEffect, useRef, useState } from 'react'; -import intl from 'react-intl-universal'; -import { connect } from 'react-redux'; -import { DETAIL_DEFAULT_RANGE } from '@/utils/dashboard'; -import { shouldCheckCluster } from '@/utils'; -import { ServiceName } from '@/utils/interface'; -import './index.less'; - -const mapState = (state: any) => ({ - cluster: state.cluster?.cluster, - metricsFilterValues: state.machine.metricsFilterValues, -}); - -const mapDispatch = (dispatch) => ({}); - -interface IProps extends ReturnType { - type: ServiceName; - clusterID?: string; - getStatus: (payload) => void; -} - -function StatusPanel(props: IProps) { - - const { cluster, type, getStatus, metricsFilterValues } = props; - - const pollingTimer: any = useRef(); - - const [ statusNumInfo, setStatusNumInfo ] = useState({ - abnormal: 0, - normal: 0 - }); - - useEffect(() => { - if (pollingTimer.current) { - clearTimeout(pollingTimer.current); - } - if (shouldCheckCluster()) { - if (cluster.id) { - pollingData(); - } - } else { - pollingData(); - } - return () => { - if (pollingTimer.current) { - clearTimeout(pollingTimer.current); - } - } - }, [cluster, metricsFilterValues.frequency, metricsFilterValues.timeRange]) - - const asyncGetStatus = async () => { - const { normal, abnormal } = (await getStatus({ - query: `nebula_${type}_count`, - end: Date.now(), - interval: DETAIL_DEFAULT_RANGE, - clusterID: cluster?.id, - })) as any; - setStatusNumInfo({ normal, abnormal }) - }; - - const pollingData = () => { - asyncGetStatus(); - if (metricsFilterValues.frequency > 0) { - pollingTimer.current = setTimeout(pollingData, metricsFilterValues.frequency); - } - }; - - return ( -
    -
  • - {intl.get('service.normal')}: {statusNumInfo.normal} -
  • -
  • - {intl.get('service.abnormal')}: {statusNumInfo.abnormal} -
  • -
- ); -} - -export default connect(mapState, mapDispatch)(StatusPanel); diff --git a/src/pages/MachineDashboard/Detail/CPUDetail.tsx b/src/pages/MachineDashboard/Detail/CPUDetail.tsx index bfa8f5cf..d64e7800 100644 --- a/src/pages/MachineDashboard/Detail/CPUDetail.tsx +++ b/src/pages/MachineDashboard/Detail/CPUDetail.tsx @@ -1,19 +1,14 @@ -import { connect } from 'react-redux'; +import React from 'react'; import Detail from '.'; -import { IDispatch, IRootState } from '@/store'; import { SUPPORT_METRICS } from '@/utils/promQL'; import { getMetricsUniqName } from '@/utils/dashboard'; import { MetricScene } from '@/utils/interface'; -const mapState = (state: IRootState) => ({ - type: 'cpu', - metricOptions: SUPPORT_METRICS.cpu, - dataTypeObj: getMetricsUniqName(MetricScene.CPU), - loading: !!state.loading.effects.machine.asyncGetCPUStatByRange, -}); - -const mapDispatch: any = (dispatch: IDispatch) => ({ - asyncGetDataSourceByRange: dispatch.machine.asyncGetCPUStatByRange, -}); - -export default connect(mapState, mapDispatch)(Detail); +export default () => ( + +); diff --git a/src/pages/MachineDashboard/Detail/DiskDetail.tsx b/src/pages/MachineDashboard/Detail/DiskDetail.tsx index 591fd1bf..e7c863fa 100644 --- a/src/pages/MachineDashboard/Detail/DiskDetail.tsx +++ b/src/pages/MachineDashboard/Detail/DiskDetail.tsx @@ -1,22 +1,14 @@ -// export default connect(mapState, mapDispatch)(Detail); -import { connect } from 'react-redux'; +import React from 'react'; import Detail from '.'; -import { IDispatch, IRootState } from '@/store'; import { SUPPORT_METRICS } from '@/utils/promQL'; import { getMetricsUniqName } from '@/utils/dashboard'; import { MetricScene } from '@/utils/interface'; -const mapState = (state: IRootState) => ({ - type: 'disk', - instances: state.machine.instanceList, - metricOptions: SUPPORT_METRICS.disk, - dataTypeObj: getMetricsUniqName(MetricScene.DISK), - metricsFilterValues: state.machine.metricsFilterValues, - loading: state.loading.effects.machine.asyncGetDiskStatByRange, -}); - -const mapDispatch: any = (dispatch: IDispatch) => ({ - asyncGetDataSourceByRange: dispatch.machine.asyncGetDiskStatByRange, -}); - -export default connect(mapState, mapDispatch)(Detail); +export default () => ( + +); diff --git a/src/pages/MachineDashboard/Detail/LoadDetail.tsx b/src/pages/MachineDashboard/Detail/LoadDetail.tsx index 51608840..6a1d13cd 100644 --- a/src/pages/MachineDashboard/Detail/LoadDetail.tsx +++ b/src/pages/MachineDashboard/Detail/LoadDetail.tsx @@ -1,22 +1,14 @@ -// export default connect(mapState, mapDispatch)(MemoryDetail); -import { connect } from 'react-redux'; +import React from 'react'; import Detail from '.'; -import { IDispatch, IRootState } from '@/store'; import { SUPPORT_METRICS } from '@/utils/promQL'; import { getMetricsUniqName } from '@/utils/dashboard'; import { MetricScene } from '@/utils/interface'; -const mapState = (state: IRootState) => ({ - type: 'load', - instances: state.machine.instanceList, - metricOptions: SUPPORT_METRICS.load, - dataTypeObj: getMetricsUniqName(MetricScene.LOAD), - metricsFilterValues: state.machine.metricsFilterValues, - loading: state.loading.effects.machine.asyncGetLoadByRange, -}); - -const mapDispatch: any = (dispatch: IDispatch) => ({ - asyncGetDataSourceByRange: dispatch.machine.asyncGetLoadByRange, -}); - -export default connect(mapState, mapDispatch)(Detail); +export default () => ( + +); diff --git a/src/pages/MachineDashboard/Detail/MemoryDetail.tsx b/src/pages/MachineDashboard/Detail/MemoryDetail.tsx index ca304c10..c5ec358d 100644 --- a/src/pages/MachineDashboard/Detail/MemoryDetail.tsx +++ b/src/pages/MachineDashboard/Detail/MemoryDetail.tsx @@ -1,20 +1,14 @@ -// export default connect(mapState, mapDispatch)(MemoryDetail); -import { connect } from 'react-redux'; +import React from 'react'; import Detail from '.'; -import { IDispatch, IRootState } from '@/store'; import { SUPPORT_METRICS } from '@/utils/promQL'; import { getMetricsUniqName } from '@/utils/dashboard'; import { MetricScene } from '@/utils/interface'; -const mapState = (state: IRootState) => ({ - type: 'memory', - metricOptions: SUPPORT_METRICS.memory, - dataTypeObj: getMetricsUniqName(MetricScene.MEMORY), - loading: state.loading.effects.machine.asyncGetMemoryStatByRange, -}); - -const mapDispatch: any = (dispatch: IDispatch) => ({ - asyncGetDataSourceByRange: dispatch.machine.asyncGetMemoryStatByRange, -}); - -export default connect(mapState, mapDispatch)(Detail); +export default () => ( + +); diff --git a/src/pages/MachineDashboard/Detail/NetworkDetail.tsx b/src/pages/MachineDashboard/Detail/NetworkDetail.tsx index bc5e5155..4a8c9949 100644 --- a/src/pages/MachineDashboard/Detail/NetworkDetail.tsx +++ b/src/pages/MachineDashboard/Detail/NetworkDetail.tsx @@ -1,19 +1,14 @@ -import { connect } from 'react-redux'; +import React from 'react'; import Detail from '.'; -import { IDispatch, IRootState } from '@/store'; import { SUPPORT_METRICS } from '@/utils/promQL'; import { getMetricsUniqName } from '@/utils/dashboard'; import { MetricScene } from '@/utils/interface'; -const mapState = (state: IRootState) => ({ - type: 'network', - metricOptions: SUPPORT_METRICS.network, - dataTypeObj: getMetricsUniqName(MetricScene.NETWORK), - loading: state.loading.effects.machine.asyncGetNetworkStatByRange, -}); - -const mapDispatch: any = (dispatch: IDispatch) => ({ - asyncGetDataSourceByRange: dispatch.machine.asyncGetNetworkStatByRange, -}); - -export default connect(mapState, mapDispatch)(Detail); +export default () => ( + +); diff --git a/src/pages/MachineDashboard/Detail/index.tsx b/src/pages/MachineDashboard/Detail/index.tsx index 72bde7f1..a9d441d1 100644 --- a/src/pages/MachineDashboard/Detail/index.tsx +++ b/src/pages/MachineDashboard/Detail/index.tsx @@ -14,13 +14,21 @@ import { } from '@/utils/dashboard'; import { IDispatch, IRootState } from '@/store'; -import { shouldCheckCluster } from '@/utils'; +import { getQueryRangeInfo } from '@/utils'; import MetricsFilterPanel from '@/components/MetricsFilterPanel'; import Icon from '@/components/Icon'; import BaseLineEditModal from '@/components/BaseLineEditModal'; +import { LINUX as PROMQL } from '@/utils/promQL'; import './index.less'; -import { IMachineMetricOption } from '@/utils/interface'; +import { BatchQueryItem, IMachineMetricOption } from '@/utils/interface'; import { RouteProps, useHistory } from 'react-router-dom'; +import { asyncBatchQueries } from '@/requests'; + +interface MetricChartItem { + metric: IMachineMetricOption; + baseLine: any; + chartRef?: any; +} const mapDispatch: any = (dispatch: IDispatch) => ({ updateMetricsFiltervalues: dispatch.machine.updateMetricsFiltervalues, @@ -36,22 +44,13 @@ interface IProps extends ReturnType, ReturnType, RouteProps { type: string; - asyncGetDataSourceByRange: (params: { - start: number; - end: number; - metric: string; - clusterID?: string; - }) => Promise; metricOptions: IMachineMetricOption[]; - loading: true; dataTypeObj: any; } function Detail(props: IProps) { - const { metricOptions, loading, aliasConfig, asyncGetDataSourceByRange, cluster, instances, metricsFilterValues, updateMetricsFiltervalues, type, dataTypeObj } = props; - - const [dataSources, setDataSources] = useState([]); + const { metricOptions, aliasConfig, cluster, instances, metricsFilterValues, updateMetricsFiltervalues, type, dataTypeObj } = props; const [curMetricOptions, setMetricOptions] = useState([]); @@ -62,9 +61,8 @@ function Detail(props: IProps) { const pollingTimerRef = useRef(null); const metricCharts: any = useMemo(() => (metricOptions || []).map( - (metric, i) => ({ + (metric) => ({ metric, - index: i, baseLine: undefined, }) ), [metricOptions]); @@ -73,39 +71,23 @@ function Detail(props: IProps) { (metricOptions || []).map((metric) => metric.metric) ), [metricOptions]); - useEffect(() => { - setShowLoading(loading && metricsFilterValues.frequency === 0) - }, [loading, metricsFilterValues.frequency]) - useEffect(() => { setMetricOptions(metricOptions) }, [metricOptions]) useEffect(() => { - clearPolling(); - if (shouldCheckCluster()) { - if (cluster?.id) { - pollingData(); - } - } else { - pollingData(); + if (cluster?.id && instances.length > 0) { + getData(true); } - }, [cluster, metricsFilterValues.frequency, metricsFilterValues.timeRange]) + }, [metricCharts, cluster, instances]) useEffect(() => { - updateChart(); - }, [metricsFilterValues.instanceList, dataSources, curMetricOptions]) - - useEffect(() => () => { clearPolling(); - }, []) - - useEffect(() => { - if (pollingTimerRef.current) { + pollingData(); + return () => { clearPolling(); - pollingData(); } - }, [curMetricOptions]) + }, [metricsFilterValues.frequency]) const clearPolling = () => { if (pollingTimerRef.current) { @@ -113,35 +95,31 @@ function Detail(props: IProps) { } }; - const getData = async () => { - const [startTimestamps, endTimestamps] = calcTimeRange(metricsFilterValues.timeRange); - const getPromise = (chart) => { - return new Promise((resolve, reject) => { - asyncGetDataSourceByRange({ - start: startTimestamps, - end: endTimestamps, - metric: chart.metric.metric, - clusterID: cluster?.id, - }).then(res => { - resolve(res); - }).catch(e => { - reject(e); - }); - }) - } - Promise.all(metricCharts.map((chart, i) => { - if (curMetricOptions.length === 0 || curMetricOptions.find(m => m.metric === chart.metric.metric)) { - return getPromise(chart); - } else { - return Promise.resolve(dataSources[i]); - } - })).then((dataSources) => { - setDataSources(dataSources) + const getData = async (showLoading: boolean = false, updateMetricCharts: MetricChartItem[] = metricCharts) => { + if (updateMetricCharts.length === 0 || !cluster?.id) return; + showLoading && setShowLoading(true); + // const finMetricCharts = updateMetricCharts.filter(chart => chart.visible); + const [startTime, endTime] = calcTimeRange(metricsFilterValues.timeRange); + const { start, end, step } = getQueryRangeInfo(startTime, endTime); + const queries: BatchQueryItem[] = updateMetricCharts.map((chart: MetricChartItem) => ({ + refId: chart.metric.metric, + query: PROMQL(cluster.id)[chart.metric.metric], + start, + end, + step + })); + const data: any = await asyncBatchQueries(queries); + const { results } = data; + if (!results) return; + updateMetricCharts.forEach((chart: MetricChartItem) => { + const datasource = results[chart.metric.metric].result; + updateChart(chart, datasource); }) + showLoading && setShowLoading(false); }; const pollingData = () => { - getData(); + getData(true); if (metricsFilterValues.frequency > 0) { pollingTimerRef.current = setInterval(getData, metricsFilterValues.frequency); } @@ -169,36 +147,34 @@ function Detail(props: IProps) { }); }; - const updateChart = () => { - metricCharts.forEach((chart, i) => { - const data = type === 'disk' ? - getDiskData({ - data: dataSources[i] || [], - type: metricsFilterValues.instanceList, - nameObj: dataTypeObj, - aliasConfig, - instanceList: instances, - }) : - getDataByType({ - data: dataSources[i] || [], - type: metricsFilterValues.instanceList, - nameObj: dataTypeObj, - aliasConfig, - instanceList: instances, - }); - const values = data.map(d => d.value) as number[]; - const maxNum = values.length > 0 ? Math.floor(Math.max(...values) * 100) / 100 : undefined; - const minNum = values.length > 0 ? Math.floor(Math.min(...values) * 100) / 100 : undefined; - const realRange = data.length>0?(data[data.length-1].time - data[0].time):0; - let tickInterval = getTickIntervalByGap(Math.floor(realRange / 10)); // 10 ticks max - chart.chartRef.updateDetailChart({ - type, - valueType: chart.metric.valueType, - tickInterval, - maxNum, - minNum - }).changeData(data); - }) + const updateChart = (metricChart: MetricChartItem, dataSource: any) => { + const data = type === 'disk' ? + getDiskData({ + data: dataSource || [], + type: metricsFilterValues.instanceList, + nameObj: dataTypeObj, + aliasConfig, + instanceList: instances, + }) : + getDataByType({ + data: dataSource || [], + type: metricsFilterValues.instanceList, + nameObj: dataTypeObj, + aliasConfig, + instanceList: instances, + }); + const values = data.map(d => d.value) as number[]; + const maxNum = values.length > 0 ? Math.floor(Math.max(...values) * 100) / 100 : undefined; + const minNum = values.length > 0 ? Math.floor(Math.min(...values) * 100) / 100 : undefined; + const realRange = data.length > 0 ? (data[data.length - 1].time - data[0].time) : 0; + let tickInterval = getTickIntervalByGap(Math.floor(realRange / 10)); // 10 ticks max + metricChart.chartRef.updateDetailChart({ + type, + valueType: metricChart.metric.valueType, + tickInterval, + maxNum, + minNum + }).changeData(data); }; const handleBaseLineEdit = (metricChart) => () => { @@ -210,8 +186,7 @@ function Detail(props: IProps) { }; const handleRefreshData = () => { - setShowLoading(loading); - getData(); + getData(true); } const handleMetricsChange = (values) => { @@ -268,7 +243,6 @@ function Detail(props: IProps) {
metricChart.chartRef = ref} renderChart={renderChart(i)} /> diff --git a/src/pages/ServiceDashboard/Detail/index.tsx b/src/pages/ServiceDashboard/Detail/index.tsx index 414440a0..9429100a 100644 --- a/src/pages/ServiceDashboard/Detail/index.tsx +++ b/src/pages/ServiceDashboard/Detail/index.tsx @@ -39,9 +39,7 @@ interface MetricChartItem { } const mapDispatch: any = (dispatch: IDispatch) => ({ - asyncGetStatus: dispatch.service.asyncGetStatus, asyncGetSpaces: dispatch.serviceMetric.asyncGetSpaces, - // asyncFetchMetricsData: dispatch.service.asyncGetMetricsData, updateMetricsFiltervalues: dispatch.service.updateMetricsFiltervalues, }); @@ -51,7 +49,6 @@ const mapState = (state: IRootState) => ({ cluster: (state as any)?.cluster?.cluster, metricsFilterValues: (state as any).service.metricsFilterValues as ServiceMetricsPanelValue, instanceList: (state as any).service.instanceList, - // loading: state.loading.models.service, }); interface IProps @@ -185,7 +182,6 @@ function ServiceDetail(props: IProps) { start, end, step - // space: serviceType === ServiceName.GRAPHD ? space : undefined, } }); const data: any = await asyncBatchQueries(queries); @@ -197,7 +193,7 @@ function ServiceDetail(props: IProps) { const datasource = results[chart.metric.metric].result; updateChart(chart, datasource); }); - setShowLoading(false); + showLoading && setShowLoading(false); }; diff --git a/src/pages/ServiceDashboard/ServiceOverview/CustomServiceQueryPanel/index.less b/src/pages/ServiceDashboard/ServiceOverview/CustomServiceQueryPanel/index.less deleted file mode 100644 index 48ad002c..00000000 --- a/src/pages/ServiceDashboard/ServiceOverview/CustomServiceQueryPanel/index.less +++ /dev/null @@ -1,53 +0,0 @@ -.service-card { - height: 100%; - background: #fff; - display: flex; - flex-direction: column; - - > .header { - position: relative; - - > span { - padding: 0 12px; - font-size: 18px; - line-height: 43px; - height: 43px; - margin-bottom: 0; - width: 50%; - } - - > div { - position: absolute; - cursor: pointer; - top: 15px; - right: 16px; - width: 65%; - line-height: 18px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - text-align: right; - - >span { - padding-right: 10px; - - >span { - font-weight: bold; - } - } - - .btn-icon-with-desc { - margin-top: 0; - } - - .hide-period{ - margin-top: 5px; - } - } - } - - > .content { - text-align: center; - flex: 1; - } -} diff --git a/src/pages/ServiceDashboard/ServiceOverview/CustomServiceQueryPanel/index.tsx b/src/pages/ServiceDashboard/ServiceOverview/CustomServiceQueryPanel/index.tsx deleted file mode 100644 index 3ec48cc6..00000000 --- a/src/pages/ServiceDashboard/ServiceOverview/CustomServiceQueryPanel/index.tsx +++ /dev/null @@ -1,131 +0,0 @@ -import React, { useEffect, useState, useMemo } from 'react'; -import intl from 'react-intl-universal'; -import { connect } from 'react-redux'; -import { Popover } from 'antd'; -import Icon from '@/components/Icon'; -import { IServiceMetricItem, IServicePanelConfig, MetricScene, ServiceName } from '@/utils/interface'; -import { AggregationType, calcTimeRange, getDataByType, getMetricsUniqName, TIME_OPTION_TYPE } from '@/utils/dashboard'; -import Card from '@/components/Service/ServiceCard/Card'; -import { IDispatch, IRootState } from '@/store'; -import { shouldCheckCluster } from '@/utils'; -import classnames from "classnames"; - -import './index.less'; -import { getQueryByMetricType } from '@/utils/metric'; - -const mapDispatch: any = (dispatch: IDispatch) => ({ - asyncGetMetricsData: dispatch.service.asyncGetMetricsData as any, -}); - -const mapState = (state: IRootState) => ({ - aliasConfig: state.app.aliasConfig, - cluster: (state as any).cluster?.cluster, - metricsFilterValues: state.service.metricsFilterValues, - serviceMetric: state.serviceMetric, - instances: state.service.instanceList, -}); - -interface IProps - extends ReturnType, - ReturnType { - onConfigPanel: () => void; - serviceType: ServiceName; - config: IServicePanelConfig; - isHidePeriod?: boolean; -} - -function CustomServiceQueryPanel(props: IProps) { - - const { config, cluster, asyncGetMetricsData, onConfigPanel, aliasConfig, metricsFilterValues, isHidePeriod, serviceMetric, serviceType, instances } = props; - - const [data, setData] = useState([]) - - let pollingTimer: any = useMemo(() => undefined, []); - - useEffect(() => { - if (pollingTimer) { - clearTimeout(pollingTimer); - } - if (shouldCheckCluster()) { - if (cluster.id) { - pollingData(); - } - } else { - pollingData(); - } - return () => { - if (pollingTimer) { - clearTimeout(pollingTimer); - } - } - }, [metricsFilterValues, cluster, config, serviceMetric]) - - const getMetricsData = async () => { - let { period: metricPeriod = 5, space, metric } = config; - const {timeRange} = metricsFilterValues - const [start, end] = calcTimeRange(timeRange); - const item = (serviceMetric[serviceType] as IServiceMetricItem[]).find((metricItem: IServiceMetricItem) => metricItem.metric === metric); - const aggregation = item?.aggregations[0] as AggregationType; - if (item) { - const data = await asyncGetMetricsData({ - query: getQueryByMetricType(item, aggregation, metricPeriod?.toString()), // EXPLAIN: query like nebula_graphd_num_queries_rate_600 - start, - end, - space, - clusterID: cluster?.id, - isRawMetric: item.isRawMetric, - aggregation - }); - setData(data) - } - }; - - const pollingData = () => { - getMetricsData(); - if (metricsFilterValues.frequency > 0) { - pollingTimer = setTimeout(() => { - pollingData(); - }, metricsFilterValues.frequency); - } - }; - - return ( -
-
- - {config.metric} - -
-
- - {intl.get('common.set')} -
-
-
-
- -
-
- ); -} - -export default connect(mapState, mapDispatch)(CustomServiceQueryPanel); diff --git a/src/store/models/machine.ts b/src/store/models/machine.ts index d59de5b5..5321e20a 100644 --- a/src/store/models/machine.ts +++ b/src/store/models/machine.ts @@ -66,95 +66,6 @@ export function MachineModelWrapper(service,) { } return result; }, - - async asyncGetCPUStatByRange(payload: { - start: number; - end: number; - metric: string; - clusterID?: string; - }) { - let cpuStat = await this.asyncGetMetricsData({ - ...payload, - nameObj: getMetricsUniqName(MetricScene.CPU) - }); - return cpuStat; - }, - - async asyncGetMemoryStatByRange(payload: { - start: number; - end: number; - metric: string; - clusterID?: string; - }) { - let memoryStat = await this.asyncGetMetricsData({ - ...payload, - nameObj: getMetricsUniqName(MetricScene.MEMORY) - }); - return memoryStat; - }, - - async asyncGetMemorySizeStat(clusterID?: string) { - const { code, data } = (await service.execPromQL({ - clusterID, - query: PROMQL(clusterID).memory_size, - })) as any; - let memorySizeStat = []; - if (code === 0) { - memorySizeStat = data.result; - } - return memorySizeStat; - }, - - async asyncGetDiskStatByRange(payload: { - start: number; - end: number; - metric: string; - clusterID: string; - }) { - let diskStat = await this.asyncGetMetricsData({ - ...payload, - nameObj: getMetricsUniqName(MetricScene.DISK) - }); - return diskStat; - }, - - async asyncGetDiskSizeStat(clusterID?: string) { - const { code, data } = await service.execPromQL({ - clusterID, - query: PROMQL(clusterID).disk_size, - }); - let diskSizeStat = []; - if (code === 0) { - diskSizeStat = data.result; - } - return diskSizeStat; - }, - - async asyncGetLoadByRange(payload: { - start: number; - end: number; - metric: string; - clusterID: string; - }) { - let loadStat = await this.asyncGetMetricsData({ - ...payload, - nameObj: getMetricsUniqName(MetricScene.LOAD) - }); - return loadStat; - }, - - async asyncGetNetworkStatByRange(payload: { - start: number; - end: number; - metric: string; - inOrOut?: string; - clusterID?: string; - }) { - const { start, end, metric, clusterID, inOrOut } = payload; - let networkStat = await this.asyncGetMetricsData({ start, end, metric, clusterID, nameObj: getMetricsUniqName(MetricScene.NETWORK) }); - return networkStat; - }, - updateMetricsFiltervalues(values: MetricsPanelValue) { this.updateMetricsFilterValues({ metricsFilterValues: { diff --git a/src/store/models/service.ts b/src/store/models/service.ts index 39440a13..4dd61911 100644 --- a/src/store/models/service.ts +++ b/src/store/models/service.ts @@ -3,7 +3,7 @@ import _ from 'lodash'; import serviceApi from '@/config/service'; import { IPanelConfig, ServiceMetricsPanelValue } from '@/utils/interface'; import { DEFAULT_SERVICE_PANEL_CONFIG } from '@/utils/service'; -import { AggregationType, getProperStep } from '@/utils/dashboard'; +import { AggregationType } from '@/utils/dashboard'; import { isCommunityVersion, unique } from '@/utils'; import { getClusterPrefix } from '@/utils/promQL'; import { InitMetricsFilterValues } from '@/utils/metric'; @@ -18,9 +18,6 @@ interface IServiceState { export function SereviceModelWrapper(serviceApi) { return createModel({ state: { - // panelConfig: localStorage.getItem('panelConfig') - // ? JSON.parse(localStorage.getItem('panelConfig')!) - // : DEFAULT_SERVICE_PANEL_CONFIG, panelConfig: DEFAULT_SERVICE_PANEL_CONFIG, instanceList: [], metricsFilterValues: InitMetricsFilterValues @@ -46,38 +43,6 @@ export function SereviceModelWrapper(serviceApi) { } }, effects: () => ({ - async asyncGetMetricsSumData(payload: { - query: string; - start: number; - end: number; - space?: string; - clusterID?: string; - }) { - const { start, end, space, query: _query, clusterID } = payload; - const { start: _start, end: _end, step } = getQueryRangeInfo(start, end); - let query = `sum(${_query}{${getClusterPrefix()}="${clusterID}"})`; - query = `${_query}{${getClusterPrefix()}="${clusterID}", space="${space || ''}"}`; - const { code, data } = (await serviceApi.execPromQLByRange({ - clusterID, - query, - start: _start, - end: _end, - step, - })) as any; - - if (code === 0 && data.result.length !== 0) { - const sumData = { - metric: { - instanceName: 'total', - instance: 'total', - }, - } as any; - sumData.values = data.result[0].values; - return sumData; - } - return []; - }, - async asyncGetMetricsData(payload: { query: string; space?: string; @@ -133,40 +98,6 @@ export function SereviceModelWrapper(serviceApi) { } return stat; }, - - async asyncGetStatus(payload: { - interval: number; - end: number; - query: string; - clusterID?: string; - }) { - const { interval, end, query, clusterID } = payload; - const start = payload.end - interval; - const { start: _start, end: _end, step } = getQueryRangeInfo(start, end); - const { code, data } = (await serviceApi.execPromQLByRange({ - clusterID, - query: clusterID ? `${query}{${getClusterPrefix()}="${clusterID}"}` : query, - start: _start, - end: _end, - step, - })) as any; - let normal = 0; - let abnormal = 0; - if (code === 0) { - data.result.forEach(item => { - const value = item.values.pop(); - if (value[1] === '1') { - normal++; - } else { - abnormal++; - } - }); - } - return { - normal, - abnormal, - }; - }, updateMetricsFiltervalues(values: ServiceMetricsPanelValue) { this.updateMetricsFilterValues({ metricsFilterValues: values, diff --git a/src/utils/promQL.ts b/src/utils/promQL.ts index f3c33de1..2d06b843 100644 --- a/src/utils/promQL.ts +++ b/src/utils/promQL.ts @@ -393,11 +393,11 @@ export const getMachineMetricData = (instance, cluster) => { queries: [ { refId: 'disk_read_rate', - query: `rate(node_disk_reads_completed_total{${instanceSuffix}${clusterSuffix1}}[30s])`, + query: `rate(node_disk_reads_completed_total{${instanceSuffix}${clusterSuffix1}}[1m])`, }, { refId: 'disk_write_rate', - query: `rate(node_disk_writes_completed_total{${instanceSuffix}${clusterSuffix1}}[30s])`, + query: `rate(node_disk_writes_completed_total{${instanceSuffix}${clusterSuffix1}}[1m])`, }, ] }, @@ -408,11 +408,11 @@ export const getMachineMetricData = (instance, cluster) => { queries: [ { refId: 'disk_read_rate', - query: `rate(node_disk_read_bytes_total{${instanceSuffix}${clusterSuffix1}}[30s])`, + query: `rate(node_disk_read_bytes_total{${instanceSuffix}${clusterSuffix1}}[1m])`, }, { refId: 'disk_write_rate', - query: `rate(node_disk_written_bytes_total{${instanceSuffix}${clusterSuffix1}}[30s])`, + query: `rate(node_disk_written_bytes_total{${instanceSuffix}${clusterSuffix1}}[1m])`, }, ] },