mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-29 16:14:42 +00:00
163 lines
3.9 KiB
TypeScript
163 lines
3.9 KiB
TypeScript
import { OPERATORS } from 'constants/queryBuilder';
|
|
import {
|
|
BaseAutocompleteData,
|
|
DataTypes,
|
|
} from 'types/api/queryBuilder/queryAutocompleteResponse';
|
|
import { TagFilterItem } from 'types/api/queryBuilder/queryBuilderData';
|
|
import {
|
|
DataSource,
|
|
MetricAggregateOperator,
|
|
QueryBuilderData,
|
|
} from 'types/common/queryBuilder';
|
|
|
|
import {
|
|
GraphTitle,
|
|
KeyOperationTableHeader,
|
|
MetricsType,
|
|
WidgetKeys,
|
|
} from '../constant';
|
|
import { TopOperationQueryFactoryProps } from '../Tabs/types';
|
|
import { getQueryBuilderQuerieswithFormula } from './MetricsPageQueriesFactory';
|
|
|
|
export const topOperationQueries = ({
|
|
servicename,
|
|
dotMetricsEnabled,
|
|
}: TopOperationQueryFactoryProps): QueryBuilderData => {
|
|
const latencyAutoCompleteData: BaseAutocompleteData = {
|
|
key: dotMetricsEnabled
|
|
? WidgetKeys.Signoz_latency_bucket
|
|
: WidgetKeys.Signoz_latency_bucket_norm,
|
|
dataType: DataTypes.Float64,
|
|
isColumn: true,
|
|
type: '',
|
|
};
|
|
|
|
const errorRateAutoCompleteData: BaseAutocompleteData = {
|
|
key: WidgetKeys.SignozCallsTotal,
|
|
dataType: DataTypes.Float64,
|
|
isColumn: true,
|
|
type: '',
|
|
};
|
|
|
|
const numOfCallAutoCompleteData: BaseAutocompleteData = {
|
|
key: dotMetricsEnabled
|
|
? WidgetKeys.SignozLatencyCount
|
|
: WidgetKeys.SignozLatencyCountNorm,
|
|
dataType: DataTypes.Float64,
|
|
isColumn: true,
|
|
type: '',
|
|
};
|
|
|
|
const latencyAndNumberOfCallAdditionalItems: TagFilterItem[] = [
|
|
{
|
|
id: '',
|
|
key: {
|
|
key: dotMetricsEnabled
|
|
? WidgetKeys.Service_name
|
|
: WidgetKeys.Service_name_norm,
|
|
dataType: DataTypes.String,
|
|
isColumn: false,
|
|
type: MetricsType.Resource,
|
|
},
|
|
value: [servicename],
|
|
op: OPERATORS.IN,
|
|
},
|
|
];
|
|
|
|
const errorRateAdditionalItemsA: TagFilterItem[] = [
|
|
{
|
|
id: '',
|
|
key: {
|
|
dataType: DataTypes.String,
|
|
isColumn: false,
|
|
key: dotMetricsEnabled
|
|
? WidgetKeys.Service_name
|
|
: WidgetKeys.Service_name_norm,
|
|
type: MetricsType.Resource,
|
|
},
|
|
op: OPERATORS.IN,
|
|
value: [servicename],
|
|
},
|
|
{
|
|
id: '',
|
|
key: {
|
|
dataType: DataTypes.Int64,
|
|
isColumn: false,
|
|
key: dotMetricsEnabled ? WidgetKeys.StatusCode : WidgetKeys.StatusCodeNorm,
|
|
type: MetricsType.Tag,
|
|
},
|
|
op: OPERATORS.IN,
|
|
value: ['STATUS_CODE_ERROR'],
|
|
},
|
|
];
|
|
|
|
const errorRateAdditionalItemsB = latencyAndNumberOfCallAdditionalItems;
|
|
|
|
const groupBy: BaseAutocompleteData[] = [
|
|
{
|
|
dataType: DataTypes.String,
|
|
isColumn: false,
|
|
key: WidgetKeys.Operation,
|
|
type: MetricsType.Tag,
|
|
},
|
|
];
|
|
|
|
const autocompleteData = [
|
|
latencyAutoCompleteData,
|
|
latencyAutoCompleteData,
|
|
latencyAutoCompleteData,
|
|
errorRateAutoCompleteData,
|
|
errorRateAutoCompleteData,
|
|
numOfCallAutoCompleteData,
|
|
];
|
|
const additionalItems = [
|
|
latencyAndNumberOfCallAdditionalItems,
|
|
latencyAndNumberOfCallAdditionalItems,
|
|
latencyAndNumberOfCallAdditionalItems,
|
|
errorRateAdditionalItemsA,
|
|
errorRateAdditionalItemsB,
|
|
latencyAndNumberOfCallAdditionalItems,
|
|
];
|
|
const disabled = [false, false, false, true, true, false];
|
|
const legends = [
|
|
KeyOperationTableHeader.P50,
|
|
KeyOperationTableHeader.P90,
|
|
KeyOperationTableHeader.P99,
|
|
KeyOperationTableHeader.ERROR_RATE,
|
|
KeyOperationTableHeader.ERROR_RATE,
|
|
KeyOperationTableHeader.NUM_OF_CALLS,
|
|
];
|
|
const timeAggregateOperators = [
|
|
MetricAggregateOperator.EMPTY,
|
|
MetricAggregateOperator.EMPTY,
|
|
MetricAggregateOperator.EMPTY,
|
|
MetricAggregateOperator.RATE,
|
|
MetricAggregateOperator.RATE,
|
|
MetricAggregateOperator.RATE,
|
|
];
|
|
const spaceAggregateOperators = [
|
|
MetricAggregateOperator.P50,
|
|
MetricAggregateOperator.P90,
|
|
MetricAggregateOperator.P99,
|
|
MetricAggregateOperator.SUM,
|
|
MetricAggregateOperator.SUM,
|
|
MetricAggregateOperator.SUM,
|
|
];
|
|
const expressions = ['D*100/E'];
|
|
const legendFormulas = [GraphTitle.ERROR_PERCENTAGE];
|
|
const dataSource = DataSource.METRICS;
|
|
|
|
return getQueryBuilderQuerieswithFormula({
|
|
autocompleteData,
|
|
additionalItems,
|
|
disabled,
|
|
legends,
|
|
timeAggregateOperators,
|
|
spaceAggregateOperators,
|
|
expressions,
|
|
legendFormulas,
|
|
dataSource,
|
|
groupBy,
|
|
});
|
|
};
|