mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-13 05:29:04 +08:00
chore: added mq overview page analytics (#7128)
This commit is contained in:
parent
8bfca9b564
commit
e86c7c970a
@ -15,6 +15,7 @@ import {
|
|||||||
Typography,
|
Typography,
|
||||||
} from 'antd';
|
} from 'antd';
|
||||||
import { FilterDropdownProps } from 'antd/lib/table/interface';
|
import { FilterDropdownProps } from 'antd/lib/table/interface';
|
||||||
|
import logEvent from 'api/common/logEvent';
|
||||||
import {
|
import {
|
||||||
getQueueOverview,
|
getQueueOverview,
|
||||||
QueueOverviewResponse,
|
QueueOverviewResponse,
|
||||||
@ -458,6 +459,7 @@ export default function CeleryOverviewTable({
|
|||||||
|
|
||||||
const handleRowClick = (record: RowData): void => {
|
const handleRowClick = (record: RowData): void => {
|
||||||
onRowClick(record);
|
onRowClick(record);
|
||||||
|
logEvent('MQ Overview Page: Right Panel', { ...record });
|
||||||
};
|
};
|
||||||
|
|
||||||
const getFilteredData = useCallback(
|
const getFilteredData = useCallback(
|
||||||
@ -481,6 +483,22 @@ export default function CeleryOverviewTable({
|
|||||||
tableData,
|
tableData,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
const prevTableDataRef = useRef<string>();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (tableData.length > 0) {
|
||||||
|
const currentTableData = JSON.stringify(tableData);
|
||||||
|
|
||||||
|
if (currentTableData !== prevTableDataRef.current) {
|
||||||
|
logEvent(`MQ Overview Page: List rendered`, {
|
||||||
|
dataRender: tableData.length,
|
||||||
|
});
|
||||||
|
prevTableDataRef.current = currentTableData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [JSON.stringify(tableData)]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="celery-overview-table-container">
|
<div className="celery-overview-table-container">
|
||||||
<Input.Search
|
<Input.Search
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { Color } from '@signozhq/design-tokens';
|
import { Color } from '@signozhq/design-tokens';
|
||||||
import { Card } from 'antd';
|
import { Card } from 'antd';
|
||||||
|
import logEvent from 'api/common/logEvent';
|
||||||
import { useGetGraphCustomSeries } from 'components/CeleryTask/useGetGraphCustomSeries';
|
import { useGetGraphCustomSeries } from 'components/CeleryTask/useGetGraphCustomSeries';
|
||||||
import { useNavigateToTraces } from 'components/CeleryTask/useNavigateToTraces';
|
import { useNavigateToTraces } from 'components/CeleryTask/useNavigateToTraces';
|
||||||
import { QueryParams } from 'constants/query';
|
import { QueryParams } from 'constants/query';
|
||||||
@ -9,7 +10,7 @@ import { Button } from 'container/MetricsApplication/Tabs/styles';
|
|||||||
import { onGraphClickHandler } from 'container/MetricsApplication/Tabs/util';
|
import { onGraphClickHandler } from 'container/MetricsApplication/Tabs/util';
|
||||||
import useUrlQuery from 'hooks/useUrlQuery';
|
import useUrlQuery from 'hooks/useUrlQuery';
|
||||||
import { OnClickPluginOpts } from 'lib/uPlotLib/plugins/onClickPlugin';
|
import { OnClickPluginOpts } from 'lib/uPlotLib/plugins/onClickPlugin';
|
||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
import { useDispatch, useSelector } from 'react-redux';
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
import { useHistory, useLocation } from 'react-router-dom';
|
import { useHistory, useLocation } from 'react-router-dom';
|
||||||
import { UpdateTimeInterval } from 'store/actions';
|
import { UpdateTimeInterval } from 'store/actions';
|
||||||
@ -123,6 +124,26 @@ export default function OverviewRightPanelGraph({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const [requestRateStatus, setRequestRateStatus] = useState<boolean | null>(
|
||||||
|
null,
|
||||||
|
);
|
||||||
|
const [errorRateStatus, setErrorRateStatus] = useState<boolean | null>(null);
|
||||||
|
const [avgLatencyStatus, setAvgLatencyStatus] = useState<boolean | null>(null);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
requestRateStatus !== null &&
|
||||||
|
errorRateStatus !== null &&
|
||||||
|
avgLatencyStatus !== null
|
||||||
|
) {
|
||||||
|
logEvent('MQ Overview Page: Right Drawer - graphs', {
|
||||||
|
requestRate: requestRateStatus,
|
||||||
|
errorRate: errorRateStatus,
|
||||||
|
avgLatency: avgLatencyStatus,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [requestRateStatus, errorRateStatus, avgLatencyStatus]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card className="overview-right-panel-graph-card">
|
<Card className="overview-right-panel-graph-card">
|
||||||
<div className="request-rate-card">
|
<div className="request-rate-card">
|
||||||
@ -130,7 +151,9 @@ export default function OverviewRightPanelGraph({
|
|||||||
type="default"
|
type="default"
|
||||||
size="small"
|
size="small"
|
||||||
id="Celery_request_rate_button"
|
id="Celery_request_rate_button"
|
||||||
onClick={(): void => goToTraces(requestRateWidget)}
|
onClick={(): void => {
|
||||||
|
goToTraces(requestRateWidget);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
View Traces
|
View Traces
|
||||||
</Button>
|
</Button>
|
||||||
@ -140,6 +163,9 @@ export default function OverviewRightPanelGraph({
|
|||||||
onDragSelect={onDragSelect}
|
onDragSelect={onDragSelect}
|
||||||
onClickHandler={handleGraphClick('Celery_request_rate')}
|
onClickHandler={handleGraphClick('Celery_request_rate')}
|
||||||
customSeries={getCustomSeries}
|
customSeries={getCustomSeries}
|
||||||
|
dataAvailable={(isDataAvailable: boolean): void => {
|
||||||
|
setRequestRateStatus(isDataAvailable);
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="error-rate-card">
|
<div className="error-rate-card">
|
||||||
@ -157,6 +183,9 @@ export default function OverviewRightPanelGraph({
|
|||||||
onDragSelect={onDragSelect}
|
onDragSelect={onDragSelect}
|
||||||
onClickHandler={handleGraphClick('Celery_error_rate')}
|
onClickHandler={handleGraphClick('Celery_error_rate')}
|
||||||
customSeries={getCustomSeries}
|
customSeries={getCustomSeries}
|
||||||
|
dataAvailable={(isDataAvailable: boolean): void => {
|
||||||
|
setErrorRateStatus(isDataAvailable);
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="avg-latency-card">
|
<div className="avg-latency-card">
|
||||||
@ -173,6 +202,9 @@ export default function OverviewRightPanelGraph({
|
|||||||
headerMenuList={[...ViewMenuAction]}
|
headerMenuList={[...ViewMenuAction]}
|
||||||
onDragSelect={onDragSelect}
|
onDragSelect={onDragSelect}
|
||||||
onClickHandler={handleGraphClick('Celery_avg_latency')}
|
onClickHandler={handleGraphClick('Celery_avg_latency')}
|
||||||
|
dataAvailable={(isDataAvailable: boolean): void => {
|
||||||
|
setAvgLatencyStatus(isDataAvailable);
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
|
@ -2,6 +2,7 @@ import './ValueInfo.styles.scss';
|
|||||||
|
|
||||||
import { FileSearchOutlined } from '@ant-design/icons';
|
import { FileSearchOutlined } from '@ant-design/icons';
|
||||||
import { Button, Card, Col, Row } from 'antd';
|
import { Button, Card, Col, Row } from 'antd';
|
||||||
|
import logEvent from 'api/common/logEvent';
|
||||||
import { useNavigateToTraces } from 'components/CeleryTask/useNavigateToTraces';
|
import { useNavigateToTraces } from 'components/CeleryTask/useNavigateToTraces';
|
||||||
import { ENTITY_VERSION_V4 } from 'constants/app';
|
import { ENTITY_VERSION_V4 } from 'constants/app';
|
||||||
import { PANEL_TYPES } from 'constants/queryBuilder';
|
import { PANEL_TYPES } from 'constants/queryBuilder';
|
||||||
@ -113,6 +114,9 @@ export default function ValueInfo({
|
|||||||
return 'red';
|
return 'red';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const mqAnalyticsTitle =
|
||||||
|
'MQ Overview Page: Right drawer navigation to trace page';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card className="value-info-card">
|
<Card className="value-info-card">
|
||||||
<Row gutter={16}>
|
<Row gutter={16}>
|
||||||
@ -133,7 +137,15 @@ export default function ValueInfo({
|
|||||||
icon={<FileSearchOutlined />}
|
icon={<FileSearchOutlined />}
|
||||||
className="trace-button"
|
className="trace-button"
|
||||||
disabled={isLoading}
|
disabled={isLoading}
|
||||||
onClick={(): void => navigateToTrace(filters ?? [])}
|
onClick={(): void => {
|
||||||
|
logEvent(mqAnalyticsTitle, {
|
||||||
|
filters,
|
||||||
|
minTime,
|
||||||
|
maxTime,
|
||||||
|
source: 'request rate',
|
||||||
|
});
|
||||||
|
navigateToTrace(filters ?? []);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
View Traces
|
View Traces
|
||||||
</Button>
|
</Button>
|
||||||
@ -155,7 +167,13 @@ export default function ValueInfo({
|
|||||||
icon={<FileSearchOutlined />}
|
icon={<FileSearchOutlined />}
|
||||||
className="trace-button"
|
className="trace-button"
|
||||||
disabled={isLoading}
|
disabled={isLoading}
|
||||||
onClick={(): void =>
|
onClick={(): void => {
|
||||||
|
logEvent(mqAnalyticsTitle, {
|
||||||
|
filters,
|
||||||
|
minTime,
|
||||||
|
maxTime,
|
||||||
|
source: 'error rate',
|
||||||
|
});
|
||||||
navigateToTrace([
|
navigateToTrace([
|
||||||
...(filters ?? []),
|
...(filters ?? []),
|
||||||
{
|
{
|
||||||
@ -171,8 +189,8 @@ export default function ValueInfo({
|
|||||||
op: '=',
|
op: '=',
|
||||||
value: 'true',
|
value: 'true',
|
||||||
},
|
},
|
||||||
])
|
]);
|
||||||
}
|
}}
|
||||||
>
|
>
|
||||||
View Traces
|
View Traces
|
||||||
</Button>
|
</Button>
|
||||||
@ -194,7 +212,15 @@ export default function ValueInfo({
|
|||||||
icon={<FileSearchOutlined />}
|
icon={<FileSearchOutlined />}
|
||||||
className="trace-button"
|
className="trace-button"
|
||||||
disabled={isLoading}
|
disabled={isLoading}
|
||||||
onClick={(): void => navigateToTrace(filters ?? [])}
|
onClick={(): void => {
|
||||||
|
logEvent(mqAnalyticsTitle, {
|
||||||
|
filters,
|
||||||
|
minTime,
|
||||||
|
maxTime,
|
||||||
|
source: 'average latency',
|
||||||
|
});
|
||||||
|
navigateToTrace(filters ?? []);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
View Traces
|
View Traces
|
||||||
</Button>
|
</Button>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user