Compare commits

..

3 Commits

Author SHA1 Message Date
Gaurav Tewari
02d60e78be chore: update markdown 2026-05-22 10:59:44 +05:30
Gaurav Tewari
dd72eaac73 chore: remove markdown 2026-05-22 10:44:54 +05:30
Gaurav Tewari
e13014baba chore: refactor input 2026-05-22 02:17:01 +05:30
87 changed files with 19938 additions and 692 deletions

View File

@@ -2689,6 +2689,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesClusterRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -2758,6 +2759,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesDaemonSetRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -2827,6 +2829,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesDeploymentRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -2905,6 +2908,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesHostRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -2980,6 +2984,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesJobRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -3027,6 +3032,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesNamespaceRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -3104,6 +3110,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesNodeRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -3202,6 +3209,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesPodRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -3546,6 +3554,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesStatefulSetRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'
@@ -3606,6 +3615,7 @@ components:
records:
items:
$ref: '#/components/schemas/InframonitoringtypesVolumeRecord'
nullable: true
type: array
requiredMetricsCheck:
$ref: '#/components/schemas/InframonitoringtypesRequiredMetricsCheck'

View File

@@ -3488,9 +3488,9 @@ export interface InframonitoringtypesClustersDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesClusterRecordDTO[];
records: InframonitoringtypesClusterRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -3566,9 +3566,9 @@ export interface InframonitoringtypesDaemonSetsDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesDaemonSetRecordDTO[];
records: InframonitoringtypesDaemonSetRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -3644,9 +3644,9 @@ export interface InframonitoringtypesDeploymentsDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesDeploymentRecordDTO[];
records: InframonitoringtypesDeploymentRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -3730,9 +3730,9 @@ export interface InframonitoringtypesHostsDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesHostRecordDTO[];
records: InframonitoringtypesHostRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -3816,9 +3816,9 @@ export interface InframonitoringtypesJobsDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesJobRecordDTO[];
records: InframonitoringtypesJobRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -3866,9 +3866,9 @@ export interface InframonitoringtypesNamespacesDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesNamespaceRecordDTO[];
records: InframonitoringtypesNamespaceRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -3933,9 +3933,9 @@ export interface InframonitoringtypesNodesDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesNodeRecordDTO[];
records: InframonitoringtypesNodeRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -4017,9 +4017,9 @@ export interface InframonitoringtypesPodsDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesPodRecordDTO[];
records: InframonitoringtypesPodRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -4437,9 +4437,9 @@ export interface InframonitoringtypesStatefulSetsDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesStatefulSetRecordDTO[];
records: InframonitoringtypesStatefulSetRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer
@@ -4506,9 +4506,9 @@ export interface InframonitoringtypesVolumesDTO {
*/
endTimeBeforeRetention: boolean;
/**
* @type array
* @type array,null
*/
records: InframonitoringtypesVolumeRecordDTO[];
records: InframonitoringtypesVolumeRecordDTO[] | null;
requiredMetricsCheck: InframonitoringtypesRequiredMetricsCheckDTO;
/**
* @type integer

View File

@@ -6,7 +6,7 @@ import {
useState,
} from 'react';
import { Color } from '@signozhq/design-tokens';
import { Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import logEvent from 'api/common/logEvent';
import cx from 'classnames';
import { TimezonePickerShortcuts } from 'constants/shortcuts/TimezonePickerShortcuts';

View File

@@ -1,5 +1,6 @@
import { useTranslation } from 'react-i18next';
import { Card, Form, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Card, Form } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { PANEL_TYPES } from 'constants/queryBuilder';
import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';

View File

@@ -1,5 +1,6 @@
import { useState } from 'react';
import { Button, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import cx from 'classnames';
import { X } from '@signozhq/icons';

View File

@@ -1,5 +1,6 @@
import { useCallback, useEffect, useRef, useState } from 'react';
import { Button, Input, InputNumber, Popover, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, InputNumber, Popover, Tooltip } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import type { DefaultOptionType } from 'antd/es/select';
import cx from 'classnames';

View File

@@ -13,7 +13,7 @@ export function NoAuthBanner(): JSX.Element {
Impersonation mode: authentication is disabled. Anyone with access to this
instance has admin privileges.{' '}
<a
href="https://signoz.io/docs/manage/administrator-guide/configuration/impersonation-mode/"
href="https://signoz.io/docs/manage/administrator-guide/configuration/no-auth-mode/"
target="_blank"
rel="noreferrer"
>

View File

@@ -1,6 +1,7 @@
/* eslint-disable sonarjs/no-identical-functions */
import { Fragment, useMemo, useState } from 'react';
import { Button, Checkbox, Input, Skeleton } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Checkbox, Skeleton } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import cx from 'classnames';
import { removeKeysFromExpression } from 'components/QueryBuilderV2/utils';

View File

@@ -1,5 +1,6 @@
import { useMemo } from 'react';
import { Button, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button } from 'antd';
import { Check, TableColumnsSplit, X } from '@signozhq/icons';
import { Filter as FilterType } from 'types/api/quickFilters/getCustomFilters';

View File

@@ -1,5 +1,6 @@
import { useMemo, useState } from 'react';
import { Button, Input, Select, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Select, Tooltip } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { CircleX, Trash } from '@signozhq/icons';
import { useAppContext } from 'providers/App/App';

View File

@@ -1,4 +1,5 @@
import { Collapse, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Collapse } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { useCreateAlertState } from '../context';

View File

@@ -1,5 +1,6 @@
import { useMemo } from 'react';
import { Input, Select } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Select } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { ADVANCED_OPTIONS_TIME_UNIT_OPTIONS } from '../../context/constants';

View File

@@ -1,6 +1,5 @@
import React, { useEffect, useState } from 'react';
import { Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import './TimeInput.scss';
export interface TimeInputProps {

View File

@@ -1,4 +1,5 @@
import { Input, Select } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Select } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { useCreateAlertState } from '../context';

View File

@@ -16,7 +16,8 @@ import {
Plus,
X,
} from '@signozhq/icons';
import { Button, Card, Input, Modal, Popover, Tag, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Card, Modal, Popover, Tag, Tooltip } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import ConfigureIcon from 'assets/Integrations/ConfigureIcon';

View File

@@ -1,5 +1,6 @@
import { useCallback, useEffect, useMemo, useState } from 'react';
import { Button, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button } from 'antd';
import { PrecisionOption, PrecisionOptionsEnum } from 'components/Graph/types';
import { ResizeTable } from 'components/ResizeTable';
import { useNotifications } from 'hooks/useNotifications';

View File

@@ -19,11 +19,11 @@ import {
Info,
} from '@signozhq/icons';
import { Color } from '@signozhq/design-tokens';
import { Input } from '@signozhq/ui/input';
import {
Button,
ColorPicker,
Divider,
Input,
Modal,
RefSelectProps,
Select,

View File

@@ -1,7 +1,7 @@
import { Dispatch, SetStateAction } from 'react';
import { useTranslation } from 'react-i18next';
import { Form, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Form } from 'antd';
import { EmailChannel } from '../../CreateAlertChannels/config';
function EmailForm({ setSelectedConfig }: EmailFormProps): JSX.Element {

View File

@@ -1,6 +1,7 @@
import { Dispatch, SetStateAction } from 'react';
import { useTranslation } from 'react-i18next';
import { Form, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Form } from 'antd';
import { MarkdownRenderer } from 'components/MarkdownRenderer/MarkdownRenderer';
import { WebhookChannel } from '../../CreateAlertChannels/config';

View File

@@ -1,6 +1,7 @@
import { Dispatch, ReactElement, SetStateAction } from 'react';
import { useTranslation } from 'react-i18next';
import { Form, FormInstance, Input, Select, Switch } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Form, FormInstance, Select, Switch } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import type { Store } from 'antd/lib/form/interface';
import ROUTES from 'constants/routes';

View File

@@ -6,7 +6,8 @@ import { useIsFetching } from 'react-query';
import { useDispatch } from 'react-redux';
import { useLocation } from 'react-router-dom';
import { Color } from '@signozhq/design-tokens';
import { Button, Form, Input, Modal } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Form, Modal } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import cx from 'classnames';

View File

@@ -5,12 +5,12 @@ import { useCopyToClipboard } from 'react-use';
import { Color } from '@signozhq/design-tokens';
import { Badge } from '@signozhq/ui/badge';
import { Button } from '@signozhq/ui/button';
import { Input } from '@signozhq/ui/input';
import {
Col,
Collapse,
DatePicker,
Form,
Input,
InputNumber,
Modal,
Row,

View File

@@ -1,4 +1,5 @@
import { Form, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Form } from 'antd';
import { CloudintegrationtypesCredentialsDTO } from 'api/generated/services/sigNoz.schemas';
function RenderConnectionFields({

View File

@@ -1,6 +1,7 @@
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Button, Form, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Form } from 'antd';
import apply from 'api/v3/licenses/post';
import { useNotifications } from 'hooks/useNotifications';
import APIError from 'types/api/error';

View File

@@ -1,6 +1,7 @@
/* eslint-disable @typescript-eslint/explicit-function-return-type */
import { ChangeEvent, useState } from 'react';
import { Button, Input, Modal } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Modal } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import ApacheIcon from 'assets/CustomIcons/ApacheIcon';
import DockerIcon from 'assets/CustomIcons/DockerIcon';

View File

@@ -12,11 +12,11 @@ import { useTranslation } from 'react-i18next';
import { generatePath } from 'react-router-dom';
import { useCopyToClipboard } from 'react-use';
import { Color } from '@signozhq/design-tokens';
import { Input } from '@signozhq/ui/input';
import {
Button,
Dropdown,
Flex,
Input,
MenuProps,
Modal,
Popover,

View File

@@ -1,7 +1,8 @@
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { LoaderCircle, Check } from '@signozhq/icons';
import { Button, Input, Space } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Space } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import { useNotifications } from 'hooks/useNotifications';

View File

@@ -2,7 +2,8 @@ import { ReactNode, useState } from 'react';
import MEditor, { EditorProps, Monaco } from '@monaco-editor/react';
import { Color } from '@signozhq/design-tokens';
import { Button } from '@signozhq/ui/button';
import { Collapse, Divider, Input, Switch, Tag } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Collapse, Divider, Switch, Tag } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { AddToQueryHOCProps } from 'components/Logs/AddToQueryHOC';
import { ChangeViewFunctionType } from 'container/ExplorerOptions/types';

View File

@@ -2,7 +2,8 @@ import { ChangeEvent, useCallback, useState } from 'react';
// eslint-disable-next-line no-restricted-imports
import { useSelector } from 'react-redux';
import { CirclePlus, X } from '@signozhq/icons';
import { Col, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Col } from 'antd';
import CategoryHeading from 'components/Logs/CategoryHeading';
import { fieldSearchFilter } from 'lib/logs/fieldSearch';
import { AppState } from 'store/reducers';

View File

@@ -2,7 +2,8 @@ import { useCallback, useMemo, useState } from 'react';
// eslint-disable-next-line no-restricted-imports
import { useSelector } from 'react-redux';
import { SquareX, X } from '@signozhq/icons';
import { Button, Input, Select } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Select } from 'antd';
import CategoryHeading from 'components/Logs/CategoryHeading';
import {
ConditionalOperators,

View File

@@ -1,6 +1,7 @@
import { Input } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { Select } from 'antd';
// TODO(@signozhq/ui-input): migrate this <Input> once @signozhq/ui Input
// supports the `onWheel` handler (used to blur on scroll for number inputs).
import { Input, Select } from 'antd';
import classNames from 'classnames';
import { TIME_AGGREGATION_OPTIONS } from './constants';

View File

@@ -1,7 +1,8 @@
import { useCallback, useEffect, useMemo, useState } from 'react';
import { useQueryClient } from 'react-query';
import type { TableColumnsType as ColumnsType } from 'antd';
import { Button, Collapse, Input, Select, Spin } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Collapse, Select, Spin } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import {

View File

@@ -127,12 +127,6 @@
flex-direction: column;
gap: 8px;
padding-bottom: 16px;
.password-error-text {
font-size: var(--font-size-xs);
color: var(--bg-cherry-400);
margin-top: 2px;
}
}
.ant-color-picker-trigger {

View File

@@ -1,27 +1,25 @@
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Button, Input, Modal } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import { ErrorResponseHandlerV2 } from 'api/ErrorResponseHandlerV2';
import {
updateMyPassword,
useUpdateMyUserV2,
} from 'api/generated/services/users';
import { toast } from '@signozhq/ui/sonner';
import { useNotifications } from 'hooks/useNotifications';
import { Check, FileTerminal, Mail, User } from '@signozhq/icons';
import { useAppContext } from 'providers/App/App';
import { useErrorModal } from 'providers/ErrorModalProvider';
import APIError from 'types/api/error';
import { ErrorV2Resp } from 'types/api';
import { AxiosError } from 'axios';
import '../MySettings.styles.scss';
import './UserInfo.styles.scss';
function UserInfo(): JSX.Element {
const { user, org, updateUser } = useAppContext();
const { t } = useTranslation(['routes', 'settings', 'common']);
const { showErrorModal } = useErrorModal();
const { notifications } = useNotifications();
const { mutateAsync: updateMyUser } = useUpdateMyUserV2();
const [currentPassword, setCurrentPassword] = useState<string>('');
@@ -49,8 +47,6 @@ function UserInfo(): JSX.Element {
const hideResetPasswordModal = (): void => {
setIsResetPasswordModalOpen(false);
setCurrentPassword('');
setUpdatePassword('');
};
const onChangePasswordClickHandler = async (): Promise<void> => {
@@ -61,29 +57,27 @@ function UserInfo(): JSX.Element {
newPassword: updatePassword,
oldPassword: currentPassword,
});
toast.success('Password updated successfully');
notifications.success({
message: t('success', {
ns: 'common',
}),
});
hideResetPasswordModal();
setIsLoading(false);
} catch (error) {
setIsLoading(false);
try {
ErrorResponseHandlerV2(error as AxiosError<ErrorV2Resp>);
} catch (apiError) {
showErrorModal(apiError as APIError);
}
notifications.error({
message: (error as APIError).error.error.code,
description: (error as APIError).error.error.message,
});
}
};
const passwordsMatch =
currentPassword.length > 0 &&
updatePassword.length > 0 &&
currentPassword === updatePassword;
const isResetPasswordDisabled =
isLoading ||
currentPassword.length === 0 ||
updatePassword.length === 0 ||
passwordsMatch;
currentPassword === updatePassword;
const onSaveHandler = async (): Promise<void> => {
void logEvent('Account Settings: Name Updated', {
@@ -100,7 +94,11 @@ function UserInfo(): JSX.Element {
setIsLoading(true);
await updateMyUser({ data: { displayName: changedName } });
toast.success('Name updated successfully');
notifications.success({
message: t('success', {
ns: 'common',
}),
});
updateUser({
...user,
displayName: changedName,
@@ -108,11 +106,10 @@ function UserInfo(): JSX.Element {
setIsLoading(false);
hideUpdateNameModal();
} catch (error) {
try {
ErrorResponseHandlerV2(error as AxiosError<ErrorV2Resp>);
} catch (apiError) {
showErrorModal(apiError as APIError);
}
notifications.error({
message: (error as APIError).getErrorCode(),
description: (error as APIError).getErrorMessage(),
});
}
setIsLoading(false);
};
@@ -169,7 +166,7 @@ function UserInfo(): JSX.Element {
type="primary"
icon={<Check size={16} />}
onClick={onSaveHandler}
loading={isLoading}
disabled={isLoading}
data-testid="update-name-btn"
>
Update name
@@ -181,11 +178,7 @@ function UserInfo(): JSX.Element {
<Input
placeholder="e.g. John Doe"
value={changedName}
disabled={isLoading}
onChange={(e): void => setChangedName(e.target.value)}
onPressEnter={(): void => {
void onSaveHandler();
}}
/>
</div>
</Modal>
@@ -195,7 +188,6 @@ function UserInfo(): JSX.Element {
title={<span className="title">Reset password</span>}
open={isResetPasswordModalOpen}
closable
destroyOnClose
onCancel={hideResetPasswordModal}
footer={[
<Button
@@ -205,8 +197,7 @@ function UserInfo(): JSX.Element {
}`}
icon={<Check size={16} />}
onClick={onChangePasswordClickHandler}
loading={isLoading}
disabled={isResetPasswordDisabled}
disabled={isLoading || isResetPasswordDisabled}
data-testid="reset-password-btn"
>
Reset password
@@ -227,11 +218,6 @@ function UserInfo(): JSX.Element {
type="password"
autoComplete="off"
visibilityToggle
onPressEnter={(): void => {
if (!isResetPasswordDisabled) {
void onChangePasswordClickHandler();
}
}}
/>
</div>
@@ -249,18 +235,7 @@ function UserInfo(): JSX.Element {
type="password"
autoComplete="off"
visibilityToggle={false}
status={passwordsMatch ? 'error' : ''}
onPressEnter={(): void => {
if (!isResetPasswordDisabled) {
void onChangePasswordClickHandler();
}
}}
/>
{passwordsMatch && (
<span className="password-error-text">
New password must be different from current password
</span>
)}
</div>
</div>
</Modal>

View File

@@ -8,23 +8,11 @@ import {
waitFor,
within,
} from 'tests/test-utils';
import APIError from 'types/api/error';
import { toast } from '@signozhq/ui/sonner';
const toggleThemeFunction = jest.fn();
const logEventFunction = jest.fn();
const copyToClipboardFn = jest.fn();
const editUserFn = jest.fn();
const updateMyPasswordFn = jest.fn();
const showErrorModalFn = jest.fn();
jest.mock('@signozhq/ui/sonner', () => ({
...jest.requireActual('@signozhq/ui/sonner'),
toast: {
success: jest.fn(),
error: jest.fn(),
},
}));
jest.mock('react-use', () => ({
__esModule: true,
@@ -36,21 +24,12 @@ jest.mock('react-use', () => ({
jest.mock('api/generated/services/users', () => ({
...jest.requireActual('api/generated/services/users'),
updateMyPassword: (...args: unknown[]): Promise<unknown> =>
updateMyPasswordFn(...args),
useUpdateMyUserV2: jest.fn(() => ({
mutateAsync: (...args: unknown[]): Promise<unknown> => editUserFn(...args),
isLoading: false,
})),
}));
jest.mock('providers/ErrorModalProvider', () => ({
...jest.requireActual('providers/ErrorModalProvider'),
useErrorModal: jest.fn(() => ({
showErrorModal: showErrorModalFn,
})),
}));
jest.mock('hooks/useDarkMode', () => ({
__esModule: true,
useIsDarkMode: jest.fn(() => true),
@@ -86,12 +65,12 @@ const NEW_PASSWORD_TEST_ID = 'new-password-textbox';
const UPDATE_NAME_BUTTON_TEST_ID = 'update-name-btn';
const RESET_PASSWORD_BUTTON_TEST_ID = 'reset-password-btn';
const UPDATE_NAME_BUTTON_TEXT = 'Update name';
const PASSWORD_VALIDATION_MESSAGE_TEST_ID = 'password-validation-message';
describe('MySettings Flows', () => {
beforeEach(() => {
jest.clearAllMocks();
editUserFn.mockResolvedValue({});
updateMyPasswordFn.mockResolvedValue({});
render(<MySettingsContainer />);
});
@@ -173,7 +152,9 @@ describe('MySettings Flows', () => {
fireEvent.click(modalUpdateNameButton);
await waitFor(() =>
expect(toast.success).toHaveBeenCalledWith('Name updated successfully'),
expect(successNotification).toHaveBeenCalledWith({
message: 'success',
}),
);
});
});
@@ -200,131 +181,22 @@ describe('MySettings Flows', () => {
expect(screen.getByTestId(NEW_PASSWORD_TEST_ID)).toBeInTheDocument();
});
it('Should show inline error when new password matches current password', async () => {
it('Should display validation error if password is less than 8 characters', async () => {
const resetPasswordButtons = screen.getAllByText(RESET_PASSWORD_BUTTON_TEXT);
fireEvent.click(resetPasswordButtons[0]);
const currentPasswordTextbox = screen.getByTestId(CURRENT_PASSWORD_TEST_ID);
act(() => {
fireEvent.change(screen.getByTestId(CURRENT_PASSWORD_TEST_ID), {
target: { value: 'samePassword1' },
});
fireEvent.change(screen.getByTestId(NEW_PASSWORD_TEST_ID), {
target: { value: 'samePassword1' },
});
fireEvent.change(currentPasswordTextbox, { target: { value: '123' } });
});
expect(
screen.getByText('New password must be different from current password'),
).toBeInTheDocument();
expect(screen.getByTestId(RESET_PASSWORD_BUTTON_TEST_ID)).toBeDisabled();
});
it('Should hide inline error when passwords are changed to be different', async () => {
const resetPasswordButtons = screen.getAllByText(RESET_PASSWORD_BUTTON_TEXT);
fireEvent.click(resetPasswordButtons[0]);
act(() => {
fireEvent.change(screen.getByTestId(CURRENT_PASSWORD_TEST_ID), {
target: { value: 'samePassword1' },
});
fireEvent.change(screen.getByTestId(NEW_PASSWORD_TEST_ID), {
target: { value: 'samePassword1' },
});
});
act(() => {
fireEvent.change(screen.getByTestId(NEW_PASSWORD_TEST_ID), {
target: { value: 'differentPassword1' },
});
});
expect(
screen.queryByText('New password must be different from current password'),
).not.toBeInTheDocument();
});
it('Should show error modal when password reset API returns an error', async () => {
updateMyPasswordFn.mockRejectedValue(
new Error('Current password is incorrect'),
);
const resetPasswordButtons = screen.getAllByText(RESET_PASSWORD_BUTTON_TEXT);
fireEvent.click(resetPasswordButtons[0]);
act(() => {
fireEvent.change(screen.getByTestId(CURRENT_PASSWORD_TEST_ID), {
target: { value: 'oldPassword1' },
});
fireEvent.change(screen.getByTestId(NEW_PASSWORD_TEST_ID), {
target: { value: 'newPassword1' },
});
});
fireEvent.click(screen.getByTestId(RESET_PASSWORD_BUTTON_TEST_ID));
await waitFor(() => {
expect(showErrorModalFn).toHaveBeenCalledWith(expect.any(APIError));
});
});
it('Should show success toast and close modal on successful password reset', async () => {
const resetPasswordButtons = screen.getAllByText(RESET_PASSWORD_BUTTON_TEXT);
fireEvent.click(resetPasswordButtons[0]);
act(() => {
fireEvent.change(screen.getByTestId(CURRENT_PASSWORD_TEST_ID), {
target: { value: 'oldPassword1' },
});
fireEvent.change(screen.getByTestId(NEW_PASSWORD_TEST_ID), {
target: { value: 'newPassword1' },
});
});
fireEvent.click(screen.getByTestId(RESET_PASSWORD_BUTTON_TEST_ID));
await waitFor(() => {
expect(toast.success).toHaveBeenCalledWith('Password updated successfully');
expect(
screen.queryByTestId(CURRENT_PASSWORD_TEST_ID),
).not.toBeInTheDocument();
});
});
it('Should clear password fields when modal is cancelled', async () => {
const resetPasswordButtons = screen.getAllByText(RESET_PASSWORD_BUTTON_TEXT);
fireEvent.click(resetPasswordButtons[0]);
act(() => {
fireEvent.change(screen.getByTestId(CURRENT_PASSWORD_TEST_ID), {
target: { value: 'somePassword' },
});
fireEvent.change(screen.getByTestId(NEW_PASSWORD_TEST_ID), {
target: { value: 'otherPassword' },
});
});
expect(screen.getByTestId(CURRENT_PASSWORD_TEST_ID)).toHaveValue(
'somePassword',
);
// Close the modal
const closeButton = document.querySelector(
'.reset-password-modal .ant-modal-close',
) as HTMLElement;
fireEvent.click(closeButton);
// Reopen the modal
await waitFor(() => {
expect(
screen.queryByTestId(CURRENT_PASSWORD_TEST_ID),
).not.toBeInTheDocument();
});
fireEvent.click(screen.getAllByText(RESET_PASSWORD_BUTTON_TEXT)[0]);
await waitFor(() => {
expect(screen.getByTestId(CURRENT_PASSWORD_TEST_ID)).toHaveValue('');
expect(screen.getByTestId(NEW_PASSWORD_TEST_ID)).toHaveValue('');
// Use getByTestId for the validation message (if present in your modal/component)
if (screen.queryByTestId(PASSWORD_VALIDATION_MESSAGE_TEST_ID)) {
expect(
screen.getByTestId(PASSWORD_VALIDATION_MESSAGE_TEST_ID),
).toBeInTheDocument();
}
});
});

View File

@@ -7,7 +7,8 @@ import {
DropResult,
} from 'react-beautiful-dnd';
import { Color } from '@signozhq/design-tokens';
import { Button, Divider, Dropdown, Input, MenuProps, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Divider, Dropdown, MenuProps, Tooltip } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { FieldDataType } from 'api/v5/v5';
import { SOMETHING_WENT_WRONG } from 'constants/api';

View File

@@ -1,5 +1,7 @@
import { useEffect, useMemo, useState } from 'react';
import { Button, Col, Form, Input as AntInput, Input, Row } from 'antd';
// TODO(@signozhq/ui-input): migrate <Input> once @signozhq/ui Input
// supports the `spellCheck` prop on the URL input below.
import { Button, Col, Form, Input, Input as AntInput, Row } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { CONTEXT_LINK_FIELDS } from 'container/NewWidget/RightContainer/ContextLinks/constants';
import {

View File

@@ -1,7 +1,8 @@
import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Blocks, Check, LoaderCircle } from '@signozhq/icons';
import { Button, Card, Form, Input, Select, Space } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Card, Form, Select, Space } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import cx from 'classnames';

View File

@@ -1,7 +1,8 @@
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Check, Server, LoaderCircle } from '@signozhq/icons';
import { Button, Card, Form, Input, Space } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Card, Form, Space } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import cx from 'classnames';

View File

@@ -1,6 +1,7 @@
import { useTranslation } from 'react-i18next';
import { Plus, Trash2 } from '@signozhq/icons';
import { Button, Form, FormInstance, Input, Select, Space } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Form, FormInstance, Select, Space } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { requireErrorMessage } from 'utils/form/requireErrorMessage';

View File

@@ -1,6 +1,6 @@
import { useTranslation } from 'react-i18next';
import { Form, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Form } from 'antd';
import { ProcessorFormField } from '../../AddNewProcessor/config';
import { formValidationRules } from '../../config';

View File

@@ -1,4 +1,6 @@
import { ChangeEventHandler, useState } from 'react';
// TODO(@signozhq/ui-input): migrate to @signozhq/ui Input once the antd
// `InputProps` spread (`size`, etc.) is no longer needed on this wrapper.
import { Input, InputProps } from 'antd';
function CSVInput({ value, onChange, ...otherProps }: InputProps): JSX.Element {

View File

@@ -1,6 +1,7 @@
import { useEffect, useState } from 'react';
import { Info } from '@signozhq/icons';
import { Flex, Form, Input, Space, Switch, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Flex, Form, Space, Switch, Tooltip } from 'antd';
import { ProcessorData } from 'types/api/pipeline/def';
import { PREDEFINED_MAPPING } from '../config';

View File

@@ -1,5 +1,6 @@
import { useTranslation } from 'react-i18next';
import { Form, Input, Select, Space, Switch } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Form, Select, Space, Switch } from 'antd';
import { ModalFooterTitle } from 'container/PipelinePage/styles';
import { ProcessorData } from 'types/api/pipeline/def';

View File

@@ -2,7 +2,8 @@ import React, { ChangeEvent, useEffect, useState } from 'react';
import { useHistory } from 'react-router-dom';
import { Plus, Search } from '@signozhq/icons';
import { Color } from '@signozhq/design-tokens';
import { Button, Flex, Form, Input, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Flex, Form, Tooltip } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import {
useDeleteDowntimeScheduleByID,

View File

@@ -1,6 +1,7 @@
import { useCallback, useMemo, useState } from 'react';
import { useQuery } from 'react-query';
import { Input, Skeleton } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Skeleton } from 'antd';
import { getKeySuggestions } from 'api/querySuggestions/getKeySuggestions';
import OverlayScrollbar from 'components/OverlayScrollbar/OverlayScrollbar';
import { QUERY_BUILDER_KEY_TYPES } from 'constants/antlrQueryConstants';

View File

@@ -1,7 +1,8 @@
import { ChangeEvent, useMemo } from 'react';
import { Plus, Search } from '@signozhq/icons';
import { Color } from '@signozhq/design-tokens';
import { Button, Flex, Input, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Flex, Tooltip } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { useAppContext } from 'providers/App/App';
import { USER_ROLES } from 'types/roles';

View File

@@ -1,5 +1,5 @@
import { useCallback, useMemo, useState } from 'react';
import { Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Typography } from '@signozhq/ui/typography';
import cx from 'classnames';
import CopyClipboardHOC from 'components/Logs/CopyClipboardHOC';

View File

@@ -1,5 +1,6 @@
import { useState } from 'react';
import { Collapse, Input, Modal } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Collapse, Modal } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { getYAxisFormattedValue } from 'components/Graph/yAxisConfig';
import { Diamond } from '@signozhq/icons';

View File

@@ -9,10 +9,10 @@ import {
useState,
} from 'react';
import { useMutation, useQuery } from 'react-query';
import { Input } from '@signozhq/ui/input';
import {
Button,
Checkbox,
Input,
Modal,
Select,
Skeleton,

View File

@@ -1,5 +1,7 @@
import { Input } from 'antd';
// TODO(@signozhq/ui-input): migrate this styled(Input) once @signozhq/ui
// Input supports `addonAfter` (the consumer renders `<InputComponent addonAfter="ms">`).
import { Typography } from '@signozhq/ui/typography';
import { Input } from 'antd';
import styled from 'styled-components';
export const DurationText = styled.div`

View File

@@ -8,7 +8,8 @@ import {
import { useQuery } from 'react-query';
// eslint-disable-next-line no-restricted-imports
import { useSelector } from 'react-redux';
import { AutoComplete, Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import { AutoComplete } from 'antd';
import getTagFilters from 'api/trace/getTagFilter';
import { AppState } from 'store/reducers';
import { GlobalReducer } from 'types/reducer/globalTime';

View File

@@ -2,7 +2,8 @@ import { useMemo, useState } from 'react';
import { useQuery } from 'react-query';
// eslint-disable-next-line no-restricted-imports
import { useSelector } from 'react-redux';
import { AutoComplete, Input, Space } from 'antd';
import { Input } from '@signozhq/ui/input';
import { AutoComplete, Space } from 'antd';
import getTagFilters from 'api/trace/getTagFilter';
import { AppState } from 'store/reducers';
import { GlobalReducer } from 'types/reducer/globalTime';

View File

@@ -1,6 +1,7 @@
import { ChangeEvent, useEffect, useMemo, useState } from 'react';
import { ArrowLeft, Check, Loader, Plus, Search } from '@signozhq/icons';
import { Button, Input, Spin } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Spin } from 'antd';
import cx from 'classnames';
import OverlayScrollbar from 'components/OverlayScrollbar/OverlayScrollbar';
import SignozModal from 'components/SignozModal/SignozModal';

View File

@@ -1,4 +1,4 @@
import { Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import styled from 'styled-components';
export const InputComponent = styled(Input)`

View File

@@ -1,5 +1,6 @@
import { Dispatch, SetStateAction, useEffect, useState } from 'react';
import { Input, Select } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Select } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import './DropRateView.styles.scss';

View File

@@ -3,7 +3,8 @@ import { useTranslation } from 'react-i18next';
import { useLocation } from 'react-router-dom';
import { Color } from '@signozhq/design-tokens';
import { Button } from '@signozhq/ui/button';
import { ColorPicker, Input, Modal, Table, TableProps } from 'antd';
import { Input } from '@signozhq/ui/input';
import { ColorPicker, Modal, Table, TableProps } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import logEvent from 'api/common/logEvent';
import {

View File

@@ -1,4 +1,5 @@
import { Checkbox, Input, Select, Skeleton } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Checkbox, Select, Skeleton } from 'antd';
import { Button } from '@signozhq/ui/button';
import { Typography } from '@signozhq/ui/typography';
import cx from 'classnames';

View File

@@ -1,6 +1,7 @@
import { ChangeEvent, useEffect, useMemo, useState } from 'react';
import { Button } from '@signozhq/ui/button';
import { Input, Spin } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Spin } from 'antd';
import cx from 'classnames';
import OverlayScrollbar from 'components/OverlayScrollbar/OverlayScrollbar';
import SignozModal from 'components/SignozModal/SignozModal';

View File

@@ -1,6 +1,6 @@
import { useState } from 'react';
import { useQueryClient } from 'react-query';
import { Input } from 'antd';
import { Input } from '@signozhq/ui/input';
import SignozModal from 'components/SignozModal/SignozModal';
import { REACT_QUERY_KEY } from 'constants/reactQueryKeys';
import { useRenameFunnel } from 'hooks/TracesFunnels/useFunnels';

View File

@@ -1,6 +1,7 @@
import { ChangeEvent } from 'react';
import { Color } from '@signozhq/design-tokens';
import { Button, Input, Popover, Tooltip } from 'antd';
import { Input } from '@signozhq/ui/input';
import { Button, Popover, Tooltip } from 'antd';
import { Typography } from '@signozhq/ui/typography';
import { ArrowDownWideNarrow, Check, Plus, Search } from '@signozhq/icons';
import { useAppContext } from 'providers/App/App';

View File

@@ -7,6 +7,8 @@ import (
"strings"
"unicode"
"github.com/SigNoz/signoz/pkg/query-service/constants"
"encoding/base64"
"encoding/json"
"fmt"
@@ -176,6 +178,27 @@ func HydrateFileUris(spec interface{}, fs embed.FS, basedir string) (interface{}
if specMap, ok := spec.(map[string]interface{}); ok {
result := map[string]interface{}{}
for k, v := range specMap {
// Check if this is a dashboards slice and if dot metrics are enabled
if k == "dashboards" && constants.IsDotMetricsEnabled {
if dashboards, ok := v.([]interface{}); ok {
for i, dashboard := range dashboards {
if dashboardUri, ok := dashboard.(string); ok {
if strings.HasPrefix(dashboardUri, "file://") {
dashboards[i] = strings.Replace(dashboardUri, ".json", "_dot.json", 1)
}
} else if dashBoardMap, ok := dashboard.(map[string]interface{}); ok {
if dashboardUri, ok := dashBoardMap["definition"].(string); ok {
if strings.HasPrefix(dashboardUri, "file://") {
dashboardUri = strings.Replace(dashboardUri, ".json", "_dot.json", 1)
}
dashBoardMap["definition"] = dashboardUri
}
dashboards[i] = dashBoardMap
}
}
v = dashboards
}
}
hydrated, err := HydrateFileUris(v, fs, basedir)
if err != nil {
return nil, err

View File

@@ -367,9 +367,9 @@
"id": "31d3f13b-27d5-4291-9fb3-d5d5708a72f3",
"modificationUUID": "e4a9edf1-acd0-48b7-8a35-1b4bb668408d",
"multiSelect": false,
"name": "mysql.instance.endpoint",
"name": "mysql_instance_endpoint",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'mysql.instance.endpoint') as `mysql.instance.endpoint`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'mysql.uptime'\nGROUP BY `mysql.instance.endpoint`",
"queryValue": "SELECT JSONExtractString(labels, 'mysql_instance_endpoint') as mysql_instance_endpoint\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'mysql_uptime'\nGROUP BY mysql_instance_endpoint",
"selectedValue": "",
"showALLOption": false,
"sort": "ASC",
@@ -393,7 +393,7 @@
{
"aggregations": [
{
"metricName": "mysql.buffer_pool.pages",
"metricName": "mysql_buffer_pool_usage",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -404,7 +404,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -529,7 +529,7 @@
{
"aggregations": [
{
"metricName": "mysql.buffer_pool.pages",
"metricName": "mysql_buffer_pool_pages",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -540,7 +540,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -658,7 +658,7 @@
{
"aggregations": [
{
"metricName": "mysql.buffer_pool.data_pages",
"metricName": "mysql_buffer_pool_data_pages",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -669,7 +669,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -788,7 +788,7 @@
{
"aggregations": [
{
"metricName": "mysql.buffer_pool.page_flushes",
"metricName": "mysql_buffer_pool_page_flushes",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -799,7 +799,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [],
@@ -915,7 +915,7 @@
{
"aggregations": [
{
"metricName": "mysql.table.io.wait.count",
"metricName": "mysql_table_io_wait_count",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -926,7 +926,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1045,7 +1045,7 @@
{
"aggregations": [
{
"metricName": "mysql.table.io.wait.count",
"metricName": "mysql_table_io_wait_count",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1056,7 +1056,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1175,7 +1175,7 @@
{
"aggregations": [
{
"metricName": "mysql.table.io.wait.count",
"metricName": "mysql_table_io_wait_count",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1186,7 +1186,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1305,7 +1305,7 @@
{
"aggregations": [
{
"metricName": "mysql.handlers",
"metricName": "mysql_handlers",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -1316,7 +1316,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1329,7 +1329,7 @@
}
],
"having": {
"expression": "sum(mysql.handlers) \u003e 0"
"expression": "sum(mysql_handlers) \u003e 0"
},
"legend": "{{kind}}",
"limit": null,
@@ -1434,7 +1434,7 @@
{
"aggregations": [
{
"metricName": "mysql.locks",
"metricName": "mysql_locks",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -1445,7 +1445,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1563,7 +1563,7 @@
{
"aggregations": [
{
"metricName": "mysql.log_operations",
"metricName": "mysql_log_operations",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1574,7 +1574,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1693,7 +1693,7 @@
{
"aggregations": [
{
"metricName": "mysql.connection.count",
"metricName": "mysql_connection_count",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -1704,7 +1704,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [],
@@ -1720,7 +1720,7 @@
{
"aggregations": [
{
"metricName": "mysql.connection.errors",
"metricName": "mysql_connection_errors",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -1731,7 +1731,7 @@
"disabled": false,
"expression": "B",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1745,7 +1745,7 @@
}
],
"having": {
"expression": "sum(mysql.connection.errors) \u003e 0"
"expression": "sum(mysql_connection_errors) \u003e 0"
},
"legend": "Error count: {{error}}",
"limit": null,
@@ -1850,7 +1850,7 @@
{
"aggregations": [
{
"metricName": "mysql.opened_resources",
"metricName": "mysql_opened_resources",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -1861,7 +1861,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -1874,7 +1874,7 @@
}
],
"having": {
"expression": "sum(mysql.opened_resources) \u003e 0"
"expression": "sum(mysql_opened_resources) \u003e 0"
},
"legend": "{{kind}}",
"limit": null,
@@ -1979,7 +1979,7 @@
{
"aggregations": [
{
"metricName": "mysql.operations",
"metricName": "mysql_operations",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1990,7 +1990,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -2109,7 +2109,7 @@
{
"aggregations": [
{
"metricName": "mysql.row_locks",
"metricName": "mysql_row_locks",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -2120,7 +2120,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -2238,7 +2238,7 @@
{
"aggregations": [
{
"metricName": "mysql.threads",
"metricName": "mysql_threads",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -2249,7 +2249,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -2367,7 +2367,7 @@
{
"aggregations": [
{
"metricName": "mysql.row_operations",
"metricName": "mysql_row_operations",
"reduceTo": "avg",
"spaceAggregation": "sum",
"temporality": null,
@@ -2378,7 +2378,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [
@@ -2497,7 +2497,7 @@
{
"aggregations": [
{
"metricName": "mysql.prepared_statements",
"metricName": "mysql_prepared_statements",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -2508,7 +2508,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "mysql.instance.endpoint = $mysql.instance.endpoint"
"expression": "mysql_instance_endpoint = $mysql_instance_endpoint"
},
"functions": [],
"groupBy": [

View File

@@ -287,7 +287,7 @@
"multiSelect": true,
"name": "table_name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'postgresql.table.name') AS table_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql.operations' AND JSONExtractString(labels, 'postgresql.database.name') IN {{.db_name}}\nGROUP BY table_name",
"queryValue": "SELECT JSONExtractString(labels, 'postgresql_table_name') AS table_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql_operations' AND JSONExtractString(labels, 'postgresql_database_name') IN {{.db_name}}\nGROUP BY table_name",
"selectedValue": [
"public.pgbench_accounts",
"public.pgbench_branches",
@@ -309,7 +309,7 @@
"multiSelect": true,
"name": "db_name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'postgresql.database.name') AS db_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql.operations'\nGROUP BY db_name",
"queryValue": "SELECT JSONExtractString(labels, 'postgresql_database_name') AS db_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql_operations'\nGROUP BY db_name",
"selectedValue": [
"pgtestdb"
],
@@ -335,7 +335,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -346,22 +346,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'ins' AND postgresql.database.name IN $db_name)"
"expression": "(operation = 'ins' AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -410,7 +410,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -421,22 +421,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'upd' AND postgresql.database.name IN $db_name)"
"expression": "(operation = 'upd' AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -485,7 +485,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -496,22 +496,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'del' AND postgresql.database.name IN $db_name)"
"expression": "(operation = 'del' AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -560,7 +560,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -571,22 +571,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'hot_upd' AND postgresql.database.name IN $db_name)"
"expression": "(operation = 'hot_upd' AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -635,7 +635,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -646,15 +646,15 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'ins' AND postgresql.database.name IN $db_name)"
"expression": "(operation = 'ins' AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
@@ -670,7 +670,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -681,15 +681,15 @@
"disabled": false,
"expression": "B",
"filter": {
"expression": "(operation = 'upd' AND postgresql.database.name IN $db_name)"
"expression": "(operation = 'upd' AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
@@ -705,7 +705,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -716,15 +716,15 @@
"disabled": false,
"expression": "C",
"filter": {
"expression": "(operation = 'del' AND postgresql.database.name IN $db_name)"
"expression": "(operation = 'del' AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
@@ -780,7 +780,7 @@
{
"aggregations": [
{
"metricName": "postgresql.database.locks",
"metricName": "postgresql_database_locks",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -852,7 +852,7 @@
{
"aggregations": [
{
"metricName": "postgresql.deadlocks",
"metricName": "postgresql_deadlocks",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -863,22 +863,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "postgresql.database.name IN $db_name"
"expression": "postgresql_database_name IN $db_name"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -927,7 +927,7 @@
{
"aggregations": [
{
"metricName": "postgresql.backends",
"metricName": "postgresql_backends",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -938,22 +938,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "postgresql.database.name IN $db_name"
"expression": "postgresql_database_name IN $db_name"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -1002,7 +1002,7 @@
{
"aggregations": [
{
"metricName": "postgresql.rows",
"metricName": "postgresql_rows",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1013,7 +1013,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(state = 'dead' AND postgresql.database.name IN $db_name AND postgresql.table.name IN $table_name)"
"expression": "(state = 'dead' AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [],
"having": {
@@ -1068,7 +1068,7 @@
{
"aggregations": [
{
"metricName": "postgresql.index.scans",
"metricName": "postgresql_index_scans",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1079,22 +1079,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(postgresql.database.name IN $db_name AND postgresql.table.name IN $table_name)"
"expression": "(postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.index.name--string--tag--false",
"id": "postgresql_index_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.index.name",
"key": "postgresql_index_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.index.name}}",
"legend": "{{postgresql_index_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -1143,7 +1143,7 @@
{
"aggregations": [
{
"metricName": "postgresql.rows",
"metricName": "postgresql_rows",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -1154,16 +1154,16 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(state = 'dead' AND postgresql.database.name IN $db_name AND postgresql.table.name IN $table_name)"
"expression": "(state = 'dead' AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],
@@ -1179,7 +1179,7 @@
{
"aggregations": [
{
"metricName": "postgresql.rows",
"metricName": "postgresql_rows",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -1190,16 +1190,16 @@
"disabled": false,
"expression": "B",
"filter": {
"expression": "(state = 'live' AND postgresql.database.name IN $db_name AND postgresql.table.name IN $table_name)"
"expression": "(state = 'live' AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],
@@ -1215,7 +1215,7 @@
{
"aggregations": [
{
"metricName": "postgresql.index.scans",
"metricName": "postgresql_index_scans",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1226,16 +1226,16 @@
"disabled": false,
"expression": "C",
"filter": {
"expression": "(postgresql.database.name IN $db_name AND postgresql.table.name IN $table_name)"
"expression": "(postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],
@@ -1251,7 +1251,7 @@
{
"aggregations": [
{
"metricName": "postgresql.table.size",
"metricName": "postgresql_table_size",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -1262,16 +1262,16 @@
"disabled": true,
"expression": "D",
"filter": {
"expression": "(postgresql.database.name IN $db_name AND postgresql.table.name IN $table_name)"
"expression": "(postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],

View File

@@ -80,9 +80,9 @@
"id": "a2c21714-a814-4d31-9b56-7367c3208801",
"modificationUUID": "448e675a-4531-45b1-b434-a9ee809470d6",
"multiSelect": true,
"name": "host.name",
"name": "host_name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'host.name') AS `host.name`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'mongodb_memory_usage'\nGROUP BY `host.name`",
"queryValue": "SELECT JSONExtractString(labels, 'host_name') AS host_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'mongodb_memory_usage'\nGROUP BY host_name",
"selectedValue": [
"Srikanths-MacBook-Pro.local"
],
@@ -108,7 +108,7 @@
{
"aggregations": [
{
"metricName": "mongodb.operation.count",
"metricName": "mongodb_operation_count",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -119,7 +119,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
@@ -183,7 +183,7 @@
{
"aggregations": [
{
"metricName": "mongodb.operation.time",
"metricName": "mongodb_operation_time",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -194,7 +194,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
@@ -258,7 +258,7 @@
{
"aggregations": [
{
"metricName": "mongodb.cache.operations",
"metricName": "mongodb_cache_operations",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -269,7 +269,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
@@ -333,7 +333,7 @@
{
"aggregations": [
{
"metricName": "mongodb.operation.latency.time",
"metricName": "mongodb_operation_latency_time",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
@@ -344,7 +344,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'read' AND host.name IN $host.name)"
"expression": "(operation = 'read' AND host_name IN $host_name)"
},
"groupBy": [],
"having": {
@@ -399,7 +399,7 @@
{
"aggregations": [
{
"metricName": "mongodb.operation.latency.time",
"metricName": "mongodb_operation_latency_time",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
@@ -410,7 +410,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(host.name IN $host.name AND operation = 'write')"
"expression": "(host_name IN $host_name AND operation = 'write')"
},
"groupBy": [],
"having": {
@@ -465,7 +465,7 @@
{
"aggregations": [
{
"metricName": "mongodb.operation.latency.time",
"metricName": "mongodb_operation_latency_time",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
@@ -476,7 +476,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(host.name IN $host.name AND operation = 'command')"
"expression": "(host_name IN $host_name AND operation = 'command')"
},
"groupBy": [],
"having": {
@@ -531,7 +531,7 @@
{
"aggregations": [
{
"metricName": "mongodb.network.io.receive",
"metricName": "mongodb_network_io_receive",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -542,22 +542,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"id": "host_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"key": "host_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Bytes received :: {{host.name}}",
"legend": "Bytes received :: {{host_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -566,7 +566,7 @@
{
"aggregations": [
{
"metricName": "mongodb.network.io.transmit",
"metricName": "mongodb_network_io_transmit",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -577,22 +577,22 @@
"disabled": false,
"expression": "B",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"id": "host_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"key": "host_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Bytes transmitted :: {{host.name}}",
"legend": "Bytes transmitted :: {{host_name}}",
"limit": null,
"orderBy": [],
"queryName": "B",

View File

@@ -0,0 +1,631 @@
{
"description": "This dashboard provides a high-level overview of your MongoDB. It includes read/write performance, most-used replicas, collection metrics etc...",
"id": "mongo-overview",
"layout": [
{
"h": 3,
"i": "0c3d2b15-89be-4d62-a821-b26d93332ed3",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 3
},
{
"h": 3,
"i": "14504a3c-4a05-4d22-bab3-e22e94f51380",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 6
},
{
"h": 3,
"i": "dcfb3829-c3f2-44bb-907d-8dc8a6dc4aab",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 3
},
{
"h": 3,
"i": "bfc9e80b-02bf-4122-b3da-3dd943d35012",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 0
},
{
"h": 3,
"i": "4c07a7d2-893a-46c2-bcdb-a19b6efeac3a",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 0
},
{
"h": 3,
"i": "a5a64eec-1034-4aa6-8cb1-05673c4426c6",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 6
},
{
"h": 3,
"i": "503af589-ef4d-4fe3-8934-c8f7eb480d9a",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 9
}
],
"name": "",
"tags": [
"mongo",
"database"
],
"title": "Mongo overview",
"variables": {
"a2c21714-a814-4d31-9b56-7367c3208801": {
"allSelected": true,
"customValue": "",
"description": "List of hosts sending mongo metrics",
"id": "a2c21714-a814-4d31-9b56-7367c3208801",
"modificationUUID": "448e675a-4531-45b1-b434-a9ee809470d6",
"multiSelect": true,
"name": "host.name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'host.name') AS `host.name`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'mongodb_memory_usage'\nGROUP BY `host.name`",
"selectedValue": [
"Srikanths-MacBook-Pro.local"
],
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
"type": "QUERY"
}
},
"version": "v5",
"widgets": [
{
"description": "Total number of operations",
"fillSpans": false,
"id": "4c07a7d2-893a-46c2-bcdb-a19b6efeac3a",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "mongodb.operation.count",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "rate"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "operation--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "operation",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{operation}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "7da5d899-8b06-4139-9a89-47baf9551ff8",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Operations count",
"yAxisUnit": "none"
},
{
"description": "The total time spent performing operations.",
"fillSpans": false,
"id": "bfc9e80b-02bf-4122-b3da-3dd943d35012",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "mongodb.operation.time",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "rate"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "operation--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "operation",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{operation}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "2ca35957-894a-46ae-a2a6-95d7e400d8e1",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Total operations time",
"yAxisUnit": "ms"
},
{
"description": "The number of cache operations",
"fillSpans": false,
"id": "dcfb3829-c3f2-44bb-907d-8dc8a6dc4aab",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "mongodb.cache.operations",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "rate"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "type--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "type",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{type}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "bb439198-dcf5-4767-b0d0-ab5785159b8d",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Cache operations",
"yAxisUnit": "none"
},
{
"description": "",
"fillSpans": false,
"id": "14504a3c-4a05-4d22-bab3-e22e94f51380",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "mongodb.operation.latency.time",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
"timeAggregation": "max"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'read' AND host.name IN $host.name)"
},
"groupBy": [],
"having": {
"expression": ""
},
"legend": "Latency",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "4a9cafe8-778b-476c-b825-c04e165bf285",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Read latency",
"yAxisUnit": "µs"
},
{
"description": "",
"fillSpans": false,
"id": "a5a64eec-1034-4aa6-8cb1-05673c4426c6",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "mongodb.operation.latency.time",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
"timeAggregation": "max"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "(host.name IN $host.name AND operation = 'write')"
},
"groupBy": [],
"having": {
"expression": ""
},
"legend": "Latency",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "446827eb-a4f2-4ff3-966b-fb65288c983b",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Write latency",
"yAxisUnit": "µs"
},
{
"description": "",
"fillSpans": false,
"id": "503af589-ef4d-4fe3-8934-c8f7eb480d9a",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "mongodb.operation.latency.time",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
"timeAggregation": "max"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "(host.name IN $host.name AND operation = 'command')"
},
"groupBy": [],
"having": {
"expression": ""
},
"legend": "Latency",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "7b7b977d-0921-4552-8cfe-d82dfde63ef4",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Command latency",
"yAxisUnit": "µs"
},
{
"description": "",
"fillSpans": false,
"id": "0c3d2b15-89be-4d62-a821-b26d93332ed3",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "mongodb.network.io.receive",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
"timeAggregation": "avg"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Bytes received :: {{host.name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
},
{
"aggregations": [
{
"metricName": "mongodb.network.io.transmit",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
"timeAggregation": "avg"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "B",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Bytes transmitted :: {{host.name}}",
"limit": null,
"orderBy": [],
"queryName": "B",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "41eea5bc-f9cf-45c2-92fb-ef226d6b540b",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Network IO",
"yAxisUnit": "bytes"
}
]
}

View File

@@ -117,9 +117,9 @@
"key": "4250ef7b-8f42-4a24-902a-a764d070b92d",
"modificationUUID": "4427b655-c8d2-40ce-84ed-7cb058bd3041",
"multiSelect": true,
"name": "host.name",
"name": "host_name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'host.name') AS `host.name`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql.operations'\nGROUP BY `host.name`",
"queryValue": "SELECT JSONExtractString(labels, 'host_name') AS host_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql_operations'\nGROUP BY host_name",
"selectedValue": [
"Srikanths-MacBook-Pro.local"
],
@@ -135,9 +135,9 @@
"id": "8ecaee70-640f-46fd-83d9-a4fd18bc66e6",
"modificationUUID": "a51321cd-47a2-470a-8df4-372e5bb36f2c",
"multiSelect": true,
"name": "table.name",
"name": "table_name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'postgresql.table.name') AS `table.name`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql.operations' AND JSONExtractString(labels, 'postgresql.database.name') IN {{.db.name}}\nGROUP BY `table.name`",
"queryValue": "SELECT JSONExtractString(labels, 'postgresql_table_name') AS table_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql_operations' AND JSONExtractString(labels, 'postgresql_database_name') IN {{.db_name}}\nGROUP BY table_name",
"selectedValue": [
"public.activations",
"public.licenses",
@@ -160,9 +160,9 @@
"key": "c66d1581-e5e1-440d-8ff6-ebcf078ab6dd",
"modificationUUID": "564a3f43-98f8-4189-b5e4-dcb518d73852",
"multiSelect": true,
"name": "db.name",
"name": "db_name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'postgresql.database.name') AS `db.name`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql.operations'\nGROUP BY `db.name`",
"queryValue": "SELECT JSONExtractString(labels, 'postgresql_database_name') AS db_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'postgresql_operations'\nGROUP BY db_name",
"selectedValue": [
"postgres"
],
@@ -188,7 +188,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -199,22 +199,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'ins' AND host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(operation = 'ins' AND host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -263,7 +263,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -274,22 +274,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'upd' AND host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(operation = 'upd' AND host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -338,7 +338,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -349,22 +349,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'del' AND host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(operation = 'del' AND host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -413,7 +413,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -424,22 +424,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'hot_upd' AND host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(operation = 'hot_upd' AND host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -488,7 +488,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -499,15 +499,15 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(operation = 'ins' AND host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(operation = 'ins' AND host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
@@ -523,7 +523,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -534,15 +534,15 @@
"disabled": false,
"expression": "B",
"filter": {
"expression": "(operation = 'upd' AND host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(operation = 'upd' AND host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
@@ -558,7 +558,7 @@
{
"aggregations": [
{
"metricName": "postgresql.operations",
"metricName": "postgresql_operations",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -569,15 +569,15 @@
"disabled": false,
"expression": "C",
"filter": {
"expression": "(operation = 'del' AND host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(operation = 'del' AND host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
@@ -633,7 +633,7 @@
{
"aggregations": [
{
"metricName": "postgresql.database.locks",
"metricName": "postgresql_database_locks",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -644,7 +644,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
@@ -708,7 +708,7 @@
{
"aggregations": [
{
"metricName": "postgresql.deadlocks",
"metricName": "postgresql_deadlocks",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -719,22 +719,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -783,7 +783,7 @@
{
"aggregations": [
{
"metricName": "postgresql.backends",
"metricName": "postgresql_backends",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -794,22 +794,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(host.name IN $host.name AND postgresql.database.name IN $db.name)"
"expression": "(host_name IN $host_name AND postgresql_database_name IN $db_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.database.name--string--tag--false",
"id": "postgresql_database_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.database.name",
"key": "postgresql_database_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.database.name}}",
"legend": "{{postgresql_database_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -858,7 +858,7 @@
{
"aggregations": [
{
"metricName": "postgresql.rows",
"metricName": "postgresql_rows",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -869,7 +869,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(state = 'dead' AND host.name IN $host.name AND postgresql.database.name IN $db.name AND postgresql.table.name IN $table.name)"
"expression": "(state = 'dead' AND host_name IN $host_name AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [],
"having": {
@@ -924,7 +924,7 @@
{
"aggregations": [
{
"metricName": "postgresql.index.scans",
"metricName": "postgresql_index_scans",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -935,22 +935,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(host.name IN $host.name AND postgresql.database.name IN $db.name AND postgresql.table.name IN $table.name)"
"expression": "(host_name IN $host_name AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.index.name--string--tag--false",
"id": "postgresql_index_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.index.name",
"key": "postgresql_index_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "{{postgresql.index.name}}",
"legend": "{{postgresql_index_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -999,7 +999,7 @@
{
"aggregations": [
{
"metricName": "postgresql.rows",
"metricName": "postgresql_rows",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -1010,15 +1010,15 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "(state = 'dead' AND host.name IN $host.name AND postgresql.database.name IN $db.name AND postgresql.table.name IN $table.name)"
"expression": "(state = 'dead' AND host_name IN $host_name AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],
@@ -1034,7 +1034,7 @@
{
"aggregations": [
{
"metricName": "postgresql.rows",
"metricName": "postgresql_rows",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -1045,15 +1045,15 @@
"disabled": false,
"expression": "B",
"filter": {
"expression": "(state = 'live' AND host.name IN $host.name AND postgresql.database.name IN $db.name AND postgresql.table.name IN $table.name)"
"expression": "(state = 'live' AND host_name IN $host_name AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],
@@ -1069,7 +1069,7 @@
{
"aggregations": [
{
"metricName": "postgresql.index.scans",
"metricName": "postgresql_index_scans",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -1080,15 +1080,15 @@
"disabled": false,
"expression": "C",
"filter": {
"expression": "(host.name IN $host.name AND postgresql.database.name IN $db.name AND postgresql.table.name IN $table.name)"
"expression": "(host_name IN $host_name AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],
@@ -1104,7 +1104,7 @@
{
"aggregations": [
{
"metricName": "postgresql.table.size",
"metricName": "postgresql_table_size",
"reduceTo": "avg",
"spaceAggregation": "avg",
"temporality": null,
@@ -1115,15 +1115,15 @@
"disabled": false,
"expression": "D",
"filter": {
"expression": "(host.name IN $host.name AND postgresql.database.name IN $db.name AND postgresql.table.name IN $table.name)"
"expression": "(host_name IN $host_name AND postgresql_database_name IN $db_name AND postgresql_table_name IN $table_name)"
},
"groupBy": [
{
"dataType": "string",
"id": "postgresql.table.name--string--tag--false",
"id": "postgresql_table_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "postgresql.table.name",
"key": "postgresql_table_name",
"type": "tag"
}
],

View File

@@ -99,9 +99,9 @@
"key": "94f19b3c-ad9f-4b47-a9b2-f312c09fa965",
"modificationUUID": "4c5b0c03-9cbc-425b-8d8e-7152e5c39ba8",
"multiSelect": true,
"name": "host.name",
"name": "host_name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'host.name') AS `host.name`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'redis.cpu.time'\nGROUP BY `host.name`",
"queryValue": "SELECT JSONExtractString(labels, 'host_name') AS host_name\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'redis_cpu_time'\nGROUP BY host_name",
"selectedValue": [
"Srikanths-MacBook-Pro.local"
],
@@ -127,7 +127,7 @@
{
"aggregations": [
{
"metricName": "redis.keyspace.hits",
"metricName": "redis_keyspace_hits",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -138,7 +138,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [],
"having": {
@@ -193,7 +193,7 @@
{
"aggregations": [
{
"metricName": "redis.clients.blocked",
"metricName": "redis_clients_blocked",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -204,7 +204,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [],
"having": {
@@ -259,7 +259,7 @@
{
"aggregations": [
{
"metricName": "redis.db.keys",
"metricName": "redis_db_keys",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -322,7 +322,7 @@
{
"aggregations": [
{
"metricName": "redis.rdb.changes_since_last_save",
"metricName": "redis_rdb_changes_since_last_save",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -333,7 +333,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [],
"having": {
@@ -388,7 +388,7 @@
{
"aggregations": [
{
"metricName": "redis.commands",
"metricName": "redis_commands",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -399,7 +399,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [],
"having": {
@@ -454,7 +454,7 @@
{
"aggregations": [
{
"metricName": "redis.memory.used",
"metricName": "redis_memory_used",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -465,22 +465,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"id": "host_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"key": "host_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Used::{{host.name}}",
"legend": "Used::{{host_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -489,7 +489,7 @@
{
"aggregations": [
{
"metricName": "redis.maxmemory",
"metricName": "redis_maxmemory",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
@@ -500,22 +500,22 @@
"disabled": false,
"expression": "B",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"id": "host_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"key": "host_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Max::{{host.name}}",
"legend": "Max::{{host_name}}",
"limit": null,
"orderBy": [],
"queryName": "B",
@@ -564,7 +564,7 @@
{
"aggregations": [
{
"metricName": "redis.memory.rss",
"metricName": "redis_memory_rss",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -575,22 +575,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"id": "host_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"key": "host_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Rss::{{host.name}}",
"legend": "Rss::{{host_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -639,7 +639,7 @@
{
"aggregations": [
{
"metricName": "redis.memory.fragmentation_ratio",
"metricName": "redis_memory_fragmentation_ratio",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
@@ -650,22 +650,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"id": "host_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"key": "host_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Rss::{{host.name}}",
"legend": "Rss::{{host_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -714,7 +714,7 @@
{
"aggregations": [
{
"metricName": "redis.keys.evicted",
"metricName": "redis_keys_evicted",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
@@ -725,22 +725,22 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
"expression": "host_name IN $host_name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"id": "host_name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"key": "host_name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Rss::{{host.name}}",
"legend": "Rss::{{host_name}}",
"limit": null,
"orderBy": [],
"queryName": "A",

View File

@@ -0,0 +1,779 @@
{
"description": "This dashboard shows the Redis instance overview. It includes latency, hit/miss rate, connections, and memory information.\n",
"id": "redis-overview",
"layout": [
{
"h": 3,
"i": "d4c164bc-8fc2-4dbc-aadd-8d17479ca649",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 9
},
{
"h": 3,
"i": "2fbaef0d-3cdb-4ce3-aa3c-9bbbb41786d9",
"moved": false,
"static": false,
"w": 6,
"x": 3,
"y": 6
},
{
"h": 3,
"i": "f5ee1511-0d2b-4404-9ce0-e991837decc2",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 3
},
{
"h": 3,
"i": "b19c7058-b806-4ea2-974a-ca555b168991",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 3
},
{
"h": 3,
"i": "bf0deeeb-e926-4234-944c-82bacd96af47",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 0
},
{
"h": 3,
"i": "a77227c7-16f5-4353-952e-b183c715a61c",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 0
},
{
"h": 3,
"i": "9698cee2-b1f3-4c0b-8c9f-3da4f0e05f17",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 9
},
{
"h": 3,
"i": "64a5f303-d7db-44ff-9a0e-948e5c653320",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 12
},
{
"h": 3,
"i": "3e80a918-69af-4c9a-bc57-a94e1d41b05c",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 12
}
],
"name": "",
"tags": [
"redis",
"database"
],
"title": "Redis overview",
"variables": {
"94f19b3c-ad9f-4b47-a9b2-f312c09fa965": {
"allSelected": true,
"customValue": "",
"description": "List of hosts sending Redis metrics",
"id": "94f19b3c-ad9f-4b47-a9b2-f312c09fa965",
"key": "94f19b3c-ad9f-4b47-a9b2-f312c09fa965",
"modificationUUID": "4c5b0c03-9cbc-425b-8d8e-7152e5c39ba8",
"multiSelect": true,
"name": "host.name",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'host.name') AS `host.name`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'redis.cpu.time'\nGROUP BY `host.name`",
"selectedValue": [
"Srikanths-MacBook-Pro.local"
],
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
"type": "QUERY"
}
},
"version": "v5",
"widgets": [
{
"description": "Rate successful lookup of keys in the main dictionary",
"fillSpans": false,
"id": "a77227c7-16f5-4353-952e-b183c715a61c",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.keyspace.hits",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "rate"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [],
"having": {
"expression": ""
},
"legend": "Hit/s across all hosts",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "42c9c117-bfaf-49f7-b528-aad099392295",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Hits/s",
"yAxisUnit": "none"
},
{
"description": "Number of clients pending on a blocking call",
"fillSpans": false,
"id": "bf0deeeb-e926-4234-944c-82bacd96af47",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.clients.blocked",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "sum"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [],
"having": {
"expression": ""
},
"legend": "Blocked clients across all hosts",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "b77a9e11-fb98-4a95-88a8-c3ad25c14369",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Clients blocked",
"yAxisUnit": "none"
},
{
"description": "",
"fillSpans": false,
"id": "b19c7058-b806-4ea2-974a-ca555b168991",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.db.keys",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "sum"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"groupBy": [],
"having": {
"expression": ""
},
"legend": "",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "b77a9e11-fb98-4a95-88a8-c3ad25c14369",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Keyspace Keys",
"yAxisUnit": "none"
},
{
"description": "Number of changes since the last dump",
"fillSpans": false,
"id": "f5ee1511-0d2b-4404-9ce0-e991837decc2",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.rdb.changes_since_last_save",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "sum"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [],
"having": {
"expression": ""
},
"legend": "Number of unsaved changes",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "32cedddf-606d-4de1-8c1d-4b7049e6430c",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Unsaved changes",
"yAxisUnit": "none"
},
{
"description": "",
"fillSpans": false,
"id": "2fbaef0d-3cdb-4ce3-aa3c-9bbbb41786d9",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.commands",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "sum"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [],
"having": {
"expression": ""
},
"legend": "ops/s",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "c70de4dd-a68a-42df-a249-6610c296709c",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Command/s",
"yAxisUnit": "ops"
},
{
"description": "",
"fillSpans": false,
"id": "d4c164bc-8fc2-4dbc-aadd-8d17479ca649",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.memory.used",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "sum"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Used::{{host.name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
},
{
"aggregations": [
{
"metricName": "redis.maxmemory",
"reduceTo": "sum",
"spaceAggregation": "max",
"temporality": null,
"timeAggregation": "max"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "B",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Max::{{host.name}}",
"limit": null,
"orderBy": [],
"queryName": "B",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "2f47df76-f09e-4152-8623-971f0fe66bfe",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Memory usage",
"yAxisUnit": "bytes"
},
{
"description": "",
"fillSpans": false,
"id": "9698cee2-b1f3-4c0b-8c9f-3da4f0e05f17",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.memory.rss",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "sum"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Rss::{{host.name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "fddd043c-1385-481c-9f4c-381f261e1dd9",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "RSS Memory",
"yAxisUnit": "bytes"
},
{
"description": "",
"fillSpans": false,
"id": "64a5f303-d7db-44ff-9a0e-948e5c653320",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.memory.fragmentation_ratio",
"reduceTo": "sum",
"spaceAggregation": "avg",
"temporality": null,
"timeAggregation": "avg"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Rss::{{host.name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "3e802b07-0249-4d79-a5c7-6580ab535ad0",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Fragmentation ratio",
"yAxisUnit": "short"
},
{
"description": "Number of evicted keys due to maxmemory limit",
"fillSpans": false,
"id": "3e80a918-69af-4c9a-bc57-a94e1d41b05c",
"isStacked": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregations": [
{
"metricName": "redis.keys.evicted",
"reduceTo": "sum",
"spaceAggregation": "sum",
"temporality": null,
"timeAggregation": "rate"
}
],
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filter": {
"expression": "host.name IN $host.name"
},
"groupBy": [
{
"dataType": "string",
"id": "host.name--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "host.name",
"type": "tag"
}
],
"having": {
"expression": ""
},
"legend": "Rss::{{host.name}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"stepInterval": 60
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "15d1d9d7-eb10-464b-aa7b-33ff211996f7",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"softMax": null,
"softMin": null,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Eviction rate",
"yAxisUnit": "short"
}
]
}

View File

@@ -10,7 +10,7 @@ import (
type Clusters struct {
Type ResponseType `json:"type" required:"true"`
Records []ClusterRecord `json:"records" required:"true" nullable:"false"`
Records []ClusterRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type DaemonSets struct {
Type ResponseType `json:"type" required:"true"`
Records []DaemonSetRecord `json:"records" required:"true" nullable:"false"`
Records []DaemonSetRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type Deployments struct {
Type ResponseType `json:"type" required:"true"`
Records []DeploymentRecord `json:"records" required:"true" nullable:"false"`
Records []DeploymentRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type Hosts struct {
Type ResponseType `json:"type" required:"true"`
Records []HostRecord `json:"records" required:"true" nullable:"false"`
Records []HostRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type Jobs struct {
Type ResponseType `json:"type" required:"true"`
Records []JobRecord `json:"records" required:"true" nullable:"false"`
Records []JobRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type Namespaces struct {
Type ResponseType `json:"type" required:"true"`
Records []NamespaceRecord `json:"records" required:"true" nullable:"false"`
Records []NamespaceRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type Nodes struct {
Type ResponseType `json:"type" required:"true"`
Records []NodeRecord `json:"records" required:"true" nullable:"false"`
Records []NodeRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type Pods struct {
Type ResponseType `json:"type" required:"true"`
Records []PodRecord `json:"records" required:"true" nullable:"false"`
Records []PodRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type StatefulSets struct {
Type ResponseType `json:"type" required:"true"`
Records []StatefulSetRecord `json:"records" required:"true" nullable:"false"`
Records []StatefulSetRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`

View File

@@ -10,7 +10,7 @@ import (
type Volumes struct {
Type ResponseType `json:"type" required:"true"`
Records []VolumeRecord `json:"records" required:"true" nullable:"false"`
Records []VolumeRecord `json:"records" required:"true"`
Total int `json:"total" required:"true"`
RequiredMetricsCheck RequiredMetricsCheck `json:"requiredMetricsCheck" required:"true"`
EndTimeBeforeRetention bool `json:"endTimeBeforeRetention" required:"true"`