diff --git a/.gitignore b/.gitignore index 5107685692..080a49ae37 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ e2e/.auth # go vendor/ **/main/** +__debug_bin** # git-town .git-branches.toml diff --git a/conf/example.yaml b/conf/example.yaml index fbda035d8d..7c9f285da5 100644 --- a/conf/example.yaml +++ b/conf/example.yaml @@ -207,3 +207,11 @@ emailing: key_file_path: # The path to the certificate file. cert_file_path: + +##################### Sharder (experimental) ##################### +sharder: + # Specifies the sharder provider to use. + provider: noop + single: + # The org id to which this instance belongs to. + org_id: org_id diff --git a/ee/licensing/httplicensing/provider.go b/ee/licensing/httplicensing/provider.go index 52a162143c..1cfdad4d37 100644 --- a/ee/licensing/httplicensing/provider.go +++ b/ee/licensing/httplicensing/provider.go @@ -3,13 +3,15 @@ package httplicensing import ( "context" "encoding/json" - "github.com/SigNoz/signoz/ee/query-service/constants" "time" + "github.com/SigNoz/signoz/ee/query-service/constants" + "github.com/SigNoz/signoz/ee/licensing/licensingstore/sqllicensingstore" "github.com/SigNoz/signoz/pkg/errors" "github.com/SigNoz/signoz/pkg/factory" "github.com/SigNoz/signoz/pkg/licensing" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/types/featuretypes" "github.com/SigNoz/signoz/pkg/types/licensetypes" @@ -19,23 +21,31 @@ import ( ) type provider struct { - store licensetypes.Store - zeus zeus.Zeus - config licensing.Config - settings factory.ScopedProviderSettings - stopChan chan struct{} + store licensetypes.Store + zeus zeus.Zeus + config licensing.Config + settings factory.ScopedProviderSettings + orgGetter organization.Getter + stopChan chan struct{} } -func NewProviderFactory(store sqlstore.SQLStore, zeus zeus.Zeus) factory.ProviderFactory[licensing.Licensing, licensing.Config] { +func NewProviderFactory(store sqlstore.SQLStore, zeus zeus.Zeus, orgGetter organization.Getter) factory.ProviderFactory[licensing.Licensing, licensing.Config] { return factory.NewProviderFactory(factory.MustNewName("http"), func(ctx context.Context, providerSettings factory.ProviderSettings, config licensing.Config) (licensing.Licensing, error) { - return New(ctx, providerSettings, config, store, zeus) + return New(ctx, providerSettings, config, store, zeus, orgGetter) }) } -func New(ctx context.Context, ps factory.ProviderSettings, config licensing.Config, sqlstore sqlstore.SQLStore, zeus zeus.Zeus) (licensing.Licensing, error) { +func New(ctx context.Context, ps factory.ProviderSettings, config licensing.Config, sqlstore sqlstore.SQLStore, zeus zeus.Zeus, orgGetter organization.Getter) (licensing.Licensing, error) { settings := factory.NewScopedProviderSettings(ps, "github.com/SigNoz/signoz/ee/licensing/httplicensing") licensestore := sqllicensingstore.New(sqlstore) - return &provider{store: licensestore, zeus: zeus, config: config, settings: settings, stopChan: make(chan struct{})}, nil + return &provider{ + store: licensestore, + zeus: zeus, + config: config, + settings: settings, + orgGetter: orgGetter, + stopChan: make(chan struct{}), + }, nil } func (provider *provider) Start(ctx context.Context) error { @@ -67,13 +77,13 @@ func (provider *provider) Stop(ctx context.Context) error { } func (provider *provider) Validate(ctx context.Context) error { - organizations, err := provider.store.ListOrganizations(ctx) + organizations, err := provider.orgGetter.ListByOwnedKeyRange(ctx) if err != nil { return err } - for _, organizationID := range organizations { - err := provider.Refresh(ctx, organizationID) + for _, organization := range organizations { + err := provider.Refresh(ctx, organization.ID) if err != nil { return err } @@ -168,6 +178,11 @@ func (provider *provider) Refresh(ctx context.Context, organizationID valuer.UUI return err } + err = provider.InitFeatures(ctx, activeLicense.Features) + if err != nil { + return err + } + return nil } diff --git a/ee/licensing/licensingstore/sqllicensingstore/store.go b/ee/licensing/licensingstore/sqllicensingstore/store.go index 5167a5fc00..9e8ea19d71 100644 --- a/ee/licensing/licensingstore/sqllicensingstore/store.go +++ b/ee/licensing/licensingstore/sqllicensingstore/store.go @@ -5,7 +5,6 @@ import ( "github.com/SigNoz/signoz/pkg/errors" "github.com/SigNoz/signoz/pkg/sqlstore" - "github.com/SigNoz/signoz/pkg/types" "github.com/SigNoz/signoz/pkg/types/featuretypes" "github.com/SigNoz/signoz/pkg/types/licensetypes" "github.com/SigNoz/signoz/pkg/valuer" @@ -82,31 +81,6 @@ func (store *store) Update(ctx context.Context, organizationID valuer.UUID, stor return nil } -func (store *store) ListOrganizations(ctx context.Context) ([]valuer.UUID, error) { - orgIDStrs := make([]string, 0) - err := store.sqlstore. - BunDB(). - NewSelect(). - Model(new(types.Organization)). - Column("id"). - Scan(ctx, &orgIDStrs) - if err != nil { - return nil, err - } - - orgIDs := make([]valuer.UUID, len(orgIDStrs)) - for idx, orgIDStr := range orgIDStrs { - orgID, err := valuer.NewUUID(orgIDStr) - if err != nil { - return nil, err - } - orgIDs[idx] = orgID - } - - return orgIDs, nil - -} - func (store *store) CreateFeature(ctx context.Context, storableFeature *featuretypes.StorableFeature) error { _, err := store. sqlstore. diff --git a/ee/query-service/app/server.go b/ee/query-service/app/server.go index 84f3f4a7f4..2b4d3754c6 100644 --- a/ee/query-service/app/server.go +++ b/ee/query-service/app/server.go @@ -20,6 +20,7 @@ import ( "github.com/SigNoz/signoz/pkg/alertmanager" "github.com/SigNoz/signoz/pkg/cache" "github.com/SigNoz/signoz/pkg/http/middleware" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/prometheus" "github.com/SigNoz/signoz/pkg/signoz" "github.com/SigNoz/signoz/pkg/sqlstore" @@ -113,6 +114,7 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) { serverOptions.SigNoz.SQLStore, serverOptions.SigNoz.TelemetryStore, serverOptions.SigNoz.Prometheus, + serverOptions.SigNoz.Modules.OrgGetter, ) if err != nil { @@ -157,7 +159,7 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) { } // start the usagemanager - usageManager, err := usage.New(serverOptions.SigNoz.Licensing, serverOptions.SigNoz.TelemetryStore.ClickhouseDB(), serverOptions.SigNoz.Zeus, serverOptions.SigNoz.Modules.Organization) + usageManager, err := usage.New(serverOptions.SigNoz.Licensing, serverOptions.SigNoz.TelemetryStore.ClickhouseDB(), serverOptions.SigNoz.Zeus, serverOptions.SigNoz.Modules.OrgGetter) if err != nil { return nil, err } @@ -225,7 +227,7 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) { &opAmpModel.AllAgents, agentConfMgr, ) - orgs, err := apiHandler.Signoz.Modules.Organization.GetAll(context.Background()) + orgs, err := apiHandler.Signoz.Modules.OrgGetter.ListByOwnedKeyRange(context.Background()) if err != nil { return nil, err } @@ -240,11 +242,10 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) { } func (s *Server) createPrivateServer(apiHandler *api.APIHandler) (*http.Server, error) { - r := baseapp.NewRouter() - r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap) - r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) + r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}, s.serverOptions.SigNoz.Sharder, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) + r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.SigNoz.Sharder).Wrap) r.Use(middleware.NewTimeout(s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.Config.APIServer.Timeout.ExcludedRoutes, s.serverOptions.Config.APIServer.Timeout.Default, @@ -275,8 +276,8 @@ func (s *Server) createPublicServer(apiHandler *api.APIHandler, web web.Web) (*h r := baseapp.NewRouter() am := middleware.NewAuthZ(s.serverOptions.SigNoz.Instrumentation.Logger()) - r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap) - r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) + r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}, s.serverOptions.SigNoz.Sharder, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) + r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.SigNoz.Sharder).Wrap) r.Use(middleware.NewTimeout(s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.Config.APIServer.Timeout.ExcludedRoutes, s.serverOptions.Config.APIServer.Timeout.Default, @@ -297,6 +298,7 @@ func (s *Server) createPublicServer(apiHandler *api.APIHandler, web web.Web) (*h apiHandler.RegisterMessagingQueuesRoutes(r, am) apiHandler.RegisterThirdPartyApiRoutes(r, am) apiHandler.MetricExplorerRoutes(r, am) + apiHandler.RegisterTraceFunnelsRoutes(r, am) c := cors.New(cors.Options{ AllowedOrigins: []string{"*"}, @@ -450,6 +452,7 @@ func makeRulesManager( sqlstore sqlstore.SQLStore, telemetryStore telemetrystore.TelemetryStore, prometheus prometheus.Prometheus, + orgGetter organization.Getter, ) (*baserules.Manager, error) { // create manager opts managerOpts := &baserules.ManagerOptions{ @@ -465,6 +468,7 @@ func makeRulesManager( PrepareTestRuleFunc: rules.TestNotification, Alertmanager: alertmanager, SQLStore: sqlstore, + OrgGetter: orgGetter, } // create Manager diff --git a/ee/query-service/main.go b/ee/query-service/main.go index 996b2ac0eb..6d9c3eeaf4 100644 --- a/ee/query-service/main.go +++ b/ee/query-service/main.go @@ -17,6 +17,7 @@ import ( "github.com/SigNoz/signoz/pkg/config/fileprovider" "github.com/SigNoz/signoz/pkg/factory" pkglicensing "github.com/SigNoz/signoz/pkg/licensing" + "github.com/SigNoz/signoz/pkg/modules/organization" baseconst "github.com/SigNoz/signoz/pkg/query-service/constants" "github.com/SigNoz/signoz/pkg/signoz" "github.com/SigNoz/signoz/pkg/sqlstore" @@ -133,8 +134,8 @@ func main() { zeus.Config(), httpzeus.NewProviderFactory(), licensing.Config(24*time.Hour, 3), - func(sqlstore sqlstore.SQLStore, zeus pkgzeus.Zeus) factory.ProviderFactory[pkglicensing.Licensing, pkglicensing.Config] { - return httplicensing.NewProviderFactory(sqlstore, zeus) + func(sqlstore sqlstore.SQLStore, zeus pkgzeus.Zeus, orgGetter organization.Getter) factory.ProviderFactory[pkglicensing.Licensing, pkglicensing.Config] { + return httplicensing.NewProviderFactory(sqlstore, zeus, orgGetter) }, signoz.NewEmailingProviderFactories(), signoz.NewCacheProviderFactories(), diff --git a/ee/query-service/usage/manager.go b/ee/query-service/usage/manager.go index c7ab151f80..ad8c8ec4ba 100644 --- a/ee/query-service/usage/manager.go +++ b/ee/query-service/usage/manager.go @@ -41,16 +41,16 @@ type Manager struct { zeus zeus.Zeus - organizationModule organization.Module + orgGetter organization.Getter } -func New(licenseService licensing.Licensing, clickhouseConn clickhouse.Conn, zeus zeus.Zeus, organizationModule organization.Module) (*Manager, error) { +func New(licenseService licensing.Licensing, clickhouseConn clickhouse.Conn, zeus zeus.Zeus, orgGetter organization.Getter) (*Manager, error) { m := &Manager{ - clickhouseConn: clickhouseConn, - licenseService: licenseService, - scheduler: gocron.NewScheduler(time.UTC).Every(1).Day().At("00:00"), // send usage every at 00:00 UTC - zeus: zeus, - organizationModule: organizationModule, + clickhouseConn: clickhouseConn, + licenseService: licenseService, + scheduler: gocron.NewScheduler(time.UTC).Every(1).Day().At("00:00"), // send usage every at 00:00 UTC + zeus: zeus, + orgGetter: orgGetter, } return m, nil } @@ -74,8 +74,7 @@ func (lm *Manager) Start(ctx context.Context) error { return nil } func (lm *Manager) UploadUsage(ctx context.Context) { - - organizations, err := lm.organizationModule.GetAll(context.Background()) + organizations, err := lm.orgGetter.ListByOwnedKeyRange(ctx) if err != nil { zap.L().Error("failed to get organizations", zap.Error(err)) return diff --git a/frontend/src/AppRoutes/index.tsx b/frontend/src/AppRoutes/index.tsx index a97fd7e933..32ccafa838 100644 --- a/frontend/src/AppRoutes/index.tsx +++ b/frontend/src/AppRoutes/index.tsx @@ -28,6 +28,7 @@ import { QueryBuilderProvider } from 'providers/QueryBuilder'; import { Suspense, useCallback, useEffect, useState } from 'react'; import { Route, Router, Switch } from 'react-router-dom'; import { CompatRouter } from 'react-router-dom-v5-compat'; +import { LicenseStatus } from 'types/api/licensesV3/getActive'; import { Userpilot } from 'userpilot'; import { extractDomain } from 'utils/app'; @@ -171,11 +172,13 @@ function App(): JSX.Element { user && !!user.email ) { + // either the active API returns error with 404 or 501 and if it returns a terminated license means it's on basic plan const isOnBasicPlan = - activeLicenseFetchError && - [StatusCodes.NOT_FOUND, StatusCodes.NOT_IMPLEMENTED].includes( - activeLicenseFetchError?.getHttpStatusCode(), - ); + (activeLicenseFetchError && + [StatusCodes.NOT_FOUND, StatusCodes.NOT_IMPLEMENTED].includes( + activeLicenseFetchError?.getHttpStatusCode(), + )) || + (activeLicense?.status && activeLicense.status === LicenseStatus.INVALID); const isIdentifiedUser = getLocalStorageApi(LOCALSTORAGE.IS_IDENTIFIED_USER); if (isLoggedInState && user && user.id && user.email && !isIdentifiedUser) { @@ -190,6 +193,10 @@ function App(): JSX.Element { updatedRoutes = updatedRoutes.filter( (route) => route?.path !== ROUTES.BILLING, ); + + if (isEnterpriseSelfHostedUser) { + updatedRoutes.push(LIST_LICENSES); + } } // always add support route for cloud users updatedRoutes = [...updatedRoutes, SUPPORT_ROUTE]; diff --git a/frontend/src/components/LogDetail/index.tsx b/frontend/src/components/LogDetail/index.tsx index b818823b5a..f6b5da802c 100644 --- a/frontend/src/components/LogDetail/index.tsx +++ b/frontend/src/components/LogDetail/index.tsx @@ -16,6 +16,7 @@ import JSONView from 'container/LogDetailedView/JsonView'; import Overview from 'container/LogDetailedView/Overview'; import { aggregateAttributesResourcesToString, + escapeHtml, removeEscapeCharacters, unescapeString, } from 'container/LogDetailedView/utils'; @@ -118,7 +119,7 @@ function LogDetail({ const htmlBody = useMemo( () => ({ __html: convert.toHtml( - dompurify.sanitize(unescapeString(log?.body || ''), { + dompurify.sanitize(unescapeString(escapeHtml(log?.body || '')), { FORBID_TAGS: [...FORBID_DOM_PURIFY_TAGS], }), ), diff --git a/frontend/src/components/Logs/ListLogView/index.tsx b/frontend/src/components/Logs/ListLogView/index.tsx index b30353696f..8526ce0be8 100644 --- a/frontend/src/components/Logs/ListLogView/index.tsx +++ b/frontend/src/components/Logs/ListLogView/index.tsx @@ -7,7 +7,7 @@ import cx from 'classnames'; import LogDetail from 'components/LogDetail'; import { VIEW_TYPES } from 'components/LogDetail/constants'; import { DATE_TIME_FORMATS } from 'constants/dateTimeFormats'; -import { unescapeString } from 'container/LogDetailedView/utils'; +import { escapeHtml, unescapeString } from 'container/LogDetailedView/utils'; import { FontSize } from 'container/OptionsMenu/types'; import dompurify from 'dompurify'; import { useActiveLog } from 'hooks/logs/useActiveLog'; @@ -58,7 +58,7 @@ function LogGeneralField({ const html = useMemo( () => ({ __html: convert.toHtml( - dompurify.sanitize(unescapeString(fieldValue), { + dompurify.sanitize(unescapeString(escapeHtml(fieldValue)), { FORBID_TAGS: [...FORBID_DOM_PURIFY_TAGS], }), ), diff --git a/frontend/src/components/Logs/RawLogView/index.tsx b/frontend/src/components/Logs/RawLogView/index.tsx index 897dbe98a7..9a305904a6 100644 --- a/frontend/src/components/Logs/RawLogView/index.tsx +++ b/frontend/src/components/Logs/RawLogView/index.tsx @@ -5,7 +5,7 @@ import { DrawerProps } from 'antd'; import LogDetail from 'components/LogDetail'; import { VIEW_TYPES, VIEWS } from 'components/LogDetail/constants'; import { DATE_TIME_FORMATS } from 'constants/dateTimeFormats'; -import { unescapeString } from 'container/LogDetailedView/utils'; +import { escapeHtml, unescapeString } from 'container/LogDetailedView/utils'; import LogsExplorerContext from 'container/LogsExplorerContext'; import dompurify from 'dompurify'; import { useActiveLog } from 'hooks/logs/useActiveLog'; @@ -177,7 +177,7 @@ function RawLogView({ const html = useMemo( () => ({ __html: convert.toHtml( - dompurify.sanitize(unescapeString(text), { + dompurify.sanitize(unescapeString(escapeHtml(text)), { FORBID_TAGS: [...FORBID_DOM_PURIFY_TAGS], }), ), diff --git a/frontend/src/container/LogDetailedView/TableView/TableViewActions.tsx b/frontend/src/container/LogDetailedView/TableView/TableViewActions.tsx index c99426ef54..ad40981a34 100644 --- a/frontend/src/container/LogDetailedView/TableView/TableViewActions.tsx +++ b/frontend/src/container/LogDetailedView/TableView/TableViewActions.tsx @@ -21,8 +21,10 @@ import { FORBID_DOM_PURIFY_TAGS } from 'utils/app'; import { DataType } from '../TableView'; import { + escapeHtml, filterKeyForField, jsonToDataNodes, + parseFieldValue, recursiveParseJSON, removeEscapeCharacters, unescapeString, @@ -85,7 +87,7 @@ export function TableViewActions( record.field === 'body' ? { __html: convert.toHtml( - dompurify.sanitize(unescapeString(record.value), { + dompurify.sanitize(unescapeString(escapeHtml(record.value)), { FORBID_TAGS: [...FORBID_DOM_PURIFY_TAGS], }), ), @@ -155,7 +157,11 @@ export function TableViewActions( ) } - onClick={onClickHandler(OPERATORS['='], fieldFilterKey, fieldData.value)} + onClick={onClickHandler( + OPERATORS['='], + fieldFilterKey, + parseFieldValue(fieldData.value), + )} /> @@ -171,7 +177,7 @@ export function TableViewActions( onClick={onClickHandler( OPERATORS['!='], fieldFilterKey, - fieldData.value, + parseFieldValue(fieldData.value), )} /> diff --git a/frontend/src/container/LogDetailedView/utils.tsx b/frontend/src/container/LogDetailedView/utils.tsx index 05d65259f6..77f765a85e 100644 --- a/frontend/src/container/LogDetailedView/utils.tsx +++ b/frontend/src/container/LogDetailedView/utils.tsx @@ -259,6 +259,24 @@ export const getDataTypes = (value: unknown): DataTypes => { return determineType(value); }; +// prevent html rendering in the value +export const escapeHtml = (unsafe: string): string => + unsafe + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + +// parse field value to remove escaping characters +export const parseFieldValue = (value: string): string => { + try { + return JSON.parse(value); + } catch (error) { + return value; + } +}; + // now we do not want to render colors everywhere like in tooltip and monaco editor hence we remove such codes to make // the log line readable export const removeEscapeCharacters = (str: string): string => diff --git a/frontend/src/container/LogsExplorerViews/index.tsx b/frontend/src/container/LogsExplorerViews/index.tsx index d92457ae43..1050b9f598 100644 --- a/frontend/src/container/LogsExplorerViews/index.tsx +++ b/frontend/src/container/LogsExplorerViews/index.tsx @@ -28,16 +28,12 @@ import LogsExplorerTable from 'container/LogsExplorerTable'; import { useOptionsMenu } from 'container/OptionsMenu'; import TimeSeriesView from 'container/TimeSeriesView/TimeSeriesView'; import dayjs from 'dayjs'; -import { useUpdateDashboard } from 'hooks/dashboard/useUpdateDashboard'; -import { addEmptyWidgetInDashboardJSONWithQuery } from 'hooks/dashboard/utils'; import { useCopyLogLink } from 'hooks/logs/useCopyLogLink'; import { useGetExplorerQueryRange } from 'hooks/queryBuilder/useGetExplorerQueryRange'; import { useGetPanelTypesQueryParam } from 'hooks/queryBuilder/useGetPanelTypesQueryParam'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; -import useAxiosError from 'hooks/useAxiosError'; import useClickOutside from 'hooks/useClickOutside'; import { useHandleExplorerTabChange } from 'hooks/useHandleExplorerTabChange'; -import { useNotifications } from 'hooks/useNotifications'; import { useSafeNavigate } from 'hooks/useSafeNavigate'; import useUrlQueryData from 'hooks/useUrlQueryData'; import { FlatLogData } from 'lib/logs/flatLogData'; @@ -98,7 +94,6 @@ function LogsExplorerViews({ // eslint-disable-next-line @typescript-eslint/no-explicit-any chartQueryKeyRef: MutableRefObject; }): JSX.Element { - const { notifications } = useNotifications(); const { safeNavigate } = useSafeNavigate(); // this is to respect the panel type present in the URL rather than defaulting it to list always. @@ -141,8 +136,6 @@ function LogsExplorerViews({ const [queryId, setQueryId] = useState(v4()); const [queryStats, setQueryStats] = useState(); - const handleAxisError = useAxiosError(); - const listQuery = useMemo(() => { if (!stagedQuery || stagedQuery.builder.queryData.length < 1) return null; @@ -396,11 +389,6 @@ function LogsExplorerViews({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [data?.payload]); - const { - mutate: updateDashboard, - isLoading: isUpdateDashboardLoading, - } = useUpdateDashboard(); - const getUpdatedQueryForExport = useCallback((): Query => { const updatedQuery = cloneDeep(currentQuery); @@ -424,68 +412,22 @@ function LogsExplorerViews({ ? getUpdatedQueryForExport() : exportDefaultQuery; - const updatedDashboard = addEmptyWidgetInDashboardJSONWithQuery( - dashboard, - query, - widgetId, - panelTypeParam, - options.selectColumns, - ); - logEvent('Logs Explorer: Add to dashboard successful', { panelType, isNewDashboard, dashboardName: dashboard?.data?.title, }); - updateDashboard(updatedDashboard, { - onSuccess: (data) => { - if (data.error) { - const message = - data.error === 'feature usage exceeded' ? ( - - Panel limit exceeded for {DataSource.LOGS} in community edition. Please - checkout our paid plans{' '} - - here - - - ) : ( - data.error - ); - notifications.error({ - message, - }); - - return; - } - - const dashboardEditView = generateExportToDashboardLink({ - query, - panelType: panelTypeParam, - dashboardId: data.payload?.uuid || '', - widgetId, - }); - - safeNavigate(dashboardEditView); - }, - onError: handleAxisError, + const dashboardEditView = generateExportToDashboardLink({ + query, + panelType: panelTypeParam, + dashboardId: dashboard.uuid, + widgetId, }); + + safeNavigate(dashboardEditView); }, - [ - getUpdatedQueryForExport, - exportDefaultQuery, - options.selectColumns, - safeNavigate, - notifications, - panelType, - updateDashboard, - handleAxisError, - ], + [getUpdatedQueryForExport, exportDefaultQuery, safeNavigate, panelType], ); useEffect(() => { @@ -811,7 +753,6 @@ function LogsExplorerViews({ diff --git a/frontend/src/container/MetricsExplorer/Explorer/Explorer.tsx b/frontend/src/container/MetricsExplorer/Explorer/Explorer.tsx index 1aed2e567b..958ea7cfc4 100644 --- a/frontend/src/container/MetricsExplorer/Explorer/Explorer.tsx +++ b/frontend/src/container/MetricsExplorer/Explorer/Explorer.tsx @@ -2,18 +2,12 @@ import './Explorer.styles.scss'; import * as Sentry from '@sentry/react'; import { Switch } from 'antd'; -import axios from 'axios'; -import { LOCALSTORAGE } from 'constants/localStorage'; import { initialQueriesMap, PANEL_TYPES } from 'constants/queryBuilder'; import ExplorerOptionWrapper from 'container/ExplorerOptions/ExplorerOptionWrapper'; -import { useOptionsMenu } from 'container/OptionsMenu'; import RightToolbarActions from 'container/QueryBuilder/components/ToolbarActions/RightToolbarActions'; import DateTimeSelector from 'container/TopNav/DateTimeSelectionV2'; -import { useUpdateDashboard } from 'hooks/dashboard/useUpdateDashboard'; -import { addEmptyWidgetInDashboardJSONWithQuery } from 'hooks/dashboard/utils'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import { useShareBuilderUrl } from 'hooks/queryBuilder/useShareBuilderUrl'; -import { useNotifications } from 'hooks/useNotifications'; import { useSafeNavigate } from 'hooks/useSafeNavigate'; import ErrorBoundaryFallback from 'pages/ErrorBoundaryFallback/ErrorBoundaryFallback'; import { useCallback, useMemo, useState } from 'react'; @@ -39,13 +33,6 @@ function Explorer(): JSX.Element { currentQuery, } = useQueryBuilder(); const { safeNavigate } = useSafeNavigate(); - const { notifications } = useNotifications(); - const { mutate: updateDashboard, isLoading } = useUpdateDashboard(); - const { options } = useOptionsMenu({ - storageKey: LOCALSTORAGE.METRICS_LIST_OPTIONS, - dataSource: DataSource.METRICS, - aggregateOperator: 'noop', - }); const [searchParams, setSearchParams] = useSearchParams(); const isOneChartPerQueryEnabled = @@ -86,59 +73,16 @@ function Explorer(): JSX.Element { const widgetId = uuid(); - const updatedDashboard = addEmptyWidgetInDashboardJSONWithQuery( - dashboard, - queryToExport || exportDefaultQuery, + const dashboardEditView = generateExportToDashboardLink({ + query: queryToExport || exportDefaultQuery, + panelType: PANEL_TYPES.TIME_SERIES, + dashboardId: dashboard?.uuid || '', widgetId, - PANEL_TYPES.TIME_SERIES, - options.selectColumns, - ); - - updateDashboard(updatedDashboard, { - onSuccess: (data) => { - if (data.error) { - const message = - data.error === 'feature usage exceeded' ? ( - - Panel limit exceeded for {DataSource.METRICS} in community edition. - Please checkout our paid plans{' '} - - here - - - ) : ( - data.error - ); - notifications.error({ - message, - }); - - return; - } - const dashboardEditView = generateExportToDashboardLink({ - query: queryToExport || exportDefaultQuery, - panelType: PANEL_TYPES.TIME_SERIES, - dashboardId: data.payload?.uuid || '', - widgetId, - }); - - safeNavigate(dashboardEditView); - }, - onError: (error) => { - if (axios.isAxiosError(error)) { - notifications.error({ - message: error.message, - }); - } - }, }); + + safeNavigate(dashboardEditView); }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [exportDefaultQuery, notifications, updateDashboard], + [exportDefaultQuery, safeNavigate], ); const splitedQueries = useMemo( @@ -201,7 +145,6 @@ function Explorer(): JSX.Element { { + const getUpdatedQueryForExport = useCallback((): Query => { const updatedQuery = cloneDeep(currentQuery); set( @@ -136,7 +128,7 @@ function TracesExplorer(): JSX.Element { ); return updatedQuery; - }; + }, [currentQuery, options.selectColumns]); const handleExport = useCallback( (dashboard: Dashboard | null, isNewDashboard?: boolean): void => { @@ -153,65 +145,22 @@ function TracesExplorer(): JSX.Element { ? getUpdatedQueryForExport() : exportDefaultQuery; - const updatedDashboard = addEmptyWidgetInDashboardJSONWithQuery( - dashboard, - query, - widgetId, - panelTypeParam, - options.selectColumns, - ); - logEvent('Traces Explorer: Add to dashboard successful', { panelType, isNewDashboard, dashboardName: dashboard?.data?.title, }); - updateDashboard(updatedDashboard, { - onSuccess: (data) => { - if (data.error) { - const message = - data.error === 'feature usage exceeded' ? ( - - Panel limit exceeded for {DataSource.TRACES} in community edition. - Please checkout our paid plans{' '} - - here - - - ) : ( - data.error - ); - notifications.error({ - message, - }); - - return; - } - const dashboardEditView = generateExportToDashboardLink({ - query, - panelType: panelTypeParam, - dashboardId: data.payload?.uuid || '', - widgetId, - }); - - safeNavigate(dashboardEditView); - }, - onError: (error) => { - if (axios.isAxiosError(error)) { - notifications.error({ - message: error.message, - }); - } - }, + const dashboardEditView = generateExportToDashboardLink({ + query, + panelType: panelTypeParam, + dashboardId: dashboard?.uuid || '', + widgetId, }); + + safeNavigate(dashboardEditView); }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [exportDefaultQuery, notifications, panelType, updateDashboard], + [exportDefaultQuery, panelType, safeNavigate, getUpdatedQueryForExport], ); useShareBuilderUrl(defaultQuery); @@ -282,11 +231,7 @@ function TracesExplorer(): JSX.Element { - + diff --git a/frontend/src/types/api/licensesV3/getActive.ts b/frontend/src/types/api/licensesV3/getActive.ts index a26d766064..be0d488b5e 100644 --- a/frontend/src/types/api/licensesV3/getActive.ts +++ b/frontend/src/types/api/licensesV3/getActive.ts @@ -6,6 +6,7 @@ export enum LicenseEvent { export enum LicenseStatus { SUSPENDED = 'SUSPENDED', VALID = 'VALID', + INVALID = 'INVALID', } export enum LicenseState { diff --git a/pkg/alertmanager/alertmanagerstore/sqlalertmanagerstore/config.go b/pkg/alertmanager/alertmanagerstore/sqlalertmanagerstore/config.go index 1175d9c369..c2bbc69876 100644 --- a/pkg/alertmanager/alertmanagerstore/sqlalertmanagerstore/config.go +++ b/pkg/alertmanager/alertmanagerstore/sqlalertmanagerstore/config.go @@ -67,23 +67,6 @@ func (store *config) Set(ctx context.Context, config *alertmanagertypes.Config, }, opts...) } -func (store *config) ListOrgs(ctx context.Context) ([]string, error) { - var orgIDs []string - - err := store. - sqlstore. - BunDB(). - NewSelect(). - Table("organizations"). - ColumnExpr("id"). - Scan(ctx, &orgIDs) - if err != nil { - return nil, err - } - - return orgIDs, nil -} - func (store *config) CreateChannel(ctx context.Context, channel *alertmanagertypes.Channel, opts ...alertmanagertypes.StoreOption) error { return store.wrap(ctx, func(ctx context.Context) error { if _, err := store. diff --git a/pkg/alertmanager/legacyalertmanager/provider.go b/pkg/alertmanager/legacyalertmanager/provider.go index b8fbba68e3..b4e1453b31 100644 --- a/pkg/alertmanager/legacyalertmanager/provider.go +++ b/pkg/alertmanager/legacyalertmanager/provider.go @@ -14,6 +14,7 @@ import ( "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerbatcher" "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerstore/sqlalertmanagerstore" "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/types/alertmanagertypes" "github.com/SigNoz/signoz/pkg/valuer" @@ -57,16 +58,17 @@ type provider struct { configStore alertmanagertypes.ConfigStore batcher *alertmanagerbatcher.Batcher url *url.URL + orgGetter organization.Getter orgID string } -func NewFactory(sqlstore sqlstore.SQLStore) factory.ProviderFactory[alertmanager.Alertmanager, alertmanager.Config] { +func NewFactory(sqlstore sqlstore.SQLStore, orgGetter organization.Getter) factory.ProviderFactory[alertmanager.Alertmanager, alertmanager.Config] { return factory.NewProviderFactory(factory.MustNewName("legacy"), func(ctx context.Context, settings factory.ProviderSettings, config alertmanager.Config) (alertmanager.Alertmanager, error) { - return New(ctx, settings, config, sqlstore) + return New(ctx, settings, config, sqlstore, orgGetter) }) } -func New(ctx context.Context, providerSettings factory.ProviderSettings, config alertmanager.Config, sqlstore sqlstore.SQLStore) (*provider, error) { +func New(ctx context.Context, providerSettings factory.ProviderSettings, config alertmanager.Config, sqlstore sqlstore.SQLStore, orgGetter organization.Getter) (*provider, error) { settings := factory.NewScopedProviderSettings(providerSettings, "github.com/SigNoz/signoz/pkg/alertmanager/legacyalertmanager") configStore := sqlalertmanagerstore.NewConfigStore(sqlstore) @@ -92,7 +94,7 @@ func (provider *provider) Start(ctx context.Context) error { // For the first time, we need to get the orgID from the config store. // Since this is the legacy alertmanager, we get the first org from the store. if provider.orgID == "" { - orgIDs, err := provider.configStore.ListOrgs(ctx) + orgIDs, err := provider.orgGetter.ListByOwnedKeyRange(ctx) if err != nil { provider.settings.Logger().ErrorContext(ctx, "failed to send alerts to alertmanager", "error", err) continue @@ -103,7 +105,7 @@ func (provider *provider) Start(ctx context.Context) error { continue } - provider.orgID = orgIDs[0] + provider.orgID = orgIDs[0].ID.String() } if err := provider.putAlerts(ctx, provider.orgID, alerts); err != nil { diff --git a/pkg/alertmanager/service.go b/pkg/alertmanager/service.go index d8fdd74b28..c67c9e9edc 100644 --- a/pkg/alertmanager/service.go +++ b/pkg/alertmanager/service.go @@ -7,6 +7,7 @@ import ( "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerserver" "github.com/SigNoz/signoz/pkg/errors" "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/types/alertmanagertypes" ) @@ -20,6 +21,9 @@ type Service struct { // configStore is the config store for the alertmanager service configStore alertmanagertypes.ConfigStore + // organization is the organization module for the alertmanager service + orgGetter organization.Getter + // settings is the settings for the alertmanager service settings factory.ScopedProviderSettings @@ -30,11 +34,19 @@ type Service struct { serversMtx sync.RWMutex } -func New(ctx context.Context, settings factory.ScopedProviderSettings, config alertmanagerserver.Config, stateStore alertmanagertypes.StateStore, configStore alertmanagertypes.ConfigStore) *Service { +func New( + ctx context.Context, + settings factory.ScopedProviderSettings, + config alertmanagerserver.Config, + stateStore alertmanagertypes.StateStore, + configStore alertmanagertypes.ConfigStore, + orgGetter organization.Getter, +) *Service { service := &Service{ config: config, stateStore: stateStore, configStore: configStore, + orgGetter: orgGetter, settings: settings, servers: make(map[string]*alertmanagerserver.Server), serversMtx: sync.RWMutex{}, @@ -44,38 +56,38 @@ func New(ctx context.Context, settings factory.ScopedProviderSettings, config al } func (service *Service) SyncServers(ctx context.Context) error { - orgIDs, err := service.configStore.ListOrgs(ctx) + orgs, err := service.orgGetter.ListByOwnedKeyRange(ctx) if err != nil { return err } service.serversMtx.Lock() - for _, orgID := range orgIDs { - config, err := service.getConfig(ctx, orgID) + for _, org := range orgs { + config, err := service.getConfig(ctx, org.ID.StringValue()) if err != nil { - service.settings.Logger().ErrorContext(ctx, "failed to get alertmanager config for org", "org_id", orgID, "error", err) + service.settings.Logger().ErrorContext(ctx, "failed to get alertmanager config for org", "org_id", org.ID.StringValue(), "error", err) continue } // If the server is not present, create it and sync the config - if _, ok := service.servers[orgID]; !ok { - server, err := service.newServer(ctx, orgID) + if _, ok := service.servers[org.ID.StringValue()]; !ok { + server, err := service.newServer(ctx, org.ID.StringValue()) if err != nil { - service.settings.Logger().ErrorContext(ctx, "failed to create alertmanager server", "org_id", orgID, "error", err) + service.settings.Logger().ErrorContext(ctx, "failed to create alertmanager server", "org_id", org.ID.StringValue(), "error", err) continue } - service.servers[orgID] = server + service.servers[org.ID.StringValue()] = server } - if service.servers[orgID].Hash() == config.StoreableConfig().Hash { - service.settings.Logger().DebugContext(ctx, "skipping alertmanager sync for org", "org_id", orgID, "hash", config.StoreableConfig().Hash) + if service.servers[org.ID.StringValue()].Hash() == config.StoreableConfig().Hash { + service.settings.Logger().DebugContext(ctx, "skipping alertmanager sync for org", "org_id", org.ID.StringValue(), "hash", config.StoreableConfig().Hash) continue } - err = service.servers[orgID].SetConfig(ctx, config) + err = service.servers[org.ID.StringValue()].SetConfig(ctx, config) if err != nil { - service.settings.Logger().ErrorContext(ctx, "failed to set config for alertmanager server", "org_id", orgID, "error", err) + service.settings.Logger().ErrorContext(ctx, "failed to set config for alertmanager server", "org_id", org.ID.StringValue(), "error", err) continue } } diff --git a/pkg/alertmanager/signozalertmanager/provider.go b/pkg/alertmanager/signozalertmanager/provider.go index c0b285358f..8c3c0872ae 100644 --- a/pkg/alertmanager/signozalertmanager/provider.go +++ b/pkg/alertmanager/signozalertmanager/provider.go @@ -8,6 +8,7 @@ import ( "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerstore/sqlalertmanagerstore" "github.com/SigNoz/signoz/pkg/errors" "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/types/alertmanagertypes" "github.com/SigNoz/signoz/pkg/valuer" @@ -22,13 +23,13 @@ type provider struct { stopC chan struct{} } -func NewFactory(sqlstore sqlstore.SQLStore) factory.ProviderFactory[alertmanager.Alertmanager, alertmanager.Config] { +func NewFactory(sqlstore sqlstore.SQLStore, orgGetter organization.Getter) factory.ProviderFactory[alertmanager.Alertmanager, alertmanager.Config] { return factory.NewProviderFactory(factory.MustNewName("signoz"), func(ctx context.Context, settings factory.ProviderSettings, config alertmanager.Config) (alertmanager.Alertmanager, error) { - return New(ctx, settings, config, sqlstore) + return New(ctx, settings, config, sqlstore, orgGetter) }) } -func New(ctx context.Context, providerSettings factory.ProviderSettings, config alertmanager.Config, sqlstore sqlstore.SQLStore) (*provider, error) { +func New(ctx context.Context, providerSettings factory.ProviderSettings, config alertmanager.Config, sqlstore sqlstore.SQLStore, orgGetter organization.Getter) (*provider, error) { settings := factory.NewScopedProviderSettings(providerSettings, "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager") configStore := sqlalertmanagerstore.NewConfigStore(sqlstore) stateStore := sqlalertmanagerstore.NewStateStore(sqlstore) @@ -40,6 +41,7 @@ func New(ctx context.Context, providerSettings factory.ProviderSettings, config config.Signoz.Config, stateStore, configStore, + orgGetter, ), settings: settings, config: config, diff --git a/pkg/http/middleware/api_key.go b/pkg/http/middleware/api_key.go index 01e1981bd7..0d53b736bc 100644 --- a/pkg/http/middleware/api_key.go +++ b/pkg/http/middleware/api_key.go @@ -5,9 +5,15 @@ import ( "net/http" "time" + "github.com/SigNoz/signoz/pkg/sharder" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/types" "github.com/SigNoz/signoz/pkg/types/authtypes" + "github.com/SigNoz/signoz/pkg/valuer" +) + +const ( + apiKeyCrossOrgMessage string = "::API-KEY-CROSS-ORG::" ) type APIKey struct { @@ -15,10 +21,11 @@ type APIKey struct { uuid *authtypes.UUID headers []string logger *slog.Logger + sharder sharder.Sharder } -func NewAPIKey(store sqlstore.SQLStore, headers []string, logger *slog.Logger) *APIKey { - return &APIKey{store: store, uuid: authtypes.NewUUID(), headers: headers, logger: logger} +func NewAPIKey(store sqlstore.SQLStore, headers []string, logger *slog.Logger, sharder sharder.Sharder) *APIKey { + return &APIKey{store: store, uuid: authtypes.NewUUID(), headers: headers, logger: logger, sharder: sharder} } func (a *APIKey) Wrap(next http.Handler) http.Handler { @@ -36,13 +43,20 @@ func (a *APIKey) Wrap(next http.Handler) http.Handler { next.ServeHTTP(w, r) return } + apiKeyToken, ok := authtypes.UUIDFromContext(ctx) if !ok { next.ServeHTTP(w, r) return } - err = a.store.BunDB().NewSelect().Model(&apiKey).Where("token = ?", apiKeyToken).Scan(r.Context()) + err = a. + store. + BunDB(). + NewSelect(). + Model(&apiKey). + Where("token = ?", apiKeyToken). + Scan(r.Context()) if err != nil { next.ServeHTTP(w, r) return @@ -71,6 +85,18 @@ func (a *APIKey) Wrap(next http.Handler) http.Handler { ctx = authtypes.NewContextWithClaims(ctx, jwt) + claims, err := authtypes.ClaimsFromContext(ctx) + if err != nil { + next.ServeHTTP(w, r) + return + } + + if err := a.sharder.IsMyOwnedKey(r.Context(), types.NewOrganizationKey(valuer.MustNewUUID(claims.OrgID))); err != nil { + a.logger.ErrorContext(r.Context(), apiKeyCrossOrgMessage, "claims", claims, "error", err) + next.ServeHTTP(w, r) + return + } + r = r.WithContext(ctx) next.ServeHTTP(w, r) diff --git a/pkg/http/middleware/auth.go b/pkg/http/middleware/auth.go index 491ccb93f1..8e6a4e3a03 100644 --- a/pkg/http/middleware/auth.go +++ b/pkg/http/middleware/auth.go @@ -1,18 +1,28 @@ package middleware import ( + "log/slog" "net/http" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/types" "github.com/SigNoz/signoz/pkg/types/authtypes" + "github.com/SigNoz/signoz/pkg/valuer" +) + +const ( + authCrossOrgMessage string = "::AUTH-CROSS-ORG::" ) type Auth struct { jwt *authtypes.JWT headers []string + sharder sharder.Sharder + logger *slog.Logger } -func NewAuth(jwt *authtypes.JWT, headers []string) *Auth { - return &Auth{jwt: jwt, headers: headers} +func NewAuth(jwt *authtypes.JWT, headers []string, sharder sharder.Sharder, logger *slog.Logger) *Auth { + return &Auth{jwt: jwt, headers: headers, sharder: sharder, logger: logger} } func (a *Auth) Wrap(next http.Handler) http.Handler { @@ -28,6 +38,18 @@ func (a *Auth) Wrap(next http.Handler) http.Handler { return } + claims, err := authtypes.ClaimsFromContext(ctx) + if err != nil { + next.ServeHTTP(w, r) + return + } + + if err := a.sharder.IsMyOwnedKey(r.Context(), types.NewOrganizationKey(valuer.MustNewUUID(claims.OrgID))); err != nil { + a.logger.ErrorContext(r.Context(), authCrossOrgMessage, "claims", claims, "error", err) + next.ServeHTTP(w, r) + return + } + r = r.WithContext(ctx) next.ServeHTTP(w, r) diff --git a/pkg/modules/apdex/apdex.go b/pkg/modules/apdex/apdex.go index 9b23334f36..ed618f0670 100644 --- a/pkg/modules/apdex/apdex.go +++ b/pkg/modules/apdex/apdex.go @@ -4,13 +4,13 @@ import ( "context" "net/http" - "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/types/apdextypes" ) type Module interface { - Get(context.Context, string, []string) ([]*types.ApdexSettings, error) + Get(context.Context, string, []string) ([]*apdextypes.Settings, error) - Set(context.Context, string, *types.ApdexSettings) error + Set(context.Context, string, *apdextypes.Settings) error } type Handler interface { diff --git a/pkg/modules/apdex/implapdex/handler.go b/pkg/modules/apdex/implapdex/handler.go index effa4c537d..38030cda70 100644 --- a/pkg/modules/apdex/implapdex/handler.go +++ b/pkg/modules/apdex/implapdex/handler.go @@ -9,7 +9,7 @@ import ( "github.com/SigNoz/signoz/pkg/http/render" "github.com/SigNoz/signoz/pkg/modules/apdex" - "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/types/apdextypes" "github.com/SigNoz/signoz/pkg/types/authtypes" ) @@ -31,7 +31,7 @@ func (handler *handler) Set(rw http.ResponseWriter, req *http.Request) { return } - var apdexSettings types.ApdexSettings + var apdexSettings apdextypes.Settings if err := json.NewDecoder(req.Body).Decode(&apdexSettings); err != nil { render.Error(rw, err) return diff --git a/pkg/modules/apdex/implapdex/module.go b/pkg/modules/apdex/implapdex/module.go index 9eaa86048c..3012e4ba36 100644 --- a/pkg/modules/apdex/implapdex/module.go +++ b/pkg/modules/apdex/implapdex/module.go @@ -6,7 +6,7 @@ import ( "github.com/SigNoz/signoz/pkg/errors" "github.com/SigNoz/signoz/pkg/modules/apdex" "github.com/SigNoz/signoz/pkg/sqlstore" - "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/types/apdextypes" "github.com/SigNoz/signoz/pkg/valuer" "github.com/uptrace/bun" ) @@ -25,8 +25,8 @@ func NewModule(sqlstore sqlstore.SQLStore) apdex.Module { } } -func (module *module) Get(ctx context.Context, orgID string, services []string) ([]*types.ApdexSettings, error) { - var apdexSettings []*types.ApdexSettings +func (module *module) Get(ctx context.Context, orgID string, services []string) ([]*apdextypes.Settings, error) { + var apdexSettings []*apdextypes.Settings err := module. sqlstore. @@ -51,7 +51,7 @@ func (module *module) Get(ctx context.Context, orgID string, services []string) } if !found { - apdexSettings = append(apdexSettings, &types.ApdexSettings{ + apdexSettings = append(apdexSettings, &apdextypes.Settings{ ServiceName: service, Threshold: defaultApdexThreshold, }) @@ -61,7 +61,7 @@ func (module *module) Get(ctx context.Context, orgID string, services []string) return apdexSettings, nil } -func (module *module) Set(ctx context.Context, orgID string, apdexSettings *types.ApdexSettings) error { +func (module *module) Set(ctx context.Context, orgID string, apdexSettings *apdextypes.Settings) error { apdexSettings.OrgID = orgID apdexSettings.Identifiable.ID = valuer.GenerateUUID() diff --git a/pkg/modules/organization/implorganization/getter.go b/pkg/modules/organization/implorganization/getter.go new file mode 100644 index 0000000000..78c684ece3 --- /dev/null +++ b/pkg/modules/organization/implorganization/getter.go @@ -0,0 +1,36 @@ +package implorganization + +import ( + "context" + + "github.com/SigNoz/signoz/pkg/modules/organization" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/valuer" +) + +type getter struct { + store types.OrganizationStore + sharder sharder.Sharder +} + +func NewGetter(store types.OrganizationStore, sharder sharder.Sharder) organization.Getter { + return &getter{store: store, sharder: sharder} +} + +func (module *getter) Get(ctx context.Context, id valuer.UUID) (*types.Organization, error) { + return module.store.Get(ctx, id) +} + +func (module *getter) List(ctx context.Context) ([]*types.Organization, error) { + return module.store.GetAll(ctx) +} + +func (module *getter) ListByOwnedKeyRange(ctx context.Context) ([]*types.Organization, error) { + start, end, err := module.sharder.GetMyOwnedKeyRange(ctx) + if err != nil { + return nil, err + } + + return module.store.ListByKeyRange(ctx, start, end) +} diff --git a/pkg/modules/organization/implorganization/handler.go b/pkg/modules/organization/implorganization/handler.go index 9c5ca484ed..ce15529932 100644 --- a/pkg/modules/organization/implorganization/handler.go +++ b/pkg/modules/organization/implorganization/handler.go @@ -15,11 +15,12 @@ import ( ) type handler struct { - module organization.Module + orgGetter organization.Getter + orgSetter organization.Setter } -func NewHandler(module organization.Module) organization.Handler { - return &handler{module: module} +func NewHandler(orgGetter organization.Getter, orgSetter organization.Setter) organization.Handler { + return &handler{orgGetter: orgGetter, orgSetter: orgSetter} } func (handler *handler) Get(rw http.ResponseWriter, r *http.Request) { @@ -38,7 +39,7 @@ func (handler *handler) Get(rw http.ResponseWriter, r *http.Request) { return } - organization, err := handler.module.Get(ctx, orgID) + organization, err := handler.orgGetter.Get(ctx, orgID) if err != nil { render.Error(rw, err) return @@ -70,7 +71,7 @@ func (handler *handler) Update(rw http.ResponseWriter, r *http.Request) { } req.ID = orgID - err = handler.module.Update(ctx, req) + err = handler.orgSetter.Update(ctx, req) if err != nil { render.Error(rw, err) return diff --git a/pkg/modules/organization/implorganization/module.go b/pkg/modules/organization/implorganization/module.go deleted file mode 100644 index 27fe2f1e6f..0000000000 --- a/pkg/modules/organization/implorganization/module.go +++ /dev/null @@ -1,33 +0,0 @@ -package implorganization - -import ( - "context" - - "github.com/SigNoz/signoz/pkg/modules/organization" - "github.com/SigNoz/signoz/pkg/types" - "github.com/SigNoz/signoz/pkg/valuer" -) - -type module struct { - store types.OrganizationStore -} - -func NewModule(organizationStore types.OrganizationStore) organization.Module { - return &module{store: organizationStore} -} - -func (module *module) Create(ctx context.Context, organization *types.Organization) error { - return module.store.Create(ctx, organization) -} - -func (module *module) Get(ctx context.Context, id valuer.UUID) (*types.Organization, error) { - return module.store.Get(ctx, id) -} - -func (module *module) GetAll(ctx context.Context) ([]*types.Organization, error) { - return module.store.GetAll(ctx) -} - -func (module *module) Update(ctx context.Context, updatedOrganization *types.Organization) error { - return module.store.Update(ctx, updatedOrganization) -} diff --git a/pkg/modules/organization/implorganization/setter.go b/pkg/modules/organization/implorganization/setter.go new file mode 100644 index 0000000000..693d4a3aab --- /dev/null +++ b/pkg/modules/organization/implorganization/setter.go @@ -0,0 +1,40 @@ +package implorganization + +import ( + "context" + + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/modules/organization" + "github.com/SigNoz/signoz/pkg/modules/quickfilter" + "github.com/SigNoz/signoz/pkg/types" +) + +type setter struct { + store types.OrganizationStore + alertmanager alertmanager.Alertmanager + quickfilter quickfilter.Module +} + +func NewSetter(store types.OrganizationStore, alertmanager alertmanager.Alertmanager, quickfilter quickfilter.Module) organization.Setter { + return &setter{store: store, alertmanager: alertmanager, quickfilter: quickfilter} +} + +func (module *setter) Create(ctx context.Context, organization *types.Organization) error { + if err := module.store.Create(ctx, organization); err != nil { + return err + } + + if err := module.alertmanager.SetDefaultConfig(ctx, organization.ID.StringValue()); err != nil { + return err + } + + if err := module.quickfilter.SetDefaultConfig(ctx, organization.ID); err != nil { + return err + } + + return nil +} + +func (module *setter) Update(ctx context.Context, updatedOrganization *types.Organization) error { + return module.store.Update(ctx, updatedOrganization) +} diff --git a/pkg/modules/organization/implorganization/store.go b/pkg/modules/organization/implorganization/store.go index ec33cd04bd..6acd247dc5 100644 --- a/pkg/modules/organization/implorganization/store.go +++ b/pkg/modules/organization/implorganization/store.go @@ -92,3 +92,20 @@ func (store *store) Delete(ctx context.Context, id valuer.UUID) error { return nil } + +func (store *store) ListByKeyRange(ctx context.Context, start, end uint32) ([]*types.Organization, error) { + organizations := make([]*types.Organization, 0) + err := store. + sqlstore. + BunDB(). + NewSelect(). + Model(&organizations). + Where("key >= ?", start). + Where("key <= ?", end). + Scan(ctx) + if err != nil { + return nil, err + } + + return organizations, nil +} diff --git a/pkg/modules/organization/organization.go b/pkg/modules/organization/organization.go index 00ba48f95d..a48ef682d6 100644 --- a/pkg/modules/organization/organization.go +++ b/pkg/modules/organization/organization.go @@ -8,17 +8,22 @@ import ( "github.com/SigNoz/signoz/pkg/valuer" ) -type Module interface { - // Create creates the given organization - Create(context.Context, *types.Organization) error - +type Getter interface { // Get gets the organization based on the given id Get(context.Context, valuer.UUID) (*types.Organization, error) - // GetAll gets all the organizations - GetAll(context.Context) ([]*types.Organization, error) + // Lists all the organizations + List(context.Context) ([]*types.Organization, error) - // Update updates the given organization based on id present + // ListByOwnedKeyRange gets all the organizations owned by the instance + ListByOwnedKeyRange(context.Context) ([]*types.Organization, error) +} + +type Setter interface { + // Create creates the given organization + Create(context.Context, *types.Organization) error + + // Update updates the given organization Update(context.Context, *types.Organization) error } diff --git a/pkg/modules/tracefunnel/impltracefunnel/handler.go b/pkg/modules/tracefunnel/impltracefunnel/handler.go new file mode 100644 index 0000000000..09f4dfe269 --- /dev/null +++ b/pkg/modules/tracefunnel/impltracefunnel/handler.go @@ -0,0 +1,235 @@ +package impltracefunnel + +import ( + "encoding/json" + "net/http" + + "github.com/SigNoz/signoz/pkg/errors" + "github.com/SigNoz/signoz/pkg/http/render" + "github.com/SigNoz/signoz/pkg/modules/tracefunnel" + "github.com/SigNoz/signoz/pkg/types/authtypes" + tf "github.com/SigNoz/signoz/pkg/types/tracefunneltypes" + "github.com/SigNoz/signoz/pkg/valuer" + "github.com/gorilla/mux" +) + +type handler struct { + module tracefunnel.Module +} + +func NewHandler(module tracefunnel.Module) tracefunnel.Handler { + return &handler{module: module} +} + +func (handler *handler) New(rw http.ResponseWriter, r *http.Request) { + var req tf.PostableFunnel + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + render.Error(rw, err) + return + } + + claims, err := authtypes.ClaimsFromContext(r.Context()) + if err != nil { + render.Error(rw, err) + return + } + + funnel, err := handler.module.Create(r.Context(), req.Timestamp, req.Name, valuer.MustNewUUID(claims.UserID), valuer.MustNewUUID(claims.OrgID)) + if err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "failed to create funnel: %v", err)) + return + } + + response := tf.ConstructFunnelResponse(funnel, &claims) + render.Success(rw, http.StatusOK, response) +} + +func (handler *handler) UpdateSteps(rw http.ResponseWriter, r *http.Request) { + var req tf.PostableFunnel + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + render.Error(rw, err) + return + } + + claims, err := authtypes.ClaimsFromContext(r.Context()) + if err != nil { + render.Error(rw, err) + return + } + + updatedAt, err := tf.ValidateAndConvertTimestamp(req.Timestamp) + if err != nil { + render.Error(rw, err) + return + } + + funnel, err := handler.module.Get(r.Context(), req.FunnelID, valuer.MustNewUUID(claims.OrgID)) + if err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "funnel not found: %v", err)) + return + } + + steps, err := tf.ProcessFunnelSteps(req.Steps) + if err != nil { + render.Error(rw, err) + return + } + + funnel.Steps = steps + funnel.UpdatedAt = updatedAt + funnel.UpdatedBy = claims.UserID + + if req.Name != "" { + funnel.Name = req.Name + } + if req.Description != "" { + funnel.Description = req.Description + } + + if err := handler.module.Update(r.Context(), funnel, valuer.MustNewUUID(claims.UserID)); err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "failed to update funnel in database: %v", err)) + return + } + + updatedFunnel, err := handler.module.Get(r.Context(), funnel.ID, valuer.MustNewUUID(claims.OrgID)) + if err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "failed to get updated funnel: %v", err)) + return + } + + response := tf.ConstructFunnelResponse(updatedFunnel, &claims) + render.Success(rw, http.StatusOK, response) +} + +func (handler *handler) UpdateFunnel(rw http.ResponseWriter, r *http.Request) { + var req tf.PostableFunnel + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + render.Error(rw, err) + return + } + + claims, err := authtypes.ClaimsFromContext(r.Context()) + if err != nil { + render.Error(rw, err) + return + } + + updatedAt, err := tf.ValidateAndConvertTimestamp(req.Timestamp) + if err != nil { + render.Error(rw, err) + return + } + + vars := mux.Vars(r) + funnelID := vars["funnel_id"] + + funnel, err := handler.module.Get(r.Context(), valuer.MustNewUUID(funnelID), valuer.MustNewUUID(claims.OrgID)) + if err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "funnel not found: %v", err)) + return + } + + funnel.UpdatedAt = updatedAt + funnel.UpdatedBy = claims.UserID + + if req.Name != "" { + funnel.Name = req.Name + } + if req.Description != "" { + funnel.Description = req.Description + } + + if err := handler.module.Update(r.Context(), funnel, valuer.MustNewUUID(claims.UserID)); err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "failed to update funnel in database: %v", err)) + return + } + + updatedFunnel, err := handler.module.Get(r.Context(), funnel.ID, valuer.MustNewUUID(claims.OrgID)) + if err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "failed to get updated funnel: %v", err)) + return + } + + response := tf.ConstructFunnelResponse(updatedFunnel, &claims) + render.Success(rw, http.StatusOK, response) +} + +func (handler *handler) List(rw http.ResponseWriter, r *http.Request) { + claims, err := authtypes.ClaimsFromContext(r.Context()) + if err != nil { + render.Error(rw, err) + return + } + + funnels, err := handler.module.List(r.Context(), valuer.MustNewUUID(claims.OrgID)) + if err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "failed to list funnels: %v", err)) + return + } + + var response []tf.GettableFunnel + for _, f := range funnels { + response = append(response, tf.ConstructFunnelResponse(f, &claims)) + } + + render.Success(rw, http.StatusOK, response) +} + +func (handler *handler) Get(rw http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + funnelID := vars["funnel_id"] + + claims, err := authtypes.ClaimsFromContext(r.Context()) + + if err != nil { + render.Error(rw, err) + return + } + + funnel, err := handler.module.Get(r.Context(), valuer.MustNewUUID(funnelID), valuer.MustNewUUID(claims.OrgID)) + if err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "funnel not found: %v", err)) + return + } + response := tf.ConstructFunnelResponse(funnel, &claims) + render.Success(rw, http.StatusOK, response) +} + +func (handler *handler) Delete(rw http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + funnelID := vars["funnel_id"] + + claims, err := authtypes.ClaimsFromContext(r.Context()) + + if err != nil { + render.Error(rw, err) + return + } + + if err := handler.module.Delete(r.Context(), valuer.MustNewUUID(funnelID), valuer.MustNewUUID(claims.OrgID)); err != nil { + render.Error(rw, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "failed to delete funnel: %v", err)) + return + } + + render.Success(rw, http.StatusOK, nil) +} diff --git a/pkg/modules/tracefunnel/impltracefunnel/handler_test.go b/pkg/modules/tracefunnel/impltracefunnel/handler_test.go new file mode 100644 index 0000000000..06df5d31f4 --- /dev/null +++ b/pkg/modules/tracefunnel/impltracefunnel/handler_test.go @@ -0,0 +1,173 @@ +package impltracefunnel + +import ( + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/types/authtypes" + traceFunnels "github.com/SigNoz/signoz/pkg/types/tracefunneltypes" + "github.com/SigNoz/signoz/pkg/valuer" + "github.com/gorilla/mux" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +type MockModule struct { + mock.Mock +} + +func (m *MockModule) Create(ctx context.Context, timestamp int64, name string, userID valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) { + args := m.Called(ctx, timestamp, name, userID, orgID) + return args.Get(0).(*traceFunnels.StorableFunnel), args.Error(1) +} + +func (m *MockModule) Get(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) { + args := m.Called(ctx, funnelID, orgID) + return args.Get(0).(*traceFunnels.StorableFunnel), args.Error(1) +} + +func (m *MockModule) Update(ctx context.Context, funnel *traceFunnels.StorableFunnel, userID valuer.UUID) error { + args := m.Called(ctx, funnel, userID) + return args.Error(0) +} + +func (m *MockModule) List(ctx context.Context, orgID valuer.UUID) ([]*traceFunnels.StorableFunnel, error) { + args := m.Called(ctx, orgID) + return args.Get(0).([]*traceFunnels.StorableFunnel), args.Error(1) +} + +func (m *MockModule) Delete(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) error { + args := m.Called(ctx, funnelID, orgID) + return args.Error(0) +} + +func (m *MockModule) Save(ctx context.Context, funnel *traceFunnels.StorableFunnel, userID valuer.UUID, orgID valuer.UUID) error { + args := m.Called(ctx, funnel, userID, orgID) + return args.Error(0) +} + +func (m *MockModule) GetFunnelMetadata(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) (int64, int64, string, error) { + args := m.Called(ctx, funnelID, orgID) + return args.Get(0).(int64), args.Get(1).(int64), args.String(2), args.Error(3) +} + +func TestHandler_List(t *testing.T) { + mockModule := new(MockModule) + handler := NewHandler(mockModule) + + req := httptest.NewRequest(http.MethodGet, "/api/v1/trace-funnels/list", nil) + + orgID := valuer.GenerateUUID() + claims := authtypes.Claims{ + OrgID: orgID.String(), + } + req = req.WithContext(authtypes.NewContextWithClaims(req.Context(), claims)) + + rr := httptest.NewRecorder() + + funnel1ID := valuer.GenerateUUID() + funnel2ID := valuer.GenerateUUID() + expectedFunnels := []*traceFunnels.StorableFunnel{ + { + Identifiable: types.Identifiable{ + ID: funnel1ID, + }, + Name: "funnel-1", + OrgID: orgID, + }, + { + Identifiable: types.Identifiable{ + ID: funnel2ID, + }, + Name: "funnel-2", + OrgID: orgID, + }, + } + + mockModule.On("List", req.Context(), orgID).Return(expectedFunnels, nil) + + handler.List(rr, req) + + assert.Equal(t, http.StatusOK, rr.Code) + + var response struct { + Status string `json:"status"` + Data []traceFunnels.GettableFunnel `json:"data"` + } + err := json.Unmarshal(rr.Body.Bytes(), &response) + assert.NoError(t, err) + assert.Equal(t, "success", response.Status) + assert.Len(t, response.Data, 2) + assert.Equal(t, "funnel-1", response.Data[0].FunnelName) + assert.Equal(t, "funnel-2", response.Data[1].FunnelName) + + mockModule.AssertExpectations(t) +} + +func TestHandler_Get(t *testing.T) { + mockModule := new(MockModule) + handler := NewHandler(mockModule) + + funnelID := valuer.GenerateUUID() + orgID := valuer.GenerateUUID() + req := httptest.NewRequest(http.MethodGet, "/api/v1/trace-funnels/"+funnelID.String(), nil) + req = mux.SetURLVars(req, map[string]string{"funnel_id": funnelID.String()}) + req = req.WithContext(authtypes.NewContextWithClaims(req.Context(), authtypes.Claims{ + OrgID: orgID.String(), + })) + + rr := httptest.NewRecorder() + + expectedFunnel := &traceFunnels.StorableFunnel{ + Identifiable: types.Identifiable{ + ID: funnelID, + }, + Name: "test-funnel", + OrgID: orgID, + } + + mockModule.On("Get", req.Context(), funnelID, orgID).Return(expectedFunnel, nil) + + handler.Get(rr, req) + + assert.Equal(t, http.StatusOK, rr.Code) + + var response struct { + Status string `json:"status"` + Data traceFunnels.GettableFunnel `json:"data"` + } + err := json.Unmarshal(rr.Body.Bytes(), &response) + assert.NoError(t, err) + assert.Equal(t, "success", response.Status) + assert.Equal(t, "test-funnel", response.Data.FunnelName) + assert.Equal(t, expectedFunnel.OrgID.String(), response.Data.OrgID) + + mockModule.AssertExpectations(t) +} + +func TestHandler_Delete(t *testing.T) { + mockModule := new(MockModule) + handler := NewHandler(mockModule) + + funnelID := valuer.GenerateUUID() + orgID := valuer.GenerateUUID() + req := httptest.NewRequest(http.MethodDelete, "/api/v1/trace-funnels/"+funnelID.String(), nil) + req = mux.SetURLVars(req, map[string]string{"funnel_id": funnelID.String()}) + req = req.WithContext(authtypes.NewContextWithClaims(req.Context(), authtypes.Claims{ + OrgID: orgID.String(), + })) + + rr := httptest.NewRecorder() + + mockModule.On("Delete", req.Context(), funnelID, orgID).Return(nil) + + handler.Delete(rr, req) + + assert.Equal(t, http.StatusOK, rr.Code) + + mockModule.AssertExpectations(t) +} diff --git a/pkg/modules/tracefunnel/impltracefunnel/module.go b/pkg/modules/tracefunnel/impltracefunnel/module.go new file mode 100644 index 0000000000..b53ffb42c6 --- /dev/null +++ b/pkg/modules/tracefunnel/impltracefunnel/module.go @@ -0,0 +1,96 @@ +package impltracefunnel + +import ( + "context" + "fmt" + "time" + + "github.com/SigNoz/signoz/pkg/modules/tracefunnel" + "github.com/SigNoz/signoz/pkg/types" + traceFunnels "github.com/SigNoz/signoz/pkg/types/tracefunneltypes" + "github.com/SigNoz/signoz/pkg/valuer" +) + +type module struct { + store traceFunnels.FunnelStore +} + +func NewModule(store traceFunnels.FunnelStore) tracefunnel.Module { + return &module{ + store: store, + } +} + +func (module *module) Create(ctx context.Context, timestamp int64, name string, userID valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) { + funnel := &traceFunnels.StorableFunnel{ + Name: name, + OrgID: orgID, + } + funnel.CreatedAt = time.Unix(0, timestamp*1000000) // Convert to nanoseconds + funnel.CreatedBy = userID.String() + + // Set up the user relationship + funnel.CreatedByUser = &types.User{ + Identifiable: types.Identifiable{ + ID: userID, + }, + } + + if funnel.ID.IsZero() { + funnel.ID = valuer.GenerateUUID() + } + + if funnel.CreatedAt.IsZero() { + funnel.CreatedAt = time.Now() + } + if funnel.UpdatedAt.IsZero() { + funnel.UpdatedAt = time.Now() + } + + // Set created_by if CreatedByUser is present + if funnel.CreatedByUser != nil { + funnel.CreatedBy = funnel.CreatedByUser.Identifiable.ID.String() + } + + if err := module.store.Create(ctx, funnel); err != nil { + return nil, fmt.Errorf("failed to create funnel: %v", err) + } + + return funnel, nil +} + +// Get gets a funnel by ID +func (module *module) Get(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) { + return module.store.Get(ctx, funnelID, orgID) +} + +// Update updates a funnel +func (module *module) Update(ctx context.Context, funnel *traceFunnels.StorableFunnel, userID valuer.UUID) error { + funnel.UpdatedBy = userID.String() + return module.store.Update(ctx, funnel) +} + +// List lists all funnels for an organization +func (module *module) List(ctx context.Context, orgID valuer.UUID) ([]*traceFunnels.StorableFunnel, error) { + funnels, err := module.store.List(ctx, orgID) + if err != nil { + return nil, fmt.Errorf("failed to list funnels: %v", err) + } + + return funnels, nil +} + +// Delete deletes a funnel +func (module *module) Delete(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) error { + return module.store.Delete(ctx, funnelID, orgID) +} + +// GetFunnelMetadata gets metadata for a funnel +func (module *module) GetFunnelMetadata(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) (int64, int64, string, error) { + funnel, err := module.store.Get(ctx, funnelID, orgID) + if err != nil { + return 0, 0, "", err + } + + return funnel.CreatedAt.UnixNano() / 1000000, funnel.UpdatedAt.UnixNano() / 1000000, funnel.Description, nil +} diff --git a/pkg/modules/tracefunnel/impltracefunnel/store.go b/pkg/modules/tracefunnel/impltracefunnel/store.go new file mode 100644 index 0000000000..f0c2b119b5 --- /dev/null +++ b/pkg/modules/tracefunnel/impltracefunnel/store.go @@ -0,0 +1,114 @@ +package impltracefunnel + +import ( + "context" + "time" + + "github.com/SigNoz/signoz/pkg/errors" + "github.com/SigNoz/signoz/pkg/sqlstore" + traceFunnels "github.com/SigNoz/signoz/pkg/types/tracefunneltypes" + "github.com/SigNoz/signoz/pkg/valuer" +) + +type store struct { + sqlstore sqlstore.SQLStore +} + +func NewStore(sqlstore sqlstore.SQLStore) traceFunnels.FunnelStore { + return &store{sqlstore: sqlstore} +} + +func (store *store) Create(ctx context.Context, funnel *traceFunnels.StorableFunnel) error { + // Check if a funnel with the same name already exists in the organization + exists, err := store. + sqlstore. + BunDB(). + NewSelect(). + Model(new(traceFunnels.StorableFunnel)). + Where("name = ? AND org_id = ?", funnel.Name, funnel.OrgID.String()). + Exists(ctx) + if err != nil { + return errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "failed to check for existing funnelr") + } + if exists { + return store.sqlstore.WrapAlreadyExistsErrf(nil, traceFunnels.ErrFunnelAlreadyExists, "a funnel with name '%s' already exists in this organization", funnel.Name) + } + + _, err = store. + sqlstore. + BunDB(). + NewInsert(). + Model(funnel). + Exec(ctx) + if err != nil { + return errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "failed to create funnels") + } + + return nil +} + +// Get retrieves a funnel by ID +func (store *store) Get(ctx context.Context, uuid valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) { + funnel := &traceFunnels.StorableFunnel{} + err := store. + sqlstore. + BunDB(). + NewSelect(). + Model(funnel). + Relation("CreatedByUser"). + Where("?TableAlias.id = ? AND ?TableAlias.org_id = ?", uuid.String(), orgID.String()). + Scan(ctx) + if err != nil { + return nil, errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "failed to get funnels") + } + return funnel, nil +} + +// Update updates an existing funnel +func (store *store) Update(ctx context.Context, funnel *traceFunnels.StorableFunnel) error { + funnel.UpdatedAt = time.Now() + + _, err := store. + sqlstore. + BunDB(). + NewUpdate(). + Model(funnel). + WherePK(). + Exec(ctx) + if err != nil { + return store.sqlstore.WrapAlreadyExistsErrf(err, traceFunnels.ErrFunnelAlreadyExists, "a funnel with name '%s' already exists in this organization", funnel.Name) + } + return nil +} + +// List retrieves all funnels for a given organization +func (store *store) List(ctx context.Context, orgID valuer.UUID) ([]*traceFunnels.StorableFunnel, error) { + var funnels []*traceFunnels.StorableFunnel + err := store. + sqlstore. + BunDB(). + NewSelect(). + Model(&funnels). + Relation("CreatedByUser"). + Where("?TableAlias.org_id = ?", orgID.String()). + Scan(ctx) + if err != nil { + return nil, errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "failed to list funnels") + } + return funnels, nil +} + +// Delete removes a funnel by ID +func (store *store) Delete(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) error { + _, err := store. + sqlstore. + BunDB(). + NewDelete(). + Model(new(traceFunnels.StorableFunnel)). + Where("id = ? AND org_id = ?", funnelID.String(), orgID.String()). + Exec(ctx) + if err != nil { + return errors.Wrapf(err, errors.TypeInternal, errors.CodeInternal, "failed to delete funnel") + } + return nil +} diff --git a/pkg/modules/tracefunnel/tracefunnel.go b/pkg/modules/tracefunnel/tracefunnel.go new file mode 100644 index 0000000000..13401ee5a4 --- /dev/null +++ b/pkg/modules/tracefunnel/tracefunnel.go @@ -0,0 +1,38 @@ +package tracefunnel + +import ( + "context" + "github.com/SigNoz/signoz/pkg/valuer" + "net/http" + + traceFunnels "github.com/SigNoz/signoz/pkg/types/tracefunneltypes" +) + +// Module defines the interface for trace funnel operations +type Module interface { + Create(ctx context.Context, timestamp int64, name string, userID valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) + + Get(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) + + Update(ctx context.Context, funnel *traceFunnels.StorableFunnel, userID valuer.UUID) error + + List(ctx context.Context, orgID valuer.UUID) ([]*traceFunnels.StorableFunnel, error) + + Delete(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) error + + GetFunnelMetadata(ctx context.Context, funnelID valuer.UUID, orgID valuer.UUID) (int64, int64, string, error) +} + +type Handler interface { + New(http.ResponseWriter, *http.Request) + + UpdateSteps(http.ResponseWriter, *http.Request) + + UpdateFunnel(http.ResponseWriter, *http.Request) + + List(http.ResponseWriter, *http.Request) + + Get(http.ResponseWriter, *http.Request) + + Delete(http.ResponseWriter, *http.Request) +} diff --git a/pkg/modules/tracefunnel/tracefunneltest/module_test.go b/pkg/modules/tracefunnel/tracefunneltest/module_test.go new file mode 100644 index 0000000000..0379027669 --- /dev/null +++ b/pkg/modules/tracefunnel/tracefunneltest/module_test.go @@ -0,0 +1,183 @@ +package tracefunneltest + +import ( + "context" + "testing" + "time" + + "github.com/SigNoz/signoz/pkg/modules/tracefunnel/impltracefunnel" + "github.com/SigNoz/signoz/pkg/types" + traceFunnels "github.com/SigNoz/signoz/pkg/types/tracefunneltypes" + "github.com/SigNoz/signoz/pkg/valuer" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +type MockStore struct { + mock.Mock +} + +func (m *MockStore) Create(ctx context.Context, funnel *traceFunnels.StorableFunnel) error { + args := m.Called(ctx, funnel) + return args.Error(0) +} + +func (m *MockStore) Get(ctx context.Context, uuid valuer.UUID, orgID valuer.UUID) (*traceFunnels.StorableFunnel, error) { + args := m.Called(ctx, uuid, orgID) + return args.Get(0).(*traceFunnels.StorableFunnel), args.Error(1) +} + +func (m *MockStore) List(ctx context.Context, orgID valuer.UUID) ([]*traceFunnels.StorableFunnel, error) { + args := m.Called(ctx, orgID) + return args.Get(0).([]*traceFunnels.StorableFunnel), args.Error(1) +} + +func (m *MockStore) Update(ctx context.Context, funnel *traceFunnels.StorableFunnel) error { + args := m.Called(ctx, funnel) + return args.Error(0) +} + +func (m *MockStore) Delete(ctx context.Context, uuid valuer.UUID, orgID valuer.UUID) error { + args := m.Called(ctx, uuid, orgID) + return args.Error(0) +} + +func TestModule_Create(t *testing.T) { + mockStore := new(MockStore) + module := impltracefunnel.NewModule(mockStore) + + ctx := context.Background() + timestamp := time.Now().UnixMilli() + name := "test-funnel" + userID := valuer.GenerateUUID() + orgID := valuer.GenerateUUID() + + mockStore.On("Create", ctx, mock.MatchedBy(func(f *traceFunnels.StorableFunnel) bool { + return f.Name == name && + f.CreatedBy == userID.String() && + f.OrgID == orgID && + f.CreatedByUser != nil && + f.CreatedByUser.ID == userID && + f.CreatedAt.UnixNano()/1000000 == timestamp + })).Return(nil) + + funnel, err := module.Create(ctx, timestamp, name, userID, orgID) + assert.NoError(t, err) + assert.NotNil(t, funnel) + assert.Equal(t, name, funnel.Name) + assert.Equal(t, userID.String(), funnel.CreatedBy) + assert.Equal(t, orgID, funnel.OrgID) + assert.NotNil(t, funnel.CreatedByUser) + assert.Equal(t, userID, funnel.CreatedByUser.ID) + + mockStore.AssertExpectations(t) +} + +func TestModule_Get(t *testing.T) { + mockStore := new(MockStore) + module := impltracefunnel.NewModule(mockStore) + + ctx := context.Background() + funnelID := valuer.GenerateUUID() + orgID := valuer.GenerateUUID() + expectedFunnel := &traceFunnels.StorableFunnel{ + Name: "test-funnel", + } + + mockStore.On("Get", ctx, funnelID, orgID).Return(expectedFunnel, nil) + + funnel, err := module.Get(ctx, funnelID, orgID) + assert.NoError(t, err) + assert.Equal(t, expectedFunnel, funnel) + + mockStore.AssertExpectations(t) +} + +func TestModule_Update(t *testing.T) { + mockStore := new(MockStore) + module := impltracefunnel.NewModule(mockStore) + + ctx := context.Background() + userID := valuer.GenerateUUID() + funnel := &traceFunnels.StorableFunnel{ + Name: "test-funnel", + } + + mockStore.On("Update", ctx, funnel).Return(nil) + + err := module.Update(ctx, funnel, userID) + assert.NoError(t, err) + assert.Equal(t, userID.String(), funnel.UpdatedBy) + + mockStore.AssertExpectations(t) +} + +func TestModule_List(t *testing.T) { + mockStore := new(MockStore) + module := impltracefunnel.NewModule(mockStore) + + ctx := context.Background() + orgID := valuer.GenerateUUID() + expectedFunnels := []*traceFunnels.StorableFunnel{ + { + Name: "funnel-1", + OrgID: orgID, + }, + { + Name: "funnel-2", + OrgID: orgID, + }, + } + + mockStore.On("List", ctx, orgID).Return(expectedFunnels, nil) + + funnels, err := module.List(ctx, orgID) + assert.NoError(t, err) + assert.Len(t, funnels, 2) + assert.Equal(t, expectedFunnels, funnels) + + mockStore.AssertExpectations(t) +} + +func TestModule_Delete(t *testing.T) { + mockStore := new(MockStore) + module := impltracefunnel.NewModule(mockStore) + + ctx := context.Background() + funnelID := valuer.GenerateUUID() + orgID := valuer.GenerateUUID() + + mockStore.On("Delete", ctx, funnelID, orgID).Return(nil) + + err := module.Delete(ctx, funnelID, orgID) + assert.NoError(t, err) + + mockStore.AssertExpectations(t) +} + +func TestModule_GetFunnelMetadata(t *testing.T) { + mockStore := new(MockStore) + module := impltracefunnel.NewModule(mockStore) + + ctx := context.Background() + funnelID := valuer.GenerateUUID() + orgID := valuer.GenerateUUID() + now := time.Now() + expectedFunnel := &traceFunnels.StorableFunnel{ + Description: "test description", + TimeAuditable: types.TimeAuditable{ + CreatedAt: now, + UpdatedAt: now, + }, + } + + mockStore.On("Get", ctx, funnelID, orgID).Return(expectedFunnel, nil) + + createdAt, updatedAt, description, err := module.GetFunnelMetadata(ctx, funnelID, orgID) + assert.NoError(t, err) + assert.Equal(t, now.UnixNano()/1000000, createdAt) + assert.Equal(t, now.UnixNano()/1000000, updatedAt) + assert.Equal(t, "test description", description) + + mockStore.AssertExpectations(t) +} diff --git a/pkg/modules/user/impluser/module.go b/pkg/modules/user/impluser/module.go index ed7a58c9b7..45eaa4ba66 100644 --- a/pkg/modules/user/impluser/module.go +++ b/pkg/modules/user/impluser/module.go @@ -11,8 +11,10 @@ import ( "github.com/SigNoz/signoz/pkg/emailing" "github.com/SigNoz/signoz/pkg/errors" "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/modules/user" "github.com/SigNoz/signoz/pkg/query-service/constants" + "github.com/SigNoz/signoz/pkg/query-service/model" "github.com/SigNoz/signoz/pkg/query-service/telemetry" "github.com/SigNoz/signoz/pkg/types" "github.com/SigNoz/signoz/pkg/types/authtypes" @@ -22,20 +24,22 @@ import ( ) type Module struct { - store types.UserStore - jwt *authtypes.JWT - emailing emailing.Emailing - settings factory.ScopedProviderSettings + store types.UserStore + jwt *authtypes.JWT + emailing emailing.Emailing + settings factory.ScopedProviderSettings + orgSetter organization.Setter } // This module is a WIP, don't take inspiration from this. -func NewModule(store types.UserStore, jwt *authtypes.JWT, emailing emailing.Emailing, providerSettings factory.ProviderSettings) user.Module { +func NewModule(store types.UserStore, jwt *authtypes.JWT, emailing emailing.Emailing, providerSettings factory.ProviderSettings, orgSetter organization.Setter) user.Module { settings := factory.NewScopedProviderSettings(providerSettings, "github.com/SigNoz/signoz/pkg/modules/user/impluser") return &Module{ - store: store, - jwt: jwt, - emailing: emailing, - settings: settings, + store: store, + jwt: jwt, + emailing: emailing, + settings: settings, + orgSetter: orgSetter, } } @@ -538,3 +542,36 @@ func (m *Module) ListDomains(ctx context.Context, orgID valuer.UUID) ([]*types.G func (m *Module) UpdateDomain(ctx context.Context, domain *types.GettableOrgDomain) error { return m.store.UpdateDomain(ctx, domain) } + +func (m *Module) Register(ctx context.Context, req *types.PostableRegisterOrgAndAdmin) (*types.User, error) { + if req.Email == "" { + return nil, errors.NewInvalidInputf(errors.CodeInvalidInput, "email is required") + } + + if req.Password == "" { + return nil, errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, "password is required") + } + + organization := types.NewOrganization(req.OrgDisplayName) + err := m.orgSetter.Create(ctx, organization) + if err != nil { + return nil, model.InternalError(err) + } + + user, err := types.NewUser(req.Name, req.Email, types.RoleAdmin.String(), organization.ID.StringValue()) + if err != nil { + return nil, model.InternalError(err) + } + + password, err := types.NewFactorPassword(req.Password) + if err != nil { + return nil, model.InternalError(err) + } + + user, err = m.CreateUserWithPassword(ctx, user, password) + if err != nil { + return nil, model.InternalError(err) + } + + return user, nil +} diff --git a/pkg/modules/user/user.go b/pkg/modules/user/user.go index f2f4153ddc..cb991ab95b 100644 --- a/pkg/modules/user/user.go +++ b/pkg/modules/user/user.go @@ -62,6 +62,9 @@ type Module interface { ListAPIKeys(ctx context.Context, orgID valuer.UUID) ([]*types.StorableAPIKeyUser, error) RevokeAPIKey(ctx context.Context, id, removedByUserID valuer.UUID) error GetAPIKey(ctx context.Context, orgID valuer.UUID, id valuer.UUID) (*types.StorableAPIKeyUser, error) + + // Register + Register(ctx context.Context, req *types.PostableRegisterOrgAndAdmin) (*types.User, error) } type Handler interface { diff --git a/pkg/query-service/app/clickhouseReader/reader.go b/pkg/query-service/app/clickhouseReader/reader.go index 799bf74fb6..c4dd8dbde1 100644 --- a/pkg/query-service/app/clickhouseReader/reader.go +++ b/pkg/query-service/app/clickhouseReader/reader.go @@ -6267,9 +6267,6 @@ func (r *ClickHouseReader) GetUpdatedMetricsMetadata(ctx context.Context, orgID if err == nil { cachedMetadata[metricName] = metadata } else { - if err != nil { - zap.L().Error("Error retrieving metrics metadata from cache", zap.String("metric_name", metricName), zap.Error(err)) - } missingMetrics = append(missingMetrics, metricName) } } diff --git a/pkg/query-service/app/cloudintegrations/controller_test.go b/pkg/query-service/app/cloudintegrations/controller_test.go index ff86b868db..dec3849b1c 100644 --- a/pkg/query-service/app/cloudintegrations/controller_test.go +++ b/pkg/query-service/app/cloudintegrations/controller_test.go @@ -3,17 +3,23 @@ package cloudintegrations import ( "context" "testing" + "time" - "github.com/SigNoz/signoz/pkg/emailing" - "github.com/SigNoz/signoz/pkg/emailing/noopemailing" + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerserver" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" + "github.com/SigNoz/signoz/pkg/emailing/emailingtest" "github.com/SigNoz/signoz/pkg/instrumentation/instrumentationtest" "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" "github.com/SigNoz/signoz/pkg/modules/user" - "github.com/SigNoz/signoz/pkg/modules/user/impluser" "github.com/SigNoz/signoz/pkg/query-service/model" "github.com/SigNoz/signoz/pkg/query-service/utils" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" + "github.com/SigNoz/signoz/pkg/signoz" "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/types/authtypes" "github.com/google/uuid" "github.com/stretchr/testify/require" ) @@ -24,11 +30,16 @@ func TestRegenerateConnectionUrlWithUpdatedConfig(t *testing.T) { controller, err := NewController(sqlStore) require.NoError(err) - organizationModule := implorganization.NewModule(implorganization.NewStore(sqlStore)) providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - userModule := impluser.NewModule(impluser.NewStore(sqlStore, providerSettings), nil, emailing, providerSettings) - user, apiErr := createTestUser(organizationModule, userModule) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlStore), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Provider: "signoz", Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, sqlStore, orgGetter) + require.NoError(err) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(sqlStore, jwt, emailing, providerSettings, orgGetter, alertmanager) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) require.Nil(apiErr) // should be able to generate connection url for @@ -74,11 +85,17 @@ func TestAgentCheckIns(t *testing.T) { sqlStore := utils.NewQueryServiceDBForTests(t) controller, err := NewController(sqlStore) require.NoError(err) - organizationModule := implorganization.NewModule(implorganization.NewStore(sqlStore)) + providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - userModule := impluser.NewModule(impluser.NewStore(sqlStore, providerSettings), nil, emailing, providerSettings) - user, apiErr := createTestUser(organizationModule, userModule) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlStore), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Provider: "signoz", Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, sqlStore, orgGetter) + require.NoError(err) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(sqlStore, jwt, emailing, providerSettings, orgGetter, alertmanager) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) require.Nil(apiErr) // An agent should be able to check in from a cloud account even @@ -164,11 +181,16 @@ func TestCantDisconnectNonExistentAccount(t *testing.T) { controller, err := NewController(sqlStore) require.NoError(err) - organizationModule := implorganization.NewModule(implorganization.NewStore(sqlStore)) providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - userModule := impluser.NewModule(impluser.NewStore(sqlStore, providerSettings), nil, emailing, providerSettings) - user, apiErr := createTestUser(organizationModule, userModule) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlStore), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Provider: "signoz", Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, sqlStore, orgGetter) + require.NoError(err) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(sqlStore, jwt, emailing, providerSettings, orgGetter, alertmanager) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) require.Nil(apiErr) // Attempting to disconnect a non-existent account should return error @@ -186,11 +208,16 @@ func TestConfigureService(t *testing.T) { controller, err := NewController(sqlStore) require.NoError(err) - organizationModule := implorganization.NewModule(implorganization.NewStore(sqlStore)) providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - userModule := impluser.NewModule(impluser.NewStore(sqlStore, providerSettings), nil, emailing, providerSettings) - user, apiErr := createTestUser(organizationModule, userModule) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlStore), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Provider: "signoz", Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, sqlStore, orgGetter) + require.NoError(err) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(sqlStore, jwt, emailing, providerSettings, orgGetter, alertmanager) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) require.Nil(apiErr) // create a connected account @@ -305,7 +332,7 @@ func makeTestConnectedAccount(t *testing.T, orgId string, controller *Controller return acc } -func createTestUser(organizationModule organization.Module, userModule user.Module) (*types.User, *model.ApiError) { +func createTestUser(organizationModule organization.Setter, userModule user.Module) (*types.User, *model.ApiError) { // Create a test user for auth ctx := context.Background() organization := types.NewOrganization("test") diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/alb/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/alb/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..e56d5e304a --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/alb/assets/dashboards/overview_dot.json @@ -0,0 +1,1887 @@ +{ + "description": "Overview of Application Load Balancers", + "image": "data:image/svg+xml;base64,CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDg1IDg1IiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48dXNlIHhsaW5rOmhyZWY9IiNBIiB4PSIyLjUiIHk9IjIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBzdHJva2U9Im5vbmUiPjxwYXRoIGQ9Ik0wIDQxLjU3OUMwIDIwLjI5MyAxNy44NCAzLjE1NyA0MCAzLjE1N3M0MCAxNy4xMzYgNDAgMzguNDIyUzYyLjE2IDgwIDQwIDgwIDAgNjIuODY0IDAgNDEuNTc5eiIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0wIDM4LjQyMkMwIDE3LjEzNiAxNy44NCAwIDQwIDBzNDAgMTcuMTM2IDQwIDM4LjQyMi0xNy44NCAzOC40MjItNDAgMzguNDIyUzAgNTkuNzA3IDAgMzguNDIyeiIgZmlsbD0iI2Y1ODUzNiIvPjxwYXRoIGQ9Ik01MS42NzIgNy4zODd2MTMuOTUySDI4LjMyN1Y3LjM4N3ptMTguMDYxIDQwLjM3OHYxMS4zNjRoLTExLjgzVjQ3Ljc2NXptLTE0Ljk1OCAwdjExLjM2NGgtMTEuODNWNDcuNzY1em0tMTguMjA2IDB2MTEuMzY0aC0xMS44M1Y0Ny43NjV6bS0xNC45NTkgMHYxMS4zNjRIOS43OFY0Ny43NjV6Ii8+PHBhdGggZD0iTTE0LjYzIDM3LjkyOWgyLjEzdjExLjE0OWgtMi4xM3oiLz48cGF0aCBkPSJNMTQuNjMgMzcuOTI5aDE3LjA4OHYyLjA0NUgxNC42M3oiLz48cGF0aCBkPSJNMjkuNTg5IDM3LjkyOWgyLjEzdjExLjE0OUgyOS41OXptMTguMjA2IDBoMi4xM3YxMS4xNDloLTIuMTN6Ii8+PHBhdGggZD0iTTQ3Ljc5NSAzNy45MjloMTcuMDg4djIuMDQ1SDQ3Ljc5NXoiLz48cGF0aCBkPSJNNjIuNzU0IDM3LjkyOWgyLjEzdjExLjE0OWgtMi4xMjl6bS00MC42MzEtNy45NTRoMi4xM3Y4Ljk3N2gtMi4xM3pNMzguOTM1IDE5LjI4aDIuMTN2MTAuODU5aC0yLjEyOXoiLz48cGF0aCBkPSJNMjIuMTIzIDI5LjExNmgzNS4zMnYyLjA0NWgtMzUuMzJ6Ii8+PHBhdGggZD0iTTU1LjMxNCAyOS45NzVoMi4xM3Y4Ljk3N2gtMi4xMjl6Ii8+PC9nPjwvc3ltYm9sPjwvc3ZnPg==", + "layout": [ + { + "h": 5, + "i": "e13232f0-6308-4466-94c0-629cae762ff0", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "9b99d70a-f12a-4df7-9a68-660a0ab55e42", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 5, + "i": "5a9ec75f-3bcd-4829-94e6-452caa2cc0d2", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 5 + }, + { + "h": 5, + "i": "e16fb999-491b-4cfa-b9aa-d558f2132b6b", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 5 + }, + { + "h": 5, + "i": "2be35406-693a-435b-a844-2df239be0b60", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 10 + }, + { + "h": 5, + "i": "480ecee2-1271-4dfd-a7bb-9f9845957c6e", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 10 + }, + { + "h": 5, + "i": "2243e542-0bbc-4e2a-a4dd-2e121abc9b95", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 5, + "i": "3bb56361-9a67-47ce-b186-ccee02e15f51", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + }, + { + "h": 5, + "i": "36cbc321-6c02-4d13-895e-955d71d376b4", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 20 + } + ], + "panelMap": {}, + "tags": [], + "title": "Application Load Balancer Overview", + "uploadedGrafana": false, + "variables": { + "Account": { + "allSelected": false, + "customValue": "", + "description": "AWS Account", + "id": "d5ef5880-68b1-4097-b4e5-9ce74200831f", + "key": "d5ef5880-68b1-4097-b4e5-9ce74200831f", + "modificationUUID": "9974ddda-3bc1-401d-b04a-364ea9a23866", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApplicationELB_ConsumedLCUs_max'\nGROUP BY `cloud.account.id`", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "Region": { + "allSelected": false, + "customValue": "", + "description": "AWS Region", + "id": "bad33abd-ab38-493b-b23e-131659b6d03c", + "key": "bad33abd-ab38-493b-b23e-131659b6d03c", + "modificationUUID": "1aa1ef37-260c-4ca9-8aa9-f2ffb289c9e3", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApplicationELB_ConsumedLCUs_max'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`\n", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The time elapsed, after the request leaves the load balancer until the target starts to send the response headers.\n\nSee TargetResponseTime at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "9b99d70a-f12a-4df7-9a68-660a0ab55e42", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_TargetResponseTime_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_TargetResponseTime_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b282d9f1", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "71837c70", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "5bfcc581", + "key": { + "dataType": "string", + "id": "TargetGroup--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TargetGroup", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "a9e33e08", + "key": { + "dataType": "string", + "id": "AvailabilityZone--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "AvailabilityZone", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "601aca8a-36fb-4e6a-b234-39294b9b305b", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Target Response Time", + "yAxisUnit": "s" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of requests processed over IPv4 and IPv6. This metric is only incremented for requests where the load balancer node was able to choose a target. Requests that are rejected before a target is chosen are not reflected in this metric.\n\nSee RequestCount at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "e13232f0-6308-4466-94c0-629cae762ff0", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_RequestCount_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_RequestCount_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "448b551a", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "a8821216", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "f5a62c5a", + "key": { + "dataType": "string", + "id": "AvailabilityZone--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "AvailabilityZone", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "25e8abc8", + "key": { + "dataType": "string", + "id": "TargetGroup--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TargetGroup", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "7d92a02f-3202-4059-8b88-2d24112a35e6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Requests", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of HTTP 5XX response codes generated by the targets. This does not include any response codes generated by the load balancer.\n\nSee HTTPCode_Target_5XX_Count at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "5a9ec75f-3bcd-4829-94e6-452caa2cc0d2", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_HTTPCode_Target_5XX_Count_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_HTTPCode_Target_5XX_Count_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "702a8765", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "32985f2d", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "e4cf3d8b", + "key": { + "dataType": "string", + "id": "TargetGroup--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TargetGroup", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "234c77fd", + "key": { + "dataType": "string", + "id": "AvailabilityZone--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "AvailabilityZone", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a1cc5b1c-adb6-4a71-bb6e-99337ef6a9d4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "aws_ApplicationELB_HTTPCode_Target_5XX_Count_sum{TargetGroup=\"\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Target 5XX", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of HTTP 5XX server error codes that originate from the load balancer. This count does not include any response codes generated by the targets.\n\nSee HTTPCode_ELB_5XX_Count at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "e16fb999-491b-4cfa-b9aa-d558f2132b6b", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_HTTPCode_ELB_5XX_Count_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_HTTPCode_ELB_5XX_Count_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5807a1e3", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "0dd63d0c", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "31ccfbae", + "key": { + "dataType": "string", + "id": "AvailabilityZone--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "AvailabilityZone", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "91d000c1-7697-4219-acb6-a43a5d455834", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Loadbalancer 5XX", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The total number of concurrent TCP connections active from clients to the load balancer and from the load balancer to targets.\n\nSee ActiveConnectionCount at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "2be35406-693a-435b-a844-2df239be0b60", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_ActiveConnectionCount_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_ActiveConnectionCount_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "72c256c0", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "b433c2a1", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "8f5e7de0", + "key": { + "dataType": "string", + "id": "AvailabilityZone--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "AvailabilityZone", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "74429f26-2fe0-46f2-8b11-23c4f00a260a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Active Connections", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of connections that were not successfully established between the load balancer and target. This metric does not apply if the target is a Lambda function. This metric is not incremented for unsuccessful health check connections.\n\nSee TargetConnectionErrorCount at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "480ecee2-1271-4dfd-a7bb-9f9845957c6e", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_TargetConnectionErrorCount_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_TargetConnectionErrorCount_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "9226a37c", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "c3ff0c8f", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "e3317bc2", + "key": { + "dataType": "", + "isColumn": false, + "key": "TargetGroup", + "type": "" + }, + "op": "nexists", + "value": "" + }, + { + "id": "4e5c2324", + "key": { + "dataType": "", + "isColumn": false, + "key": "AvailabilityZone", + "type": "" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "148daebb-8ae4-4a9f-b569-5e0e75f6b52d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Target Connection Errors", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of load balancer capacity units (LCU) used by your load balancer. You pay for the number of LCUs that you use per hour. When LCU reservation is active, ConsumedLCUs will report 0 if usage is below the reserved capacity, and will report values above 0 if usage exceeds the reserved LCUs\n\nSee ConsumedLCUs at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "2243e542-0bbc-4e2a-a4dd-2e121abc9b95", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_ConsumedLCUs_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_ConsumedLCUs_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "20627274", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "cd861e27", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "38594221-7a5b-4d94-8775-26297f6cb882", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Consumed LCUs", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The total number of bytes processed by the load balancer over IPv4 and IPv6 (HTTP header and HTTP payload). This count includes traffic to and from clients and Lambda functions, and traffic from an Identity Provider (IdP) if user authentication is enabled.\n\nSee ProcessedBytes at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "3bb56361-9a67-47ce-b186-ccee02e15f51", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_ProcessedBytes_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_ProcessedBytes_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d4a3494", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "3c307858", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "fbca8724", + "key": { + "dataType": "string", + "id": "AvailabilityZone--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "AvailabilityZone", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e71d1223-7441-4a5d-b288-928a2903737d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Processed Bytes", + "yAxisUnit": "bytes" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The maximum number of load balancer capacity units (LCU) used by your load balancer at a given point in time. Only applicable when using LCU Reservation.\n\nSee PeakLCUs at https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html", + "fillSpans": false, + "id": "36cbc321-6c02-4d13-895e-955d71d376b4", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApplicationELB_PeakLCUs_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApplicationELB_PeakLCUs_sum", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a416e862", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "ed7d0a39", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "LoadBalancer--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "LoadBalancer", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{LoadBalancer}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "c4728417-0c3c-4477-b8bd-0a2de16c342a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Peak LCUs", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/api-gateway/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/api-gateway/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..9906e2335a --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/api-gateway/assets/dashboards/overview_dot.json @@ -0,0 +1,1441 @@ +{ + "description": "Overview of API Gateway resources in a region", + "image": "data:image/svg+xml,%3Csvg%20width%3D%2224px%22%20height%3D%2224px%22%20viewBox%3D%220%200%2024%2024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3ClinearGradient%20x1%3D%220%25%22%20y1%3D%22100%25%22%20x2%3D%22100%25%22%20y2%3D%220%25%22%20id%3D%22linearGradient-1%22%3E%3Cstop%20stop-color%3D%22%234D27A8%22%20offset%3D%220%25%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23A166FF%22%20offset%3D%22100%25%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cg%20fill%3D%22url(%23linearGradient-1)%22%3E%3Crect%20id%3D%22Rectangle%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2224%22%20height%3D%2224%22%3E%3C%2Frect%3E%3C%2Fg%3E%3Cpath%20d%3D%22M6%2C6.76751613%20L8%2C5.43446738%20L8%2C18.5659476%20L6%2C17.2328988%20L6%2C6.76751613%20Z%20M5%2C6.49950633%20L5%2C17.4999086%20C5%2C17.6669147%205.084%2C17.8239204%205.223%2C17.9159238%20L8.223%2C19.9159969%20C8.307%2C19.971999%208.403%2C20%208.5%2C20%20C8.581%2C20%208.662%2C19.9809993%208.736%2C19.9409978%20C8.898%2C19.8539947%209%2C19.6849885%209%2C19.4999817%20L9%2C16.9998903%20L10%2C16.9998903%20L10%2C15.9998537%20L9%2C15.9998537%20L9%2C7.99956118%20L10%2C7.99956118%20L10%2C6.99952461%20L9%2C6.99952461%20L9%2C4.49943319%20C9%2C4.31542646%208.898%2C4.14542025%208.736%2C4.0594171%20C8.574%2C3.97241392%208.377%2C3.98141425%208.223%2C4.08341798%20L5.223%2C6.08349112%20C5.084%2C6.17649452%205%2C6.33250022%205%2C6.49950633%20L5%2C6.49950633%20Z%20M19%2C17.2328988%20L17%2C18.5659476%20L17%2C5.43446738%20L19%2C6.76751613%20L19%2C17.2328988%20Z%20M19.777%2C6.08349112%20L16.777%2C4.08341798%20C16.623%2C3.98141425%2016.426%2C3.97241392%2016.264%2C4.0594171%20C16.102%2C4.14542025%2016%2C4.31542646%2016%2C4.49943319%20L16%2C6.99952461%20L15%2C6.99952461%20L15%2C7.99956118%20L16%2C7.99956118%20L16%2C15.9998537%20L15%2C15.9998537%20L15%2C16.9998903%20L16%2C16.9998903%20L16%2C19.4999817%20C16%2C19.6849885%2016.102%2C19.8539947%2016.264%2C19.9409978%20C16.338%2C19.9809993%2016.419%2C20%2016.5%2C20%20C16.597%2C20%2016.693%2C19.971999%2016.777%2C19.9159969%20L19.777%2C17.9159238%20C19.916%2C17.8239204%2020%2C17.6669147%2020%2C17.4999086%20L20%2C6.49950633%20C20%2C6.33250022%2019.916%2C6.17649452%2019.777%2C6.08349112%20L19.777%2C6.08349112%20Z%20M13%2C7.99956118%20L14%2C7.99956118%20L14%2C6.99952461%20L13%2C6.99952461%20L13%2C7.99956118%20Z%20M11%2C7.99956118%20L12%2C7.99956118%20L12%2C6.99952461%20L11%2C6.99952461%20L11%2C7.99956118%20Z%20M13%2C16.9998903%20L14%2C16.9998903%20L14%2C15.9998537%20L13%2C15.9998537%20L13%2C16.9998903%20Z%20M11%2C16.9998903%20L12%2C16.9998903%20L12%2C15.9998537%20L11%2C15.9998537%20L11%2C16.9998903%20Z%20M13.18%2C14.884813%20L10.18%2C12.3847215%20C10.065%2C12.288718%2010%2C12.1487129%2010%2C11.9997075%20C10%2C11.851702%2010.065%2C11.7106969%2010.18%2C11.6156934%20L13.18%2C9.11560199%20L13.82%2C9.88463011%20L11.281%2C11.9997075%20L13.82%2C14.1157848%20L13.18%2C14.884813%20Z%22%20id%3D%22Amazon-API-Gateway_Icon_16_Squid%22%20fill%3D%22%23FFFFFF%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E", + "layout": [ + { + "h": 6, + "i": "b27e332f-8e3f-487a-845d-e332dc1464c3", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "d0a54459-0841-467f-88f7-e135b8c86fc7", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 6, + "i": "210dc175-fbb7-44ef-88e0-b8530da4eaca", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "8efb6639-6168-4d8b-9b4f-5b5c82dea333", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + }, + { + "h": 6, + "i": "88f56881-7744-41e9-9c19-9f5446e291dc", + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 6, + "i": "d3b4ad8b-7b52-4bea-9bc7-47e18da7f38c", + "w": 6, + "x": 6, + "y": 12 + } + ], + "panelMap": {}, + "tags": [], + "title": "API Gateway Overview", + "uploadedGrafana": false, + "variables": { + "Account": { + "allSelected": false, + "customValue": "", + "description": "AWS Account", + "id": "93447e60-3b35-407c-a86c-97254f641628", + "key": "93447e60-3b35-407c-a86c-97254f641628", + "modificationUUID": "5e1f8a79-e9b5-4230-af48-f2c117805b31", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApiGateway_Count_sum'\nGROUP BY `cloud.account.id`\n\n", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "Region": { + "allSelected": false, + "customValue": "", + "description": "AWS Region", + "id": "613f7913-ace1-4cf5-bb4c-df91878ec40e", + "key": "613f7913-ace1-4cf5-bb4c-df91878ec40e", + "modificationUUID": "bb86427a-e4da-4440-93d3-0f53e65214ed", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApiGateway_Count_sum'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`\n", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The total number API requests in a given period.\n\nSee Count at https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html for more details", + "fillSpans": false, + "id": "b27e332f-8e3f-487a-845d-e332dc1464c3", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApiGateway_Count_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApiGateway_Count_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d3e9ea95", + "key": { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "64c4ab5b", + "key": { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "2f4571a4", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "be3cf524", + "key": { + "dataType": "string", + "id": "Method--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Method", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "81918ce2", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "114c7ff4", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + } + ], + "having": [], + "legend": "{{ApiName}} - {{Stage}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9fea4bca-7c22-49b6-8d24-43c985d89ac3", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Requests", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The time between when API Gateway receives a request from a client and when it returns a response to the client. The latency includes the integration latency and other API Gateway overhead.\n\nSee Latency at https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html for more details", + "fillSpans": false, + "id": "d0a54459-0841-467f-88f7-e135b8c86fc7", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApiGateway_Latency_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApiGateway_Latency_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "4b55a919", + "key": { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "01c610d9", + "key": { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "f102e7f0", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "0053bd12", + "key": { + "dataType": "string", + "id": "Method--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Method", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "3c67d1fc", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "e2a96f23", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + } + ], + "having": [], + "legend": "{{ApiName}} - {{Stage}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "7b85940b-ac14-40da-9764-0fbb9c3cad31", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Latency", + "yAxisUnit": "ms" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of server-side errors captured in a given period.\n\nSee 5XXError at https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html for more details", + "fillSpans": false, + "id": "210dc175-fbb7-44ef-88e0-b8530da4eaca", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApiGateway_5XXError_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApiGateway_5XXError_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "3e4a6042", + "key": { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "5702170a", + "key": { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "9835e4d9", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "c986fbbe", + "key": { + "dataType": "string", + "id": "Method--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Method", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "b3ebaf28", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "f2030d94", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + } + ], + "having": [], + "legend": "{{ApiName}} - {{Stage}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ec0786eb-fb13-46eb-813b-c516bac57395", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "5XX Errors", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The time between when API Gateway relays a request to the backend and when it receives a response from the backend.\n\nSee IntegrationLatency at https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html for more details", + "fillSpans": false, + "id": "8efb6639-6168-4d8b-9b4f-5b5c82dea333", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApiGateway_IntegrationLatency_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApiGateway_IntegrationLatency_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "1a3f91b4", + "key": { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "33d0afbd", + "key": { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "f818f0fc", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "a090cf40", + "key": { + "dataType": "string", + "id": "Method--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Method", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "5f2f2892", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "960ee6d2", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + } + ], + "having": [], + "legend": "{{ApiName}} - {{Stage}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "c1c0f0e6-712d-430e-9e76-af752b1dc09f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Integration Latency", + "yAxisUnit": "ms" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of requests served from the API cache in a given period.\n\nSee CacheHitCount at https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html for more details", + "fillSpans": false, + "id": "88f56881-7744-41e9-9c19-9f5446e291dc", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApiGateway_CacheHitCount_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApiGateway_CacheHitCount_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "8016ef52", + "key": { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "6abb9f32", + "key": { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "86a54806", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "1e5b50b4", + "key": { + "dataType": "string", + "id": "Method--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Method", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "8ec09e30", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "d1622884", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + } + ], + "having": [], + "legend": "{{ApiName}} - {{Stage}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "39a206dd-298c-4560-b3da-83a029cf3423", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Cache Hits", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of requests served from the backend in a given period, when API caching is enabled.\n\nSee CacheMissCount at https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html for more details", + "fillSpans": false, + "id": "d3b4ad8b-7b52-4bea-9bc7-47e18da7f38c", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ApiGateway_CacheMissCount_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ApiGateway_CacheMissCount_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6cbbb46e", + "key": { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "4dfbfe25", + "key": { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "24f91927", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "f03b27a8", + "key": { + "dataType": "string", + "id": "Method--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Method", + "type": "tag" + }, + "op": "nexists", + "value": "" + }, + { + "id": "f02d484d", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "4d8ddc75", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ApiName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ApiName", + "type": "tag" + }, + { + "dataType": "string", + "id": "Stage--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Stage", + "type": "tag" + } + ], + "having": [], + "legend": "{{ApiName}} - {{Stage}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a5ef38e5-16a0-41c1-82b3-b6480ec4e524", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Cache Misses", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/dynamodb/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/dynamodb/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..8d29059660 --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/dynamodb/assets/dashboards/overview_dot.json @@ -0,0 +1,2657 @@ +{ + "description": "View DynamoDB metrics with an out-of-the-box dashboard.", + "image":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDY0ICg5MzUzNykgLSBodHRwczovL3NrZXRjaC5jb20gLS0+CiAgICA8dGl0bGU+SWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BbWF6b24tRHluYW1vREJfNjQ8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTEiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMkUyN0FEIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM1MjdGRkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0iSWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BbWF6b24tRHluYW1vREJfNjQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJJY29uLUFyY2hpdGVjdHVyZS1CRy82NC9EYXRhYmFzZSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIHg9IjAiIHk9IjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgICA8cGF0aCBkPSJNNTIuMDg1OTUyNSw1NC44NTAyNTA2IEM0OC43NDc5NTY5LDU3LjU0OTAzMzggNDEuNzQ0OTY2MSw1OC45NzUyOTI3IDM1LjA0Mzk3NDksNTguOTc1MjkyNyBDMjguMzQxOTgzOCw1OC45NzUyOTI3IDIxLjMzNjk5Myw1Ny41NDgwNDIgMTcuOTk5OTk3NCw1NC44NDkyNTg4IEwxNy45OTk5OTc0LDYwLjI4NDUxNSBMMTguMDAwOTk3NCw2MC4yODQ1MTUgQzE4LjAwMDk5NzQsNjIuOTk1MjAwMiAyNC45OTk5OTc0LDY2LjAxNjMyOTkgMzUuMDQzOTc0OSw2Ni4wMTYzMjk5IEM0NS4wNzk5NjE3LDY2LjAxNjMyOTkgNTIuMDc0OTUyNSw2Mi45OTkxNjc2IDUyLjA4NTk1MjUsNjAuMjkwNDY2IEw1Mi4wODU5NTI1LDU0Ljg1MDI1MDYgWiBNNTIuMDg2OTUyNSw0NC41MjIyNzIgTDU0LjA4Njk0OTksNDQuNTExMzYxOCBMNTQuMDg2OTQ5OSw0NC41MjIyNzIgQzU0LjA4Njk0OTksNDUuNzMwMzI3MSA1My40ODE5NTA3LDQ2Ljg1ODA0MzYgNTIuMzAzOTUyMiw0Ny44OTA1NDM5IEM1My43MzE5NTAzLDQ5LjE0NzE5OSA1NC4wODY5NDk5LDUwLjM4MDA0OTkgNTQuMDg2OTQ5OSw1MS4yNTc4MjQgQzU0LjA4Njk0OTksNTEuMjYzNzc1IDU0LjA4NTk0OTksNTEuMjY4NzM0MiA1NC4wODU5NDk5LDUxLjI3NDY4NTIgTDU0LjA4NTk0OTksNjAuMjg0NTE1IEw1NC4wODY5NDk5LDYwLjI4NDUxNSBDNTQuMDg2OTQ5OSw2NS4yOTUyNjU4IDQ0LjI3NDk2MjgsNjggMzUuMDQzOTc0OSw2OCBDMjUuODM0OTg3MSw2OCAxNi4wNDk5OTk5LDY1LjMwNzE2NzggMTYuMDAzLDYwLjMxOTIyOTIgQzE2LjAwMyw2MC4zMTQyNyAxNiw2MC4zMDkzMTA5IDE2LDYwLjMwNDM1MTcgTDE2LDUxLjI1NDg0ODUgQzE2LDUxLjI1Mjg2NDggMTYuMDAyLDUxLjI0OTg4OTMgMTYuMDAyLDUxLjI0NjkxMzggQzE2LjAwNSw1MC4zNjkxMzk4IDE2LjM2MDk5OTUsNDkuMTQxMjQ3OSAxNy43ODY5OTc2LDQ3Ljg4NzU2ODQgQzE2LjM2OTk5OTUsNDYuNjM1ODcyNSAxNi4wMSw0NS40MTQ5MjM2IDE2LjAwMSw0NC41NDQwOTI0IEwxNi4wMDIsNDQuNTQ0MDkyNCBDMTYuMDAyLDQ0LjU0MDEyNSAxNiw0NC41MzcxNDk1IDE2LDQ0LjUzMzE4MjIgTDE2LDM1LjQ4MzY3OSBDMTYsMzUuNDgwNzAzNSAxNi4wMDIsMzUuNDc3NzI4IDE2LjAwMiwzNS40NzQ3NTI1IEMxNi4wMDUsMzQuNTk2OTc4NCAxNi4zNjE5OTk1LDMzLjM2OTA4NjYgMTcuNzg3OTk3NiwzMi4xMTczOTA4IEMxNi4zNjk5OTk1LDMwLjg2NDcwMzEgMTYuMDEsMjkuNjQyNzYyMyAxNi4wMDEsMjguNzcyOTIyOSBMMTYuMDAyLDI4Ljc3MjkyMjkgQzE2LjAwMiwyOC43Njg5NTU2IDE2LDI4Ljc2NDk4ODIgMTYsMjguNzYxMDIwOSBMMTYsMTkuNzEyNTA5NSBDMTYsMTkuNzA5NTM0IDE2LjAwMiwxOS43MDY1NTg1IDE2LjAwMiwxOS43MDM1ODMgQzE2LjAxOSwxNC42OTk3NzUxIDI1LjgxOTk4NzEsMTIgMzUuMDQzOTc0OSwxMiBDNDAuMjU0OTY4MSwxMiA0NS4yNjA5NjE1LDEyLjgyODE4MjMgNDguNzc3OTU2OSwxNC4yNzIyOTQxIEw0OC4wMTI5NTc5LDE2LjEwNTIwNTQgQzQ0LjcyOTk2MjIsMTQuNzU3MzAxNSA0MC4wMDI5Njg0LDEzLjk4MzY3MDEgMzUuMDQzOTc0OSwxMy45ODM2NzAxIEMyNC45OTk5ODgyLDEzLjk4MzY3MDEgMTguMDAwOTk3NCwxNy4wMDQ3OTk4IDE4LjAwMDk5NzQsMTkuNzE3NDY4NyBDMTguMDAwOTk3NCwyMi40MjkxNDU4IDI0Ljk5OTk4ODIsMjUuNDUwMjc1NCAzNS4wNDM5NzQ5LDI1LjQ1MDI3NTQgQzM1LjMxNDk3NDYsMjUuNDUzMjUwOSAzNS41Nzk5NzQyLDI1LjQ1MDI3NTQgMzUuODQ3OTczOSwyNS40NDAzNTcxIEwzNS45MzE5NzM4LDI3LjQyMjA0MzUgQzM1LjYzNTk3NDIsMjcuNDMzOTQ1NiAzNS4zMzk5NzQ1LDI3LjQzMzk0NTYgMzUuMDQzOTc0OSwyNy40MzM5NDU2IEMyOC4zNDE5ODM4LDI3LjQzMzk0NTYgMjEuMzM2OTkzLDI2LjAwNjY5NDkgMTgsMjMuMzA3OTExNyBMMTgsMjguNzQwMTkyMyBMMTguMDAwOTk3NCwyOC43NDAxOTIzIEwxOC4wMDA5OTc0LDI4Ljc2MzAwNDYgQzE4LjAxMDk5NzQsMjkuODAzNDM5NSAxOS4wNzc5OTU5LDMwLjcxMTk2MDUgMTkuOTcxOTk0OCwzMS4yODkyMDg1IEMyMi42NjE5OTEyLDMzLjAwNDA5MTMgMjcuNDgxOTg0OSwzNC4xNzU0NDg1IDMyLjg1Njk3NzgsMzQuNDE4NDQ4MSBMMzIuNzY1OTc3OSwzNi40MDAxMzQ2IEMyNy4zMjA5ODUxLDM2LjE1MzE2NzcgMjIuNTUyOTkxNCwzNS4wMjM0Njc1IDE5LjQ4Mzk5NTQsMzMuMjkxNzIzNSBDMTguNzI3OTk2NCwzMy44NTcwNjk1IDE4LjAwMDk5NzQsMzQuNjIxNzc0MyAxOC4wMDA5OTc0LDM1LjQ4ODYzODIgQzE4LjAwMDk5NzQsMzguMjAwMzE1MyAyNC45OTk5ODgyLDQxLjIyMTQ0NDkgMzUuMDQzOTc0OSw0MS4yMjE0NDQ5IEMzNi4wMjg5NzM2LDQxLjIyMTQ0NDkgMzcuMDA2OTcyMyw0MS4xODg3MTQzIDM3Ljk1MTk3MTEsNDEuMTIzMjUzMiBMMzguMDkwOTcwOSw0My4xMDE5NjQyIEMzNy4xMDA5NzIyLDQzLjE3MDQwMDggMzYuMDc0OTczNiw0My4yMDUxMTUgMzUuMDQzOTc0OSw0My4yMDUxMTUgQzI4LjM0MTk4MzgsNDMuMjA1MTE1IDIxLjMzNjk5Myw0MS43Nzc4NjQ0IDE4LDM5LjA3OTA4MTEgTDE4LDQ0LjUxMTM2MTggTDE4LjAwMDk5NzQsNDQuNTExMzYxOCBDMTguMDEwOTk3NCw0NS41NzQ2MDkgMTkuMDc3OTk1OSw0Ni40ODIxMzgxIDE5Ljk3MTk5NDgsNDcuMDYwMzc4IEMyMy4wNDc5OTA3LDQ5LjAyMzIxOTYgMjguODIzOTgzMSw1MC4yNDUxNjA0IDM1LjA0Mzk3NDksNTAuMjQ1MTYwNCBMMzUuNDgzOTc0NCw1MC4yNDUxNjA0IEwzNS40ODM5NzQ0LDUyLjIyODgzMDUgTDM1LjA0Mzk3NDksNTIuMjI4ODMwNSBDMjguNzI0OTgzMiw1Mi4yMjg4MzA1IDIyLjk4MTk5MDgsNTEuMDU1NDg5NiAxOS40Njk5OTU0LDQ5LjA3MjgxMTMgQzE4LjcxNzk5NjQsNDkuNjM3MTY1NSAxOC4wMDA5OTc0LDUwLjM5NzkwMyAxOC4wMDA5OTc0LDUxLjI1NzgyNCBDMTguMDAwOTk3NCw1My45Njk1MDExIDI0Ljk5OTk4ODIsNTYuOTkxNjIyNSAzNS4wNDM5NzQ5LDU2Ljk5MTYyMjUgQzQ1LjA3OTk2MTcsNTYuOTkxNjIyNSA1Mi4wNzQ5NTI1LDUzLjk3NDQ2MDIgNTIuMDg1OTUyNSw1MS4yNjQ3NjY4IEw1Mi4wODU5NTI1LDUxLjI1NDg0ODUgTDUyLjA4NTk1MjUsNTEuMjUzODU2NiBDNTIuMDgzOTUyNSw1MC4zOTE5NTIgNTEuMzYzOTUzNCw0OS42MzEyMTQ1IDUwLjYwOTk1NDQsNDkuMDY2ODYwMyBDNTAuMTIxOTU1MSw0OS4zNDM1ODIzIDQ5LjU5ODk1NTgsNDkuNjEwMzg1OSA0OS4wMDM5NTY2LDQ5Ljg1NTM2OTIgTDQ4LjIzNzk1NzYsNDguMDIyNDU4IEM0OC45NjM5NTY2LDQ3LjcyMzkxNTYgNDkuNTkzOTU1OCw0Ny40MDE1NjkyIDUwLjExMDk1NTEsNDcuMDYyMzYxNiBDNTEuMDEyOTUzOSw0Ni40NzQyMDM0IDUyLjA4Njk1MjUsNDUuNTU0NzcyMyA1Mi4wODY5NTI1LDQ0LjUyMjI3MiBMNTIuMDg2OTUyNSw0NC41MjIyNzIgWiBNNjAuNjUyOTQxMiwzMC4wMTY2ODQxIEw1NS4wNDg5NDg2LDMwLjAxNjY4NDEgQzU0LjcxNzk0OSwzMC4wMTY2ODQxIDU0LjQwNjk0OTQsMjkuODU0MDIzMSA1NC4yMjE5NDk3LDI5LjU4MjI2MDMgQzU0LjAzNDk0OTksMjkuMzEwNDk3NSA1My45OTY5NSwyOC45NjQzNDcxIDU0LjExODk0OTgsMjguNjU5ODUzNyBMNTcuNTI3OTQ1MywyMC4xMzgwMDY4IEw0NC42MTg5NzAyLDIwLjEzODAwNjggTDM4LjYxODk3MDIsMzIuMDQwMDI3NiBMNDUuMDAwOTYxOCwzMi4wNDAwMjc2IEM0NS4zMTk5NjE0LDMyLjA0MDAyNzYgNDUuNjE5OTYxLDMyLjE5MTc3ODQgNDUuODA4OTYwOCwzMi40NDY2OCBDNDUuOTk1OTYwNSwzMi43MDI1NzM1IDQ2LjA1MDk2MDQsMzMuMDMwODcwOSA0NS45NTM5NjA2LDMzLjMzMzM4MDYgTDQwLjI1Nzk2ODEsNTEuMDg5MjEyIEw2MC42NTI5NDEyLDMwLjAxNjY4NDEgWiBNNjMuNzIxOTM3MiwyOS43MTIxOTA3IEwzOC43MjI5NzAxLDU1LjUzOTU3NiBDMzguNTI3OTcwMyw1NS43Mzk5MjY3IDM4LjI2NTk3MDcsNTUuODQ0MDY5NCAzOC4wMDA5NzEsNTUuODQ0MDY5NCBDMzcuODI0OTcxMyw1NS44NDQwNjk0IDM3LjY0Nzk3MTUsNTUuNzk5NDM2OCAzNy40ODk5NzE3LDU1LjcwNTIxMjQgQzM3LjA4OTk3MjIsNTUuNDY5MTU1NyAzNi45MDY5NzI1LDU0Ljk5MjA4MyAzNy4wNDc5NzIzLDU0LjU1MTcwODMgTDQzLjYzMzk2MzYsMzQuMDIzNjk3OCBMMzcuMDAwOTcyNCwzNC4wMjM2OTc4IEMzNi42NTM5NzI4LDM0LjAyMzY5NzggMzYuMzMyOTczMiwzMy44NDYxNTkzIDM2LjE0OTk3MzUsMzMuNTUzNTY3OSBDMzUuOTY3OTczNywzMy4yNjA5NzY2IDM1Ljk1MDk3MzcsMzIuODk1OTgxMyAzNi4xMDY5NzM1LDMyLjU4ODUxMjQgTDQzLjEwNjk2NDMsMTguNzAyODIxNCBDNDMuMjc1OTY0MSwxOC4zNjY1ODkzIDQzLjYyMTk2MzYsMTguMTU0MzM2NiA0NC4wMDA5NjMxLDE4LjE1NDMzNjYgTDU5LjAwMDk0MzQsMTguMTU0MzM2NiBDNTkuMzMxOTQzLDE4LjE1NDMzNjYgNTkuNjQyOTQyNSwxOC4zMTc5ODk0IDU5LjgyNzk0MjMsMTguNTg4NzYwNCBDNjAuMDE0OTQyMSwxOC44NjE1MTUgNjAuMDUyOTQyLDE5LjIwNjY3MzYgNTkuOTMwOTQyMiwxOS41MTIxNTg4IEw1Ni41MjE5NDY3LDI4LjAzMzAxMzkgTDYyLjk5OTkzODEsMjguMDMzMDEzOSBDNjMuMzk5OTM3NiwyOC4wMzMwMTM5IDYzLjc2MjkzNzEsMjguMjcxMDU0NCA2My45MTk5MzY5LDI4LjYzNjA0OTcgQzY0LjA3NjkzNjcsMjkuMDAyMDM2OCA2My45OTg5MzY4LDI5LjQyNTU1MDQgNjMuNzIxOTM3MiwyOS43MTIxOTA3IEw2My43MjE5MzcyLDI5LjcxMjE5MDcgWiBNMTkuNDU0OTk1NSw2MC42NzQzMDYyIEMyMC44NzE5OTM2LDYxLjQ3MjczMzQgMjIuNjU1OTkxMiw2Mi4xNDQyMDU3IDI0Ljc1Njk4ODUsNjIuNjY3ODk0NyBMMjUuMjQ0OTg3OCw2MC43NDM3MzQ2IEMyMy4zNDU5OTAzLDYwLjI3MDYyOTMgMjEuNjg1OTkyNSw1OS42NDk3NDA1IDIwLjQ0Mjk5NDIsNTguOTQ5NTA1IEwxOS40NTQ5OTU1LDYwLjY3NDMwNjIgWiBNMjQuNzU2OTg4NSw0Ni43OTg1MzM1IEwyNS4yNDQ5ODc4LDQ0Ljg3NTM2NTMgQzIzLjM0NTk5MDMsNDQuNDAxMjY4MSAyMS42ODU5OTI1LDQzLjc4MDM3OTQgMjAuNDQyOTk0Miw0My4wODAxNDM4IEwxOS40NTQ5OTU1LDQ0LjgwNDk0NSBDMjAuODcxOTkzNiw0NS42MDMzNzIyIDIyLjY1NDk5MTIsNDYuMjc0ODQ0NiAyNC43NTY5ODg1LDQ2Ljc5ODUzMzUgTDI0Ljc1Njk4ODUsNDYuNzk4NTMzNSBaIE0xOS40NTQ5OTU1LDI4LjkzNTU4MzkgTDIwLjQ0Mjk5NDIsMjcuMjEwNzgyNyBDMjEuNjgzOTkyNSwyNy45MTEwMTgyIDIzLjM0NDk5MDMsMjguNTMwOTE1MSAyNS4yNDQ5ODc4LDI5LjAwNjAwNDEgTDI0Ljc1Njk4ODUsMzAuOTI5MTcyMyBDMjIuNjUyOTkxMiwzMC40MDQ0OTE2IDIwLjg2OTk5MzYsMjkuNzMzMDE5MyAxOS40NTQ5OTU1LDI4LjkzNTU4MzkgTDE5LjQ1NDk5NTUsMjguOTM1NTgzOSBaIiBpZD0iQW1hem9uLUR5bmFtb0RCX0ljb25fNjRfU3F1aWQiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+", + "layout": [ + { + "h": 6, + "i": "9e1d91ec-fb66-4cff-b5c5-282270ebffb5", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "9a2daf2e-39bc-445d-947f-617c27fadd0f", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 6, + "i": "5b50997d-3bca-466a-bdeb-841b2e49fd65", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "889c36ab-4d0c-4328-9c3c-6558aad6be89", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + }, + { + "h": 6, + "i": "0c3b97fe-56e0-4ce6-99f4-fd1cbd24f93e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 6, + "i": "70980d38-ee3c-47be-9520-e371df3b021a", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 12 + }, + { + "h": 6, + "i": "fe1b71b5-1a3f-41c0-b6c2-46bf934787ad", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 18 + }, + { + "h": 6, + "i": "cc0938a5-af82-4bd8-b10e-67eabe717ee0", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 18 + }, + { + "h": 6, + "i": "4bb63c27-5eb4-4904-9947-42ffce15e92e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 24 + }, + { + "h": 6, + "i": "5ffbe527-8cf3-4ed8-ac2d-8739fa7fa9af", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 24 + }, + { + "h": 6, + "i": "a02f64ac-e73e-4d4c-a26b-fcfc4265c148", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 30 + }, + { + "h": 6, + "i": "014e377d-b7c1-4469-a137-be34d7748f31", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 30 + }, + { + "h": 6, + "i": "b1b75926-7308-43b3-bcad-60f369715f0b", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 36 + }, + { + "h": 6, + "i": "90f4d19d-8785-4a7a-97cf-c967108e1487", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 36 + }, + { + "h": 6, + "i": "5412cdad-174b-462b-916e-4e3de477446b", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 42 + } + ], + "panelMap": {}, + "tags": [], + "title": "DynamoDB Overview", + "uploadedGrafana": false, + "variables": { + "1f7a94df-9735-4bfa-a1b8-dca8ac29f945": { + "allSelected": false, + "customValue": "", + "description": "Account Region", + "id": "1f7a94df-9735-4bfa-a1b8-dca8ac29f945", + "key": "1f7a94df-9735-4bfa-a1b8-dca8ac29f945", + "modificationUUID": "8ef772a1-7df9-46a2-84e7-ab0c0bfc6886", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_DynamoDB%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "93ee15bf-baab-4abf-8828-fe6e75518417": { + "allSelected": false, + "customValue": "", + "description": "AWS Account ID", + "id": "93ee15bf-baab-4abf-8828-fe6e75518417", + "key": "93ee15bf-baab-4abf-8828-fe6e75518417", + "modificationUUID": "409e6a7e-1ec1-4611-8624-492a3aac6ca0", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_DynamoDB%' GROUP BY `cloud.account.id`", + "showALLOption": false, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + }, + "fd28f0e0-d4ec-4bcd-9c45-32395cb0c55b": { + "allSelected": true, + "customValue": "", + "description": "DynamoDB Tables", + "id": "fd28f0e0-d4ec-4bcd-9c45-32395cb0c55b", + "modificationUUID": "8ebb9032-7e56-4981-8036-efdfc413f8a8", + "multiSelect": true, + "name": "Table", + "order": 2, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'TableName') AS table FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_DynamoDB%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}} and table != '' GROUP BY table\n", + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "9e1d91ec-fb66-4cff-b5c5-282270ebffb5", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_AccountMaxReads_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_AccountMaxReads_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "fc55895c", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "8b3f3e0b", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "4fdb1c6c-8c7f-4f8b-a468-9326c811981a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Account Max Reads", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "5b50997d-3bca-466a-bdeb-841b2e49fd65", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_AccountMaxTableLevelReads_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_AccountMaxTableLevelReads_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f7b176f8", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "9a023ab7", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "310efa3b-d68a-4630-b279-bcbc22ddbefb", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Account Max Table Level Reads", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "889c36ab-4d0c-4328-9c3c-6558aad6be89", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_AccountMaxTableLevelWrites_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_AccountMaxTableLevelWrites_max", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "ec5ebf95", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "5b2fb00e", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "473de955-bc5c-4a66-aa8d-2e37502c5643", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Account Max Table Level Writes", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "9a2daf2e-39bc-445d-947f-617c27fadd0f", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_AccountMaxWrites_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_AccountMaxWrites_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "3815cf09", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "a783bd91", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "1115aaa1-fdb0-47a1-af79-8c6d439747d4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Account Max Writes", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "0c3b97fe-56e0-4ce6-99f4-fd1cbd24f93e", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_AccountProvisionedReadCapacityUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_AccountProvisionedReadCapacityUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "edcbcb83", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "224766cb", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d42bc3cd-f457-42eb-936e-c931b0c77f61", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Account Provisioned Read Capacity", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "70980d38-ee3c-47be-9520-e371df3b021a", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_AccountProvisionedWriteCapacityUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_AccountProvisionedWriteCapacityUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c237482a", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "e3a117d5", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d06d2f3d-8878-4c53-a8f1-10024091887a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Account Provisioned Write Capacity", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "fe1b71b5-1a3f-41c0-b6c2-46bf934787ad", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_ConsumedReadCapacityUnits_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_ConsumedReadCapacityUnits_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b867513b", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "9c10cbaa", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "4ff7fb7c", + "key": { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Table" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TableName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "32c9f178-073c-4d1f-8193-76f804776df0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Consumed Read Capacity", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "cc0938a5-af82-4bd8-b10e-67eabe717ee0", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_ConsumedWriteCapacityUnits_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_ConsumedWriteCapacityUnits_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7e2aa806", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "dd49e062", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "e7ada865", + "key": { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Table" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TableName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "40397368-92df-42b9-b0e6-0e7dc7984bc4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Consumed Write Capacity", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "4bb63c27-5eb4-4904-9947-42ffce15e92e", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_MaxProvisionedTableReadCapacityUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_MaxProvisionedTableReadCapacityUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b3e029fa", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "e6764d50", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "6a33d44a-a337-422f-a964-89b88804343f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Max Provisioned Table Read Capacity", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "5ffbe527-8cf3-4ed8-ac2d-8739fa7fa9af", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_MaxProvisionedTableWriteCapacityUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_MaxProvisionedTableWriteCapacityUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "80ba9142", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "9c802cf0", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a98b7d13-63d3-46cf-b4e7-686b3be7d9f9", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Max Provisioned Table Write Capacity", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "a02f64ac-e73e-4d4c-a26b-fcfc4265c148", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_ReturnedItemCount_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_ReturnedItemCount_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "db6edb77", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "8b86de4a", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "a8d39d03", + "key": { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Table" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TableName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "6322f225-471d-43a2-b13e-f2312c1a7b57", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Returned Item Count", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "014e377d-b7c1-4469-a137-be34d7748f31", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_SuccessfulRequestLatency_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_SuccessfulRequestLatency_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "93bef7f0", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "4a293ec8", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "2e2286c6", + "key": { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Table" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TableName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "6ad1cbfe-9581-4d99-a14e-50bc5fef699f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Successful Request Latency", + "yAxisUnit": "ms" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "b1b75926-7308-43b3-bcad-60f369715f0b", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_ThrottledRequests_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_ThrottledRequests_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "28fcd3cd", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "619578e5", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "a6bc481e", + "key": { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Table" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TableName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TableName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TableName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "fd358cf0-a0b0-4106-a89c-a5196297c23b", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Max Throttled Requests", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "5412cdad-174b-462b-916e-4e3de477446b", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_UserErrors_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_UserErrors_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5a060b5e", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "3a1cb5ff", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "17db2e6d-d9dc-4568-85ea-ea4b373dfc5e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "User Errors", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "90f4d19d-8785-4a7a-97cf-c967108e1487", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_DynamoDB_WriteThrottleEvents_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_DynamoDB_WriteThrottleEvents_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "58bc06b3", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "d6d7a8fb", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "713c6c70-3a62-4b67-8a67-7917ca9d4fbf", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Max Write Throttle Events", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/ec2/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/ec2/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..72ed3d5103 --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/ec2/assets/dashboards/overview_dot.json @@ -0,0 +1,1446 @@ +{ + "description": "Overview of EC2 instances", + "image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIj4KICA8cGF0aCBmaWxsPSIjOUQ1MDI1IiBkPSJNMS43MDIgMi45OEwxIDMuMzEydjkuMzc2bC43MDIuMzMyIDIuODQyLTQuNzc3TDEuNzAyIDIuOTh6IiAvPgogIDxwYXRoIGZpbGw9IiNGNTg1MzYiIGQ9Ik0zLjMzOSAxMi42NTdsLTEuNjM3LjM2M1YyLjk4bDEuNjM3LjM1M3Y5LjMyNHoiIC8+CiAgPHBhdGggZmlsbD0iIzlENTAyNSIgZD0iTTIuNDc2IDIuNjEybC44NjMtLjQwNiA0LjA5NiA2LjIxNi00LjA5NiA1LjM3Mi0uODYzLS40MDZWMi42MTJ6IiAvPgogIDxwYXRoIGZpbGw9IiNGNTg1MzYiIGQ9Ik01LjM4IDEzLjI0OGwtMi4wNDEuNTQ2VjIuMjA2bDIuMDQuNTQ4djEwLjQ5NHoiIC8+CiAgPHBhdGggZmlsbD0iIzlENTAyNSIgZD0iTTQuMyAxLjc1bDEuMDgtLjUxMiA2LjA0MyA3Ljg2NC02LjA0MyA1LjY2LTEuMDgtLjUxMVYxLjc0OXoiIC8+CiAgPHBhdGggZmlsbD0iI0Y1ODUzNiIgZD0iTTcuOTk4IDEzLjg1NmwtMi42MTguOTA2VjEuMjM4bDIuNjE4LjkwOHYxMS43MXoiIC8+CiAgPHBhdGggZmlsbD0iIzlENTAyNSIgZD0iTTYuNjAyLjY2TDcuOTk4IDBsNi41MzggOC40NTNMNy45OTggMTZsLTEuMzk2LS42NlYuNjZ6IiAvPgogIDxwYXRoIGZpbGw9IiNGNTg1MzYiIGQ9Ik0xNSAxMi42ODZMNy45OTggMTZWMEwxNSAzLjMxNHY5LjM3MnoiIC8+Cjwvc3ZnPg==", + "layout": [ + { + "h": 5, + "i": "b8a20569-7e4f-40d0-ada6-7736cfadae06", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "b668ba49-d126-4f2d-9eb5-b4cfbfaf94d1", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 5, + "i": "6fced7be-8a73-4b9b-8440-f2142230268c", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 5 + }, + { + "h": 5, + "i": "20dbaec7-9a16-47ad-af3b-f56375db8e69", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 5 + }, + { + "h": 5, + "i": "827a354b-1fff-400b-8172-c41e4c830eb5", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 10 + }, + { + "h": 5, + "i": "05de543a-73a2-4221-b784-263749d39b1e", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 10 + } + ], + "panelMap": {}, + "tags": [], + "title": "EC2 Overview", + "uploadedGrafana": false, + "variables": { + "11b96105-b752-47ef-88bc-832f248cf855": { + "allSelected": false, + "customValue": "", + "description": "AWS Account", + "id": "11b96105-b752-47ef-88bc-832f248cf855", + "key": "11b96105-b752-47ef-88bc-832f248cf855", + "modificationUUID": "23866855-0966-45ae-99cd-53fab002a1fa", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_EC2_CPUUtilization_sum'\nGROUP BY `cloud.account.id`", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "63a394bf-4acd-4f14-bf0a-f9dc5e4f00c2": { + "allSelected": false, + "customValue": "", + "description": "AWS Region", + "id": "63a394bf-4acd-4f14-bf0a-f9dc5e4f00c2", + "modificationUUID": "d3060c9c-fa76-4fc3-bcfa-e417c90717fa", + "multiSelect": false, + "name": "Region", + "order": 0, + "queryValue": "\nSELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_EC2_CPUUtilization_sum'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "b8a20569-7e4f-40d0-ada6-7736cfadae06", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_CPUUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_CPUUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d302d50d", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "e6c54e87", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "7907211a", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "170f1610-b7d0-4628-aca4-207c122b3709", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU Utilization", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "Percentage of available CPU credits that were utilizaed", + "fillSpans": false, + "id": "b668ba49-d126-4f2d-9eb5-b4cfbfaf94d1", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_CPUCreditUsage_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_CPUCreditUsage_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "30ded0dc", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "c935f6ec", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "d092fef8", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0643cc76-eedd-4101-bd7a-ec810a3e9b8a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU Credits Utilization", + "yAxisUnit": "percentunit" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "6fced7be-8a73-4b9b-8440-f2142230268c", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_EBSReadBytes_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_EBSReadBytes_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a5fbfa4a", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "87071f13", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "c84a88c4", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}} - Reads", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_EBSWriteBytes_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_EBSWriteBytes_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "4d10ca4b", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "fc2db932", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "a3fd74c0", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}} - Writes", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "43627952-52aa-40fd-9c04-cb0e3c123f98", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "EBS Read/Write Bytes", + "yAxisUnit": "binBps" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "20dbaec7-9a16-47ad-af3b-f56375db8e69", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_EBSReadOps_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_EBSReadOps_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "85d84806", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "f2074606", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "134c7ca9", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}} - Reads", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_EBSWriteOps_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_EBSWriteOps_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "47e0c00f", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "0a157dfe", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "a7d1e8df", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}} - Writes", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a70e41d1-27dc-4e91-bf13-23d8bd2f3c49", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "EBS Read/Write Ops", + "yAxisUnit": "cps" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "827a354b-1fff-400b-8172-c41e4c830eb5", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_NetworkIn_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_NetworkIn_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "12d6748d", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "df3a8da1", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "81ec53f4", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ac2ce4a6-f595-4d2a-bc22-ddc51c2d59ff", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network Incoming", + "yAxisUnit": "binBps" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "05de543a-73a2-4221-b784-263749d39b1e", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_EC2_NetworkOut_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_EC2_NetworkOut_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d301aaa7", + "key": { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + "op": "!=", + "value": "" + }, + { + "id": "e8afaa3b", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "d67487ab", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "service.instance.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "service.instance.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + } + ], + "having": [], + "legend": "{{service.instance.id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "94027537-0da8-4ac5-a880-532b975a818c", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network Outgoing", + "yAxisUnit": "binBps" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/ecs/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/ecs/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..ffb80b4c33 --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/ecs/assets/dashboards/overview_dot.json @@ -0,0 +1,851 @@ +{ + "description": "View key AWS ECS metrics with an out of the box dashboard.\n", + "image":"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%2280px%22%20height%3D%2280px%22%20viewBox%3D%220%200%2080%2080%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3C!--%20Generator%3A%20Sketch%2064%20(93537)%20-%20https%3A%2F%2Fsketch.com%20--%3E%3Ctitle%3EIcon-Architecture%2F64%2FArch_Amazon-Elastic-Container-Service_64%3C%2Ftitle%3E%3Cdesc%3ECreated%20with%20Sketch.%3C%2Fdesc%3E%3Cdefs%3E%3ClinearGradient%20x1%3D%220%25%22%20y1%3D%22100%25%22%20x2%3D%22100%25%22%20y2%3D%220%25%22%20id%3D%22linearGradient-1%22%3E%3Cstop%20stop-color%3D%22%23C8511B%22%20offset%3D%220%25%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23FF9900%22%20offset%3D%22100%25%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20id%3D%22Icon-Architecture%2F64%2FArch_Amazon-Elastic-Container-Service_64%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cg%20id%3D%22Icon-Architecture-BG%2F64%2FContainers%22%20fill%3D%22url(%23linearGradient-1)%22%3E%3Crect%20id%3D%22Rectangle%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2280%22%20height%3D%2280%22%3E%3C%2Frect%3E%3C%2Fg%3E%3Cpath%20d%3D%22M64%2C48.2340095%20L56%2C43.4330117%20L56%2C32.0000169%20C56%2C31.6440171%2055.812%2C31.3150172%2055.504%2C31.1360173%20L44%2C24.4260204%20L44%2C14.7520248%20L64%2C26.5710194%20L64%2C48.2340095%20Z%20M65.509%2C25.13902%20L43.509%2C12.139026%20C43.199%2C11.9560261%2042.818%2C11.9540261%2042.504%2C12.131026%20C42.193%2C12.3090259%2042%2C12.6410257%2042%2C13.0000256%20L42%2C25.0000201%20C42%2C25.3550199%2042.189%2C25.6840198%2042.496%2C25.8640197%20L54%2C32.5740166%20L54%2C44.0000114%20C54%2C44.3510113%2054.185%2C44.6770111%2054.486%2C44.857011%20L64.486%2C50.8570083%20C64.644%2C50.9520082%2064.822%2C51%2065%2C51%20C65.17%2C51%2065.34%2C50.9570082%2065.493%2C50.8700083%20C65.807%2C50.6930084%2066%2C50.3600085%2066%2C50%20L66%2C26.0000196%20C66%2C25.6460198%2065.814%2C25.31902%2065.509%2C25.13902%20L65.509%2C25.13902%20Z%20M40.445%2C66.863001%20L17%2C54.3990067%20L17%2C26.5710194%20L37%2C14.7520248%20L37%2C24.4510204%20L26.463%2C31.1560173%20C26.175%2C31.3400172%2026%2C31.6580171%2026%2C32.0000169%20L26%2C49.0000091%20C26%2C49.373009%2026.208%2C49.7150088%2026.538%2C49.8870087%20L39.991%2C56.8870055%20C40.28%2C57.0370055%2040.624%2C57.0380055%2040.912%2C56.8880055%20L53.964%2C50.1440086%20L61.996%2C54.9640064%20L40.445%2C66.863001%20Z%20M64.515%2C54.1420068%20L54.515%2C48.1420095%20C54.217%2C47.9640096%2053.849%2C47.9520096%2053.541%2C48.1120095%20L40.455%2C54.8730065%20L28%2C48.3930094%20L28%2C32.5490167%20L38.537%2C25.8440197%20C38.825%2C25.6600198%2039%2C25.3420199%2039%2C25.0000201%20L39%2C13.0000256%20C39%2C12.6410257%2038.808%2C12.3090259%2038.496%2C12.131026%20C38.184%2C11.9540261%2037.802%2C11.9560261%2037.491%2C12.139026%20L15.491%2C25.13902%20C15.187%2C25.31902%2015%2C25.6460198%2015%2C26.0000196%20L15%2C55%20C15%2C55.3690062%2015.204%2C55.7090061%2015.53%2C55.883006%20L39.984%2C68.8830001%20C40.131%2C68.961%2040.292%2C69%2040.453%2C69%20C40.62%2C69%2040.786%2C68.958%2040.937%2C68.8750001%20L64.484%2C55.875006%20C64.797%2C55.7020061%2064.993%2C55.3750062%2065.0001416%2C55.0180064%20C65.006%2C54.6600066%2064.821%2C54.3260067%2064.515%2C54.1420068%20L64.515%2C54.1420068%20Z%22%20id%3D%22Amazon-Elastic-Container-Service_Icon_64_Squid%22%20fill%3D%22%23FFFFFF%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E", + "layout": [ + { + "h": 6, + "i": "f78becf8-0328-48b4-84b6-ff4dac325940", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "2b4eac06-b426-4f78-b874-2e1734c4104b", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 6, + "i": "5bea2bc0-13a2-4937-bccb-60ffe8a43ad5", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "6fac67b0-50ec-4b43-ac4b-320a303d0369", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + } + ], + "panelMap": {}, + "tags": [], + "title": "AWS ECS Overview", + "uploadedGrafana": false, + "variables": { + "51f4fa2b-89c7-47c2-9795-f32cffaab985": { + "allSelected": false, + "customValue": "", + "description": "AWS Account ID", + "id": "51f4fa2b-89c7-47c2-9795-f32cffaab985", + "key": "51f4fa2b-89c7-47c2-9795-f32cffaab985", + "modificationUUID": "7b814d17-8fff-4ed6-a4ea-90e3b1a97584", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' GROUP BY `cloud.account.id`", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0": { + "allSelected": false, + "customValue": "", + "description": "Account Region", + "id": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0", + "key": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0", + "modificationUUID": "3b5f499b-22a3-4c8a-847c-8d3811c9e6b2", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region", + "showALLOption": false, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + }, + "bfbdbcbe-a168-4d81-b108-36339e249116": { + "allSelected": true, + "customValue": "", + "description": "ECS Cluster Name", + "id": "bfbdbcbe-a168-4d81-b108-36339e249116", + "key": "bfbdbcbe-a168-4d81-b108-36339e249116", + "modificationUUID": "9fb0d63c-ac6c-497d-82b3-17d95944e245", + "multiSelect": true, + "name": "Cluster", + "order": 2, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS cluster\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}}\nGROUP BY cluster", + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "f78becf8-0328-48b4-84b6-ff4dac325940", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ECS_MemoryUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ECS_MemoryUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "26ac617d", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "57172ed9", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "49b9f85e", + "key": { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ServiceName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ServiceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + } + ], + "having": [], + "legend": "{{ServiceName}} ({{ClusterName}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "56068fdd-d523-4117-92fa-87c6518ad07c", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Maximum Memory Utilization", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "2b4eac06-b426-4f78-b874-2e1734c4104b", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ECS_MemoryUtilization_min--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ECS_MemoryUtilization_min", + "type": "Gauge" + }, + "aggregateOperator": "min", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "cd4b8848", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "aa5115c6", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "f60677b6", + "key": { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ServiceName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ServiceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + } + ], + "having": [], + "legend": "{{ServiceName}} ({{ClusterName}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "min", + "stepInterval": 60, + "timeAggregation": "min" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "fb19342e-cbde-40d8-b12f-ad108698356b", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Minimum Memory Utilization", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "5bea2bc0-13a2-4937-bccb-60ffe8a43ad5", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ECS_CPUUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ECS_CPUUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "2c13c8ee", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "f489f6a8", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "94012320", + "key": { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ServiceName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ServiceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + } + ], + "having": [], + "legend": "{{ServiceName}} ({{ClusterName}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "273e0a76-c780-4b9a-9b03-2649d4227173", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Maximum CPU Utilization", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "6fac67b0-50ec-4b43-ac4b-320a303d0369", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ECS_CPUUtilization_min--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ECS_CPUUtilization_min", + "type": "Gauge" + }, + "aggregateOperator": "min", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "758ba906", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "4ffe6bf7", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "53d98059", + "key": { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "ServiceName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ServiceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "ClusterName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "ClusterName", + "type": "tag" + } + ], + "having": [], + "legend": "{{ServiceName}} ({{ClusterName}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "min", + "stepInterval": 60, + "timeAggregation": "min" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "c89482b3-5a98-4e2c-be0d-ef036d7dac05", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Minimum CPU Utilization", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/elasticache/assets/dashboards/redis_overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/elasticache/assets/dashboards/redis_overview_dot.json new file mode 100644 index 0000000000..4cfbd83db2 --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/elasticache/assets/dashboards/redis_overview_dot.json @@ -0,0 +1,2706 @@ +{ + "description": "Redis Overview for AWS ElastiCache", + "image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDY0ICg5MzUzNykgLSBodHRwczovL3NrZXRjaC5jb20gLS0+CiAgICA8dGl0bGU+SWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BbWF6b24tRWxhc3RpQ2FjaGVfNjQ8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTEiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMkUyN0FEIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM1MjdGRkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0iSWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BbWF6b24tRWxhc3RpQ2FjaGVfNjQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJJY29uLUFyY2hpdGVjdHVyZS1CRy82NC9EYXRhYmFzZSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIHg9IjAiIHk9IjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgICA8cGF0aCBkPSJNNTEsNjEuNTU1NDg2NCBMNTEsNTUuNzAyOTM0MiBDNDguNDY2LDU3LjM0MDA4ODcgNDMuOTA0LDU4LjExMzE2MTYgMzkuNTU2LDU4LjExMzE2MTYgQzM0LjgxNiw1OC4xMTMxNjE2IDMxLjEyMSw1Ny4yODYwODM2IDI5LDU1Ljg2Nzk0OTggTDI5LDYxLjU1NTQ4NjQgQzI5LDYzLjI0ODY0NjEgMzIuOTQ4LDY0Ljk5OTgxMTMgMzkuNTU2LDY0Ljk5OTgxMTMgQzQ2LjMsNjQuOTk5ODExMyA1MSw2My4xODQ2NDAxIDUxLDYxLjU1NTQ4NjQgTDUxLDYxLjU1NTQ4NjQgWiBNMzkuNTU2LDQ5LjIyMDMyMjcgQzM0LjgxNiw0OS4yMjAzMjI3IDMxLjEyMSw0OC4zOTQyNDQ3IDI5LDQ2Ljk3NjExMSBMMjksNTIuNjg2NjQ5NyBDMjkuMDMxLDU0LjM3MzgwODggMzIuOTczLDU2LjExMjk3MjkgMzkuNTU2LDU2LjExMjk3MjkgQzQ2LjI3OSw1Ni4xMTI5NzI5IDUwLjk2OSw1NC4zMDg4MDI3IDUxLDUyLjY4MjY0OTMgTDUxLDQ2LjgxMDA5NTMgQzQ4LjQ2Niw0OC40NDgyNDk4IDQzLjkwNCw0OS4yMjAzMjI3IDM5LjU1Niw0OS4yMjAzMjI3IEwzOS41NTYsNDkuMjIwMzIyNyBaIE01MSw0My43OTA4MTA1IEw1MSwzNy4wMjkxNzI2IEM0OC40NjYsMzguNjY2MzI3IDQzLjkwNCwzOS40MzkzOTk5IDM5LjU1NiwzOS40MzkzOTk5IEMzNC44MTYsMzkuNDM5Mzk5OSAzMS4xMjEsMzguNjEzMzIyIDI5LDM3LjE5NTE4ODIgTDI5LDQzLjc5NDgxMDggQzI5LjAzMSw0NS40ODE5NyAzMi45NzMsNDcuMjIwMTM0IDM5LjU1Niw0Ny4yMjAxMzQgQzQ2LjI3OSw0Ny4yMjAxMzQgNTAuOTY5LDQ1LjQxNTk2MzggNTEsNDMuNzkwODEwNSBMNTEsNDMuNzkwODEwNSBaIE0yOC45OTcsMzMuOTkyODg2MSBDMjguOTk3LDMzLjk5NTg4NjQgMjguOTk4LDMzLjk5ODg4NjcgMjguOTk4LDM0LjAwMTg4NyBMMjksMzQuMDAxODg3IEwyOSwzNC4wMTI4ODggQzI5LjAzMSwzNS43MDAwNDcyIDMyLjk3MywzNy40MzkyMTEyIDM5LjU1NiwzNy40MzkyMTEyIEM0Ni44OTgsMzcuNDM5MjExMiA1MC45NjksMzUuNDE3MDIwNSA1MSwzNC4wMDk4ODc3IEw1MSwzNC4wMDE4ODcgTDUxLjAwMiwzNC4wMDE4ODcgQzUxLjAwMiwzMy45OTg4ODY3IDUxLjAwMywzMy45OTU4ODY0IDUxLjAwMywzMy45OTI4ODYxIEM1MS4wMDMsMzIuNTg0NzUzMyA0Ni45MjcsMzAuNTQ2NTYxIDM5LjU1NiwzMC41NDY1NjEgQzMyLjk0NiwzMC41NDY1NjEgMjguOTk3LDMyLjI5ODcyNjMgMjguOTk3LDMzLjk5Mjg4NjEgTDI4Ljk5NywzMy45OTI4ODYxIFogTTUzLDM0LjAxNzg4ODUgTDUzLDQzLjc3MzgwODggTDUzLjAwMyw0My43NzM4MDg4IEM1My4wMDMsNDMuNzgyODA5NyA1Myw0My43ODk4MTA0IDUzLDQzLjc5ODgxMTIgTDUzLDUyLjY2NjY0NzggTDUzLjAwMyw1Mi42NjY2NDc4IEM1My4wMDMsNTIuNjc1NjQ4NiA1Myw1Mi42ODI2NDkzIDUzLDUyLjY5MTY1MDIgTDUzLDYxLjU1NTQ4NjQgQzUzLDY1LjI5NjgzOTMgNDYuMDMxLDY3IDM5LjU1Niw2NyBDMzEuOTI5LDY3IDI3LDY0Ljg2Mjc5ODQgMjcsNjEuNTU1NDg2NCBMMjcsNTIuNjk3NjUwNyBDMjcsNTIuNjg2NjQ5NyAyNi45OTcsNTIuNjc3NjQ4OCAyNi45OTcsNTIuNjY2NjQ3OCBMMjcsNTIuNjY2NjQ3OCBMMjcsNDMuODA0ODExOCBDMjcsNDMuNzk0ODEwOCAyNi45OTcsNDMuNzg0ODA5OSAyNi45OTcsNDMuNzczODA4OCBMMjcsNDMuNzczODA4OCBMMjcsMzQuMDIzODg5IEMyNywzNC4wMTI4ODggMjYuOTk3LDM0LjAwMzg4NzIgMjYuOTk3LDMzLjk5Mjg4NjEgQzI2Ljk5NywzMC42ODQ1NzQgMzEuOTI3LDI4LjU0NjM3MjMgMzkuNTU2LDI4LjU0NjM3MjMgQzQ2LjAzMiwyOC41NDYzNzIzIDUzLjAwMywzMC4yNTA1MzMxIDUzLjAwMywzMy45OTI4ODYxIEM1My4wMDMsMzQuMDAxODg3IDUzLDM0LjAwODg4NzYgNTMsMzQuMDE3ODg4NSBMNTMsMzQuMDE3ODg4NSBaIE02NywyMS4xMjA2NzE4IEM2Ny41NTMsMjEuMTIwNjcxOCA2OCwyMC42NzI2Mjk1IDY4LDIwLjEyMDU3NzQgTDY4LDE1LjAwMDA5NDMgQzY4LDE0LjQ0NzA0MjIgNjcuNTUzLDE0IDY3LDE0IEwxMywxNCBDMTIuNDQ3LDE0IDEyLDE0LjQ0NzA0MjIgMTIsMTUuMDAwMDk0MyBMMTIsMjAuMTIwNTc3NCBDMTIsMjAuNjcyNjI5NSAxMi40NDcsMjEuMTIwNjcxOCAxMywyMS4xMjA2NzE4IEMxNC4yMjEsMjEuMTIwNjcxOCAxNS4yMTQsMjIuMTA3NzY0OSAxNS4yMTQsMjMuMzIwODc5MyBDMTUuMjE0LDI0LjUzMzk5MzggMTQuMjIxLDI1LjUyMTA4NjkgMTMsMjUuNTIxMDg2OSBDMTIuNDQ3LDI1LjUyMTA4NjkgMTIsMjUuOTY5MTI5MiAxMiwyNi41MjExODEyIEwxMiw0Ny4wMDMxMTM1IEMxMiw0Ny41NTUxNjU2IDEyLjQ0Nyw0OC4wMDMyMDc4IDEzLDQ4LjAwMzIwNzggTDIzLDQ4LjAwMzIwNzggTDIzLDQ2LjAwMzAxOTIgTDE4LDQ2LjAwMzAxOTIgTDE4LDQzLjAwMjczNjEgTDIzLDQzLjAwMjczNjEgTDIzLDQxLjAwMjU0NzQgTDE3LDQxLjAwMjU0NzQgQzE2LjQ0Nyw0MS4wMDI1NDc0IDE2LDQxLjQ0OTU4OTYgMTYsNDIuMDAyNjQxOCBMMTYsNDYuMDAzMDE5MiBMMTQsNDYuMDAzMDE5MiBMMTQsMjcuNDAxMjY0MyBDMTUuODQzLDI2Ljk1MjIyMTkgMTcuMjE0LDI1LjI5MzA2NTQgMTcuMjE0LDIzLjMyMDg3OTMgQzE3LjIxNCwyMS4zNDc2OTMyIDE1Ljg0MywxOS42ODg1MzY3IDE0LDE5LjIzOTQ5NDMgTDE0LDE2LjAwMDE4ODcgTDY2LDE2LjAwMDE4ODcgTDY2LDE5LjIzOTQ5NDMgQzY0LjE1NywxOS42ODg1MzY3IDYyLjc4NiwyMS4zNDc2OTMyIDYyLjc4NiwyMy4zMjA4NzkzIEM2Mi43ODYsMjUuMjkzMDY1NCA2NC4xNTcsMjYuOTUyMjIxOSA2NiwyNy40MDEyNjQzIEw2Niw0Ni4wMDMwMTkyIEw2NCw0Ni4wMDMwMTkyIEw2NCw0Mi4wMDI2NDE4IEM2NCw0MS40NDk1ODk2IDYzLjU1Myw0MS4wMDI1NDc0IDYzLDQxLjAwMjU0NzQgTDU3LDQxLjAwMjU0NzQgTDU3LDQzLjAwMjczNjEgTDYyLDQzLjAwMjczNjEgTDYyLDQ2LjAwMzAxOTIgTDU3LDQ2LjAwMzAxOTIgTDU3LDQ4LjAwMzIwNzggTDY3LDQ4LjAwMzIwNzggQzY3LjU1Myw0OC4wMDMyMDc4IDY4LDQ3LjU1NTE2NTYgNjgsNDcuMDAzMTEzNSBMNjgsMjYuNTIxMTgxMiBDNjgsMjUuOTY5MTI5MiA2Ny41NTMsMjUuNTIxMDg2OSA2NywyNS41MjEwODY5IEM2NS43NzksMjUuNTIxMDg2OSA2NC43ODYsMjQuNTMzOTkzOCA2NC43ODYsMjMuMzIwODc5MyBDNjQuNzg2LDIyLjEwNzc2NDkgNjUuNzc5LDIxLjEyMDY3MTggNjcsMjEuMTIwNjcxOCBMNjcsMjEuMTIwNjcxOCBaIE0yOCwyOC4wMDEzMjA5IEwyOCwyMC4wMDA1NjYxIEMyOCwxOS40NDc1MTM5IDI3LjU1MywxOS4wMDA0NzE3IDI3LDE5LjAwMDQ3MTcgTDIxLDE5LjAwMDQ3MTcgQzIwLjQ0NywxOS4wMDA0NzE3IDIwLDE5LjQ0NzUxMzkgMjAsMjAuMDAwNTY2MSBMMjAsMzcuMDAyMTcgQzIwLDM3LjU1NDIyMjEgMjAuNDQ3LDM4LjAwMjI2NDQgMjEsMzguMDAyMjY0NCBMMjQsMzguMDAyMjY0NCBMMjQsMzYuMDAyMDc1NyBMMjIsMzYuMDAyMDc1NyBMMjIsMjEuMDAwNjYwNCBMMjYsMjEuMDAwNjYwNCBMMjYsMjguMDAxMzIwOSBMMjgsMjguMDAxMzIwOSBaIE01OCwzNi4wMDIwNzU3IEw1NywzNi4wMDIwNzU3IEw1NywzOC4wMDIyNjQ0IEw1OSwzOC4wMDIyNjQ0IEM1OS41NTMsMzguMDAyMjY0NCA2MCwzNy41NTQyMjIxIDYwLDM3LjAwMjE3IEw2MCwyMC4wMDA1NjYxIEM2MCwxOS40NDc1MTM5IDU5LjU1MywxOS4wMDA0NzE3IDU5LDE5LjAwMDQ3MTcgTDUzLDE5LjAwMDQ3MTcgQzUyLjQ0NywxOS4wMDA0NzE3IDUyLDE5LjQ0NzUxMzkgNTIsMjAuMDAwNTY2MSBMNTIsMjguMDAxMzIwOSBMNTQsMjguMDAxMzIwOSBMNTQsMjEuMDAwNjYwNCBMNTgsMjEuMDAwNjYwNCBMNTgsMzYuMDAyMDc1NyBaIE01MCwyNy4wMDEyMjY1IEw1MCwyMC4wMDA1NjYxIEM1MCwxOS40NDc1MTM5IDQ5LjU1MywxOS4wMDA0NzE3IDQ5LDE5LjAwMDQ3MTcgTDQyLDE5LjAwMDQ3MTcgQzQxLjQ0NywxOS4wMDA0NzE3IDQxLDE5LjQ0NzUxMzkgNDEsMjAuMDAwNTY2MSBMNDEsMjYuMDAxMTMyMiBMNDMsMjYuMDAxMTMyMiBMNDMsMjEuMDAwNjYwNCBMNDgsMjEuMDAwNjYwNCBMNDgsMjcuMDAxMjI2NSBMNTAsMjcuMDAxMjI2NSBaIE0zNywyNi4wMDExMzIyIEwzNywyMS4wMDA2NjA0IEwzMiwyMS4wMDA2NjA0IEwzMiwyNy4wMDEyMjY1IEwzMCwyNy4wMDEyMjY1IEwzMCwyMC4wMDA1NjYxIEMzMCwxOS40NDc1MTM5IDMwLjQ0NywxOS4wMDA0NzE3IDMxLDE5LjAwMDQ3MTcgTDM4LDE5LjAwMDQ3MTcgQzM4LjU1MywxOS4wMDA0NzE3IDM5LDE5LjQ0NzUxMzkgMzksMjAuMDAwNTY2MSBMMzksMjYuMDAxMTMyMiBMMzcsMjYuMDAxMTMyMiBaIiBpZD0iQW1hem9uLUVsYXN0aUNhY2hlX0ljb25fNjRfU3F1aWQiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+", + "layout": [ + { + "h": 5, + "i": "00d78996-1ba9-42d9-b22b-5818fc3bde4c", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "203637d1-df44-4032-beae-1e0302d61c2a", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 5, + "i": "6a56afd1-6205-4afe-90fe-86befc3fb55e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 5 + }, + { + "h": 5, + "i": "af269a1c-95a3-46b3-8d3b-322c194450e2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 5 + }, + { + "h": 5, + "i": "f9b0f03a-8d78-4c26-a037-daae69650eb6", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 10 + }, + { + "h": 5, + "i": "18798789-b67a-4c90-8127-f6bb63f012b2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 10 + }, + { + "h": 5, + "i": "b3cdeb88-6988-419c-9e94-4a6bccfdd467", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 5, + "i": "3604137c-12fe-4205-b7fc-f10d6143583b", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + }, + { + "h": 5, + "i": "5e69ac87-580f-4dc2-becd-943296e5cd1d", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 20 + }, + { + "h": 5, + "i": "e5c9ccb6-31de-4b80-8f4c-220ea2e874d0", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 20 + }, + { + "h": 5, + "i": "dccdd9c3-3864-4aef-a98f-6fb0e30baf0c", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 25 + }, + { + "h": 5, + "i": "79723065-b871-4c79-83eb-b32f025c7642", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 25 + }, + { + "h": 5, + "i": "8eba8049-2af5-4998-b0e1-cbc2235f9b40", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 30 + }, + { + "h": 5, + "i": "47432f6e-e37c-416a-b517-b66931c9e907", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 30 + } + ], + "panelMap": {}, + "tags": [], + "title": "ElastiCache Redis Overview", + "uploadedGrafana": false, + "variables": { + "50910278-a96b-4bae-a3b4-4c5b9e7cdefc": { + "allSelected": false, + "customValue": "", + "description": "Cache Cluster", + "id": "50910278-a96b-4bae-a3b4-4c5b9e7cdefc", + "modificationUUID": "3903938d-b7aa-4cea-b0f3-bbd704374e31", + "multiSelect": true, + "name": "Cluster", + "order": 2, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'CacheClusterId') AS cluster FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}} AND cluster != '' GROUP BY cluster", + "showALLOption": true, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "6357cfda-7432-4286-ae5c-fa665ba4ad13": { + "allSelected": false, + "customValue": "", + "description": "AWS Account Region", + "id": "6357cfda-7432-4286-ae5c-fa665ba4ad13", + "key": "6357cfda-7432-4286-ae5c-fa665ba4ad13", + "modificationUUID": "7934dec7-34c6-417e-bcf6-5d9685874f41", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region", + "showALLOption": false, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + }, + "dbed9d28-86e7-4c79-9b05-931cc3697416": { + "allSelected": false, + "customValue": "", + "description": "AWS Cloud Account ID", + "id": "dbed9d28-86e7-4c79-9b05-931cc3697416", + "key": "dbed9d28-86e7-4c79-9b05-931cc3697416", + "modificationUUID": "e50566ae-eabf-4ca0-8c84-f9026747d538", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS cloud.account.id FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' GROUP BY cloud.account.id", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "b3cdeb88-6988-419c-9e94-4a6bccfdd467", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_DatabaseMemoryUsagePercentage_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_DatabaseMemoryUsagePercentage_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "1de28cd7", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "a2e662bc", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "b7391c4e", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "4e4a59d3-5255-4540-82e1-1892ffc0d444", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Database Memory Usage Percentage", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "18798789-b67a-4c90-8127-f6bb63f012b2", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_DatabaseCapacityUsagePercentage_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_DatabaseCapacityUsagePercentage_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "42feb786", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "0c3a5e7a", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "de00d7b3", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "3199dc90-ba5d-451a-9430-2d4d0ebf37bc", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Database Capacity Usage Percentage", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "af269a1c-95a3-46b3-8d3b-322c194450e2", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_CacheHitRate_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_CacheHitRate_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6e9c7a26", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "7087d8df", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "26bd4c51", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e12cd857-4cec-4328-9155-5e4f9c00fc43", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Cache Hit Rate", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "f9b0f03a-8d78-4c26-a037-daae69650eb6", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_MemoryFragmentationRatio_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_MemoryFragmentationRatio_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "21a13195", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "63918715", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "647e4dbe", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d7ec3399-edbf-4fbc-8cf6-e7e349fdbab5", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Memory Fragmentation Ratio", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "dccdd9c3-3864-4aef-a98f-6fb0e30baf0c", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_SwapUsage_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_SwapUsage_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "8c18e738", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "72e562a1", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "26891e8d", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d0e5f558-3d07-4512-8611-243c4e86e84c", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Swap Usage", + "yAxisUnit": "decbytes" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "3604137c-12fe-4205-b7fc-f10d6143583b", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_FreeableMemory_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_FreeableMemory_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "0820e027", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "c6612aef", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "b863daa8", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "4263a59a-367b-404e-ac59-48002f3123e6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Freeable Memory", + "yAxisUnit": "decbytes" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "5e69ac87-580f-4dc2-becd-943296e5cd1d", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_NetworkBytesIn_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_NetworkBytesIn_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "314b2895", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "05806d0e", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "edfe2e2c", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0a5800e1-f341-4880-b993-e5a7f1068ab0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network Bytes In", + "yAxisUnit": "decbytes" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "e5c9ccb6-31de-4b80-8f4c-220ea2e874d0", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_NetworkBytesOut_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_NetworkBytesOut_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f2089c33", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "088c9b4a", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "1a86c392", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "c5ab1812-a9ec-4c8a-8b5b-49d5a43bf621", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network Bytes Out", + "yAxisUnit": "decbytes" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "6a56afd1-6205-4afe-90fe-86befc3fb55e", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_CurrConnections_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_CurrConnections_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5ebba9ac", + "key": { + "dataType": "", + "isColumn": false, + "key": "CacheClusterId", + "type": "" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "10a254a8", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "310ce219", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5796d31c-fd59-4d8b-b6ff-5f9db5a2a4bd", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Current Connections Maximum", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "8eba8049-2af5-4998-b0e1-cbc2235f9b40", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_ReplicationLag_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_ReplicationLag_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b5ed26b7", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "a3ab9c6c", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "cfd6d4ee", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "2f6baca9-1700-4dcf-8875-3c45719f9ff7", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Replication Lag", + "yAxisUnit": "s" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "79723065-b871-4c79-83eb-b32f025c7642", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_Evictions_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_Evictions_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "e591ace7", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "0e7a0149", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "1440550c", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "aaa23f24-6fbf-439f-92a9-09bdde4ba8fc", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Evictions", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "00d78996-1ba9-42d9-b22b-5818fc3bde4c", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_CPUUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_CPUUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "43ef42eb", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "ce680e7d", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "4cc11182", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "eb5429dc-f591-4907-8394-ed3918bbe561", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU Utilization", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "203637d1-df44-4032-beae-1e0302d61c2a", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_EngineCPUUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_EngineCPUUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "87b3e146", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "b0f9df50", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "07a5a0d1", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ba5afd9b-eb99-46bc-83f3-7c2f2feabf19", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Engine CPU Utilization", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "47432f6e-e37c-416a-b517-b66931c9e907", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_ElastiCache_CurrConnections_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_ElastiCache_CurrConnections_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6764e117", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "4764b9eb", + "key": { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + }, + "op": "in", + "value": [ + "$Cluster" + ] + }, + { + "id": "a1c90d55", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "CacheClusterId--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "CacheClusterId", + "type": "tag" + } + ], + "having": [], + "legend": "{{CacheClusterId}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "018e439e-7c3c-4f6d-afe1-fd363e0f9a1d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Current Connections", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/lambda/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/lambda/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..85437c6bf4 --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/lambda/assets/dashboards/overview_dot.json @@ -0,0 +1,1547 @@ +{ + "description": "Overview of AWS Lambda functions", + "image": "data:image/svg+xml,%3Csvg%20width%3D%22800px%22%20height%3D%22800px%22%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23FA7E14%22%20d%3D%22M7.983%208.37c-.053.073-.098.133-.141.194L5.775%2011.5c-.64.91-1.282%201.82-1.924%202.73a.128.128%200%2001-.092.051c-.906-.007-1.813-.017-2.719-.028-.01%200-.02-.003-.04-.006a.455.455%200%2001.025-.053%2013977.496%2013977.496%200%20015.446-8.146c.092-.138.188-.273.275-.413a.165.165%200%2000.018-.124c-.167-.515-.338-1.03-.508-1.543-.073-.22-.15-.44-.218-.66-.022-.072-.059-.094-.134-.093-.57.002-1.136.001-1.704.001-.108%200-.108%200-.108-.103%200-.674%200-1.347-.002-2.021%200-.075.026-.092.099-.092%201.143.002%202.286.002%203.43%200a.113.113%200%2001.076.017.107.107%200%2001.045.061%2018266.184%2018266.184%200%20003.92%209.51c.218.53.438%201.059.654%201.59.026.064.053.076.12.056.6-.178%201.2-.352%201.8-.531.075-.023.102-.008.126.064.204.62.412%201.239.62%201.858l.02.073c-.043.015-.083.032-.124.043l-4.085%201.25c-.065.02-.085%200-.106-.054l-1.25-3.048-1.226-2.984-.183-.449c-.01-.026-.023-.048-.043-.087z%22%2F%3E%3C%2Fsvg%3E", + "layout": [ + { + "h": 6, + "i": "877bb5c8-331c-492f-b666-2054c2ae39bd", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "b038520d-0756-4e46-a915-12a2f19a0254", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 6, + "i": "2516c785-b025-49b3-aeb4-a4735ccb2709", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "6354ea62-e82b-4323-a33d-eef92519e843", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + }, + { + "h": 6, + "i": "853d3a92-b396-4064-8762-18d7487989e0", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 6, + "i": "ae6d7c81-d921-4d4c-95ec-6b42d900ea45", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 12 + }, + { + "h": 6, + "i": "4119a1e5-32a8-4859-96e9-a5451114782b", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 18 + } + ], + "panelMap": {}, + "tags": [], + "title": "AWS Lambda Overview", + "uploadedGrafana": false, + "variables": { + "5c57a94c-e7a1-4c20-83a3-3a779b9da48e": { + "allSelected": false, + "customValue": "", + "description": "AWS Account", + "id": "5c57a94c-e7a1-4c20-83a3-3a779b9da48e", + "key": "5c57a94c-e7a1-4c20-83a3-3a779b9da48e", + "modificationUUID": "7113f462-0b71-459e-8226-f6292350b34a", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_Lambda_Invocations_sum'\nGROUP BY `cloud.account.id`\n\n", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "8e6124f0-077e-4a45-8a34-c5d5ce1c26c7": { + "allSelected": false, + "customValue": "", + "description": "AWS Region", + "id": "8e6124f0-077e-4a45-8a34-c5d5ce1c26c7", + "modificationUUID": "d090f070-1d58-4f55-87d2-91778e3fde00", + "multiSelect": false, + "name": "Region", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_Lambda_Invocations_sum'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`\n", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of times that your function code is invoked, including successful invocations and invocations that result in a function error. Invocations aren't recorded if the invocation request is throttled or otherwise results in an invocation error. The value of Invocations equals the number of requests billed.\n\nSee more at https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html", + "fillSpans": false, + "id": "877bb5c8-331c-492f-b666-2054c2ae39bd", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Lambda_Invocations_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Lambda_Invocations_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "49d33567", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "b9dfa1c9", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "86defeb5", + "key": { + "dataType": "", + "isColumn": false, + "key": "FunctionName", + "type": "" + }, + "op": "exists", + "value": "" + }, + { + "id": "f89a10c4", + "key": { + "dataType": "", + "isColumn": false, + "key": "Resource", + "type": "" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + } + ], + "having": [], + "legend": "{{FunctionName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a0e81905-5968-4dbc-b601-29bd491dec11", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region\"=\"us-east-2\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Invocations", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The amount of time that your function code spends processing an event. The billed duration for an invocation is the value of Duration rounded up to the nearest millisecond. Duration does not include cold start time.\n\nSee more at https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html", + "fillSpans": false, + "id": "b038520d-0756-4e46-a915-12a2f19a0254", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Lambda_Duration_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Lambda_Duration_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "af05252d", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "983efea5", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "88eb3092", + "key": { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "a35c6406", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + } + ], + "having": [], + "legend": "{{FunctionName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "cfde56b0-9052-4f97-aa31-63b03653f73e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "{\"aws_Lambda_Invocations_sum\", \"cloud.region\"=\"us-east-2\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Max Duration", + "yAxisUnit": "ms" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of invocations that result in a function error. Function errors include exceptions that your code throws and exceptions that the Lambda runtime throws. The runtime returns errors for issues such as timeouts and configuration errors. To calculate the error rate, divide the value of Errors by the value of Invocations. Note that the timestamp on an error metric reflects when the function was invoked, not when the error occurred.\n\nSee more at https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html", + "fillSpans": false, + "id": "2516c785-b025-49b3-aeb4-a4735ccb2709", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Lambda_Errors_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Lambda_Errors_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c67262c9", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "c5ccbbf4", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "c1b278d1", + "key": { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "a45d80e1", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + } + ], + "having": [], + "legend": "{{FunctionName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "edd02708-38ea-48ec-856e-25dade25acae", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "{\"aws_Lambda_Invocations_sum\", \"cloud.region\"=\"us-east-2\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Errors", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of invocation requests that are throttled. When all function instances are processing requests and no concurrency is available to scale up, Lambda rejects additional requests with a TooManyRequestsException error. Throttled requests and other invocation errors don't count as either Invocations or Errors.\n\nSee more at https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html", + "fillSpans": false, + "id": "6354ea62-e82b-4323-a33d-eef92519e843", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Lambda_Throttles_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Lambda_Throttles_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6c956b7d", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "5fef840b", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "6f892a9a", + "key": { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "ce91320c", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + } + ], + "having": [], + "legend": "{{FunctionName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d37ca92b-1ffa-4638-95fb-eece9fd4b1d8", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region\"=\"us-east-2\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Throttles", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of events that Lambda successfully queues for processing. This metric provides insight into the number of events that a Lambda function receives. Monitor this metric and set alarms for thresholds to check for issues. For example, to detect an undesirable number of events sent to Lambda, and to quickly diagnose issues resulting from incorrect trigger or function configurations. Mismatches between AsyncEventsReceived and Invocations can indicate a disparity in processing, events being dropped, or a potential queue backlog.\n\nSee more at https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html", + "fillSpans": false, + "id": "853d3a92-b396-4064-8762-18d7487989e0", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Lambda_AsyncEventsReceived_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Lambda_AsyncEventsReceived_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f4c6246b", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "5b7a75a1", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "4e1ba051", + "key": { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "5848f496", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + } + ], + "having": [], + "legend": "{{FunctionName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "34a8224d-d977-46d4-bb10-c0064fcbdfb0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region=\"us-east-2\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Async events received", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The time between when Lambda successfully queues the event and when the function is invoked. The value of this metric increases when events are being retried due to invocation failures or throttling. Monitor this metric and set alarms for thresholds on different statistics for when a queue buildup occurs. To troubleshoot an increase in this metric, look at the Errors metric to identify function errors and the Throttles metric to identify concurrency issues.\n\nSee more at https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html", + "fillSpans": false, + "id": "ae6d7c81-d921-4d4c-95ec-6b42d900ea45", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Lambda_AsyncEventAge_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Lambda_AsyncEventAge_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "1aee3626", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "11631fda", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "c5ea0a17", + "key": { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "1952b27e", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + } + ], + "having": [], + "legend": "{{FunctionName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "6d779378-7013-449e-9eb2-ef85649fa790", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region=\"us-east-2\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Max Async Event Age", + "yAxisUnit": "ms" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The number of events that are dropped without successfully executing the function. If you configure a dead-letter queue (DLQ) or OnFailure destination, then events are sent there before they're dropped. Events are dropped for various reasons. For example, events can exceed the maximum event age or exhaust the maximum retry attempts, or reserved concurrency might be set to 0. To troubleshoot why events are dropped, look at the Errors metric to identify function errors and the Throttles metric to identify concurrency issues.\n\nSee more at https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics-types.html", + "fillSpans": false, + "id": "4119a1e5-32a8-4859-96e9-a5451114782b", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Lambda_AsyncEventsDropped_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Lambda_AsyncEventsDropped_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a8c65389", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "2ab205c8", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "22d3c9b6", + "key": { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "1e7060a6", + "key": { + "dataType": "string", + "id": "Resource--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Resource", + "type": "tag" + }, + "op": "nexists", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "FunctionName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "FunctionName", + "type": "tag" + } + ], + "having": [], + "legend": "{{FunctionName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "7866783d-942a-4d92-b390-6ddbcb717bad", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region\"=\"us-east-2\"}" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Async events dropped", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/msk/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/msk/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..8e847b5bee --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/msk/assets/dashboards/overview_dot.json @@ -0,0 +1,1189 @@ +{ + "description": "Overview Dashboard for Amazon MSK", + "image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDY0ICg5MzUzNykgLSBodHRwczovL3NrZXRjaC5jb20gLS0+CiAgICA8dGl0bGU+SWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BbWF6b24tTWFuYWdlZC1TdHJlYW1pbmctZm9yLUthZmthXzY0PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzREMjdBOCIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjQTE2NkZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLzY0L0FyY2hfQW1hem9uLU1hbmFnZWQtU3RyZWFtaW5nLWZvci1LYWZrYV82NCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLUJHLzY0L0FuYWx5dGljcyIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIHg9IjAiIHk9IjAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgICA8cGF0aCBkPSJNMzYuMDA4MTM3MywzNi45NzcwODg4IEwzNi4wMDgxMzczLDI3Ljk4NjQ2MTYgTDM4LjAwNDA2ODYsMjcuOTg2NDYxNiBMMzguMDA0MDY4NiwzMS45ODIyOTU5IEw0MC42OTc1NzgsMjcuOTg2NDYxNiBMNDIuOTA3MDc0LDI3Ljk4NjQ2MTYgTDM5Ljc4NTQzNzQsMzIuMTkwMDc5MyBMNDMuMTY0NTQ5MiwzNi45NzcwODg4IEw0MC43OTczNzQ2LDM2Ljk3NzA4ODggTDM4LjAwNDA2ODYsMzIuNjMxNjE5IEwzOC4wMDQwNjg2LDM2Ljk3NzA4ODggTDM2LjAwODEzNzMsMzYuOTc3MDg4OCBaIE02Niw0OS4xMTc0MzI1IEw2NS4zMzEzNjMsNDkuNjk1ODI5NSBDNjMuOTg0MTA5Myw1MC44NzU1OTk2IDYyLjE3MTgwMzYsNTEuNDY1OTg0MSA2MC4zNTc1MDIsNTEuNDY1OTg0MSBDNTguNTQzMjAwNCw1MS40NjU5ODQxIDU2LjcyNzkwMDgsNTAuODc1NTk5NiA1NS4zNzg2NTEyLDQ5LjY5MjgzMjYgTDU0LjA0NTM2OTEsNDguNTM4MDM2NSBDNTIuMDg5MzU2Myw0Ni44MjM4MjM2IDQ4LjY2NTMzNiw0Ni44MjM4MjM2IDQ2LjcxMzMxNTIsNDguNTM0MDQwNiBMNDUuMzcyMDQ5Myw0OS42OTU4Mjk1IEM0Mi42Nzg1Mzk5LDUyLjA1NjM2ODYgMzguMTE2ODM4OCw1Mi4wNTgzNjY1IDM1LjQxOTMzNzUsNDkuNjkyODMyNiBMMzQuMDg2MDU1Myw0OC41MzgwMzY1IEMzMi4xMzAwNDI2LDQ2LjgyMzgyMzYgMjguNzA2MDIyMyw0Ni44MjM4MjM2IDI2Ljc1NDAwMTUsNDguNTM0MDQwNiBMMjUuNDEyNzM1Niw0OS42OTU4Mjk1IEMyMi43MTkyMjYyLDUyLjA1NjM2ODYgMTguMTU3NTI1LDUyLjA1ODM2NjUgMTUuNDYwMDIzOCw0OS42OTI4MzI2IEwxNC43OTUzNzg3LDQ5LjExNzQzMjUgTDE2LjEwMTcxNTcsNDcuNjA2MDA4MSBMMTYuNzcwMzUyNyw0OC4xODU0MDQxIEMxOC43MjczNjM1LDQ5Ljg5OTYxNyAyMi4xNTEzODM3LDQ5Ljg5OTYxNyAyNC4xMDI0MDY2LDQ4LjE4OTM5OTkgTDI1LjQ0MzY3MjUsNDcuMDI2NjEyMSBDMjguMTM3MTgxOSw0NC42NjcwNzIgMzIuNjk4ODgzLDQ0LjY2NzA3MiAzNS4zOTYzODQzLDQ3LjAzMDYwOCBMMzYuNzI5NjY2NCw0OC4xODU0MDQxIEMzOC42ODY2NzcyLDQ5Ljg5OTYxNyA0Mi4xMTA2OTc0LDQ5Ljg5OTYxNyA0NC4wNjE3MjAzLDQ4LjE4OTM5OTkgTDQ1LjQwMjk4NjIsNDcuMDI2NjEyMSBDNDguMDk2NDk1Niw0NC42NjcwNzIgNTIuNjU4MTk2OCw0NC42NjcwNzIgNTUuMzU1Njk4LDQ3LjAzMDYwOCBMNTYuNjg4OTgwMiw0OC4xODU0MDQxIEM1OC42NDQ5OTI5LDQ5Ljg5OTYxNyA2Mi4wNjkwMTMyLDQ5Ljg5OTYxNyA2NC4wMjEwMzQsNDguMTg5Mzk5OSBMNjQuNjkzNjYyOSw0Ny42MDYwMDgxIEw2Niw0OS4xMTc0MzI1IFogTTYzLjg5ODI4NDMsNjEuMTM5ODk5IEw2NS4yMDQ2MjEzLDYyLjY1MDMyNDQgTDY0LjUzNTk4NDMsNjMuMjI5NzIwMyBDNjMuMTg5NzI4Niw2NC40MDk0OTA0IDYxLjM3NzQyMjksNjQuOTk4ODc2IDU5LjU2NDExOTMsNjQuOTk4ODc2IEM1Ny43NDg4MTk3LDY0Ljk5ODg3NiA1NS45MzM1MjAxLDY0LjQwODQ5MTUgNTQuNTgzMjcyNiw2My4yMjU3MjQ1IEw1My4yNDk5OTA0LDYyLjA3MDkyODQgQzUxLjI5Mzk3NzcsNjAuMzU4NzEzNCA0Ny44Njk5NTc0LDYwLjM1ODcxMzQgNDUuOTE3OTM2NSw2Mi4wNjY5MzI2IEw0NC41NzY2NzA2LDYzLjIyOTcyMDMgQzQxLjg4NTE1NzIsNjUuNTkwMjU5NSAzNy4zMjM0NTYsNjUuNTkxMjU4NCAzNC42MjM5NTg5LDYzLjIyNTcyNDUgTDMzLjI5MDY3NjcsNjIuMDcwOTI4NCBDMzEuMzM1NjYxOSw2MC4zNTg3MTM0IDI3LjkxMTY0MTcsNjAuMzU4NzEzNCAyNS45NTg2MjI4LDYyLjA2NjkzMjYgTDI0LjYxNzM1NjksNjMuMjI5NzIwMyBDMjEuOTI0ODQ1NSw2NS41OTAyNTk1IDE3LjM2MzE0NDQsNjUuNTkxMjU4NCAxNC42NjQ2NDUxLDYzLjIyNTcyNDUgTDE0LDYyLjY1MDMyNDQgTDE1LjMwNjMzNzEsNjEuMTM5ODk5IEwxNS45NzQ5NzQxLDYxLjcxOTI5NSBDMTcuOTMxOTg0OCw2My40MzE1MSAyMS4zNTYwMDUxLDYzLjQzMjUwODkgMjMuMzA3MDI4LDYxLjcyMjI5MTggTDI0LjY0ODI5MzksNjAuNTYwNTAzIEMyNy4zNDI4MDEyLDU4LjIwMDk2MjggMzEuOTAyNTA2NCw1OC4xOTk5NjM5IDM0LjYwMTAwNTYsNjAuNTYzNDk5OSBMMzUuOTM0Mjg3OCw2MS43MTkyOTUgQzM3Ljg5MTI5ODUsNjMuNDMxNTEgNDEuMzE1MzE4OCw2My40MzI1MDg5IDQzLjI2NjM0MTcsNjEuNzIyMjkxOCBMNDQuNjA3NjA3Niw2MC41NjA1MDMgQzQ3LjMwMjExNDksNTguMjAwOTYyOCA1MS44NjE4MjAxLDU4LjE5OTk2MzkgNTQuNTYwMzE5Myw2MC41NjM0OTk5IEw1NS44OTM2MDE1LDYxLjcxOTI5NSBDNTcuODUwNjEyMiw2My40MzE1MSA2MS4yNzQ2MzI1LDYzLjQzMjUwODkgNjMuMjI1NjU1NCw2MS43MjIyOTE4IEw2My44OTgyODQzLDYxLjEzOTg5OSBaIE02My44OTgyODQzLDU0LjgwNjUwMTYgTDY1LjIwNDYyMTMsNTYuMzE1OTI4IEw2NC41MzU5ODQzLDU2Ljg5NTMyNCBDNjEuODQzNDcyOSw1OS4yNTY4NjIxIDU3LjI4MTc3MTgsNTkuMjU3ODYxIDU0LjU4MzI3MjYsNTYuODkyMzI3MSBMNTMuMjQ5OTkwNCw1NS43Mzc1MzEgQzUxLjI5Mzk3NzcsNTQuMDIzMzE4MSA0Ny44Njk5NTc0LDU0LjAyNDMxNyA0NS45MTc5MzY1LDU1LjczMzUzNTEgTDQ0LjU3NjY3MDYsNTYuODk2MzIyOSBDNDMuMjMwNDE0OSw1OC4wNzYwOTMgNDEuNDE3MTExMyw1OC42NjU0Nzg2IDM5LjYwNDgwNTYsNTguNjY1NDc4NiBDMzcuNzg5NTA2LDU4LjY2NTQ3ODYgMzUuOTc0MjA2NCw1OC4wNzUwOTQxIDM0LjYyMzk1ODksNTYuODkyMzI3MSBMMzMuMjkwNjc2Nyw1NS43Mzc1MzEgQzMxLjMzNTY2MTksNTQuMDIzMzE4MSAyNy45MTE2NDE3LDU0LjAyNDMxNyAyNS45NTg2MjI4LDU1LjczMzUzNTEgTDI0LjYxNzM1NjksNTYuODk2MzIyOSBDMjEuOTI1ODQzNSw1OS4yNTY4NjIxIDE3LjM2NDE0MjMsNTkuMjU2ODYyMSAxNC42NjQ2NDUxLDU2Ljg5MjMyNzEgTDE0LDU2LjMxNTkyOCBMMTUuMzA2MzM3MSw1NC44MDY1MDE2IEwxNS45NzQ5NzQxLDU1LjM4NTg5NzYgQzE3LjkzMTk4NDgsNTcuMTAwMTEwNSAyMS4zNTYwMDUxLDU3LjA5OTExMTUgMjMuMzA3MDI4LDU1LjM4ODg5NDQgTDI0LjY0ODI5MzksNTQuMjI3MTA1NiBDMjcuMzQyODAxMiw1MS44Njc1NjU0IDMxLjkwNDUwMjQsNTEuODY1NTY3NSAzNC42MDEwMDU2LDU0LjIzMDEwMjUgTDM1LjkzNDI4NzgsNTUuMzg0ODk4NiBDMzcuODkxMjk4NSw1Ny4xMDAxMTA1IDQxLjMxNTMxODgsNTcuMDk5MTExNSA0My4yNjYzNDE3LDU1LjM4ODg5NDQgTDQ0LjYwNzYwNzYsNTQuMjI3MTA1NiBDNDcuMzAyMTE0OSw1MS44Njc1NjU0IDUxLjg2MzgxNjEsNTEuODY1NTY3NSA1NC41NjAzMTkzLDU0LjIzMDEwMjUgTDU1Ljg5MzYwMTUsNTUuMzg0ODk4NiBDNTcuODUwNjEyMiw1Ny4xMDAxMTA1IDYxLjI3NDYzMjUsNTcuMDk5MTExNSA2My4yMjU2NTU0LDU1LjM4ODg5NDQgTDYzLjg5ODI4NDMsNTQuODA2NTAxNiBaIE0yNC4wMzI1NDksMzcuOTc2MDQ3NCBDMjUuMTMzMzA1MiwzNy45NzYwNDc0IDI2LjAyODQ4MDQsMzguODcyMTEzMiAyNi4wMjg0ODA0LDM5Ljk3Mzk2NDYgQzI2LjAyODQ4MDQsNDEuMDc1ODE1OSAyNS4xMzMzMDUyLDQxLjk3MTg4MTcgMjQuMDMyNTQ5LDQxLjk3MTg4MTcgQzIyLjkzMTc5MjksNDEuOTcxODgxNyAyMi4wMzY2MTc3LDQxLjA3NTgxNTkgMjIuMDM2NjE3NywzOS45NzM5NjQ2IEMyMi4wMzY2MTc3LDM4Ljg3MjExMzIgMjIuOTMxNzkyOSwzNy45NzYwNDc0IDI0LjAzMjU0OSwzNy45NzYwNDc0IEwyNC4wMzI1NDksMzcuOTc2MDQ3NCBaIE0zOS4wMDIwMzQzLDE2Ljk5NzkxNzIgQzQwLjEwMjc5MDUsMTYuOTk3OTE3MiA0MC45OTc5NjU3LDE3Ljg5Mzk4MyA0MC45OTc5NjU3LDE4Ljk5NTgzNDMgQzQwLjk5Nzk2NTcsMjAuMDk3Njg1NiA0MC4xMDI3OTA1LDIwLjk5Mzc1MTUgMzkuMDAyMDM0MywyMC45OTM3NTE1IEMzNy45MDEyNzgyLDIwLjk5Mzc1MTUgMzcuMDA2MTAyOSwyMC4wOTc2ODU2IDM3LjAwNjEwMjksMTguOTk1ODM0MyBDMzcuMDA2MTAyOSwxNy44OTM5ODMgMzcuOTAxMjc4MiwxNi45OTc5MTcyIDM5LjAwMjAzNDMsMTYuOTk3OTE3MiBMMzkuMDAyMDM0MywxNi45OTc5MTcyIFogTTU1Ljk2NzQ1MSwzOS45NzM5NjQ2IEM1NS45Njc0NTEsNDEuMDc1ODE1OSA1NS4wNzIyNzU3LDQxLjk3MTg4MTcgNTMuOTcxNTE5Niw0MS45NzE4ODE3IEM1Mi44NzA3NjM0LDQxLjk3MTg4MTcgNTEuOTc1NTg4Miw0MS4wNzU4MTU5IDUxLjk3NTU4ODIsMzkuOTczOTY0NiBDNTEuOTc1NTg4MiwzOC44NzIxMTMyIDUyLjg3MDc2MzQsMzcuOTc2MDQ3NCA1My45NzE1MTk2LDM3Ljk3NjA0NzQgQzU1LjA3MjI3NTcsMzcuOTc2MDQ3NCA1NS45Njc0NTEsMzguODcyMTEzMiA1NS45Njc0NTEsMzkuOTczOTY0NiBMNTUuOTY3NDUxLDM5Ljk3Mzk2NDYgWiBNMzkuMDAyMDM0MywyMi45OTE2Njg3IEMzOS42NjY2Nzk1LDIyLjk5MTY2ODcgNDAuMjg1NDE4MiwyMi44MTI4NTUxIDQwLjgzNzI5MzIsMjIuNTIzMTU3MSBMNTEuMDA0NTY3NiwzNy4zMjY3MjQzIEM1MC41ODg0MTU5LDM3Ljc5MjIzOSA1MC4yODMwMzg0LDM4LjM1MjY1NDggNTAuMTIyMzY1OSwzOC45NzUwMDYgTDI3Ljg4MTcwMjcsMzguOTc1MDA2IEMyNy43MjEwMzAyLDM4LjM1MjY1NDggMjcuNDE1NjUyNywzNy43OTIyMzkgMjYuOTk5NTAxLDM3LjMyNjcyNDMgTDM3LjE2Njc3NTQsMjIuNTIzMTU3MSBDMzcuNzE4NjUwNCwyMi44MTI4NTUxIDM4LjMzNzM4OTIsMjIuOTkxNjY4NyAzOS4wMDIwMzQzLDIyLjk5MTY2ODcgTDM5LjAwMjAzNDMsMjIuOTkxNjY4NyBaIE0yNC4wMzI1NDksNDMuOTY5Nzk4OSBDMjUuODg2NzY5Myw0My45Njk3OTg5IDI3LjQzNjYxLDQyLjY5MTEzMTkgMjcuODgxNzAyNyw0MC45NzI5MjMxIEw1MC4xMjIzNjU5LDQwLjk3MjkyMzEgQzUwLjU2NzQ1ODYsNDIuNjkxMTMxOSA1Mi4xMTcyOTk0LDQzLjk2OTc5ODkgNTMuOTcxNTE5Niw0My45Njk3OTg5IEM1Ni4xNzMwMzE5LDQzLjk2OTc5ODkgNTcuOTYzMzgyMyw0Mi4xNzc2NjcyIDU3Ljk2MzM4MjMsMzkuOTczOTY0NiBDNTcuOTYzMzgyMywzNy43NzAyNjE5IDU2LjE3MzAzMTksMzUuOTc4MTMwMiA1My45NzE1MTk2LDM1Ljk3ODEzMDIgQzUzLjUxMTQ1NzQsMzUuOTc4MTMwMiA1My4wNzYzNDQ0LDM2LjA3MjAzMjMgNTIuNjYzMTg2NiwzNi4yMTU4ODI0IEw0Mi4zMzcyMzU2LDIxLjE4MDU1NjcgQzQyLjc1MDM5MzQsMjAuNTUyMjExOCA0Mi45OTM4OTcxLDE5LjgwMjk5MjkgNDIuOTkzODk3MSwxOC45OTU4MzQzIEM0Mi45OTM4OTcxLDE2Ljc5MjEzMTcgNDEuMjAzNTQ2NiwxNSAzOS4wMDIwMzQzLDE1IEMzNi44MDA1MjIsMTUgMzUuMDEwMTcxNiwxNi43OTIxMzE3IDM1LjAxMDE3MTYsMTguOTk1ODM0MyBDMzUuMDEwMTcxNiwxOS44MDI5OTI5IDM1LjI1MzY3NTIsMjAuNTUyMjExOCAzNS42NjY4MzMsMjEuMTgwNTU2NyBMMjUuMzQwODgyLDM2LjIxNTg4MjQgQzI0LjkyNzcyNDMsMzYuMDcyMDMyMyAyNC40OTI2MTEyLDM1Ljk3ODEzMDIgMjQuMDMyNTQ5LDM1Ljk3ODEzMDIgQzIxLjgzMTAzNjcsMzUuOTc4MTMwMiAyMC4wNDA2ODYzLDM3Ljc3MDI2MTkgMjAuMDQwNjg2MywzOS45NzM5NjQ2IEMyMC4wNDA2ODYzLDQyLjE3NzY2NzIgMjEuODMxMDM2Nyw0My45Njk3OTg5IDI0LjAzMjU0OSw0My45Njk3OTg5IEwyNC4wMzI1NDksNDMuOTY5Nzk4OSBaIiBpZD0iQW1hem9uLU1hbmFnZWQtU3RyZWFtaW5nLWZvci1LYWZrYS1JY29uXzY0X1NxdWlkIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPg==", + "layout": [ + { + "h": 6, + "i": "238ff900-c0e4-4e29-83e3-d6acfcc9c6e5", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "e201e9c4-7a52-4558-a5f9-10d8686a6890", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 6, + "i": "fcf5c63c-5da6-4f96-9243-5f42980df049", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "601ec1b7-f614-4678-b445-7f6b8fec2e16", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + }, + { + "h": 6, + "i": "e2ab4538-bc01-4e96-b3e0-c7f73a2c972f", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 6, + "i": "f15ba73d-d85e-48ac-b478-e6911965e9e3", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 12 + } + ], + "panelMap": {}, + "tags": [], + "title": "Overview of Amazon MSK", + "uploadedGrafana": false, + "variables": { + "627dec44-a04e-44c7-9dd4-b0fdaf4b5b62": { + "allSelected": false, + "customValue": "", + "description": "Cloud Account ID of AWS", + "id": "627dec44-a04e-44c7-9dd4-b0fdaf4b5b62", + "key": "627dec44-a04e-44c7-9dd4-b0fdaf4b5b62", + "modificationUUID": "b23952ff-b081-468c-bf50-96a062383743", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_Kafka_KafkaDataLogsDiskUsed_max' GROUP BY `cloud.account.id`\n", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "c69e90bd-adaa-4f75-9108-1c6e91a00fbc": { + "allSelected": false, + "customValue": "", + "description": "AWS Region", + "id": "c69e90bd-adaa-4f75-9108-1c6e91a00fbc", + "modificationUUID": "07f23d13-c94e-452c-b917-04124f910942", + "multiSelect": false, + "name": "Region", + "order": 0, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_Kafka_KafkaDataLogsDiskUsed_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region\n", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "238ff900-c0e4-4e29-83e3-d6acfcc9c6e5", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Kafka_KafkaDataLogsDiskUsed_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Kafka_KafkaDataLogsDiskUsed_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "be8452fb", + "key": { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "8b658843", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "9cbc21ee", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "Cluster_Name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Cluster_Name", + "type": "tag" + }, + { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + } + ], + "having": [], + "legend": "Broker {{Broker_ID}} ({{Cluster_Name}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "caafc0b7-fc3c-472d-87cd-ae176e4d9602", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Disk usage by (Cluster, Broker)", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "e201e9c4-7a52-4558-a5f9-10d8686a6890", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Kafka_CpuUser_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Kafka_CpuUser_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "03054a63", + "key": { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "754c3c99", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "09ad3a79", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + { + "dataType": "string", + "id": "Cluster_Name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Cluster_Name", + "type": "tag" + } + ], + "having": [], + "legend": "Broker {{Broker_ID}} ({{Cluster_Name}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "476bd12d-7454-41e9-89b3-27406083bbaa", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU (User) usage by (Cluster, Broker)", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "fcf5c63c-5da6-4f96-9243-5f42980df049", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Kafka_CpuSystem_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Kafka_CpuSystem_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "1c4feb03", + "key": { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "3e5db1d7", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "9e9bf94c", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + { + "dataType": "string", + "id": "Cluster_Name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Cluster_Name", + "type": "tag" + } + ], + "having": [], + "legend": "Broker {{Broker_ID}} ({{Cluster_Name}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "91132e98-9068-48cf-ad89-af9a4bcb5a40", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU (System) usage by (Cluster, Broker)", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "601ec1b7-f614-4678-b445-7f6b8fec2e16", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Kafka_NetworkTxPackets_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Kafka_NetworkTxPackets_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "df3f9941", + "key": { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "2233f9a5", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "52bd69d4", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + { + "dataType": "string", + "id": "Cluster_Name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Cluster_Name", + "type": "tag" + } + ], + "having": [], + "legend": "Broker {{Broker_ID}} ({{Cluster_Name}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "47d4e8b7-2ca3-412c-a48a-bfbd592b0709", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": " Network TX packets by (Cluster, Broker)", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "e2ab4538-bc01-4e96-b3e0-c7f73a2c972f", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Kafka_NetworkRxPackets_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Kafka_NetworkRxPackets_sum", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a00425be", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "726d60d7", + "key": { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + "op": "exists", + "value": "" + }, + { + "id": "02adea69", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "Broker_ID--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Broker_ID", + "type": "tag" + }, + { + "dataType": "string", + "id": "Cluster_Name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Cluster_Name", + "type": "tag" + } + ], + "having": [], + "legend": "Broker {{Broker_ID}} ({{Cluster_Name}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "1c6ec479-a7d2-4f8f-bb31-1bf2a6b6fc25", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network RX packets by (Cluster, Broker)", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "f15ba73d-d85e-48ac-b478-e6911965e9e3", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_Kafka_SumOffsetLag_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_Kafka_SumOffsetLag_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "0626eebd", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "b633d867", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "Cluster_Name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "Cluster_Name", + "type": "tag" + } + ], + "having": [], + "legend": "({{Cluster_Name}})", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "49e4cbd5-d4d1-40a4-8724-7d6580dee56e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Lag Offset by Cluster", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/rds/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/rds/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..efd48de034 --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/rds/assets/dashboards/overview_dot.json @@ -0,0 +1,1945 @@ +{ + "description": "Overview of RDS instances in a region", + "image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8dGl0bGU+SWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BbWF6b24tUkRTXzY0PC90aXRsZT4KICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iMCUiIHkxPSIxMDAlIiB4Mj0iMTAwJSIgeTI9IjAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyRTI3QUQiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzUyN0ZGRiIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8ZyBpZD0iSWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BbWF6b24tUkRTXzY0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIKICAgIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8ZyBpZD0iSWNvbi1BcmNoaXRlY3R1cmUtQkcvNjQvRGF0YWJhc2UiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPgogICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlIiB4PSIwIiB5PSIwIiB3aWR0aD0iODAiIGhlaWdodD0iODAiPjwvcmVjdD4KICAgIDwvZz4KICAgIDxwYXRoCiAgICAgIGQ9Ik0xNS40MTQsMTQgTDI0LjcwNywyMy4yOTMgTDIzLjI5MywyNC43MDcgTDE0LDE1LjQxNCBMMTQsMjMgTDEyLDIzIEwxMiwxMyBDMTIsMTIuNDQ4IDEyLjQ0NywxMiAxMywxMiBMMjMsMTIgTDIzLDE0IEwxNS40MTQsMTQgWiBNNjgsMTMgTDY4LDIzIEw2NiwyMyBMNjYsMTUuNDE0IEw1Ni43MDcsMjQuNzA3IEw1NS4yOTMsMjMuMjkzIEw2NC41ODYsMTQgTDU3LDE0IEw1NywxMiBMNjcsMTIgQzY3LjU1MywxMiA2OCwxMi40NDggNjgsMTMgTDY4LDEzIFogTTY2LDU3IEw2OCw1NyBMNjgsNjcgQzY4LDY3LjU1MiA2Ny41NTMsNjggNjcsNjggTDU3LDY4IEw1Nyw2NiBMNjQuNTg2LDY2IEw1NS4yOTMsNTYuNzA3IEw1Ni43MDcsNTUuMjkzIEw2Niw2NC41ODYgTDY2LDU3IFogTTY1LjUsMzkuMjEzIEM2NS41LDM1Ljg5NCA2MS42NjgsMzIuNjE1IDU1LjI1LDMwLjQ0MiBMNTUuODkxLDI4LjU0OCBDNjMuMjY4LDMxLjA0NSA2Ny41LDM0LjkzMiA2Ny41LDM5LjIxMyBDNjcuNSw0My40OTUgNjMuMjY4LDQ3LjM4MyA1NS44OSw0OS44NzkgTDU1LjI0OSw0Ny45ODQgQzYxLjY2OCw0NS44MTIgNjUuNSw0Mi41MzQgNjUuNSwzOS4yMTMgTDY1LjUsMzkuMjEzIFogTTE0LjU1NiwzOS4yMTMgQzE0LjU1Niw0Mi4zOTMgMTguMTQzLDQ1LjU4NSAyNC4xNTIsNDcuNzUzIEwyMy40NzMsNDkuNjM0IEMxNi41MzUsNDcuMTMxIDEyLjU1Niw0My4zMzMgMTIuNTU2LDM5LjIxMyBDMTIuNTU2LDM1LjA5NCAxNi41MzUsMzEuMjk2IDIzLjQ3MywyOC43OTIgTDI0LjE1MiwzMC42NzMgQzE4LjE0MywzMi44NDIgMTQuNTU2LDM2LjAzNCAxNC41NTYsMzkuMjEzIEwxNC41NTYsMzkuMjEzIFogTTI0LjcwNyw1Ni43MDcgTDE1LjQxNCw2NiBMMjMsNjYgTDIzLDY4IEwxMyw2OCBDMTIuNDQ3LDY4IDEyLDY3LjU1MiAxMiw2NyBMMTIsNTcgTDE0LDU3IEwxNCw2NC41ODYgTDIzLjI5Myw1NS4yOTMgTDI0LjcwNyw1Ni43MDcgWiBNNDAsMzEuMjg2IEMzMi44NTQsMzEuMjg2IDI5LDI5LjQ0IDI5LDI4LjY4NiBDMjksMjcuOTMxIDMyLjg1NCwyNi4wODYgNDAsMjYuMDg2IEM0Ny4xNDUsMjYuMDg2IDUxLDI3LjkzMSA1MSwyOC42ODYgQzUxLDI5LjQ0IDQ3LjE0NSwzMS4yODYgNDAsMzEuMjg2IEw0MCwzMS4yODYgWiBNNDAuMDI5LDM5LjAzMSBDMzMuMTg3LDM5LjAzMSAyOSwzNy4xNjIgMjksMzYuMTQ1IEwyOSwzMS4yODQgQzMxLjQ2MywzMi42NDMgMzUuODMyLDMzLjI4NiA0MCwzMy4yODYgQzQ0LjE2OCwzMy4yODYgNDguNTM3LDMyLjY0MyA1MSwzMS4yODQgTDUxLDM2LjE0NSBDNTEsMzcuMTYzIDQ2LjgzNSwzOS4wMzEgNDAuMDI5LDM5LjAzMSBMNDAuMDI5LDM5LjAzMSBaIE00MC4wMjksNDYuNjY3IEMzMy4xODcsNDYuNjY3IDI5LDQ0Ljc5OCAyOSw0My43ODEgTDI5LDM4Ljg2MiBDMzEuNDMxLDQwLjI5MSAzNS43NDIsNDEuMDMxIDQwLjAyOSw0MS4wMzEgQzQ0LjI5Miw0MS4wMzEgNDguNTc4LDQwLjI5MiA1MSwzOC44NjcgTDUxLDQzLjc4MSBDNTEsNDQuNzk5IDQ2LjgzNSw0Ni42NjcgNDAuMDI5LDQ2LjY2NyBMNDAuMDI5LDQ2LjY2NyBaIE00MCw1My41MTggQzMyLjg4Myw1My41MTggMjksNTEuNjA1IDI5LDUwLjYyMiBMMjksNDYuNDk4IEMzMS40MzEsNDcuOTI3IDM1Ljc0Miw0OC42NjcgNDAuMDI5LDQ4LjY2NyBDNDQuMjkyLDQ4LjY2NyA0OC41NzgsNDcuOTI5IDUxLDQ2LjUwMyBMNTEsNTAuNjIyIEM1MSw1MS42MDUgNDcuMTE3LDUzLjUxOCA0MCw1My41MTggTDQwLDUzLjUxOCBaIE00MCwyNC4wODYgQzMzLjczOSwyNC4wODYgMjcsMjUuNTI1IDI3LDI4LjY4NiBMMjcsNTAuNjIyIEMyNyw1My44MzYgMzMuNTQsNTUuNTE4IDQwLDU1LjUxOCBDNDYuNDYsNTUuNTE4IDUzLDUzLjgzNiA1Myw1MC42MjIgTDUzLDI4LjY4NiBDNTMsMjUuNTI1IDQ2LjI2MSwyNC4wODYgNDAsMjQuMDg2IEw0MCwyNC4wODYgWiIKICAgICAgaWQ9IkFtYXpvbi1SRFNfSWNvbl82NF9TcXVpZCIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogIDwvZz4KPC9zdmc+", + "layout": [ + { + "h": 5, + "i": "45856010-5998-4762-99ef-ffa799bf8e6d", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "b533700b-71e8-4294-8f2a-db48a9c407b2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 5, + "i": "d64bed38-c9c0-4fac-a30a-1d7e73b4ee55", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 5 + }, + { + "h": 5, + "i": "b3c3fddc-5497-41e6-8f0e-e1802c9e43ae", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 5 + }, + { + "h": 5, + "i": "e5f430cc-2b07-4844-8c7f-6543ea12875c", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 10 + }, + { + "h": 5, + "i": "a9f22b15-c22d-4505-a5b4-6f5878500565", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 10 + }, + { + "h": 5, + "i": "71652346-286f-44f2-9edc-aab33fe514ec", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 5, + "i": "7f8d7340-eeb5-47cb-a2b1-be653275c2d0", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + } + ], + "panelMap": {}, + "tags": [], + "title": "RDS Overview", + "uploadedGrafana": false, + "variables": { + "Account": { + "allSelected": false, + "customValue": "", + "description": "AWS Account", + "id": "d5e770d2-5ab7-4481-b677-189e8eca218c", + "key": "d5e770d2-5ab7-4481-b677-189e8eca218c", + "modificationUUID": "619393f3-4796-40ed-a4b1-8b98fd5ebc48", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_RDS_CPUUtilization_sum'\nGROUP BY `cloud.account.id`", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "Region": { + "allSelected": false, + "customValue": "", + "description": "AWS Region", + "id": "10aede9a-ef01-42f3-9946-2260dec2a398", + "key": "10aede9a-ef01-42f3-9946-2260dec2a398", + "modificationUUID": "c810775c-052f-45dd-948b-77fc3cc979e9", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_RDS_CPUUtilization_sum'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "45856010-5998-4762-99ef-ffa799bf8e6d", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_CPUUtilization_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_CPUUtilization_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f8e72efc", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "4e68256a", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "a5082e1b", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0970e1f2-18fe-45c3-9045-6a5c254f8fe3", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU Utilization", + "yAxisUnit": "percent" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "The amount of available random access memory.\n\nFor MariaDB, MySQL, Oracle, and PostgreSQL DB instances, this metric reports the value of the MemAvailable field of /proc/meminfo.", + "fillSpans": false, + "id": "b533700b-71e8-4294-8f2a-db48a9c407b2", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_FreeableMemory_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_FreeableMemory_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "723ba84a", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "f8227b55", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "3951e8ed", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "530a64c6-c4e2-416a-b172-a79fed4ab258", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Free Memory", + "yAxisUnit": "decbytes" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "d64bed38-c9c0-4fac-a30a-1d7e73b4ee55", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_DatabaseConnections_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_DatabaseConnections_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "31191f74", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "aa644bbf", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "e5b31a18", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ade71dbc-c62b-487d-9bf5-a7fba2a73a86", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Database Connections", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "b3c3fddc-5497-41e6-8f0e-e1802c9e43ae", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_ReadLatency_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_ReadLatency_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "83f232af", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "2677873f", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "78eddd81", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}} - Reads", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_WriteLatency_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_WriteLatency_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "e2df7981", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "6daad748", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "28057159", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}} - Writes", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "3327c4aa-f47b-4019-8eed-1e0f68edc071", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Disk Read / Write Latency", + "yAxisUnit": "s" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "e5f430cc-2b07-4844-8c7f-6543ea12875c", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_ReadIOPS_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_ReadIOPS_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "17142c3d", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "27fcc87d", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "5510ad1d", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}} - Reads", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_WriteIOPS_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_WriteIOPS_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "a050e23a", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "6df80990", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "72bc50d0", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}} - Writes", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e41982c2-d975-41c3-aca3-62259806c112", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Disk Read / Write IOPS", + "yAxisUnit": "cps" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "a9f22b15-c22d-4505-a5b4-6f5878500565", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_ReadThroughput_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_ReadThroughput_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a298d4bd", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "810c0586", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "fa40ae81", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}} - Reads", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_WriteThroughput_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_WriteThroughput_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "d46f3f53", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "4ec47a19", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "a0e648d6", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}} - Writes", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "314ca22f-c50f-4b5a-9ab0-285488f0f220", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Disk Read / Write Throughput", + "yAxisUnit": "binBps" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "71652346-286f-44f2-9edc-aab33fe514ec", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_DiskQueueDepth_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_DiskQueueDepth_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f64f0096", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "18ad7c1e", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "5d3f4963", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f0c67967-a129-4e88-883f-01454c729864", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Disk Queue Depth", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "7f8d7340-eeb5-47cb-a2b1-be653275c2d0", + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_RDS_FreeStorageSpace_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_RDS_FreeStorageSpace_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7786e529", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "f27b4616", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "51ca6d55", + "key": { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + }, + "op": "!=", + "value": "" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + { + "dataType": "string", + "id": "DBInstanceIdentifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "DBInstanceIdentifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{DBInstanceIdentifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e3f55e7f-9701-4145-a177-672d6d380f3b", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Free Storage Space", + "yAxisUnit": "bytes" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/sns/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/sns/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..d39f071df6 --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/sns/assets/dashboards/overview_dot.json @@ -0,0 +1,818 @@ +{ + "description": "View key AWS SNS metrics with an out of the box dashboard.", + "image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDY0ICg5MzUzNykgLSBodHRwczovL3NrZXRjaC5jb20gLS0+CiAgICA8dGl0bGU+SWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BV1MtU2ltcGxlLU5vdGlmaWNhdGlvbi1TZXJ2aWNlXzY0PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0IwMDg0RCIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkY0RjhCIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLzY0L0FyY2hfQVdTLVNpbXBsZS1Ob3RpZmljYXRpb24tU2VydmljZV82NCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLUJHLzY0L0FwcGxpY2F0aW9uLUludGVncmF0aW9uIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTEpIj4KICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIj48L3JlY3Q+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik0xNywzOCBDMTguMTAzLDM4IDE5LDM4Ljg5NyAxOSw0MCBDMTksNDEuMTAzIDE4LjEwMyw0MiAxNyw0MiBDMTUuODk3LDQyIDE1LDQxLjEwMyAxNSw0MCBDMTUsMzguODk3IDE1Ljg5NywzOCAxNywzOCBMMTcsMzggWiBNNDEsNjQgQzI5LjMxNCw2NCAxOS4yODksNTUuNDY2IDE3LjE5NCw0My45OCBDMTguOTY1LDQzLjg5NCAyMC40MjcsNDIuNjU5IDIwLjg1Nyw0MSBMMjcsNDEgTDI3LDM5IEwyMC44NTcsMzkgQzIwLjQyNywzNy4zNDIgMTguOTY2LDM2LjEwNyAxNy4xOTUsMzYuMDIgQzE5LjI4NSwyNC43MSAyOS41MTEsMTYgNDEsMTYgQzQ1LjMxMywxNiA0OS44MzIsMTcuNjIyIDU0LjQyOSwyMC44MjEgTDU1LjU3MSwxOS4xNzkgQzUwLjYzMywxNS43NDMgNDUuNzMsMTQgNDEsMTQgQzI4LjI3LDE0IDE2Ljk0OSwyMy44NjUgMTUuMDYzLDM2LjUyMSBDMTMuODM5LDM3LjIwNyAxMywzOC41IDEzLDQwIEMxMyw0MS41IDEzLjgzOSw0Mi43OTMgMTUuMDYzLDQzLjQ3OCBDMTYuOTcsNTYuMzQxIDI4LjA1Niw2NiA0MSw2NiBDNDYuNDA3LDY2IDUxLjk0Miw2NC4xNTcgNTYuNTg1LDYwLjgxMSBMNTUuNDE1LDU5LjE4OSBDNTEuMTEsNjIuMjkyIDQ1Ljk5MSw2NCA0MSw2NCBMNDEsNjQgWiBNMzAuMTAxLDM2LjQ0MiBDMzEuOTU1LDM2Ljg5NSAzNC4yNzUsMzcgMzYsMzcgQzM3LjY0MiwzNyAzOS44MjMsMzYuOTA1IDQxLjYyOSwzNi41MDYgTDM3LjEwNSw0NS41NTMgQzM3LjAzNiw0NS42OTEgMzcsNDUuODQ1IDM3LDQ2IEwzNyw1MC40NTMgQzM2LjE5OSw1MC45NjQgMzQuODMzLDUxLjgxMiAzNCw1MS45ODYgTDM0LDQ2IEMzNCw0NS44NjggMzMuOTc0LDQ1LjczNyAzMy45MjMsNDUuNjE1IEwzMC4xMDEsMzYuNDQyIFogTTM2LDMzIEM0MC4wMjUsMzMgNDIuMTc0LDMzLjYwNCA0Mi44NDEsMzQgQzQyLjE3NCwzNC4zOTYgNDAuMDI1LDM1IDM2LDM1IEMzMS45NzUsMzUgMjkuODI2LDM0LjM5NiAyOS4xNTksMzQgQzI5LjgyNiwzMy42MDQgMzEuOTc1LDMzIDM2LDMzIEwzNiwzMyBaIE0zMyw1NCBMMzQsNTQgQzM0LjA0Myw1NCAzNC4wODYsNTMuOTk3IDM0LjEyOCw1My45OTIgQzM1LjM1Miw1My44MzMgMzYuOTA5LDUyLjg4NyAzOC4yNzIsNTIuMDEzIEwzOC41MzUsNTEuODQ1IEMzOC44MjQsNTEuNjYxIDM5LDUxLjM0MiAzOSw1MSBMMzksNDYuMjM2IEw0NC41NTksMzUuMTIgQzQ0LjgzMywzNC44MDEgNDUsMzQuNDM0IDQ1LDM0IEM0NSwzMS4zOSAzOS4zNjEsMzEgMzYsMzEgQzMyLjYzOSwzMSAyNywzMS4zOSAyNywzNCBDMjcsMzQuMzY2IDI3LjEyLDM0LjY4NCAyNy4zMiwzNC45NjcgTDMyLDQ2LjIgTDMyLDUzIEMzMiw1My41NTIgMzIuNDQ3LDU0IDMzLDU0IEwzMyw1NCBaIE02Miw1MyBDNjMuMTAzLDUzIDY0LDUzLjg5NyA2NCw1NSBDNjQsNTYuMTAzIDYzLjEwMyw1NyA2Miw1NyBDNjAuODk3LDU3IDYwLDU2LjEwMyA2MCw1NSBDNjAsNTMuODk3IDYwLjg5Nyw1MyA2Miw1MyBMNjIsNTMgWiBNNjIsMjMgQzYzLjEwMywyMyA2NCwyMy44OTcgNjQsMjUgQzY0LDI2LjEwMyA2My4xMDMsMjcgNjIsMjcgQzYwLjg5NywyNyA2MCwyNi4xMDMgNjAsMjUgQzYwLDIzLjg5NyA2MC44OTcsMjMgNjIsMjMgTDYyLDIzIFogTTY0LDM4IEM2NS4xMDMsMzggNjYsMzguODk3IDY2LDQwIEM2Niw0MS4xMDMgNjUuMTAzLDQyIDY0LDQyIEM2Mi44OTcsNDIgNjIsNDEuMTAzIDYyLDQwIEM2MiwzOC44OTcgNjIuODk3LDM4IDY0LDM4IEw2NCwzOCBaIE01NCw0MSBMNjAuMTQzLDQxIEM2MC41ODksNDIuNzIgNjIuMTQyLDQ0IDY0LDQ0IEM2Ni4yMDYsNDQgNjgsNDIuMjA2IDY4LDQwIEM2OCwzNy43OTQgNjYuMjA2LDM2IDY0LDM2IEM2Mi4xNDIsMzYgNjAuNTg5LDM3LjI4IDYwLjE0MywzOSBMNTQsMzkgTDU0LDI2IEw1OC4xNDMsMjYgQzU4LjU4OSwyNy43MiA2MC4xNDIsMjkgNjIsMjkgQzY0LjIwNiwyOSA2NiwyNy4yMDYgNjYsMjUgQzY2LDIyLjc5NCA2NC4yMDYsMjEgNjIsMjEgQzYwLjE0MiwyMSA1OC41ODksMjIuMjggNTguMTQzLDI0IEw1MywyNCBDNTIuNDQ3LDI0IDUyLDI0LjQ0OCA1MiwyNSBMNTIsMzkgTDQ1LDM5IEw0NSw0MSBMNTIsNDEgTDUyLDU1IEM1Miw1NS41NTIgNTIuNDQ3LDU2IDUzLDU2IEw1OC4xNDMsNTYgQzU4LjU4OSw1Ny43MiA2MC4xNDIsNTkgNjIsNTkgQzY0LjIwNiw1OSA2Niw1Ny4yMDYgNjYsNTUgQzY2LDUyLjc5NCA2NC4yMDYsNTEgNjIsNTEgQzYwLjE0Miw1MSA1OC41ODksNTIuMjggNTguMTQzLDU0IEw1NCw1NCBMNTQsNDEgWiIgaWQ9IkFXUy1TaW1wbGUtTm90aWZpY2F0aW9uLVNlcnZpY2VfSWNvbl82NF9TcXVpZCIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=", + "layout": [ + { + "h": 6, + "i": "4eb87f89-0213-4773-9b06-6aecc6701898", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "7a010b4e-ea7c-4a45-a9eb-93af650c45b4", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 6, + "i": "2299d4e3-6c40-4bf2-a550-c7bb8a7acd38", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "16eec8b7-de1a-4039-b180-24c7a6704b6e", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + } + ], + "panelMap": {}, + "tags": [], + "title": "SNS Overview", + "uploadedGrafana": false, + "variables": { + "51f4fa2b-89c7-47c2-9795-f32cffaab985": { + "allSelected": false, + "customValue": "", + "description": "AWS Account ID", + "id": "51f4fa2b-89c7-47c2-9795-f32cffaab985", + "key": "51f4fa2b-89c7-47c2-9795-f32cffaab985", + "modificationUUID": "b7a6b06b-fa1f-4fb8-b70e-6bd9b350f29e", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' GROUP BY `cloud.account.id`", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0": { + "allSelected": false, + "customValue": "", + "description": "Account Region", + "id": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0", + "key": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0", + "modificationUUID": "8428a5de-bfd1-4a69-9601-63e3041cd556", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region", + "showALLOption": false, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + }, + "bfbdbcbe-a168-4d81-b108-36339e249116": { + "allSelected": true, + "customValue": "", + "description": "SNS Topic Name", + "id": "bfbdbcbe-a168-4d81-b108-36339e249116", + "modificationUUID": "dfed7272-16dc-4eb6-99bf-7c82fc8e04f0", + "multiSelect": true, + "name": "Topic", + "order": 2, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'TopicName') AS topic\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}}\nGROUP BY topic", + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "4eb87f89-0213-4773-9b06-6aecc6701898", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SNS_NumberOfMessagesPublished_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SNS_NumberOfMessagesPublished_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "8fd51b53", + "key": { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Topic" + ] + }, + { + "id": "b18187c3", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "eebe4578", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TopicName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9c67615a-55f7-42da-835c-86922f2ff8bb", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Number of Messages Published", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "7a010b4e-ea7c-4a45-a9eb-93af650c45b4", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SNS_PublishSize_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SNS_PublishSize_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "1aa0d1a9", + "key": { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Topic" + ] + }, + { + "id": "62255cff", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "17c7153e", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TopicName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a635a15b-dfe6-4617-a82e-29d93e27deaf", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Published Message Size", + "yAxisUnit": "decbytes" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "2299d4e3-6c40-4bf2-a550-c7bb8a7acd38", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SNS_NumberOfNotificationsDelivered_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SNS_NumberOfNotificationsDelivered_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c96a4ac0", + "key": { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Topic" + ] + }, + { + "id": "8ca86829", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "8a444f66", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TopicName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0d2fc26c-9b21-4dfc-b631-64b7c8d3bd71", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Number of Notifications Delivered", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "16eec8b7-de1a-4039-b180-24c7a6704b6e", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SNS_NumberOfNotificationsFailed_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SNS_NumberOfNotificationsFailed_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6175f3d5", + "key": { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Topic" + ] + }, + { + "id": "e2084931", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "0b05209a", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "TopicName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "TopicName", + "type": "tag" + } + ], + "having": [], + "legend": "{{TopicName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "526247af-6ac9-42ff-83e9-cce0e32a9e63", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Number of Notifications Failed", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/cloudintegrations/services/definitions/aws/sqs/assets/dashboards/overview_dot.json b/pkg/query-service/app/cloudintegrations/services/definitions/aws/sqs/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..dea1a758cc --- /dev/null +++ b/pkg/query-service/app/cloudintegrations/services/definitions/aws/sqs/assets/dashboards/overview_dot.json @@ -0,0 +1,1761 @@ +{ + "description": "View SQS key Metrics them with an out of the box dashboard.", + "image":"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%2280px%22%20height%3D%2280px%22%20viewBox%3D%220%200%2080%2080%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3C!--%20Generator%3A%20Sketch%2064%20(93537)%20-%20https%3A%2F%2Fsketch.com%20--%3E%3Ctitle%3EIcon-Architecture%2F64%2FArch_AWS-Simple-Queue-Service_64%3C%2Ftitle%3E%3Cdesc%3ECreated%20with%20Sketch.%3C%2Fdesc%3E%3Cdefs%3E%3ClinearGradient%20x1%3D%220%25%22%20y1%3D%22100%25%22%20x2%3D%22100%25%22%20y2%3D%220%25%22%20id%3D%22linearGradient-1%22%3E%3Cstop%20stop-color%3D%22%23B0084D%22%20offset%3D%220%25%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23FF4F8B%22%20offset%3D%22100%25%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20id%3D%22Icon-Architecture%2F64%2FArch_AWS-Simple-Queue-Service_64%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cg%20id%3D%22Icon-Architecture-BG%2F64%2FApplication-Integration%22%20fill%3D%22url(%23linearGradient-1)%22%3E%3Crect%20id%3D%22Rectangle%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2280%22%20height%3D%2280%22%3E%3C%2Frect%3E%3C%2Fg%3E%3Cpath%20d%3D%22M28.7169966%2C43.6876756%20L31.7189265%2C40.721826%20C31.9070474%2C40.5359011%2032.0131156%2C40.2833614%2032.0141233%2C40.019885%20C32.0151169%2C39.7564086%2031.9100493%2C39.5028747%2031.722929%2C39.3159556%20L28.7209992%2C36.3163014%20L27.3020871%2C37.7181948%20L28.5899149%2C39.0057494%20L24.0089701%2C39.0057494%20L24.0089701%2C40.9942506%20L28.6059252%2C40.9942506%20L27.3060896%2C42.2778282%20L28.7169966%2C43.6876756%20Z%20M51.627725%2C43.7781524%20L55.630298%2C40.793412%20C55.8804589%2C40.6054986%2056.0295547%2C40.3112004%2056.0295547%2C39.9990057%20C56.0295547%2C39.6858168%2055.8804589%2C39.3905244%2055.6292974%2C39.202611%20L51.6267243%2C36.2218476%20L50.4259524%2C37.8126486%20L52.0269816%2C39.0057494%20L48.0244085%2C39.0057494%20L48.0244085%2C40.9942506%20L52.025981%2C40.9942506%20L50.4249518%2C42.1873514%20L51.627725%2C43.7781524%20Z%20M35.2081695%2C40%20C35.2081695%2C42.1107941%2034.8429347%2C44.1012839%2034.160496%2C45.8332685%20C35.9606533%2C45.14127%2037.9909585%2C44.7952708%2040.0192624%2C44.7952708%20C42.0475663%2C44.7952708%2044.0778715%2C45.14127%2045.8770281%2C45.8332685%20C45.19559%2C44.1012839%2044.8303552%2C42.1107941%2044.8303552%2C40%20C44.8303552%2C37.8892059%2045.19559%2C35.8997104%2045.8770281%2C34.1667315%20C42.2777142%2C35.5497341%2037.7608105%2C35.5497341%2034.160496%2C34.1667315%20C34.8429347%2C35.8997104%2035.2081695%2C37.8892059%2035.2081695%2C40%20L35.2081695%2C40%20Z%20M30.3060182%2C49.6511909%20C30.1108927%2C49.4573121%2030.0128297%2C49.2027839%2030.0128297%2C48.9482557%20C30.0128297%2C48.6937276%2030.1108927%2C48.4391994%2030.3060182%2C48.2453205%20C32.1221857%2C46.4407556%2033.206883%2C43.3575844%2033.206883%2C40%20C33.206883%2C36.6424156%2032.1221857%2C33.5592444%2030.3060182%2C31.7546795%20C30.1108927%2C31.5608006%2030.0128297%2C31.3062724%2030.0128297%2C31.0517443%20C30.0128297%2C30.7972161%2030.1108927%2C30.5426879%2030.3060182%2C30.3488091%20C30.6972697%2C29.9600571%2031.3296762%2C29.9600571%2031.7209277%2C30.3488091%20C35.5984204%2C34.2015303%2044.4401044%2C34.2015303%2048.317597%2C30.3488091%20C48.7088485%2C29.9600571%2049.3412551%2C29.9600571%2049.7325066%2C30.3488091%20C49.927632%2C30.5426879%2050.0256951%2C30.7972161%2050.0256951%2C31.0517443%20C50.0256951%2C31.3062724%2049.927632%2C31.5608006%2049.7325066%2C31.7546795%20C47.9163391%2C33.5592444%2046.8316418%2C36.6424156%2046.8316418%2C40%20C46.8316418%2C43.3575844%2047.9163391%2C46.4407556%2049.7325066%2C48.2453205%20C49.927632%2C48.4391994%2050.0256951%2C48.6937276%2050.0256951%2C48.9482557%20C50.0256951%2C49.2027839%2049.927632%2C49.4573121%2049.7325066%2C49.6511909%20C49.5373812%2C49.8450698%2049.2812165%2C49.9425064%2049.0250518%2C49.9425064%20C48.7688871%2C49.9425064%2048.5127225%2C49.8450698%2048.317597%2C49.6511909%20C44.4401044%2C45.7984697%2035.5984204%2C45.7984697%2031.7209277%2C49.6511909%20C31.3296762%2C50.0399429%2030.6972697%2C50.0399429%2030.3060182%2C49.6511909%20L30.3060182%2C49.6511909%20Z%20M66.0009649%2C40.0049713%20C66.0009649%2C39.0783297%2065.6377314%2C38.2073661%2064.9783075%2C37.5521549%20C64.2978701%2C36.8750702%2063.403295%2C36.5380193%2062.5097205%2C36.5380193%20C61.6161461%2C36.5380193%2060.721571%2C36.8750702%2060.0411336%2C37.5521549%20C58.6792581%2C38.9043358%2058.6792581%2C41.1046125%2060.0411336%2C42.4577876%20C61.4020084%2C43.8099684%2063.6154313%2C43.8109627%2064.9783075%2C42.4577876%20C65.6377314%2C41.8025764%2066.0009649%2C40.9316128%2066.0009649%2C40.0049713%20L66.0009649%2C40.0049713%20Z%20M66.3932171%2C43.863658%20C65.3225288%2C44.9275062%2063.916625%2C45.4594303%2062.5097205%2C45.4594303%20C61.1028161%2C45.4594303%2059.6969123%2C44.9275062%2058.626224%2C43.863658%20C56.4838468%2C41.7359616%2056.4838468%2C38.2739809%2058.626224%2C36.1462845%20C60.7686012%2C34.0165997%2064.2528411%2C34.0185882%2066.3932171%2C36.1462845%20C68.5355943%2C38.2739809%2068.5355943%2C41.7359616%2066.3932171%2C43.863658%20L66.3932171%2C43.863658%20Z%20M20.9800229%2C40.027839%20C20.9800229%2C39.1011974%2020.6167894%2C38.2302339%2019.9573654%2C37.5750227%20C19.2979415%2C36.9198115%2018.421378%2C36.5588985%2017.4887785%2C36.5588985%20C16.5571796%2C36.5588985%2015.6806161%2C36.9198115%2015.0201916%2C37.5750227%20C14.3607676%2C38.2302339%2013.9985348%2C39.1011974%2013.9985348%2C40.027839%20C13.9985348%2C40.9534864%2014.3607676%2C41.8244499%2015.0201916%2C42.4806553%20C16.34004%2C43.7900834%2018.6385176%2C43.7900834%2019.9573654%2C42.4806553%20C20.6167894%2C41.8244499%2020.9800229%2C40.9534864%2020.9800229%2C40.027839%20L20.9800229%2C40.027839%20Z%20M21.372275%2C43.8865257%20C20.3015867%2C44.9503739%2018.8956829%2C45.482298%2017.4887785%2C45.482298%20C16.0828747%2C45.482298%2014.6769709%2C44.9503739%2013.605282%2C43.8865257%20C11.464906%2C41.7588294%2011.464906%2C38.2968487%2013.605282%2C36.1691523%20C15.7476592%2C34.0414559%2019.2308984%2C34.0414559%2021.372275%2C36.1691523%20C23.5136516%2C38.2968487%2023.5136516%2C41.7588294%2021.372275%2C43.8865257%20L21.372275%2C43.8865257%20Z%20M54.8958259%2C54.856093%20C50.901258%2C58.8261358%2045.5888428%2C61.0114987%2039.9392109%2C61.0114987%20C34.2875777%2C61.0114987%2028.9761632%2C58.8261358%2024.9815953%2C54.856093%20C22.241834%2C52.134829%2020.7338646%2C48.8826352%2019.9513616%2C46.6346345%20L18.0601458%2C47.2848744%20C18.9116932%2C49.730731%2020.5577514%2C53.273246%2023.5666857%2C56.2619634%20C27.9394968%2C60.607833%2033.7532342%2C63%2039.9392109%2C63%20C46.124187%2C63%2051.9379244%2C60.607833%2056.3107355%2C56.2619634%20C58.8373597%2C53.7534691%2060.8496533%2C50.563913%2061.9793796%2C47.2818917%20L60.0861625%2C46.6376173%20C59.0534987%2C49.6382657%2057.2103138%2C52.5573856%2054.8958259%2C54.856093%20L54.8958259%2C54.856093%20Z%20M19.9503609%2C33.3663597%20L18.0611465%2C32.7141313%20C19.2719248%2C29.2501621%2021.229183%2C26.0606061%2023.5726896%2C23.7330653%20C27.9434994%2C19.3911728%2033.7552355%2C17%2039.9392109%2C17%20C46.1231863%2C17%2051.9349225%2C19.3911728%2056.3047316%2C23.7330653%20C58.7713173%2C26.1838931%2060.8396469%2C29.4569662%2061.9773783%2C32.7141313%20L60.0881638%2C33.3663597%20C59.0444929%2C30.3836078%2057.1502752%2C27.3849479%2054.889822%2C25.1389357%20C50.898256%2C21.1718757%2045.5878422%2C18.9885013%2039.9392109%2C18.9885013%20C34.289579%2C18.9885013%2028.9801658%2C21.1718757%2024.9875992%2C25.1389357%20C22.8542277%2C27.2596723%2021.0650775%2C30.181775%2019.9503609%2C33.3663597%20L19.9503609%2C33.3663597%20Z%22%20id%3D%22AWS-Simple-Queue-Service_Icon_64_Squid%22%20fill%3D%22%23FFFFFF%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E", + "layout": [ + { + "h": 6, + "i": "9e1d91ec-fb66-4cff-b5c5-282270ebffb5", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "053a2c4f-d438-400c-9836-8d67ba2f0a81", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 6, + "i": "823947d5-ea6d-416b-8ec6-de58f5c4099a", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "de63b951-5445-4688-baf0-373479de3100", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + }, + { + "h": 6, + "i": "f7f3a22b-be1b-437d-ba92-43ce0a2532cb", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 6, + "i": "ab592416-9156-4e0a-b0b3-704992f5a57c", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 12 + }, + { + "h": 6, + "i": "872a0925-f3d2-495c-8124-431627de55de", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 18 + }, + { + "h": 6, + "i": "b3663090-7d5f-4b39-8f22-6c50f8abd062", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 18 + }, + { + "h": 6, + "i": "2eb22d97-74a3-486b-965a-58e037275ce1", + "w": 6, + "x": 0, + "y": 24 + } + ], + "panelMap": {}, + "tags": [], + "title": "AWS SQS Overview", + "uploadedGrafana": false, + "variables": { + "11f2ffcf-6304-4484-9712-45046a97262f": { + "allSelected": true, + "customValue": "", + "description": "Queue Name", + "id": "11f2ffcf-6304-4484-9712-45046a97262f", + "modificationUUID": "59324736-39cc-4f86-b502-9c6ff7b06378", + "multiSelect": true, + "name": "Queue", + "order": 2, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'QueueName') AS queue\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' \nAND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} \nAND JSONExtractString(labels, 'cloud.region') IN {{.Region}} \nGROUP BY queue", + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + }, + "1f7a94df-9735-4bfa-a1b8-dca8ac29f945": { + "allSelected": false, + "customValue": "", + "description": "Account Region", + "id": "1f7a94df-9735-4bfa-a1b8-dca8ac29f945", + "key": "1f7a94df-9735-4bfa-a1b8-dca8ac29f945", + "modificationUUID": "e64806ef-c7b9-44c7-aae5-997ac0a5f042", + "multiSelect": false, + "name": "Region", + "order": 1, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + }, + "93ee15bf-baab-4abf-8828-fe6e75518417": { + "allSelected": false, + "customValue": "", + "description": "AWS Account ID", + "id": "93ee15bf-baab-4abf-8828-fe6e75518417", + "key": "93ee15bf-baab-4abf-8828-fe6e75518417", + "modificationUUID": "dc7edb4b-9bb8-4338-80c9-b8f70187e7e5", + "multiSelect": false, + "name": "Account", + "order": 0, + "queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' GROUP BY `cloud.account.id`", + "showALLOption": false, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "9e1d91ec-fb66-4cff-b5c5-282270ebffb5", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_ApproximateAgeOfOldestMessage_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_ApproximateAgeOfOldestMessage_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f3faf3d7", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "e9f94e6c", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "41729af9", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "58fb81eb-eff1-4b5a-b297-448b182e3e38", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Approximate Age of Oldest Message", + "yAxisUnit": "s" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "053a2c4f-d438-400c-9836-8d67ba2f0a81", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_ApproximateNumberOfMessagesDelayed_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_ApproximateNumberOfMessagesDelayed_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "bcad72b1", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "7e9fbca3", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "78dd8022", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a06e21bc-7bd7-460f-aa4f-7b2bf0c458a9", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Approximate Number of Messages Delayed", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "823947d5-ea6d-416b-8ec6-de58f5c4099a", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_ApproximateNumberOfMessagesNotVisible_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_ApproximateNumberOfMessagesNotVisible_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d20d64d4", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "072f1e3f", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "a4b6e74a", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f2b0f843-509f-4ad3-a044-5655f1a64ea4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Approximate Number of Messages Not Visible", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "de63b951-5445-4688-baf0-373479de3100", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_ApproximateNumberOfMessagesVisible_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_ApproximateNumberOfMessagesVisible_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "20a35c55", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "4d702aca", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "b79460ae", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e461ab65-42e2-4e5b-8e86-8f0978936b6f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Approximate Number of Messages Visible", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "f7f3a22b-be1b-437d-ba92-43ce0a2532cb", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_NumberOfEmptyReceives_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_NumberOfEmptyReceives_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d6acfbea", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "c8f19331", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "81572809", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "8a236577-dc88-4ec0-a3c1-9598a3726e72", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Number of Empty Receives", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "ab592416-9156-4e0a-b0b3-704992f5a57c", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_NumberOfMessagesDeleted_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_NumberOfMessagesDeleted_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "0fe5e8bd", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "6702e7e6", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "bbf8087b", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "85d52d2e-1105-4ca3-8b9d-0c1096ef56a8", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Number of Messages Deleted", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "872a0925-f3d2-495c-8124-431627de55de", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_NumberOfMessagesReceived_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_NumberOfMessagesReceived_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "52cf9dd8", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "35ebf39a", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "e5025b6e", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "56dc8388-653b-48b6-8141-0ab0f5adf6c3", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Number of Messages Received", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "b3663090-7d5f-4b39-8f22-6c50f8abd062", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_NumberOfMessagesSent_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_NumberOfMessagesSent_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b8f487f1", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "e89032c8", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "ca655170", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "57010fc9-de8a-4fee-b772-0b77d6b982ac", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Number of Messages Sent", + "yAxisUnit": "none" + }, + { + "bucketCount": 30, + "bucketWidth": 0, + "columnUnits": {}, + "description": "", + "fillSpans": false, + "id": "2eb22d97-74a3-486b-965a-58e037275ce1", + "isLogScale": false, + "isStacked": false, + "mergeAllActiveQueries": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_SQS_SentMessageSize_max--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_SQS_SentMessageSize_max", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "0711b803", + "key": { + "dataType": "string", + "id": "cloud.account.id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.account.id", + "type": "tag" + }, + "op": "=", + "value": "$Account" + }, + { + "id": "15f30a54", + "key": { + "dataType": "string", + "id": "cloud.region--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cloud.region", + "type": "tag" + }, + "op": "=", + "value": "$Region" + }, + { + "id": "a4527216", + "key": { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + }, + "op": "in", + "value": [ + "$Queue" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "QueueName--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "QueueName", + "type": "tag" + } + ], + "having": [], + "legend": "{{QueueName}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "max", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "98ed9e7b-fabf-4793-ac29-9286fc627e1a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "stackedBarChart": false, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Sent Message Size", + "yAxisUnit": "decbytes" + } + ] +} diff --git a/pkg/query-service/app/http_handler.go b/pkg/query-service/app/http_handler.go index 8c6a6366fb..3badb6c882 100644 --- a/pkg/query-service/app/http_handler.go +++ b/pkg/query-service/app/http_handler.go @@ -55,7 +55,6 @@ import ( "github.com/SigNoz/signoz/pkg/query-service/app/queryBuilder" tracesV3 "github.com/SigNoz/signoz/pkg/query-service/app/traces/v3" tracesV4 "github.com/SigNoz/signoz/pkg/query-service/app/traces/v4" - "github.com/SigNoz/signoz/pkg/query-service/auth" "github.com/SigNoz/signoz/pkg/query-service/contextlinks" v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3" "github.com/SigNoz/signoz/pkg/query-service/postprocess" @@ -255,7 +254,7 @@ func NewAPIHandler(opts APIHandlerOpts) (*APIHandler, error) { aH.queryBuilder = queryBuilder.NewQueryBuilder(builderOpts) // TODO(nitya): remote this in later for multitenancy. - orgs, err := opts.Signoz.Modules.Organization.GetAll(context.Background()) + orgs, err := opts.Signoz.Modules.OrgGetter.ListByOwnedKeyRange(context.Background()) if err != nil { zap.L().Warn("unexpected error while fetching orgs while initializing base api handler", zap.Error(err)) } @@ -2062,9 +2061,9 @@ func (aH *APIHandler) registerUser(w http.ResponseWriter, r *http.Request) { return } - _, apiErr := auth.Register(context.Background(), &req, aH.Signoz.Alertmanager, aH.Signoz.Modules.Organization, aH.Signoz.Modules.User, aH.Signoz.Modules.QuickFilter) - if apiErr != nil { - RespondError(w, apiErr, nil) + _, errv2 := aH.Signoz.Modules.User.Register(r.Context(), &req) + if errv2 != nil { + render.Error(w, errv2) return } @@ -5230,3 +5229,30 @@ func (aH *APIHandler) getDomainInfo(w http.ResponseWriter, r *http.Request) { } aH.Respond(w, resp) } + +// RegisterTraceFunnelsRoutes adds trace funnels routes +func (aH *APIHandler) RegisterTraceFunnelsRoutes(router *mux.Router, am *middleware.AuthZ) { + // Main trace funnels router + traceFunnelsRouter := router.PathPrefix("/api/v1/trace-funnels").Subrouter() + + // API endpoints + traceFunnelsRouter.HandleFunc("/new", + am.EditAccess(aH.Signoz.Handlers.TraceFunnel.New)). + Methods(http.MethodPost) + traceFunnelsRouter.HandleFunc("/list", + am.ViewAccess(aH.Signoz.Handlers.TraceFunnel.List)). + Methods(http.MethodGet) + traceFunnelsRouter.HandleFunc("/steps/update", + am.EditAccess(aH.Signoz.Handlers.TraceFunnel.UpdateSteps)). + Methods(http.MethodPut) + + traceFunnelsRouter.HandleFunc("/{funnel_id}", + am.ViewAccess(aH.Signoz.Handlers.TraceFunnel.Get)). + Methods(http.MethodGet) + traceFunnelsRouter.HandleFunc("/{funnel_id}", + am.EditAccess(aH.Signoz.Handlers.TraceFunnel.Delete)). + Methods(http.MethodDelete) + traceFunnelsRouter.HandleFunc("/{funnel_id}", + am.EditAccess(aH.Signoz.Handlers.TraceFunnel.UpdateFunnel)). + Methods(http.MethodPut) +} diff --git a/pkg/query-service/app/integrations/builtin.go b/pkg/query-service/app/integrations/builtin.go index 6ea1c41f3f..603dcfcce5 100644 --- a/pkg/query-service/app/integrations/builtin.go +++ b/pkg/query-service/app/integrations/builtin.go @@ -7,6 +7,8 @@ import ( "strings" "unicode" + "github.com/SigNoz/signoz/pkg/query-service/constants" + "encoding/base64" "encoding/json" "fmt" @@ -176,6 +178,19 @@ 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) + } + } + } + v = dashboards + } + } hydrated, err := HydrateFileUris(v, fs, basedir) if err != nil { return nil, err @@ -200,7 +215,6 @@ func HydrateFileUris(spec interface{}, fs embed.FS, basedir string) (interface{} } return spec, nil - } func readFileIfUri(fs embed.FS, maybeFileUri string, basedir string) (interface{}, error) { diff --git a/pkg/query-service/app/integrations/builtin_integrations/aws_elasticache/assets/dashboards/overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/aws_elasticache/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..62099bdfb2 --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/aws_elasticache/assets/dashboards/overview_dot.json @@ -0,0 +1,2078 @@ +{ + "id": "elasticache-redis-overview", + "description": "Overview of ElastiCache CloudWatch metrics. Provides both host-level metrics (for example, CPU usage) and redis engine metrics", + "layout": [ + { + "h": 5, + "i": "00d78996-1ba9-42d9-b22b-5818fc3bde4c", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "96c23215-c494-4650-9dc3-ae20858ce1f7", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 5, + "i": "6a56afd1-6205-4afe-90fe-86befc3fb55e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 5 + }, + { + "h": 5, + "i": "af269a1c-95a3-46b3-8d3b-322c194450e2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 5 + }, + { + "h": 5, + "i": "f9b0f03a-8d78-4c26-a037-daae69650eb6", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 10 + }, + { + "h": 5, + "i": "18798789-b67a-4c90-8127-f6bb63f012b2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 10 + }, + { + "h": 5, + "i": "b3cdeb88-6988-419c-9e94-4a6bccfdd467", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 5, + "i": "3604137c-12fe-4205-b7fc-f10d6143583b", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + }, + { + "h": 5, + "i": "5e69ac87-580f-4dc2-becd-943296e5cd1d", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 20 + }, + { + "h": 5, + "i": "e5c9ccb6-31de-4b80-8f4c-220ea2e874d0", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 20 + }, + { + "h": 5, + "i": "dccdd9c3-3864-4aef-a98f-6fb0e30baf0c", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 25 + }, + { + "h": 5, + "i": "79723065-b871-4c79-83eb-b32f025c7642", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 25 + }, + { + "h": 5, + "i": "8eba8049-2af5-4998-b0e1-cbc2235f9b40", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 30 + } + ], + "panelMap": {}, + "tags": [ + "aws", + "cache", + "redis" + ], + "title": "AWS ElastiCache Redis", + "uploadedGrafana": false, + "uuid": "5c4832b2-7035-436e-a1c2-cb1f88d238ed", + "variables": { + "50910278-a96b-4bae-a3b4-4c5b9e7cdefc": { + "allSelected": true, + "customValue": "", + "description": "", + "id": "50910278-a96b-4bae-a3b4-4c5b9e7cdefc", + "modificationUUID": "635019d8-0e8f-48bc-8912-240c995a5251", + "multiSelect": true, + "name": "cache_cluster_id", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'cache_cluster_id') as cache_cluster_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like 'aws_elasticache_%'\nGROUP BY cache_cluster_id", + "selectedValue": [ + "" + ], + "showALLOption": true, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "description": "", + "fillSpans": false, + "id": "96c23215-c494-4650-9dc3-ae20858ce1f7", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_engine_cpuutilization_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_engine_cpuutilization_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "18ac6939", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f31a92eb-aefb-4468-b163-95c2d29e3eaa", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Engine CPU Utilization", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "b3cdeb88-6988-419c-9e94-4a6bccfdd467", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_database_memory_usage_percentage_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_database_memory_usage_percentage_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6f82522a", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "c863166f-7958-4f6c-a956-d5044c846973", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Database Memory Usage Percentage", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "18798789-b67a-4c90-8127-f6bb63f012b2", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_database_capacity_usage_percentage_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_database_capacity_usage_percentage_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "80632329", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "b659e4ed-5b6b-4ec8-911c-b906580b1ab5", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Database Capacity Usage Percentage", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "af269a1c-95a3-46b3-8d3b-322c194450e2", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_cache_hits_sum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_cache_hits_sum", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "dd856067", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "", + "id": "cache_cluster_id------false", + "isColumn": false, + "key": "cache_cluster_id", + "type": "" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f2bc46b8-8d90-4d31-8e38-df61f7b58f55", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Cache Hit Rate", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "f9b0f03a-8d78-4c26-a037-daae69650eb6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_memory_fragmentation_ratio_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_memory_fragmentation_ratio_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "76d19eac", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "50b499c5-36dd-49e9-aae7-f1c225219434", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Memory Fragmentation Ratio", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "dccdd9c3-3864-4aef-a98f-6fb0e30baf0c", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_swap_usage_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_swap_usage_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "27530337", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "221b1817-b059-439e-bfaf-39089520344d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Swap Usage", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "3604137c-12fe-4205-b7fc-f10d6143583b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_freeable_memory_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_freeable_memory_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5f333785", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "cb158f83-72aa-4c36-bd26-9efc03d6ad15", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Freeable Memory", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "5e69ac87-580f-4dc2-becd-943296e5cd1d", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_network_bytes_in_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_network_bytes_in_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5c18156a", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a0114277-cb86-40b2-b002-71b021f81e39", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network Bytes In", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "e5c9ccb6-31de-4b80-8f4c-220ea2e874d0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_network_bytes_out_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_network_bytes_out_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6f0c2153", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "51fd65b6-84f3-4ffd-81c3-5d581892cbad", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network Bytes Out", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "6a56afd1-6205-4afe-90fe-86befc3fb55e", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_curr_connections_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_curr_connections_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "58582d67", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "1ee12dc9-a2f0-4c19-90ec-269cbece6fee", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Current Connections", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "8eba8049-2af5-4998-b0e1-cbc2235f9b40", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_replication_lag_maximum--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_replication_lag_maximum", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "69a98f19", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "95afdad6-29c3-4248-859f-bf142ad68f6a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Replication Lag", + "yAxisUnit": "s" + }, + { + "description": "", + "fillSpans": false, + "id": "79723065-b871-4c79-83eb-b32f025c7642", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_evictions_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_evictions_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "ea75b479", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "713cd286-0072-4c2b-b3cf-6631ca7c4958", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Evictions", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "00d78996-1ba9-42d9-b22b-5818fc3bde4c", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_elasticache_cpuutilization_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_elasticache_cpuutilization_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "028cb504", + "key": { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.cache_cluster_id}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "cache_cluster_id--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "cache_cluster_id", + "type": "tag" + } + ], + "having": [], + "legend": "{{cache_cluster_id}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "794f841f-4281-4e02-8b2d-97641b356e60", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU Utilization", + "yAxisUnit": "none" + } + ] + } \ No newline at end of file diff --git a/pkg/query-service/app/integrations/builtin_integrations/aws_rds_mysql/assets/dashboards/db_metrics_dot.json b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_mysql/assets/dashboards/db_metrics_dot.json new file mode 100644 index 0000000000..300853d648 --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_mysql/assets/dashboards/db_metrics_dot.json @@ -0,0 +1,2935 @@ +{ + "id": "aws_rds_mysql_db_metrics", + "description": "", + "layout": [ + { + "h": 1, + "i": "a1da815a-c8b8-4e86-8630-a3265e3be002", + "maxH": 1, + "minH": 1, + "minW": 12, + "moved": false, + "static": false, + "w": 12, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "121f2894-dd86-423a-8bb8-93f853aad93e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 1 + }, + { + "h": 6, + "i": "0dc8699d-35d7-4c73-b25e-ce2c05e1574b", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 1 + }, + { + "h": 6, + "i": "19da4480-77f3-4999-9cd5-f76c02cb4e8d", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 7 + }, + { + "h": 6, + "i": "864ac52b-87aa-423a-aafb-975207baa3af", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 7 + }, + { + "h": 6, + "i": "11d5c39c-d780-4752-a868-a88d95e2a264", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 13 + }, + { + "h": 6, + "i": "c65eccc5-568b-4da3-8dee-90cf46cfbdcb", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 13 + }, + { + "h": 6, + "i": "b0ccb2fd-865a-422c-821f-4c8e4058e575", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 19 + }, + { + "h": 6, + "i": "942b5e3c-733a-454a-b7f7-b4256696483a", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 19 + }, + { + "h": 6, + "i": "ee89777a-111f-4c4e-bef5-3348b6a07b45", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 25 + }, + { + "h": 6, + "i": "b1e49f1a-8f97-4174-9cc7-0e4e4d2309f6", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 25 + }, + { + "h": 1, + "i": "52d4e290-ebe9-4e17-9e0d-57c4537996a2", + "maxH": 1, + "minH": 1, + "minW": 12, + "moved": false, + "static": false, + "w": 12, + "x": 0, + "y": 31 + }, + { + "h": 6, + "i": "26d0b9f5-9dee-49ff-a8b5-baad92bd85ee", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 32 + }, + { + "h": 6, + "i": "2c1421c3-6d09-43d3-b5fc-bea817595786", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 32 + }, + { + "h": 1, + "i": "2b3c134c-ef8e-40a3-be5b-1c2b31f5f774", + "maxH": 1, + "minH": 1, + "minW": 12, + "moved": false, + "static": false, + "w": 12, + "x": 0, + "y": 38 + }, + { + "h": 5, + "i": "9f188ac9-7b6c-4f23-85df-442c90fb1e98", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 39 + }, + { + "h": 5, + "i": "bc6a7150-bb0b-4fb5-b132-217f20b4cd06", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 39 + }, + { + "h": 5, + "i": "b99182d7-efd4-43a5-bd61-3a35d9f88a0e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 44 + }, + { + "h": 5, + "i": "18f8b51f-074c-45e3-8f25-6e70cb8ad222", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 44 + } + ], + "panelMap": { + "2b3c134c-ef8e-40a3-be5b-1c2b31f5f774": { + "collapsed": false, + "widgets": [ + { + "h": 5, + "i": "9f188ac9-7b6c-4f23-85df-442c90fb1e98", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 23 + }, + { + "h": 5, + "i": "bc6a7150-bb0b-4fb5-b132-217f20b4cd06", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 23 + }, + { + "h": 5, + "i": "b99182d7-efd4-43a5-bd61-3a35d9f88a0e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 28 + }, + { + "h": 5, + "i": "18f8b51f-074c-45e3-8f25-6e70cb8ad222", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 28 + } + ] + }, + "52d4e290-ebe9-4e17-9e0d-57c4537996a2": { + "collapsed": false, + "widgets": [ + { + "h": 6, + "i": "26d0b9f5-9dee-49ff-a8b5-baad92bd85ee", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 43 + }, + { + "h": 5, + "i": "18f8b51f-074c-45e3-8f25-6e70cb8ad222", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 43 + }, + { + "h": 6, + "i": "2c1421c3-6d09-43d3-b5fc-bea817595786", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 48 + } + ] + }, + "a1da815a-c8b8-4e86-8630-a3265e3be002": { + "collapsed": false, + "widgets": [ + { + "h": 6, + "i": "942b5e3c-733a-454a-b7f7-b4256696483a", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 6, + "i": "19da4480-77f3-4999-9cd5-f76c02cb4e8d", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 6, + "i": "b0ccb2fd-865a-422c-821f-4c8e4058e575", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 6, + "i": "0dc8699d-35d7-4c73-b25e-ce2c05e1574b", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 18 + }, + { + "h": 6, + "i": "ee89777a-111f-4c4e-bef5-3348b6a07b45", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 24 + }, + { + "h": 6, + "i": "c65eccc5-568b-4da3-8dee-90cf46cfbdcb", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 30 + }, + { + "h": 6, + "i": "121f2894-dd86-423a-8bb8-93f853aad93e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 36 + }, + { + "h": 6, + "i": "b1e49f1a-8f97-4174-9cc7-0e4e4d2309f6", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 42 + }, + { + "h": 6, + "i": "864ac52b-87aa-423a-aafb-975207baa3af", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 48 + }, + { + "h": 6, + "i": "11d5c39c-d780-4752-a868-a88d95e2a264", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 54 + } + ] + } + }, + "tags": [ + "mysql" + ], + "title": "MySQL", + "uploadedGrafana": false, + "variables": { + "31d3f13b-27d5-4291-9fb3-d5d5708a72f3": { + "allSelected": false, + "customValue": "", + "description": "", + "id": "31d3f13b-27d5-4291-9fb3-d5d5708a72f3", + "modificationUUID": "e4a9edf1-acd0-48b7-8a35-1b4bb668408d", + "multiSelect": false, + "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`", + "selectedValue": "", + "showALLOption": false, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "description": "", + "fillSpans": false, + "id": "9f188ac9-7b6c-4f23-85df-442c90fb1e98", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.buffer_pool.pages--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.buffer_pool.pages", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d0ece7c5", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "status--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "status", + "type": "tag" + } + ], + "having": [], + "legend": "{{status}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "41139bf9-846d-4aff-b31b-43c8d42f6aea", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Buffer pool usage by status", + "yAxisUnit": "bytes" + }, + { + "description": "", + "id": "2b3c134c-ef8e-40a3-be5b-1c2b31f5f774", + "panelTypes": "row", + "title": "Buffer pool" + }, + { + "description": "", + "fillSpans": false, + "id": "b99182d7-efd4-43a5-bd61-3a35d9f88a0e", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.buffer_pool.pages--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.buffer_pool.pages", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5a3714e3", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "kind--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "kind", + "type": "tag" + } + ], + "having": [], + "legend": "{{kind}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0fe54f66-5f01-4468-9681-b0fd52ea7d01", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Buffer pool pages by kind", + "yAxisUnit": "short" + }, + { + "description": "", + "fillSpans": false, + "id": "bc6a7150-bb0b-4fb5-b132-217f20b4cd06", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.buffer_pool.data_pages--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.buffer_pool.data_pages", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "fb2c8b1f", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "status--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "status", + "type": "tag" + } + ], + "having": [], + "legend": "{{status}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ce9c23bd-8a9d-4bce-af85-9696360d4431", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Data pages by status", + "yAxisUnit": "short" + }, + { + "description": "", + "fillSpans": false, + "id": "18f8b51f-074c-45e3-8f25-6e70cb8ad222", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.buffer_pool.page_flushes--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.buffer_pool.page_flushes", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "aaed0865", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0a94bead-a3e4-4ae8-a500-77d50a4c6b17", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Total buffer pool page flushes", + "yAxisUnit": "none" + }, + { + "description": "", + "id": "52d4e290-ebe9-4e17-9e0d-57c4537996a2", + "panelTypes": "row", + "title": "Table" + }, + { + "description": "", + "fillSpans": false, + "id": "ca688417-3ded-4482-aa4d-73dd9ce4e715", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.table.io.wait.count--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.table.io.wait.count", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "416ad837", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "table--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "table", + "type": "tag" + } + ], + "having": [], + "legend": "Count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "6608d3ce-0058-44ed-9f76-3474ab0765aa", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "count of I/O wait events", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "26d0b9f5-9dee-49ff-a8b5-baad92bd85ee", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.table.io.wait.count--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.table.io.wait.count", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "3773e4f8", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "table--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "table", + "type": "tag" + } + ], + "having": [], + "legend": "count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f02c5c6d-d5c0-4fb5-9d9d-5e8037a7824e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "count of table I/O wait events", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "2c1421c3-6d09-43d3-b5fc-bea817595786", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.table.io.wait.count--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.table.io.wait.count", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "3773e4f8", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "table--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "table", + "type": "tag" + } + ], + "having": [], + "legend": "count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f02c5c6d-d5c0-4fb5-9d9d-5e8037a7824e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "count of table I/O wait events", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "11d5c39c-d780-4752-a868-a88d95e2a264", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.handlers--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.handlers", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "ac5632dc", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "kind--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "kind", + "type": "tag" + } + ], + "having": [ + { + "columnName": "SUM(`mysql.handlers`)", + "op": ">", + "value": 0 + } + ], + "legend": "{{kind}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d30af321-a7f6-49da-81a9-ba9577606dfd", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Count by handlers", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "864ac52b-87aa-423a-aafb-975207baa3af", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.locks--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.locks", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "e2692b23", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "kind--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "kind", + "type": "tag" + } + ], + "having": [], + "legend": "{{kind}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "71dbfc3f-10e3-4a23-b5c8-dd2c15ae800a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "MySQL locks", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "b1e49f1a-8f97-4174-9cc7-0e4e4d2309f6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.log_operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.log_operations", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b2ce5aae", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + } + ], + "having": [], + "legend": "count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "c31ca2ae-8a6e-4293-a8e1-c544c093dcfd", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "InnoDB log operations", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "121f2894-dd86-423a-8bb8-93f853aad93e", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.connection.count--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.connection.count", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7ba56364", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Connection count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.connection.errors--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.connection.errors", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "ed85e243", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "error--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "error", + "type": "tag" + } + ], + "having": [ + { + "columnName": "SUM(mysql.connection.errors)", + "op": ">", + "value": 0 + } + ], + "legend": "Error count: {{error}}", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "bde94864-1375-4617-9e62-2767981b57fc", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Connection/Errors", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "c65eccc5-568b-4da3-8dee-90cf46cfbdcb", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.opened_resources--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.opened_resources", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "517c903b", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "kind--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "kind", + "type": "tag" + } + ], + "having": [ + { + "columnName": "SUM(mysql.opened_resources)", + "op": ">", + "value": 0 + } + ], + "legend": "{{kind}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "62325340-e5db-4717-a55b-a0ff2dff77be", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Open resources count", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "ee89777a-111f-4c4e-bef5-3348b6a07b45", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.operations", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "99fe0131", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + } + ], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "2825eb5d-e03e-42d7-980b-d2e4ded149a4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Count of operations", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "0dc8699d-35d7-4c73-b25e-ce2c05e1574b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.row_locks--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.row_locks", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7ed07e24", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "kind--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "kind", + "type": "tag" + } + ], + "having": [], + "legend": "{{kind}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "8598c0ff-d274-445f-8a3c-53c02595e0ff", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Row locks", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "b0ccb2fd-865a-422c-821f-4c8e4058e575", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.threads--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.threads", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "93e5a9ee", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "kind--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "kind", + "type": "tag" + } + ], + "having": [], + "legend": "count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5970ac20-a757-4d1b-80da-b6ec01fbe553", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Thread type count", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "19da4480-77f3-4999-9cd5-f76c02cb4e8d", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.row_operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.row_operations", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "bd45ea2f", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + } + ], + "having": [], + "legend": "{{operation}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "68287f23-55e3-4d02-9ce3-0107abb17412", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Row operations", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "942b5e3c-733a-454a-b7f7-b4256696483a", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mysql.prepared_statements--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mysql.prepared_statements", + "type": "Sum" + }, + "aggregateOperator": "increase", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "32634e42", + "key": { + "dataType": "string", + "id": "mysql.instance.endpoint--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mysql.instance.endpoint", + "type": "tag" + }, + "op": "=", + "value": "{{.mysql.instance.endpoint}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "command--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "command", + "type": "tag" + } + ], + "having": [], + "legend": "count", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "increase" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "3fa25e4b-30f9-41d8-8acc-a97aab8a18cd", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Prepared statement count", + "yAxisUnit": "none" + }, + { + "description": "", + "id": "a1da815a-c8b8-4e86-8630-a3265e3be002", + "panelTypes": "row", + "title": "Resources" + } + ], + "uuid": "0a5a35a0-01f8-4597-8ece-74824c5e9e80" + } diff --git a/pkg/query-service/app/integrations/builtin_integrations/aws_rds_mysql/assets/dashboards/overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_mysql/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..0e89b8a957 --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_mysql/assets/dashboards/overview_dot.json @@ -0,0 +1,2602 @@ +{ + "id": "aws_rds_mysql", + "description": "", + "layout": [ + { + "h": 5, + "i": "8d22c6a7-b22e-4ad2-b242-e15de32ddc0f", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "94fe032e-3ffc-4cdc-aae6-f851fa47d957", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 5, + "i": "6807e631-4894-4de8-8a55-686c8fa08d4b", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 5 + }, + { + "h": 5, + "i": "d599a942-4dbf-4e29-a3ac-a3142399b557", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 5 + }, + { + "h": 5, + "i": "d16d8683-8c69-4526-a9cd-cc21ae5c60af", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 10 + }, + { + "h": 5, + "i": "845ee717-bbd1-424c-8293-f49e76aa43b3", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 10 + }, + { + "h": 5, + "i": "31c78945-ea1e-4ae1-b0fb-6f1c9de2c016", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 5, + "i": "ae099f6e-5d6c-4127-ac70-2da9741837d7", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + }, + { + "h": 5, + "i": "03c1f0bd-6713-4355-b8e3-6ef781af32c2", + "moved": false, + "static": false, + "w": 4, + "x": 0, + "y": 20 + }, + { + "h": 5, + "i": "37aabb43-fd8b-47c5-9444-0cd77f9ac435", + "moved": false, + "static": false, + "w": 4, + "x": 4, + "y": 20 + }, + { + "h": 5, + "i": "c6939628-3c4c-48fb-a2cf-46f6cb358359", + "moved": false, + "static": false, + "w": 4, + "x": 8, + "y": 20 + }, + { + "h": 5, + "i": "7854afc7-0cd5-4792-a760-be98a2e2f96b", + "moved": false, + "static": false, + "w": 4, + "x": 0, + "y": 25 + }, + { + "h": 5, + "i": "8126584b-eaa9-4b79-ba8e-a00c394544d8", + "moved": false, + "static": false, + "w": 4, + "x": 4, + "y": 25 + }, + { + "h": 5, + "i": "3d0a6717-1fd0-4810-b0e9-fe5190d5809f", + "moved": false, + "static": false, + "w": 4, + "x": 8, + "y": 25 + }, + { + "h": 5, + "i": "ffc39591-288f-4b28-87ee-43456d5d0667", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 30 + }, + { + "h": 5, + "i": "c5189b72-1055-4d6a-b18d-fa23bd9c28d6", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 30 + } + ], + "panelMap": {}, + "tags": [ + "aws", + "rds", + "mysql" + ], + "title": "AWS RDS MySQL", + "uploadedGrafana": false, + "uuid": "7799e6c9-9b37-4617-9b01-3033665e6605", + "variables": { + "5ae02d7b-d201-4481-ad6f-ffb9d53e1b3e": { + "allSelected": false, + "customValue": "", + "description": "This is the unique key that identifies a DB instance", + "id": "5ae02d7b-d201-4481-ad6f-ffb9d53e1b3e", + "modificationUUID": "1ecf21e3-488a-41e7-92f2-7dc75c9de49a", + "multiSelect": true, + "name": "dbinstance_identifier", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'dbinstance_identifier') as dbinstance_identifier\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like 'aws_rds_database_connections_average'\nGROUP BY dbinstance_identifier", + "selectedValue": "", + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "description": "The number of client network connections to the database instance.", + "fillSpans": false, + "id": "94fe032e-3ffc-4cdc-aae6-f851fa47d957", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_database_connections_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_database_connections_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "4e451ffc", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "b6816e82-3e9b-4dc6-9fc0-047ef50e47d4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "DatabaseConnections", + "yAxisUnit": "short" + }, + { + "description": "The percentage of CPU utilization.", + "fillSpans": false, + "id": "8d22c6a7-b22e-4ad2-b242-e15de32ddc0f", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_cpuutilization_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_cpuutilization_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f0a48ddc", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0318116a-ba6b-405c-b2c0-8dfb321f3ad0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPUUtilization", + "yAxisUnit": "percent" + }, + { + "description": "The amount of available random access memory. This metric reports the value of the MemAvailable field of /proc/meminfo", + "fillSpans": false, + "id": "d599a942-4dbf-4e29-a3ac-a3142399b557", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_freeable_memory_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_freeable_memory_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b738d056", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5a1e0e0d-3190-4a38-8030-b48d24ebe0f1", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "FreeableMemory", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "c6939628-3c4c-48fb-a2cf-46f6cb358359", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_read_latency_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_read_latency_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d0ac5956", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "794a5db3-b75c-4354-a509-ab24b5daeba4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "ReadLatency", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "03c1f0bd-6713-4355-b8e3-6ef781af32c2", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_read_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_read_throughput_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "bdc062ed", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "6915105d-17eb-4863-8ccd-88c6a56d9ad7", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "aws_rds_read_throughput_average" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "ReadThroughput", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "37aabb43-fd8b-47c5-9444-0cd77f9ac435", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_read_iops_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_read_iops_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "74504cdf", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0ab52186-6617-4f8b-a3fc-3778c09b6faf", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "ReadIOPS", + "yAxisUnit": "none" + }, + { + "description": "The amount of available storage space.", + "fillSpans": false, + "id": "6807e631-4894-4de8-8a55-686c8fa08d4b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_free_storage_space_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_free_storage_space_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "3cfa657c", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "b7f7c9e9-0fdf-462e-b465-57025785e98f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "FreeStorageSpace", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "7854afc7-0cd5-4792-a760-be98a2e2f96b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_write_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_write_throughput_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "05330793", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d6be5165-c686-412f-80f7-4a81a28cae7d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "WriteThroughput", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "8126584b-eaa9-4b79-ba8e-a00c394544d8", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_write_iops_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_write_iops_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "0606e3a2", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "253e440a-b13d-411c-a069-d4da1f4c84d7", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "WriteIOPS", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "ffc39591-288f-4b28-87ee-43456d5d0667", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_network_transmit_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_network_transmit_throughput_average", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d5e2f293", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "n/w transmit", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_network_receive_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_network_receive_throughput_average", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "e968f079", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "n/w receive", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "sum", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "sum" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "2c6be01b-25d9-4480-80c9-f180edad6bf9", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network transmit/receive", + "yAxisUnit": "Bps" + }, + { + "description": "The number of outstanding I/Os (read/write requests) waiting to access the disk.", + "fillSpans": false, + "id": "845ee717-bbd1-424c-8293-f49e76aa43b3", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_disk_queue_depth_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_disk_queue_depth_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "96c73381", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "afe73a96-1c56-451e-bca6-2c41c62d47a8", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "DiskQueueDepth", + "yAxisUnit": "none" + }, + { + "description": "The percentage of throughput credits remaining in the burst bucket of your RDS database. ", + "fillSpans": false, + "id": "ae099f6e-5d6c-4127-ac70-2da9741837d7", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_ebsiobalance__average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_ebsiobalance__average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "e88eb970", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "1d8b8b67-0646-4ebc-aa8b-1c10643ddfa0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "EBSByteBalance%", + "yAxisUnit": "none" + }, + { + "description": "The percentage of I/O credits remaining in the burst bucket of your RDS database.", + "fillSpans": false, + "id": "31c78945-ea1e-4ae1-b0fb-6f1c9de2c016", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_ebsiobalance__average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_ebsiobalance__average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c8d78684", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a0f7c676-ae5f-4db9-bb73-26dbb9db7fab", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "EBSIOBalance%", + "yAxisUnit": "none" + }, + { + "description": "The amount of disk space occupied by binary logs. If automatic backups are enabled for MySQL and MariaDB instances, including read replicas, binary logs are created.", + "fillSpans": false, + "id": "d16d8683-8c69-4526-a9cd-cc21ae5c60af", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_bin_log_disk_usage_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_bin_log_disk_usage_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "1707f954", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "dbinstance_identifier", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "334d7c5d-4851-419a-90b2-86ebe21befff", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "BinLogDiskUsage", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "3d0a6717-1fd0-4810-b0e9-fe5190d5809f", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_write_latency_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_write_latency_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5b97fb87", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "7533cf12-7ee3-49e8-8fcd-c1f82ea317ab", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "WriteLatency", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "c5189b72-1055-4d6a-b18d-fa23bd9c28d6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_swap_usage_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_swap_usage_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "afabe318", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "61ecb019-0fbf-44f1-a9db-995b86ee4805", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "SwapUsage", + "yAxisUnit": "decbytes" + } + ] +} \ No newline at end of file diff --git a/pkg/query-service/app/integrations/builtin_integrations/aws_rds_postgres/assets/dashboards/db_metrics_overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_postgres/assets/dashboards/db_metrics_overview_dot.json new file mode 100644 index 0000000000..2dec4648aa --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_postgres/assets/dashboards/db_metrics_overview_dot.json @@ -0,0 +1,1820 @@ +{ + "description": "This dashboard provides a high-level overview of your PostgreSQL databases. It includes replication, locks, and throughput etc...", + "id": "postgres_overview_metrics", + "layout": [ + { + "h": 1, + "i": "3bd16024-b9ff-4f02-8107-1fd817604d5f", + "maxH": 1, + "minH": 1, + "minW": 12, + "moved": false, + "static": false, + "w": 12, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "8638a199-20a0-4255-b0a2-3b1ba06c485b", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 1 + }, + { + "h": 1, + "i": "7df9b6d2-8f7f-48d4-80d6-ae07d47746d6", + "maxH": 1, + "minH": 1, + "minW": 12, + "moved": false, + "static": false, + "w": 12, + "x": 0, + "y": 6 + }, + { + "h": 5, + "i": "191d09a6-40b0-4de8-a5b0-aa4254454b99", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 7 + }, + { + "h": 5, + "i": "fa941c00-ce19-49cc-baf2-c38598767dee", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 7 + }, + { + "h": 5, + "i": "114fcf80-e1de-4716-b1aa-0e0738dba10e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 5, + "i": "667428ef-9b9a-4e91-bd1e-938e0dc1ff32", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 12 + }, + { + "h": 5, + "i": "bada7864-1d23-4d49-a868-c6b8a93c738f", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 17 + }, + { + "h": 1, + "i": "b437186f-d112-4fb9-bed5-5bea2b5f4b60", + "maxH": 1, + "minH": 1, + "minW": 12, + "moved": false, + "static": false, + "w": 12, + "x": 0, + "y": 22 + }, + { + "h": 5, + "i": "6b700035-e3c2-4c48-99fa-ebfd6202eed3", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 23 + }, + { + "h": 5, + "i": "e9341e70-ccb3-47fc-af95-56ba8942c4f2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 23 + }, + { + "h": 1, + "i": "4b94cfd8-7a28-46f9-a618-0a186908f0d5", + "maxH": 1, + "minH": 1, + "minW": 12, + "moved": false, + "static": false, + "w": 12, + "x": 0, + "y": 28 + }, + { + "h": 6, + "i": "9552123d-6265-48a7-8624-3f4a3fc3c9c0", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 29 + }, + { + "h": 5, + "i": "d7838815-4f5b-4454-86fd-f658b201f3a9", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 29 + }, + { + "h": 5, + "i": "f9a6f683-7455-4643-acc8-467cc5ea52cf", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 35 + } + ], + "name": "", + "panelMap": { + "3bd16024-b9ff-4f02-8107-1fd817604d5f": { + "collapsed": false, + "widgets": [] + }, + "4b94cfd8-7a28-46f9-a618-0a186908f0d5": { + "collapsed": true, + "widgets": [] + }, + "7df9b6d2-8f7f-48d4-80d6-ae07d47746d6": { + "collapsed": false, + "widgets": [ + { + "h": 5, + "i": "191d09a6-40b0-4de8-a5b0-aa4254454b99", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 1 + }, + { + "h": 5, + "i": "fa941c00-ce19-49cc-baf2-c38598767dee", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 1 + }, + { + "h": 5, + "i": "114fcf80-e1de-4716-b1aa-0e0738dba10e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 5, + "i": "667428ef-9b9a-4e91-bd1e-938e0dc1ff32", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + }, + { + "h": 5, + "i": "bada7864-1d23-4d49-a868-c6b8a93c738f", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 11 + } + ] + }, + "b437186f-d112-4fb9-bed5-5bea2b5f4b60": { + "collapsed": false, + "widgets": [ + { + "h": 5, + "i": "6b700035-e3c2-4c48-99fa-ebfd6202eed3", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 47 + }, + { + "h": 5, + "i": "e9341e70-ccb3-47fc-af95-56ba8942c4f2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 47 + }, + { + "h": 4, + "i": "8638a199-20a0-4255-b0a2-3b1ba06c485b", + "moved": false, + "static": false, + "w": 6, + "x": 3, + "y": 52 + }, + { + "h": 5, + "i": "f9a6f683-7455-4643-acc8-467cc5ea52cf", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 56 + }, + { + "h": 5, + "i": "d7838815-4f5b-4454-86fd-f658b201f3a9", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 56 + }, + { + "h": 7, + "i": "9552123d-6265-48a7-8624-3f4a3fc3c9c0", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 61 + } + ] + } + }, + "tags": [ + "postgres", + "database" + ], + "title": "Postgres overview", + "uploadedGrafana": false, + "variables": { + "8ecaee70-640f-46fd-83d9-a4fd18bc66e6": { + "allSelected": true, + "customValue": "", + "description": "List of tables", + "id": "8ecaee70-640f-46fd-83d9-a4fd18bc66e6", + "modificationUUID": "a51321cd-47a2-470a-8df4-372e5bb36f2c", + "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", + "selectedValue": [ + "public.pgbench_accounts", + "public.pgbench_branches", + "public.pgbench_history", + "public.pgbench_tellers" + ], + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + }, + "c66d1581-e5e1-440d-8ff6-ebcf078ab6dd": { + "allSelected": true, + "customValue": "", + "description": "List of databases", + "id": "c66d1581-e5e1-440d-8ff6-ebcf078ab6dd", + "key": "c66d1581-e5e1-440d-8ff6-ebcf078ab6dd", + "modificationUUID": "564a3f43-98f8-4189-b5e4-dcb518d73852", + "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", + "selectedValue": [ + "pgtestdb" + ], + "showALLOption": true, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "widgets": [ + { + "description": "The average number of db insert operations.", + "fillSpans": false, + "id": "191d09a6-40b0-4de8-a5b0-aa4254454b99", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c1dff946", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "ins" + }, + { + "id": "2e60e171", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "bf48ac4c-bc0c-41a0-87f4-6f8ae7888d1f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Inserts", + "yAxisUnit": "none" + }, + { + "description": "The average number of db update operations.", + "fillSpans": false, + "id": "fa941c00-ce19-49cc-baf2-c38598767dee", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "98463ec9", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "upd" + }, + { + "id": "64020332", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "34a6ac3a-b7f6-4b5f-a084-a44378033d82", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Updates", + "yAxisUnit": "none" + }, + { + "description": "The average number of db delete operations.", + "fillSpans": false, + "id": "114fcf80-e1de-4716-b1aa-0e0738dba10e", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "62738de4", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "del" + }, + { + "id": "9d153899", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "734393d1-76ed-4f4f-bef8-0a91d27ebec4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Deleted", + "yAxisUnit": "none" + }, + { + "description": "The average number of db heap-only update operations.", + "fillSpans": false, + "id": "667428ef-9b9a-4e91-bd1e-938e0dc1ff32", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a91e35c4", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "hot_upd" + }, + { + "id": "7b4a29a2", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f43c2d19-4abc-4f5e-881b-db7add4a870a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Heap updates", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "bada7864-1d23-4d49-a868-c6b8a93c738f", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d6aeccf7", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "ins" + }, + { + "id": "ee4e9344", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "Inserted", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "a12cceed", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "upd" + }, + { + "id": "2d542482", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "Updated", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "1bca3e46", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "del" + }, + { + "id": "44ffc874", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "Deleted", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5056105b-1c30-4d27-8187-64457f2a1ec6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Operation by database", + "yAxisUnit": "none" + }, + { + "description": "The number of database locks.", + "fillSpans": false, + "id": "6b700035-e3c2-4c48-99fa-ebfd6202eed3", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.database.locks--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.database.locks", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "mode--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mode", + "type": "tag" + } + ], + "having": [], + "legend": "{{mode}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "877b0df3-9ae3-455e-ad27-bc3aa40b3f4c", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Locks by lock mode", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "e9341e70-ccb3-47fc-af95-56ba8942c4f2", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.deadlocks--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.deadlocks", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "efb83717", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5056105b-1c30-4d27-8187-64457f2a1ec6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Deadlocks count", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "8638a199-20a0-4255-b0a2-3b1ba06c485b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.backends--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.backends", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "20d2a4c5", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "205b99a0-2f1c-4bd2-9ba0-cc2da6ef247a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Connections per db", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "f9a6f683-7455-4643-acc8-467cc5ea52cf", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.rows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.rows", + "type": "Sum" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "70786905", + "key": { + "dataType": "string", + "id": "state--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "state", + "type": "tag" + }, + "op": "=", + "value": "dead" + }, + { + "id": "3e5ef839", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + }, + { + "id": "9e913563", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Dead rows", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "cc7452c8-118b-4676-959e-7062bafc41ee", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Dead rows", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "d7838815-4f5b-4454-86fd-f658b201f3a9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.index.scans--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.index.scans", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "590332a7", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + }, + { + "id": "171b9516", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table_name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.index.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.index.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.index.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "2c6b630b-8bd9-4001-815b-f2b1f439a9dd", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Index scans by index", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "9552123d-6265-48a7-8624-3f4a3fc3c9c0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "clickhouse_sql": [ + { + "name": "A", + "legend": "", + "disabled": false, + "query": "" + } + ], + "promql": [ + { + "name": "A", + "query": "", + "legend": "", + "disabled": false + } + ], + "builder": { + "queryData": [ + { + "dataSource": "metrics", + "queryName": "A", + "aggregateOperator": "avg", + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.rows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.rows", + "type": "Sum" + }, + "timeAggregation": "rate", + "spaceAggregation": "sum", + "functions": [], + "filters": { + "items": [ + { + "id": "d2039662", + "key": { + "dataType": "string", + "id": "state--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "state", + "type": "tag" + }, + "op": "=", + "value": "dead" + }, + { + "id": "21c6d446", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + }, + { + "id": "a44d1843", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table_name}}" + ] + } + ], + "op": "AND" + }, + "expression": "A", + "disabled": false, + "having": [], + "stepInterval": 840, + "limit": null, + "orderBy": [], + "groupBy": [ + { + "dataType": "string", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag", + "id": "postgresql.table.name--string--tag--false" + } + ], + "legend": "Dead rows", + "reduceTo": "sum" + }, + { + "dataSource": "metrics", + "queryName": "B", + "aggregateOperator": "avg", + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.rows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.rows", + "type": "Sum" + }, + "timeAggregation": "rate", + "spaceAggregation": "sum", + "functions": [], + "filters": { + "items": [ + { + "id": "74888dbf", + "key": { + "dataType": "string", + "id": "state--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "state", + "type": "tag" + }, + "op": "=", + "value": "live" + }, + { + "id": "3e5d7976", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + }, + { + "id": "c18ed7a3", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table_name}}" + ] + } + ], + "op": "AND" + }, + "expression": "B", + "disabled": false, + "having": [], + "stepInterval": 840, + "limit": null, + "orderBy": [], + "groupBy": [ + { + "dataType": "string", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag", + "id": "postgresql.table.name--string--tag--false" + } + ], + "legend": "Live rows", + "reduceTo": "sum" + }, + { + "dataSource": "metrics", + "queryName": "C", + "aggregateOperator": "sum_rate", + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.index.scans--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.index.scans", + "type": "Sum" + }, + "timeAggregation": "rate", + "spaceAggregation": "sum", + "functions": [], + "filters": { + "items": [ + { + "id": "f9355263", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + }, + { + "id": "8807a9c4", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table_name}}" + ] + } + ], + "op": "AND" + }, + "expression": "C", + "disabled": false, + "having": [], + "stepInterval": 840, + "limit": null, + "orderBy": [], + "groupBy": [ + { + "dataType": "string", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag", + "id": "postgresql.table.name--string--tag--false" + } + ], + "legend": "Index scans", + "reduceTo": "sum" + }, + { + "dataSource": "metrics", + "queryName": "D", + "aggregateOperator": "avg", + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.table.size--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.table.size", + "type": "Sum" + }, + "timeAggregation": "rate", + "spaceAggregation": "sum", + "functions": [], + "filters": { + "items": [ + { + "id": "4be865f1", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db_name}}" + ] + }, + { + "id": "58200638", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table_name}}" + ] + } + ], + "op": "AND" + }, + "expression": "D", + "disabled": true, + "having": [], + "stepInterval": 840, + "limit": null, + "orderBy": [], + "groupBy": [ + { + "dataType": "string", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag", + "id": "postgresql.table.name--string--tag--false" + } + ], + "legend": "Table size", + "reduceTo": "sum" + } + ], + "queryFormulas": [ + { + "queryName": "F1", + "expression": "D/1024/1024/1024", + "disabled": false, + "legend": "Table size (GB)" + } + ] + }, + "id": "05e9c65b-a296-47c0-a802-2fca3320b07a", + "queryType": "builder" + }, + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Table stats", + "yAxisUnit": "none", + "selectedLogFields": [], + "selectedTracesFields": [] + }, + { + "description": "", + "id": "7df9b6d2-8f7f-48d4-80d6-ae07d47746d6", + "panelTypes": "row", + "title": "Operations" + }, + { + "description": "", + "id": "b437186f-d112-4fb9-bed5-5bea2b5f4b60", + "panelTypes": "row", + "title": "Locks" + }, + { + "description": "", + "id": "3bd16024-b9ff-4f02-8107-1fd817604d5f", + "panelTypes": "row", + "title": "Connections" + }, + { + "description": "", + "id": "4b94cfd8-7a28-46f9-a618-0a186908f0d5", + "panelTypes": "row", + "title": "Stats" + } + ], + "uuid": "149ad467-ba1b-421f-ad87-78f943cc7530" + } diff --git a/pkg/query-service/app/integrations/builtin_integrations/aws_rds_postgres/assets/dashboards/overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_postgres/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..1b28ffc043 --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/aws_rds_postgres/assets/dashboards/overview_dot.json @@ -0,0 +1,2782 @@ +{ + "id": "aws_rds_postgres", + "description": "", + "layout": [ + { + "h": 5, + "i": "8d22c6a7-b22e-4ad2-b242-e15de32ddc0f", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 5, + "i": "94fe032e-3ffc-4cdc-aae6-f851fa47d957", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 5, + "i": "d73f2e63-33d8-40f7-a67b-861a628ba249", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 5 + }, + { + "h": 5, + "i": "336bca83-50be-4937-b41b-ca8fde150f4d", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 5 + }, + { + "h": 5, + "i": "6807e631-4894-4de8-8a55-686c8fa08d4b", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 10 + }, + { + "h": 5, + "i": "d599a942-4dbf-4e29-a3ac-a3142399b557", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 10 + }, + { + "h": 5, + "i": "31c78945-ea1e-4ae1-b0fb-6f1c9de2c016", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 5, + "i": "845ee717-bbd1-424c-8293-f49e76aa43b3", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + }, + { + "h": 5, + "i": "c5189b72-1055-4d6a-b18d-fa23bd9c28d6", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 20 + }, + { + "h": 5, + "i": "ae099f6e-5d6c-4127-ac70-2da9741837d7", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 20 + }, + { + "h": 5, + "i": "03c1f0bd-6713-4355-b8e3-6ef781af32c2", + "moved": false, + "static": false, + "w": 4, + "x": 0, + "y": 25 + }, + { + "h": 5, + "i": "37aabb43-fd8b-47c5-9444-0cd77f9ac435", + "moved": false, + "static": false, + "w": 4, + "x": 4, + "y": 25 + }, + { + "h": 5, + "i": "c6939628-3c4c-48fb-a2cf-46f6cb358359", + "moved": false, + "static": false, + "w": 4, + "x": 8, + "y": 25 + }, + { + "h": 5, + "i": "7854afc7-0cd5-4792-a760-be98a2e2f96b", + "moved": false, + "static": false, + "w": 4, + "x": 0, + "y": 30 + }, + { + "h": 5, + "i": "8126584b-eaa9-4b79-ba8e-a00c394544d8", + "moved": false, + "static": false, + "w": 4, + "x": 4, + "y": 30 + }, + { + "h": 5, + "i": "3d0a6717-1fd0-4810-b0e9-fe5190d5809f", + "moved": false, + "static": false, + "w": 4, + "x": 8, + "y": 30 + }, + { + "h": 5, + "i": "ffc39591-288f-4b28-87ee-43456d5d0667", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 35 + } + ], + "panelMap": {}, + "tags": [ + "aws", + "rds", + "postgres" + ], + "title": "AWS RDS Postgres", + "uploadedGrafana": false, + "variables": { + "5ae02d7b-d201-4481-ad6f-ffb9d53e1b3e": { + "allSelected": true, + "customValue": "", + "description": "This is the unique key that identifies a DB instance", + "id": "5ae02d7b-d201-4481-ad6f-ffb9d53e1b3e", + "modificationUUID": "1ecf21e3-488a-41e7-92f2-7dc75c9de49a", + "multiSelect": true, + "name": "dbinstance_identifier", + "order": 0, + "queryValue": "SELECT JSONExtractString(labels, 'dbinstance_identifier') as dbinstance_identifier\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like 'aws_rds_database_connections_average'\nGROUP BY dbinstance_identifier", + "selectedValue": [ + "integration-db-instance-instance-1", + "integration-db-instance-instance-2", + "integration-db-instance-instance-3", + "integration-test-postgres-instance-1", + "integration-test-postgres-instance-2", + "integration-test-postgres-instance-3", + "integration-testing-db-instance-1", + "integration-testing-db-instance-2", + "integration-testing-db-instance-3" + ], + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + } + }, + "version": "v4", + "widgets": [ + { + "description": "The number of client network connections to the database instance.", + "fillSpans": false, + "id": "94fe032e-3ffc-4cdc-aae6-f851fa47d957", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_database_connections_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_database_connections_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "4e451ffc", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "b6816e82-3e9b-4dc6-9fc0-047ef50e47d4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "DatabaseConnections", + "yAxisUnit": "short" + }, + { + "description": "The percentage of CPU utilization.", + "fillSpans": false, + "id": "8d22c6a7-b22e-4ad2-b242-e15de32ddc0f", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_cpuutilization_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_cpuutilization_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f0a48ddc", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0318116a-ba6b-405c-b2c0-8dfb321f3ad0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPUUtilization", + "yAxisUnit": "percent" + }, + { + "description": "The amount of available random access memory. This metric reports the value of the MemAvailable field of /proc/meminfo", + "fillSpans": false, + "id": "d599a942-4dbf-4e29-a3ac-a3142399b557", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_freeable_memory_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_freeable_memory_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "b738d056", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5a1e0e0d-3190-4a38-8030-b48d24ebe0f1", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "FreeableMemory", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "c6939628-3c4c-48fb-a2cf-46f6cb358359", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_read_latency_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_read_latency_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d0ac5956", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "794a5db3-b75c-4354-a509-ab24b5daeba4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "ReadLatency", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "03c1f0bd-6713-4355-b8e3-6ef781af32c2", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_read_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_read_throughput_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "bdc062ed", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "6915105d-17eb-4863-8ccd-88c6a56d9ad7", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "aws_rds_read_throughput_average" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "ReadThroughput", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "37aabb43-fd8b-47c5-9444-0cd77f9ac435", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_read_iops_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_read_iops_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "74504cdf", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "0ab52186-6617-4f8b-a3fc-3778c09b6faf", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "ReadIOPS", + "yAxisUnit": "none" + }, + { + "description": "The amount of available storage space.", + "fillSpans": false, + "id": "6807e631-4894-4de8-8a55-686c8fa08d4b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_free_storage_space_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_free_storage_space_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "3cfa657c", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "b7f7c9e9-0fdf-462e-b465-57025785e98f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "FreeStorageSpace", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "7854afc7-0cd5-4792-a760-be98a2e2f96b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_write_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_write_throughput_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "05330793", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d6be5165-c686-412f-80f7-4a81a28cae7d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "WriteThroughput", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "8126584b-eaa9-4b79-ba8e-a00c394544d8", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_write_iops_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_write_iops_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "0606e3a2", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "253e440a-b13d-411c-a069-d4da1f4c84d7", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "WriteIOPS", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "ffc39591-288f-4b28-87ee-43456d5d0667", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "clickhouse_sql": [ + { + "name": "A", + "legend": "", + "disabled": false, + "query": "" + } + ], + "promql": [ + { + "name": "A", + "query": "", + "legend": "", + "disabled": false + } + ], + "builder": { + "queryData": [ + { + "dataSource": "metrics", + "queryName": "A", + "aggregateOperator": "sum", + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_network_transmit_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_network_transmit_throughput_average", + "type": "Gauge" + }, + "timeAggregation": "sum", + "spaceAggregation": "sum", + "functions": [], + "filters": { + "items": [ + { + "id": "9a27ef98", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "expression": "A", + "disabled": true, + "having": [], + "stepInterval": 60, + "limit": null, + "orderBy": [], + "groupBy": [ + { + "dataType": "string", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag", + "id": "dbinstance_identifier--string--tag--false" + } + ], + "legend": "n/w transmit", + "reduceTo": "sum" + }, + { + "dataSource": "metrics", + "queryName": "B", + "aggregateOperator": "sum", + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_network_receive_throughput_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_network_receive_throughput_average", + "type": "Gauge" + }, + "timeAggregation": "sum", + "spaceAggregation": "sum", + "functions": [], + "filters": { + "items": [ + { + "id": "df2ee1fc", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "expression": "B", + "disabled": true, + "having": [], + "stepInterval": 60, + "limit": null, + "orderBy": [], + "groupBy": [ + { + "dataType": "string", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag", + "id": "dbinstance_identifier--string--tag--false" + } + ], + "legend": "n/w receive", + "reduceTo": "sum" + } + ], + "queryFormulas": [ + { + "queryName": "F1", + "expression": "A/1024/1024", + "disabled": false, + "legend": "n/w transmit (mb)" + }, + { + "queryName": "F2", + "expression": "B/1024/1024", + "disabled": false, + "legend": "n/w receive (mb)" + } + ] + }, + "id": "60b5a712-ac27-4b2e-a8d7-a180b389c780", + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network transmit/receive", + "yAxisUnit": "Bps" + }, + { + "description": "The number of outstanding I/Os (read/write requests) waiting to access the disk.", + "fillSpans": false, + "id": "845ee717-bbd1-424c-8293-f49e76aa43b3", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_disk_queue_depth_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_disk_queue_depth_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "96c73381", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "afe73a96-1c56-451e-bca6-2c41c62d47a8", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "DiskQueueDepth", + "yAxisUnit": "none" + }, + { + "description": "The percentage of throughput credits remaining in the burst bucket of your RDS database. ", + "fillSpans": false, + "id": "ae099f6e-5d6c-4127-ac70-2da9741837d7", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_ebsiobalance__average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_ebsiobalance__average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "e88eb970", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "1d8b8b67-0646-4ebc-aa8b-1c10643ddfa0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "EBSByteBalance%", + "yAxisUnit": "none" + }, + { + "description": "The percentage of I/O credits remaining in the burst bucket of your RDS database.", + "fillSpans": false, + "id": "31c78945-ea1e-4ae1-b0fb-6f1c9de2c016", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_ebsiobalance__average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_ebsiobalance__average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c8d78684", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a0f7c676-ae5f-4db9-bb73-26dbb9db7fab", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "EBSIOBalance%", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "3d0a6717-1fd0-4810-b0e9-fe5190d5809f", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_write_latency_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_write_latency_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5b97fb87", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "7533cf12-7ee3-49e8-8fcd-c1f82ea317ab", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "WriteLatency", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "c5189b72-1055-4d6a-b18d-fa23bd9c28d6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_swap_usage_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_swap_usage_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "afabe318", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "61ecb019-0fbf-44f1-a9db-995b86ee4805", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "SwapUsage", + "yAxisUnit": "decbytes" + }, + { + "description": "", + "fillSpans": false, + "id": "336bca83-50be-4937-b41b-ca8fde150f4d", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_checkpoint_lag_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_checkpoint_lag_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "abac3888", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "187a2eae-4fe4-4e47-b544-20404532cbb2", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CheckpointLag", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "d73f2e63-33d8-40f7-a67b-861a628ba249", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "aws_rds_replica_lag_average--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "aws_rds_replica_lag_average", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "47be5579", + "key": { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.dbinstance_identifier}}" + ] + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "dbinstance_identifier--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "dbinstance_identifier", + "type": "tag" + } + ], + "having": [], + "legend": "{{dbinstance_identifier}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "avg" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "53e6ee05-bcbc-4f01-b061-a358371d92ff", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "ReplicaLag", + "yAxisUnit": "none" + } + ], + "uuid": "05e473e2-5733-4877-8b7f-cb311d4e9c0a" +} \ No newline at end of file diff --git a/pkg/query-service/app/integrations/builtin_integrations/clickhouse/assets/dashboards/overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/clickhouse/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..28945e0081 --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/clickhouse/assets/dashboards/overview_dot.json @@ -0,0 +1,7744 @@ +{ + "id": "clickhouse-overview", + "description": "This dashboard provides a high-level overview of your Clickhouse Server hosts.", + "layout": [ + { + "h": 3, + "i": "3b96004b-f356-4fc9-a7de-36af5eabad5d", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 9 + }, + { + "h": 3, + "i": "be48f124-96d1-4327-ae10-6f2c1b81fe50", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 12 + }, + { + "h": 3, + "i": "8eb1e295-d5e8-4007-acb1-a9ec385d6f4d", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 12 + }, + { + "h": 3, + "i": "7f36d404-8915-4bfb-ac93-b69a9ea1428a", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 6 + }, + { + "h": 3, + "i": "947053c4-b809-4241-9cb2-90e09868c2a9", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 3 + }, + { + "h": 3, + "i": "653248f0-9658-4be3-ba03-017d804e90c8", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 3, + "i": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 3, + "i": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 6 + }, + { + "h": 3, + "i": "97a2c7bb-f135-412b-a006-167dcc1882c6", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 3 + }, + { + "h": 3, + "i": "486edfb2-02ce-45a3-ab89-06fce614edcf", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + }, + { + "h": 3, + "i": "fcb693b5-6786-49e0-8007-4bc6009c70e2", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 3, + "i": "581eb12e-8c92-4a8d-9800-0f72f350cfd1", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 9 + } + ], + "tags": [], + "title": "Clickhouse Overview", + "variables": { + "eaf65de3-20bb-4dbc-9792-32a445f7be8f": { + "allSelected": false, + "customValue": "", + "description": "", + "id": "eaf65de3-20bb-4dbc-9792-32a445f7be8f", + "key": "eaf65de3-20bb-4dbc-9792-32a445f7be8f", + "modificationUUID": "2fbb477e-7775-427b-ab14-29b673dd216c", + "multiSelect": false, + "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 = 'ClickHouseMetrics_VersionInteger' and __normalized=false \nGROUP BY host.name", + "selectedValue": "", + "showALLOption": false, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "uploadedGrafana": false, + "version": "v4", + "widgets": [ + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "653248f0-9658-4be3-ba03-017d804e90c8", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertedRows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertedRows", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a7d9e1d3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Inserted Rows", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ee3de02b-cb8b-4ebc-8041-245f10943ca6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Inserted Rows", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "97a2c7bb-f135-412b-a006-167dcc1882c6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_QueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_QueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6fd64e65", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "All Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "ce64d4b6", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "ffcd0e01", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "da05a175", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Other Queries (not select or insert)", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e1a1e8b1-60c0-40b6-8391-151d79e91325", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Total Query Time", + "yAxisUnit": "µs" + }, + { + "description": "Writes rejected with \"Too many parts\" for inserts or \"Too many mutations\" for mutations", + "fillSpans": false, + "id": "7f36d404-8915-4bfb-ac93-b69a9ea1428a", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_RejectedInserts--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_RejectedInserts", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "8c903ae3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Rejected Inserts ('Too many parts')", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_RejectedMutations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_RejectedMutations", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "74059430", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Rejected Mutations ('Too many mutations')", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a5bd4adb-1610-43a1-a11e-72dc4e76416d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rejected Writes", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "653248f0-9658-4be3-ba03-017d804e90c8", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertedRows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertedRows", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a7d9e1d3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Inserted Rows", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ee3de02b-cb8b-4ebc-8041-245f10943ca6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Inserted Rows", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "97a2c7bb-f135-412b-a006-167dcc1882c6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_QueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_QueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6fd64e65", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "All Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "ce64d4b6", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "ffcd0e01", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "da05a175", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Other Queries (not select or insert)", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e1a1e8b1-60c0-40b6-8391-151d79e91325", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Total Query Time", + "yAxisUnit": "µs" + }, + { + "description": "", + "fillSpans": false, + "id": "8eb1e295-d5e8-4007-acb1-a9ec385d6f4d", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseMetrics_MemoryTracking--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseMetrics_MemoryTracking", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5b1aee4f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Memory Used", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "avg", + "stepInterval": 60, + "timeAggregation": "max" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "3bc4df66-32bd-42fe-9744-71a678107ebb", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Memory Usage", + "yAxisUnit": "bytes" + }, + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "653248f0-9658-4be3-ba03-017d804e90c8", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertedRows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertedRows", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a7d9e1d3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Inserted Rows", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ee3de02b-cb8b-4ebc-8041-245f10943ca6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Inserted Rows", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "97a2c7bb-f135-412b-a006-167dcc1882c6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_QueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_QueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6fd64e65", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "All Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "ce64d4b6", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "ffcd0e01", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "da05a175", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Other Queries (not select or insert)", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e1a1e8b1-60c0-40b6-8391-151d79e91325", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Total Query Time", + "yAxisUnit": "µs" + }, + { + "description": "Writes rejected with \"Too many parts\" for inserts or \"Too many mutations\" for mutations", + "fillSpans": false, + "id": "7f36d404-8915-4bfb-ac93-b69a9ea1428a", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_RejectedInserts--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_RejectedInserts", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "8c903ae3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Rejected Inserts", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_RejectedMutations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_RejectedMutations", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "74059430", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Rejected Mutations", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "a5bd4adb-1610-43a1-a11e-72dc4e76416d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rejected Writes", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "653248f0-9658-4be3-ba03-017d804e90c8", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertedRows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertedRows", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a7d9e1d3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Inserted Rows", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "ee3de02b-cb8b-4ebc-8041-245f10943ca6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Inserted Rows", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "a62fdaa8-9193-46c1-a951-8e3d5a6b1cf9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Query--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Query", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "f39fa24e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "feac81df", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "c8516e54", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_AsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_AsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "fabac011", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "9a78e4be-1f4d-4104-b97b-26ba927b100e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Rate of Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "1a1a3a6a-83d2-49db-aa4d-d6f166cc65f0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "7d653034", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedSelectQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedSelectQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "18cd347e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "96af023f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_FailedAsyncInsertQuery--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_FailedAsyncInsertQuery", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "1ec63ffc", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Async Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "536cb476-340c-4afb-a5cc-538ebe419f8d", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Failed Queries", + "yAxisUnit": "cps" + }, + { + "description": "", + "fillSpans": false, + "id": "97a2c7bb-f135-412b-a006-167dcc1882c6", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_QueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_QueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "6fd64e65", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "All Queries", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_SelectQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "ce64d4b6", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Select Queries", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "ffcd0e01", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Insert Queries", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OtherQueryTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "da05a175", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Other Queries (not select or insert)", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e1a1e8b1-60c0-40b6-8391-151d79e91325", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Total Query Time", + "yAxisUnit": "µs" + }, + { + "description": "", + "fillSpans": false, + "id": "947053c4-b809-4241-9cb2-90e09868c2a9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_InsertedBytes--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_InsertedBytes", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "e9d17ef7", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Inserted Data", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "781619c1-2da3-464b-b2af-206645d8da71", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Inserted Data", + "yAxisUnit": "binBps" + }, + { + "description": "", + "fillSpans": false, + "id": "486edfb2-02ce-45a3-ab89-06fce614edcf", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_NetworkReceiveBytes--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_NetworkReceiveBytes", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "cce0dcd3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Received", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_NetworkSendBytes--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_NetworkSendBytes", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "a29a23a0", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Sent", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "57e90fd3-ddc9-44a3-8349-ddcb543c0d6e", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Network Traffic", + "yAxisUnit": "binBps" + }, + { + "description": "", + "fillSpans": false, + "id": "fcb693b5-6786-49e0-8007-4bc6009c70e2", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OSCPUVirtualTimeMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OSCPUVirtualTimeMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d2c354fa", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "OSCPUVirtualTimeMicroseconds", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OSCPUWaitMicroseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OSCPUWaitMicroseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "f6af7585", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "OSCPUWaitMicroseconds", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "e1dda6e4-1032-4e95-b7ec-fb292e3d6823", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "CPU", + "yAxisUnit": "µs" + }, + { + "description": "", + "fillSpans": false, + "id": "be48f124-96d1-4327-ae10-6f2c1b81fe50", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OSReadBytes--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OSReadBytes", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "75a5ec5f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Read", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_OSWriteBytes--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_OSWriteBytes", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "98263fc3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Write", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "d26049ee-35ff-4f30-b359-6f0d00bb8600", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Disk", + "yAxisUnit": "binBps" + }, + { + "description": "", + "fillSpans": false, + "id": "581eb12e-8c92-4a8d-9800-0f72f350cfd1", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_MergesTimeMilliseconds--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_MergesTimeMilliseconds", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "1ac0d1d1", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Total Time Spent on Merges", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "df0e8faf-801a-4e24-a690-10a6d11651e0", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Total Time spent for Background Merges", + "yAxisUnit": "ms" + }, + { + "description": "", + "fillSpans": false, + "id": "3b96004b-f356-4fc9-a7de-36af5eabad5d", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "ClickHouseProfileEvents_Merge--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "ClickHouseProfileEvents_Merge", + "type": "Sum" + }, + "aggregateOperator": "rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "61c9d724", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "=", + "value": "{{.host.name}}" + } + ], + "op": "AND" + }, + "functions": [], + "groupBy": [], + "having": [], + "legend": "Number of merges launched", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "avg", + "spaceAggregation": "sum", + "stepInterval": 60, + "timeAggregation": "rate" + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "cbeb3c56-5a43-467e-b130-b1cb11c6ee4f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "selectedLogFields": [ + { + "dataType": "string", + "name": "body", + "type": "" + }, + { + "dataType": "string", + "name": "timestamp", + "type": "" + } + ], + "selectedTracesFields": [ + { + "dataType": "string", + "id": "serviceName--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "serviceName", + "type": "tag" + }, + { + "dataType": "string", + "id": "name--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "name", + "type": "tag" + }, + { + "dataType": "float64", + "id": "durationNano--float64--tag--true", + "isColumn": true, + "isJSON": false, + "key": "durationNano", + "type": "tag" + }, + { + "dataType": "string", + "id": "httpMethod--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "httpMethod", + "type": "tag" + }, + { + "dataType": "string", + "id": "responseStatusCode--string--tag--true", + "isColumn": true, + "isJSON": false, + "key": "responseStatusCode", + "type": "tag" + } + ], + "softMax": 0, + "softMin": 0, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Background Merges Launched", + "yAxisUnit": "cps" + } + ], + "uuid": "e74aeb83-ac4b-4313-8a97-216b62c8fc59" +} diff --git a/pkg/query-service/app/integrations/builtin_integrations/mongo/assets/dashboards/overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/mongo/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..777302d96f --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/mongo/assets/dashboards/overview_dot.json @@ -0,0 +1,797 @@ +{ + "id": "mongo-overview", + "description": "This dashboard provides a high-level overview of your MongoDB. It includes read/write performance, most-used replicas, collection metrics etc...", + "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" + } + }, + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.operation.count--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.operation.count", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a468a30b", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + } + ], + "having": [], + "legend": "{{operation}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.operation.time--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.operation.time", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "31be3166", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + } + ], + "having": [], + "legend": "{{operation}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.cache.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.cache.operations", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "01b45814", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "type--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "type", + "type": "tag" + } + ], + "having": [], + "legend": "{{type}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.operation.latency.time--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.operation.latency.time", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "2e165319", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "read" + }, + { + "id": "888e920b", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Latency", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.operation.latency.time--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.operation.latency.time", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "53b37ca7", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "9862c46c", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "write" + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Latency", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.operation.latency.time--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.operation.latency.time", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c33ad4b6", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "c70ecfd0", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "command" + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Latency", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.network.io.receive--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.network.io.receive", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "5c9d7fe3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Bytes received :: {{host.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "mongodb.network.io.transmit--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "mongodb.network.io.transmit", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "96520885", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Bytes transmitted :: {{host.name}}", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "sum", + "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" + } + ] +} diff --git a/pkg/query-service/app/integrations/builtin_integrations/postgres/assets/dashboards/overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/postgres/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..f781e93cc4 --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/postgres/assets/dashboards/overview_dot.json @@ -0,0 +1,1869 @@ +{ + "id": "postgres-overview", + "description": "This dashboard provides a high-level overview of your PostgreSQL databases. It includes replication, locks, and throughput etc...", + "layout": [ + { + "h": 3, + "i": "9552123d-6265-48a7-8624-3f4a3fc3c9c0", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 18 + }, + { + "h": 3, + "i": "d7838815-4f5b-4454-86fd-f658b201f3a9", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 15 + }, + { + "h": 3, + "i": "f9a6f683-7455-4643-acc8-467cc5ea52cf", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 15 + }, + { + "h": 3, + "i": "8638a199-20a0-4255-b0a2-3b1ba06c485b", + "moved": false, + "static": false, + "w": 6, + "x": 3, + "y": 12 + }, + { + "h": 3, + "i": "e9341e70-ccb3-47fc-af95-56ba8942c4f2", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 9 + }, + { + "h": 3, + "i": "6b700035-e3c2-4c48-99fa-ebfd6202eed3", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 9 + }, + { + "h": 3, + "i": "bada7864-1d23-4d49-a868-c6b8a93c738f", + "moved": false, + "static": false, + "w": 6, + "x": 3, + "y": 6 + }, + { + "h": 3, + "i": "191d09a6-40b0-4de8-a5b0-aa4254454b99", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 0 + }, + { + "h": 3, + "i": "fa941c00-ce19-49cc-baf2-c38598767dee", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 0 + }, + { + "h": 3, + "i": "114fcf80-e1de-4716-b1aa-0e0738dba10e", + "moved": false, + "static": false, + "w": 6, + "x": 0, + "y": 3 + }, + { + "h": 3, + "i": "667428ef-9b9a-4e91-bd1e-938e0dc1ff32", + "moved": false, + "static": false, + "w": 6, + "x": 6, + "y": 3 + } + ], + "name": "", + "tags": [ + "postgres", + "database" + ], + "title": "Postgres overview", + "variables": { + "4250ef7b-8f42-4a24-902a-a764d070b92d": { + "allSelected": true, + "customValue": "", + "description": "List of hosts sending Postgres metrics", + "id": "4250ef7b-8f42-4a24-902a-a764d070b92d", + "key": "4250ef7b-8f42-4a24-902a-a764d070b92d", + "modificationUUID": "4427b655-c8d2-40ce-84ed-7cb058bd3041", + "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 = 'postgresql.operations'\nGROUP BY `host.name`", + "selectedValue": [ + "Srikanths-MacBook-Pro.local" + ], + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY" + }, + "8ecaee70-640f-46fd-83d9-a4fd18bc66e6": { + "customValue": "", + "description": "List of tables", + "id": "8ecaee70-640f-46fd-83d9-a4fd18bc66e6", + "modificationUUID": "a51321cd-47a2-470a-8df4-372e5bb36f2c", + "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`", + "showALLOption": true, + "sort": "ASC", + "textboxValue": "", + "type": "QUERY", + "selectedValue": [ + "public.activations", + "public.licenses", + "public.plans", + "public.subscription_items", + "public.subscriptions", + "public.trials", + "public.usage" + ], + "allSelected": true + }, + "c66d1581-e5e1-440d-8ff6-ebcf078ab6dd": { + "allSelected": true, + "customValue": "", + "description": "List of databases", + "id": "c66d1581-e5e1-440d-8ff6-ebcf078ab6dd", + "key": "c66d1581-e5e1-440d-8ff6-ebcf078ab6dd", + "modificationUUID": "564a3f43-98f8-4189-b5e4-dcb518d73852", + "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`", + "selectedValue": [ + "postgres" + ], + "showALLOption": true, + "sort": "DISABLED", + "textboxValue": "", + "type": "QUERY" + } + }, + "widgets": [ + { + "description": "The average number of db insert operations.", + "fillSpans": false, + "id": "191d09a6-40b0-4de8-a5b0-aa4254454b99", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "c1dff946", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "ins" + }, + { + "id": "0cd6dc8f", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "2e60e171", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "bf48ac4c-bc0c-41a0-87f4-6f8ae7888d1f", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Inserts", + "yAxisUnit": "none" + }, + { + "description": "The average number of db update operations.", + "fillSpans": false, + "id": "fa941c00-ce19-49cc-baf2-c38598767dee", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "98463ec9", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "upd" + }, + { + "id": "47db4e8e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "64020332", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "34a6ac3a-b7f6-4b5f-a084-a44378033d82", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Updates", + "yAxisUnit": "none" + }, + { + "description": "The average number of db delete operations.", + "fillSpans": false, + "id": "114fcf80-e1de-4716-b1aa-0e0738dba10e", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "62738de4", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "del" + }, + { + "id": "d18471e2", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "9d153899", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "734393d1-76ed-4f4f-bef8-0a91d27ebec4", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Deleted", + "yAxisUnit": "none" + }, + { + "description": "The average number of db heap-only update operations.", + "fillSpans": false, + "id": "667428ef-9b9a-4e91-bd1e-938e0dc1ff32", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "a91e35c4", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "hot_upd" + }, + { + "id": "2b419378", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "7b4a29a2", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "f43c2d19-4abc-4f5e-881b-db7add4a870a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Heap updates", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "bada7864-1d23-4d49-a868-c6b8a93c738f", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d6aeccf7", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "ins" + }, + { + "id": "4004a127", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "ee4e9344", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "Inserted", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "a12cceed", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "upd" + }, + { + "id": "11735104", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "2d542482", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "Updated", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.operations--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.operations", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "1bca3e46", + "key": { + "dataType": "string", + "id": "operation--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "operation", + "type": "tag" + }, + "op": "=", + "value": "del" + }, + { + "id": "3631755d", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "44ffc874", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "Deleted", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5056105b-1c30-4d27-8187-64457f2a1ec6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Operation by database", + "yAxisUnit": "none" + }, + { + "description": "The number of database locks.", + "fillSpans": false, + "id": "6b700035-e3c2-4c48-99fa-ebfd6202eed3", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.database.locks--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.database.locks", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "527a3124", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "mode--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "mode", + "type": "tag" + } + ], + "having": [], + "legend": "{{mode}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "877b0df3-9ae3-455e-ad27-bc3aa40b3f4c", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Locks by lock mode", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "e9341e70-ccb3-47fc-af95-56ba8942c4f2", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.deadlocks--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.deadlocks", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "ff14f172", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "efb83717", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "5056105b-1c30-4d27-8187-64457f2a1ec6", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Deadlocks count", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "8638a199-20a0-4255-b0a2-3b1ba06c485b", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.backends--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.backends", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "ed335b00", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "20d2a4c5", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.database.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "205b99a0-2f1c-4bd2-9ba0-cc2da6ef247a", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Connections per db", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "f9a6f683-7455-4643-acc8-467cc5ea52cf", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.rows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.rows", + "type": "Sum" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "70786905", + "key": { + "dataType": "string", + "id": "state--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "state", + "type": "tag" + }, + "op": "=", + "value": "dead" + }, + { + "id": "810e39a9", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "3e5ef839", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + }, + { + "id": "9e913563", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Dead rows", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "cc7452c8-118b-4676-959e-7062bafc41ee", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Dead rows", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "d7838815-4f5b-4454-86fd-f658b201f3a9", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "graph", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.index.scans--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.index.scans", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "da04d826", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "590332a7", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + }, + { + "id": "171b9516", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.index.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.index.name", + "type": "tag" + } + ], + "having": [], + "legend": "{{postgresql.index.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "2c6b630b-8bd9-4001-815b-f2b1f439a9dd", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Index scans by index", + "yAxisUnit": "none" + }, + { + "description": "", + "fillSpans": false, + "id": "9552123d-6265-48a7-8624-3f4a3fc3c9c0", + "isStacked": false, + "nullZeroValues": "zero", + "opacity": "1", + "panelTypes": "table", + "query": { + "builder": { + "queryData": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.rows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.rows", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "83f9cab9", + "key": { + "dataType": "string", + "id": "state--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "state", + "type": "tag" + }, + "op": "=", + "value": "dead" + }, + { + "id": "2a0284c2", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "c2aaf758", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + }, + { + "id": "a603fda9", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + } + ], + "having": [], + "legend": "Dead rows", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.rows--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.rows", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "82f1f0f5", + "key": { + "dataType": "string", + "id": "state--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "state", + "type": "tag" + }, + "op": "=", + "value": "live" + }, + { + "id": "14de7a06", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "0a88a27a", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + }, + { + "id": "4417218d", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + } + ], + "having": [], + "legend": "Live rows", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.index.scans--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.index.scans", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "C", + "filters": { + "items": [ + { + "id": "22795c15", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "d7e7c193", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + }, + { + "id": "d3ae1dbe", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + } + ], + "having": [], + "legend": "Index scans", + "limit": null, + "orderBy": [], + "queryName": "C", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "postgresql.table.size--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "postgresql.table.size", + "type": "Sum" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "D", + "filters": { + "items": [ + { + "id": "48c436ab", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + }, + { + "id": "cc617789", + "key": { + "dataType": "string", + "id": "postgresql.database.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.database.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.db.name}}" + ] + }, + { + "id": "b4029d50", + "key": { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.table.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "postgresql.table.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "postgresql.table.name", + "type": "tag" + } + ], + "having": [], + "legend": "Table size", + "limit": null, + "orderBy": [], + "queryName": "D", + "reduceTo": "sum", + "stepInterval": 60 + } + ], + "queryFormulas": [] + }, + "clickhouse_sql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "id": "26a9dcbf-4fc7-4ddd-b786-2078def1f462", + "promql": [ + { + "disabled": false, + "legend": "", + "name": "A", + "query": "" + } + ], + "queryType": "builder" + }, + "softMax": null, + "softMin": null, + "thresholds": [], + "timePreferance": "GLOBAL_TIME", + "title": "Table stats", + "yAxisUnit": "none" + } + ] +} diff --git a/pkg/query-service/app/integrations/builtin_integrations/redis/assets/dashboards/overview_dot.json b/pkg/query-service/app/integrations/builtin_integrations/redis/assets/dashboards/overview_dot.json new file mode 100644 index 0000000000..dacf4db862 --- /dev/null +++ b/pkg/query-service/app/integrations/builtin_integrations/redis/assets/dashboards/overview_dot.json @@ -0,0 +1,924 @@ +{ + "id": "redis-overview", + "description": "This dashboard shows the Redis instance overview. It includes latency, hit/miss rate, connections, and memory information.\n", + "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" + } + }, + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.keyspace.hits--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "redis.keyspace.hits", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "e99669ea", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Hit/s across all hosts", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.clients.blocked--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "redis.clients.blocked", + "type": "Sum" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "97247f25", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Blocked clients across all hosts", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "", + "id": "redis.db.keys------false", + "isColumn": false, + "key": "redis.db.keys", + "type": "" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.rdb.changes_since_last_save--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "redis.rdb.changes_since_last_save", + "type": "Sum" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "d4aef346", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "Number of unsaved changes", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.commands--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "redis.commands", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "458dc402", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [], + "having": [], + "legend": "ops/s", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.memory.used--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "redis.memory.used", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "394a537e", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Used::{{host.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "stepInterval": 60 + }, + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.maxmemory--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "redis.maxmemory", + "type": "Gauge" + }, + "aggregateOperator": "max", + "dataSource": "metrics", + "disabled": false, + "expression": "B", + "filters": { + "items": [ + { + "id": "0c0754da", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Max::{{host.name}}", + "limit": null, + "orderBy": [], + "queryName": "B", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.memory.rss--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "redis.memory.rss", + "type": "Gauge" + }, + "aggregateOperator": "sum", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "4dc9ae49", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Rss::{{host.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.memory.fragmentation_ratio--float64--Gauge--true", + "isColumn": true, + "isJSON": false, + "key": "redis.memory.fragmentation_ratio", + "type": "Gauge" + }, + "aggregateOperator": "avg", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "79dc25f3", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Rss::{{host.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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": [ + { + "aggregateAttribute": { + "dataType": "float64", + "id": "redis.keys.evicted--float64--Sum--true", + "isColumn": true, + "isJSON": false, + "key": "redis.keys.evicted", + "type": "Sum" + }, + "aggregateOperator": "sum_rate", + "dataSource": "metrics", + "disabled": false, + "expression": "A", + "filters": { + "items": [ + { + "id": "53d189ac", + "key": { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + }, + "op": "in", + "value": [ + "{{.host.name}}" + ] + } + ], + "op": "AND" + }, + "groupBy": [ + { + "dataType": "string", + "id": "host.name--string--tag--false", + "isColumn": false, + "isJSON": false, + "key": "host.name", + "type": "tag" + } + ], + "having": [], + "legend": "Rss::{{host.name}}", + "limit": null, + "orderBy": [], + "queryName": "A", + "reduceTo": "sum", + "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" + } + ] +} diff --git a/pkg/query-service/app/integrations/manager_test.go b/pkg/query-service/app/integrations/manager_test.go index c78413c0b7..39c9d1ff88 100644 --- a/pkg/query-service/app/integrations/manager_test.go +++ b/pkg/query-service/app/integrations/manager_test.go @@ -3,12 +3,18 @@ package integrations import ( "context" "testing" + "time" - "github.com/SigNoz/signoz/pkg/emailing" - "github.com/SigNoz/signoz/pkg/emailing/noopemailing" + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerserver" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" + "github.com/SigNoz/signoz/pkg/emailing/emailingtest" "github.com/SigNoz/signoz/pkg/instrumentation/instrumentationtest" "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" - "github.com/SigNoz/signoz/pkg/modules/user/impluser" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" + "github.com/SigNoz/signoz/pkg/signoz" + "github.com/SigNoz/signoz/pkg/types/authtypes" _ "github.com/mattn/go-sqlite3" "github.com/stretchr/testify/require" ) @@ -19,11 +25,14 @@ func TestIntegrationLifecycle(t *testing.T) { mgr, store := NewTestIntegrationsManager(t) ctx := context.Background() - organizationModule := implorganization.NewModule(implorganization.NewStore(store)) providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - userModule := impluser.NewModule(impluser.NewStore(store, providerSettings), nil, emailing, providerSettings) - user, apiErr := createTestUser(organizationModule, userModule) + sharder, _ := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + orgGetter := implorganization.NewGetter(implorganization.NewStore(store), sharder) + alertmanager, _ := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Provider: "signoz", Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, store, orgGetter) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(store, jwt, emailing, providerSettings, orgGetter, alertmanager) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) if apiErr != nil { t.Fatalf("could not create test user: %v", apiErr) } diff --git a/pkg/query-service/app/integrations/test_utils.go b/pkg/query-service/app/integrations/test_utils.go index 94a2954e87..9230a63322 100644 --- a/pkg/query-service/app/integrations/test_utils.go +++ b/pkg/query-service/app/integrations/test_utils.go @@ -30,7 +30,7 @@ func NewTestIntegrationsManager(t *testing.T) (*Manager, sqlstore.SQLStore) { }, testDB } -func createTestUser(organizationModule organization.Module, userModule user.Module) (*types.User, *model.ApiError) { +func createTestUser(organizationModule organization.Setter, userModule user.Module) (*types.User, *model.ApiError) { // Create a test user for auth ctx := context.Background() organization := types.NewOrganization("test") diff --git a/pkg/query-service/app/server.go b/pkg/query-service/app/server.go index b060e47000..3074328f5e 100644 --- a/pkg/query-service/app/server.go +++ b/pkg/query-service/app/server.go @@ -15,6 +15,7 @@ import ( "github.com/SigNoz/signoz/pkg/apis/fields" "github.com/SigNoz/signoz/pkg/http/middleware" "github.com/SigNoz/signoz/pkg/licensing/nooplicensing" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/prometheus" "github.com/SigNoz/signoz/pkg/query-service/agentConf" "github.com/SigNoz/signoz/pkg/query-service/app/clickhouseReader" @@ -101,6 +102,7 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) { serverOptions.SigNoz.SQLStore, serverOptions.SigNoz.TelemetryStore, serverOptions.SigNoz.Prometheus, + serverOptions.SigNoz.Modules.OrgGetter, ) if err != nil { return nil, err @@ -194,7 +196,7 @@ func NewServer(serverOptions *ServerOptions) (*Server, error) { &opAmpModel.AllAgents, agentConfMgr, ) - orgs, err := apiHandler.Signoz.Modules.Organization.GetAll(context.Background()) + orgs, err := apiHandler.Signoz.Modules.OrgGetter.ListByOwnedKeyRange(context.Background()) if err != nil { return nil, err } @@ -212,14 +214,14 @@ func (s *Server) createPrivateServer(api *APIHandler) (*http.Server, error) { r := NewRouter() - r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap) + r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}, s.serverOptions.SigNoz.Sharder, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) r.Use(middleware.NewTimeout(s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.Config.APIServer.Timeout.ExcludedRoutes, s.serverOptions.Config.APIServer.Timeout.Default, s.serverOptions.Config.APIServer.Timeout.Max, ).Wrap) r.Use(middleware.NewAnalytics().Wrap) - r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) + r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.SigNoz.Sharder).Wrap) r.Use(middleware.NewLogging(s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.Config.APIServer.Logging.ExcludedRoutes).Wrap) api.RegisterPrivateRoutes(r) @@ -243,14 +245,14 @@ func (s *Server) createPrivateServer(api *APIHandler) (*http.Server, error) { func (s *Server) createPublicServer(api *APIHandler, web web.Web) (*http.Server, error) { r := NewRouter() - r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap) + r.Use(middleware.NewAuth(s.serverOptions.Jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}, s.serverOptions.SigNoz.Sharder, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) r.Use(middleware.NewTimeout(s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.Config.APIServer.Timeout.ExcludedRoutes, s.serverOptions.Config.APIServer.Timeout.Default, s.serverOptions.Config.APIServer.Timeout.Max, ).Wrap) r.Use(middleware.NewAnalytics().Wrap) - r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger()).Wrap) + r.Use(middleware.NewAPIKey(s.serverOptions.SigNoz.SQLStore, []string{"SIGNOZ-API-KEY"}, s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.SigNoz.Sharder).Wrap) r.Use(middleware.NewLogging(s.serverOptions.SigNoz.Instrumentation.Logger(), s.serverOptions.Config.APIServer.Logging.ExcludedRoutes).Wrap) am := middleware.NewAuthZ(s.serverOptions.SigNoz.Instrumentation.Logger()) @@ -267,6 +269,7 @@ func (s *Server) createPublicServer(api *APIHandler, web web.Web) (*http.Server, api.RegisterMessagingQueuesRoutes(r, am) api.RegisterThirdPartyApiRoutes(r, am) api.MetricExplorerRoutes(r, am) + api.RegisterTraceFunnelsRoutes(r, am) c := cors.New(cors.Options{ AllowedOrigins: []string{"*"}, @@ -416,6 +419,7 @@ func makeRulesManager( sqlstore sqlstore.SQLStore, telemetryStore telemetrystore.TelemetryStore, prometheus prometheus.Prometheus, + orgGetter organization.Getter, ) (*rules.Manager, error) { // create manager opts managerOpts := &rules.ManagerOptions{ @@ -428,6 +432,7 @@ func makeRulesManager( Cache: cache, EvalDelay: constants.GetEvalDelay(), SQLStore: sqlstore, + OrgGetter: orgGetter, } // create Manager diff --git a/pkg/query-service/app/traces/v4/query_builder.go b/pkg/query-service/app/traces/v4/query_builder.go index 7b2befdd95..69a76de4d1 100644 --- a/pkg/query-service/app/traces/v4/query_builder.go +++ b/pkg/query-service/app/traces/v4/query_builder.go @@ -87,7 +87,7 @@ func existsSubQueryForFixedColumn(key v3.AttributeKey, op v3.FilterOperator) (st } } -func buildTracesFilterQuery(fs *v3.FilterSet) (string, error) { +func BuildTracesFilterQuery(fs *v3.FilterSet) (string, error) { var conditions []string if fs != nil && len(fs.Items) != 0 { @@ -167,7 +167,7 @@ func handleEmptyValuesInGroupBy(groupBy []v3.AttributeKey) (string, error) { Operator: "AND", Items: filterItems, } - return buildTracesFilterQuery(&filterSet) + return BuildTracesFilterQuery(&filterSet) } return "", nil } @@ -248,7 +248,7 @@ func buildTracesQuery(start, end, step int64, mq *v3.BuilderQuery, panelType v3. timeFilter := fmt.Sprintf("(timestamp >= '%d' AND timestamp <= '%d') AND (ts_bucket_start >= %d AND ts_bucket_start <= %d)", tracesStart, tracesEnd, bucketStart, bucketEnd) - filterSubQuery, err := buildTracesFilterQuery(mq.Filters) + filterSubQuery, err := BuildTracesFilterQuery(mq.Filters) if err != nil { return "", err } diff --git a/pkg/query-service/app/traces/v4/query_builder_test.go b/pkg/query-service/app/traces/v4/query_builder_test.go index eff4070b54..8943083162 100644 --- a/pkg/query-service/app/traces/v4/query_builder_test.go +++ b/pkg/query-service/app/traces/v4/query_builder_test.go @@ -211,7 +211,7 @@ func Test_buildTracesFilterQuery(t *testing.T) { want: "", }, { - name: "Test buildTracesFilterQuery in, nin", + name: "Test BuildTracesFilterQuery in, nin", args: args{ fs: &v3.FilterSet{Operator: "AND", Items: []v3.FilterItem{ {Key: v3.AttributeKey{Key: "method", DataType: v3.AttributeKeyDataTypeString, Type: v3.AttributeKeyTypeTag}, Value: []interface{}{"GET", "POST"}, Operator: v3.FilterOperatorIn}, @@ -226,7 +226,7 @@ func Test_buildTracesFilterQuery(t *testing.T) { wantErr: false, }, { - name: "Test buildTracesFilterQuery not eq, neq, gt, lt, gte, lte", + name: "Test BuildTracesFilterQuery not eq, neq, gt, lt, gte, lte", args: args{ fs: &v3.FilterSet{Operator: "AND", Items: []v3.FilterItem{ {Key: v3.AttributeKey{Key: "duration", DataType: v3.AttributeKeyDataTypeInt64, Type: v3.AttributeKeyTypeTag}, Value: 102, Operator: v3.FilterOperatorEqual}, @@ -274,13 +274,13 @@ func Test_buildTracesFilterQuery(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := buildTracesFilterQuery(tt.args.fs) + got, err := BuildTracesFilterQuery(tt.args.fs) if (err != nil) != tt.wantErr { - t.Errorf("buildTracesFilterQuery() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("BuildTracesFilterQuery() error = %v, wantErr %v", err, tt.wantErr) return } if got != tt.want { - t.Errorf("buildTracesFilterQuery() = %v, want %v", got, tt.want) + t.Errorf("BuildTracesFilterQuery() = %v, want %v", got, tt.want) } }) } diff --git a/pkg/query-service/auth/auth.go b/pkg/query-service/auth/auth.go deleted file mode 100644 index d157083d4e..0000000000 --- a/pkg/query-service/auth/auth.go +++ /dev/null @@ -1,65 +0,0 @@ -package auth - -import ( - "context" - - "github.com/SigNoz/signoz/pkg/alertmanager" - "github.com/SigNoz/signoz/pkg/modules/organization" - "github.com/SigNoz/signoz/pkg/modules/quickfilter" - "github.com/SigNoz/signoz/pkg/modules/user" - "github.com/SigNoz/signoz/pkg/valuer" - - "github.com/SigNoz/signoz/pkg/query-service/model" - "github.com/SigNoz/signoz/pkg/types" -) - -func RegisterOrgAndFirstUser(ctx context.Context, req *types.PostableRegisterOrgAndAdmin, organizationModule organization.Module, userModule user.Module) (*types.User, *model.ApiError) { - if req.Email == "" { - return nil, model.BadRequest(model.ErrEmailRequired{}) - } - - if req.Password == "" { - return nil, model.BadRequest(model.ErrPasswordRequired{}) - } - - organization := types.NewOrganization(req.OrgDisplayName) - err := organizationModule.Create(ctx, organization) - if err != nil { - return nil, model.InternalError(err) - } - - user, err := types.NewUser(req.Name, req.Email, types.RoleAdmin.String(), organization.ID.StringValue()) - if err != nil { - return nil, model.InternalError(err) - } - - password, err := types.NewFactorPassword(req.Password) - if err != nil { - return nil, model.InternalError(err) - } - - user, err = userModule.CreateUserWithPassword(ctx, user, password) - if err != nil { - return nil, model.InternalError(err) - } - - return user, nil -} - -// First user registration -func Register(ctx context.Context, req *types.PostableRegisterOrgAndAdmin, alertmanager alertmanager.Alertmanager, organizationModule organization.Module, userModule user.Module, quickfiltermodule quickfilter.Module) (*types.User, *model.ApiError) { - user, err := RegisterOrgAndFirstUser(ctx, req, organizationModule, userModule) - if err != nil { - return nil, err - } - - if err := alertmanager.SetDefaultConfig(ctx, user.OrgID); err != nil { - return nil, model.InternalError(err) - } - - if err := quickfiltermodule.SetDefaultConfig(ctx, valuer.MustNewUUID(user.OrgID)); err != nil { - return nil, model.InternalError(err) - } - - return user, nil -} diff --git a/pkg/query-service/main.go b/pkg/query-service/main.go index 18565541ae..ddfb28002b 100644 --- a/pkg/query-service/main.go +++ b/pkg/query-service/main.go @@ -12,6 +12,7 @@ import ( "github.com/SigNoz/signoz/pkg/factory" "github.com/SigNoz/signoz/pkg/licensing" "github.com/SigNoz/signoz/pkg/licensing/nooplicensing" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/query-service/app" "github.com/SigNoz/signoz/pkg/query-service/constants" "github.com/SigNoz/signoz/pkg/signoz" @@ -121,7 +122,7 @@ func main() { zeus.Config{}, noopzeus.NewProviderFactory(), licensing.Config{}, - func(_ sqlstore.SQLStore, _ zeus.Zeus) factory.ProviderFactory[licensing.Licensing, licensing.Config] { + func(_ sqlstore.SQLStore, _ zeus.Zeus, _ organization.Getter) factory.ProviderFactory[licensing.Licensing, licensing.Config] { return nooplicensing.NewFactory() }, signoz.NewEmailingProviderFactories(), diff --git a/pkg/query-service/model/errors.go b/pkg/query-service/model/errors.go deleted file mode 100644 index d0b95d279c..0000000000 --- a/pkg/query-service/model/errors.go +++ /dev/null @@ -1,36 +0,0 @@ -package model - -import "fmt" - -// custom errors related to registration -type ErrFeatureUnavailable struct { - Key string -} - -func (errFeatureUnavailable ErrFeatureUnavailable) Error() string { - return fmt.Sprintf("feature unavailable: %s", errFeatureUnavailable.Key) -} - -type ErrEmailRequired struct{} - -func (errEmailRequired ErrEmailRequired) Error() string { - return "email is required" -} - -type ErrPasswordRequired struct{} - -func (errPasswordRequired ErrPasswordRequired) Error() string { - return "password is required" -} - -type ErrSignupFailed struct{} - -func (errSignupFailed ErrSignupFailed) Error() string { - return "failed to register user" -} - -type ErrNoOrgFound struct{} - -func (errNoOrgFound ErrNoOrgFound) Error() string { - return "no org found" -} diff --git a/pkg/query-service/rules/manager.go b/pkg/query-service/rules/manager.go index 1d13bfc53d..b7f3f20fb1 100644 --- a/pkg/query-service/rules/manager.go +++ b/pkg/query-service/rules/manager.go @@ -19,6 +19,7 @@ import ( "github.com/SigNoz/signoz/pkg/alertmanager" "github.com/SigNoz/signoz/pkg/cache" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/prometheus" "github.com/SigNoz/signoz/pkg/query-service/interfaces" "github.com/SigNoz/signoz/pkg/query-service/model" @@ -95,6 +96,7 @@ type ManagerOptions struct { PrepareTestRuleFunc func(opts PrepareTestRuleOptions) (int, *model.ApiError) Alertmanager alertmanager.Alertmanager SQLStore sqlstore.SQLStore + OrgGetter organization.Getter } // The Manager manages recording and alerting rules. @@ -116,6 +118,7 @@ type Manager struct { alertmanager alertmanager.Alertmanager sqlstore sqlstore.SQLStore + orgGetter organization.Getter } func defaultOptions(o *ManagerOptions) *ManagerOptions { @@ -210,6 +213,7 @@ func NewManager(o *ManagerOptions) (*Manager, error) { prepareTestRuleFunc: o.PrepareTestRuleFunc, alertmanager: o.Alertmanager, sqlstore: o.SQLStore, + orgGetter: o.OrgGetter, } return m, nil @@ -239,14 +243,14 @@ func (m *Manager) Pause(b bool) { } func (m *Manager) initiate(ctx context.Context) error { - orgIDs, err := m.ruleStore.ListOrgs(ctx) + orgs, err := m.orgGetter.ListByOwnedKeyRange(ctx) if err != nil { return err } var loadErrors []error - for _, orgID := range orgIDs { - storedRules, err := m.ruleStore.GetStoredRules(ctx, orgID.StringValue()) + for _, org := range orgs { + storedRules, err := m.ruleStore.GetStoredRules(ctx, org.ID.StringValue()) if err != nil { return err } @@ -279,7 +283,7 @@ func (m *Manager) initiate(ctx context.Context) error { } } if !parsedRule.Disabled { - err := m.addTask(ctx, orgID, parsedRule, taskName) + err := m.addTask(ctx, org.ID, parsedRule, taskName) if err != nil { zap.L().Error("failed to load the rule definition", zap.String("name", taskName), zap.Error(err)) } diff --git a/pkg/query-service/tests/integration/filter_suggestions_test.go b/pkg/query-service/tests/integration/filter_suggestions_test.go index 21665bb3d2..22dda58f07 100644 --- a/pkg/query-service/tests/integration/filter_suggestions_test.go +++ b/pkg/query-service/tests/integration/filter_suggestions_test.go @@ -11,8 +11,12 @@ import ( "testing" "time" - "github.com/SigNoz/signoz/pkg/emailing" - "github.com/SigNoz/signoz/pkg/emailing/noopemailing" + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerserver" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" + "github.com/SigNoz/signoz/pkg/emailing/emailingtest" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" "github.com/SigNoz/signoz/pkg/types/authtypes" "github.com/SigNoz/signoz/pkg/http/middleware" @@ -304,16 +308,22 @@ func NewFilterSuggestionsTestBed(t *testing.T) *FilterSuggestionsTestBed { mockClickhouse.MatchExpectationsInOrder(false) providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(t, err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(testDB), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, testDB, orgGetter) + require.NoError(t, err) jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) - modules := signoz.NewModules(testDB, jwt, emailing, providerSettings) + emailing := emailingtest.New() + modules := signoz.NewModules(testDB, jwt, emailing, providerSettings, orgGetter, alertmanager) + handlers := signoz.NewHandlers(modules) apiHandler, err := app.NewAPIHandler(app.APIHandlerOpts{ Reader: reader, JWT: jwt, Signoz: &signoz.SigNoz{ Modules: modules, - Handlers: signoz.NewHandlers(modules), + Handlers: handlers, }, }) if err != nil { @@ -322,13 +332,12 @@ func NewFilterSuggestionsTestBed(t *testing.T) *FilterSuggestionsTestBed { router := app.NewRouter() //add the jwt middleware - router.Use(middleware.NewAuth(jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap) + router.Use(middleware.NewAuth(jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}, sharder, instrumentationtest.New().Logger()).Wrap) am := middleware.NewAuthZ(instrumentationtest.New().Logger()) apiHandler.RegisterRoutes(router, am) apiHandler.RegisterQueryRangeV3Routes(router, am) - organizationModule := implorganization.NewModule(implorganization.NewStore(testDB)) - user, apiErr := createTestUser(organizationModule, modules.User) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) if apiErr != nil { t.Fatalf("could not create a test user: %v", apiErr) } diff --git a/pkg/query-service/tests/integration/logparsingpipeline_test.go b/pkg/query-service/tests/integration/logparsingpipeline_test.go index 69e4102ac3..8413d5c358 100644 --- a/pkg/query-service/tests/integration/logparsingpipeline_test.go +++ b/pkg/query-service/tests/integration/logparsingpipeline_test.go @@ -11,8 +11,10 @@ import ( "testing" "time" - "github.com/SigNoz/signoz/pkg/emailing" - "github.com/SigNoz/signoz/pkg/emailing/noopemailing" + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerserver" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" + "github.com/SigNoz/signoz/pkg/emailing/emailingtest" "github.com/SigNoz/signoz/pkg/instrumentation/instrumentationtest" "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" "github.com/SigNoz/signoz/pkg/modules/user" @@ -26,6 +28,8 @@ import ( v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3" "github.com/SigNoz/signoz/pkg/query-service/queryBuilderToExpr" "github.com/SigNoz/signoz/pkg/query-service/utils" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" "github.com/SigNoz/signoz/pkg/signoz" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/types" @@ -480,9 +484,14 @@ func NewTestbedWithoutOpamp(t *testing.T, sqlStore sqlstore.SQLStore) *LogPipeli } providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - jwt := authtypes.NewJWT("", 10*time.Minute, 30*time.Minute) - modules := signoz.NewModules(sqlStore, jwt, emailing, providerSettings) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(t, err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlStore), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, sqlStore, orgGetter) + require.NoError(t, err) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(sqlStore, jwt, emailing, providerSettings, orgGetter, alertmanager) handlers := signoz.NewHandlers(modules) apiHandler, err := app.NewAPIHandler(app.APIHandlerOpts{ @@ -497,8 +506,7 @@ func NewTestbedWithoutOpamp(t *testing.T, sqlStore sqlstore.SQLStore) *LogPipeli t.Fatalf("could not create a new ApiHandler: %v", err) } - organizationModule := implorganization.NewModule(implorganization.NewStore(sqlStore)) - user, apiErr := createTestUser(organizationModule, modules.User) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) if apiErr != nil { t.Fatalf("could not create a test user: %v", apiErr) } diff --git a/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go b/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go index 8ea9d7a974..31197263cd 100644 --- a/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go +++ b/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go @@ -9,8 +9,12 @@ import ( "testing" "time" - "github.com/SigNoz/signoz/pkg/emailing" - "github.com/SigNoz/signoz/pkg/emailing/noopemailing" + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerserver" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" + "github.com/SigNoz/signoz/pkg/emailing/emailingtest" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" "github.com/SigNoz/signoz/pkg/types/authtypes" "github.com/SigNoz/signoz/pkg/http/middleware" @@ -365,9 +369,14 @@ func NewCloudIntegrationsTestBed(t *testing.T, testDB sqlstore.SQLStore) *CloudI mockClickhouse.MatchExpectationsInOrder(false) providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - jwt := authtypes.NewJWT("", 10*time.Minute, 30*time.Minute) - modules := signoz.NewModules(testDB, jwt, emailing, providerSettings) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(t, err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(testDB), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, testDB, orgGetter) + require.NoError(t, err) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(testDB, jwt, emailing, providerSettings, orgGetter, alertmanager) handlers := signoz.NewHandlers(modules) apiHandler, err := app.NewAPIHandler(app.APIHandlerOpts{ @@ -384,13 +393,12 @@ func NewCloudIntegrationsTestBed(t *testing.T, testDB sqlstore.SQLStore) *CloudI } router := app.NewRouter() - router.Use(middleware.NewAuth(jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap) + router.Use(middleware.NewAuth(jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}, sharder, instrumentationtest.New().Logger()).Wrap) am := middleware.NewAuthZ(instrumentationtest.New().Logger()) apiHandler.RegisterRoutes(router, am) apiHandler.RegisterCloudIntegrationsRoutes(router, am) - organizationModule := implorganization.NewModule(implorganization.NewStore(testDB)) - user, apiErr := createTestUser(organizationModule, modules.User) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) if apiErr != nil { t.Fatalf("could not create a test user: %v", apiErr) } diff --git a/pkg/query-service/tests/integration/signoz_integrations_test.go b/pkg/query-service/tests/integration/signoz_integrations_test.go index 1b221267fb..a4aad441c4 100644 --- a/pkg/query-service/tests/integration/signoz_integrations_test.go +++ b/pkg/query-service/tests/integration/signoz_integrations_test.go @@ -9,9 +9,10 @@ import ( "testing" "time" - "github.com/SigNoz/signoz/pkg/emailing" - "github.com/SigNoz/signoz/pkg/emailing/noopemailing" - + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/alertmanagerserver" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" + "github.com/SigNoz/signoz/pkg/emailing/emailingtest" "github.com/SigNoz/signoz/pkg/http/middleware" "github.com/SigNoz/signoz/pkg/instrumentation/instrumentationtest" "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" @@ -22,6 +23,8 @@ import ( "github.com/SigNoz/signoz/pkg/query-service/model" v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3" "github.com/SigNoz/signoz/pkg/query-service/utils" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" "github.com/SigNoz/signoz/pkg/signoz" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/types" @@ -571,9 +574,14 @@ func NewIntegrationsTestBed(t *testing.T, testDB sqlstore.SQLStore) *Integration } providerSettings := instrumentationtest.New().ToProviderSettings() - emailing, _ := noopemailing.New(context.Background(), providerSettings, emailing.Config{}) - jwt := authtypes.NewJWT("", 10*time.Minute, 30*time.Minute) - modules := signoz.NewModules(testDB, jwt, emailing, providerSettings) + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(t, err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(testDB), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{Signoz: alertmanager.Signoz{PollInterval: 10 * time.Second, Config: alertmanagerserver.NewConfig()}}, testDB, orgGetter) + require.NoError(t, err) + jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) + emailing := emailingtest.New() + modules := signoz.NewModules(testDB, jwt, emailing, providerSettings, orgGetter, alertmanager) handlers := signoz.NewHandlers(modules) apiHandler, err := app.NewAPIHandler(app.APIHandlerOpts{ @@ -592,13 +600,12 @@ func NewIntegrationsTestBed(t *testing.T, testDB sqlstore.SQLStore) *Integration } router := app.NewRouter() - router.Use(middleware.NewAuth(jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}).Wrap) + router.Use(middleware.NewAuth(jwt, []string{"Authorization", "Sec-WebSocket-Protocol"}, sharder, instrumentationtest.New().Logger()).Wrap) am := middleware.NewAuthZ(instrumentationtest.New().Logger()) apiHandler.RegisterRoutes(router, am) apiHandler.RegisterIntegrationRoutes(router, am) - organizationModule := implorganization.NewModule(implorganization.NewStore(testDB)) - user, apiErr := createTestUser(organizationModule, modules.User) + user, apiErr := createTestUser(modules.OrgSetter, modules.User) if apiErr != nil { t.Fatalf("could not create a test user: %v", apiErr) } diff --git a/pkg/query-service/tests/integration/test_utils.go b/pkg/query-service/tests/integration/test_utils.go index 869d6eeda7..90fb293005 100644 --- a/pkg/query-service/tests/integration/test_utils.go +++ b/pkg/query-service/tests/integration/test_utils.go @@ -147,11 +147,11 @@ func makeTestSignozLog( return testLog } -func createTestUser(organizationModule organization.Module, userModule user.Module) (*types.User, *model.ApiError) { +func createTestUser(orgSetter organization.Setter, userModule user.Module) (*types.User, *model.ApiError) { // Create a test user for auth ctx := context.Background() organization := types.NewOrganization("test") - err := organizationModule.Create(ctx, organization) + err := orgSetter.Create(ctx, organization) if err != nil { return nil, model.InternalError(err) } diff --git a/pkg/query-service/utils/filter_conditions.go b/pkg/query-service/utils/filter_conditions.go index 5fca15a911..14aa909841 100644 --- a/pkg/query-service/utils/filter_conditions.go +++ b/pkg/query-service/utils/filter_conditions.go @@ -88,9 +88,9 @@ func buildSingleFilterCondition(key string, op v3.FilterOperator, fmtVal string, case v3.FilterOperatorLessThanOrEq: return fmt.Sprintf("%s <= %s", keyCondition, fmtVal), nil case v3.FilterOperatorContains: - return fmt.Sprintf("like(%s, %s)", keyCondition, fmtVal), nil + return fmt.Sprintf("ilike(%s, %s)", keyCondition, fmtVal), nil case v3.FilterOperatorNotContains: - return fmt.Sprintf("notLike(%s, %s)", keyCondition, fmtVal), nil + return fmt.Sprintf("notILike(%s, %s)", keyCondition, fmtVal), nil case v3.FilterOperatorExists: return fmt.Sprintf("has(JSONExtractKeys(labels), '%s')", key), nil case v3.FilterOperatorNotExists: diff --git a/pkg/query-service/utils/testutils.go b/pkg/query-service/utils/testutils.go index 5cd7960786..c429f44378 100644 --- a/pkg/query-service/utils/testutils.go +++ b/pkg/query-service/utils/testutils.go @@ -67,6 +67,7 @@ func NewTestSqliteDB(t *testing.T) (sqlStore sqlstore.SQLStore, testDBFilePath s sqlmigration.NewAuthRefactorFactory(sqlStore), sqlmigration.NewMigratePATToFactorAPIKey(sqlStore), sqlmigration.NewUpdateApiMonitoringFiltersFactory(sqlStore), + sqlmigration.NewAddKeyOrganizationFactory(sqlStore), ), ) if err != nil { diff --git a/pkg/ruler/rulestore/sqlrulestore/rule.go b/pkg/ruler/rulestore/sqlrulestore/rule.go index 735cce6b20..68093eb233 100644 --- a/pkg/ruler/rulestore/sqlrulestore/rule.go +++ b/pkg/ruler/rulestore/sqlrulestore/rule.go @@ -4,7 +4,6 @@ import ( "context" "github.com/SigNoz/signoz/pkg/sqlstore" - "github.com/SigNoz/signoz/pkg/types" ruletypes "github.com/SigNoz/signoz/pkg/types/ruletypes" "github.com/SigNoz/signoz/pkg/valuer" "github.com/jmoiron/sqlx" @@ -118,27 +117,3 @@ func (r *rule) GetRuleUUID(ctx context.Context, ruleID int) (*ruletypes.RuleHist } return ruleHistory, nil } - -func (r *rule) ListOrgs(ctx context.Context) ([]valuer.UUID, error) { - orgIDStrs := make([]string, 0) - err := r.sqlstore. - BunDB(). - NewSelect(). - Model(new(types.Organization)). - Column("id"). - Scan(ctx, &orgIDStrs) - if err != nil { - return nil, err - } - - orgIDs := make([]valuer.UUID, len(orgIDStrs)) - for idx, orgIDStr := range orgIDStrs { - orgID, err := valuer.NewUUID(orgIDStr) - if err != nil { - return nil, err - } - orgIDs[idx] = orgID - } - - return orgIDs, nil -} diff --git a/pkg/sharder/config.go b/pkg/sharder/config.go new file mode 100644 index 0000000000..785d5545c1 --- /dev/null +++ b/pkg/sharder/config.go @@ -0,0 +1,32 @@ +package sharder + +import ( + "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/valuer" +) + +type Config struct { + Provider string `mapstructure:"provider"` + Single Single `mapstructure:"single"` +} + +type Single struct { + OrgID valuer.UUID `mapstructure:"org_id"` +} + +func NewConfigFactory() factory.ConfigFactory { + return factory.NewConfigFactory(factory.MustNewName("sharder"), newConfig) +} + +func newConfig() factory.Config { + return &Config{ + Provider: "noop", + Single: Single{ + OrgID: valuer.UUID{}, + }, + } +} + +func (c Config) Validate() error { + return nil +} diff --git a/pkg/sharder/noopsharder/provider.go b/pkg/sharder/noopsharder/provider.go new file mode 100644 index 0000000000..b7c3d02a7d --- /dev/null +++ b/pkg/sharder/noopsharder/provider.go @@ -0,0 +1,33 @@ +package noopsharder + +import ( + "context" + "math" + + "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/sharder" +) + +type provider struct { + settings factory.ScopedProviderSettings +} + +func NewFactory() factory.ProviderFactory[sharder.Sharder, sharder.Config] { + return factory.NewProviderFactory(factory.MustNewName("noop"), New) +} + +func New(ctx context.Context, providerSettings factory.ProviderSettings, config sharder.Config) (sharder.Sharder, error) { + settings := factory.NewScopedProviderSettings(providerSettings, "github.com/SigNoz/signoz/pkg/sharder/noopsharder") + + return &provider{ + settings: settings, + }, nil +} + +func (provider *provider) GetMyOwnedKeyRange(ctx context.Context) (uint32, uint32, error) { + return 0, math.MaxUint32, nil +} + +func (provider *provider) IsMyOwnedKey(ctx context.Context, key uint32) error { + return nil +} diff --git a/pkg/sharder/sharder.go b/pkg/sharder/sharder.go new file mode 100644 index 0000000000..b627ef37a5 --- /dev/null +++ b/pkg/sharder/sharder.go @@ -0,0 +1,13 @@ +package sharder + +import ( + "context" +) + +type Sharder interface { + // Returns the keys owned by the current instance. + GetMyOwnedKeyRange(context.Context) (uint32, uint32, error) + + // Returns true if the key is owned by the current instance. + IsMyOwnedKey(context.Context, uint32) error +} diff --git a/pkg/sharder/singlesharder/provider.go b/pkg/sharder/singlesharder/provider.go new file mode 100644 index 0000000000..86b7d7197d --- /dev/null +++ b/pkg/sharder/singlesharder/provider.go @@ -0,0 +1,43 @@ +package singlesharder + +import ( + "context" + + "github.com/SigNoz/signoz/pkg/errors" + "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/valuer" +) + +type provider struct { + settings factory.ScopedProviderSettings + orgID valuer.UUID + orgIDKey uint32 +} + +func NewFactory() factory.ProviderFactory[sharder.Sharder, sharder.Config] { + return factory.NewProviderFactory(factory.MustNewName("single"), New) +} + +func New(ctx context.Context, providerSettings factory.ProviderSettings, config sharder.Config) (sharder.Sharder, error) { + settings := factory.NewScopedProviderSettings(providerSettings, "github.com/SigNoz/signoz/pkg/sharder/singlesharder") + + return &provider{ + settings: settings, + orgID: config.Single.OrgID, + orgIDKey: types.NewOrganizationKey(config.Single.OrgID), + }, nil +} + +func (provider *provider) GetMyOwnedKeyRange(ctx context.Context) (uint32, uint32, error) { + return provider.orgIDKey, provider.orgIDKey, nil +} + +func (provider *provider) IsMyOwnedKey(ctx context.Context, key uint32) error { + if key == provider.orgIDKey { + return nil + } + + return errors.Newf(errors.TypeForbidden, errors.CodeForbidden, "key %d for org %s is not owned by my current instance", key, provider.orgID) +} diff --git a/pkg/signoz/config.go b/pkg/signoz/config.go index 4fb3bbf142..2554fb3279 100644 --- a/pkg/signoz/config.go +++ b/pkg/signoz/config.go @@ -17,6 +17,7 @@ import ( "github.com/SigNoz/signoz/pkg/factory" "github.com/SigNoz/signoz/pkg/instrumentation" "github.com/SigNoz/signoz/pkg/prometheus" + "github.com/SigNoz/signoz/pkg/sharder" "github.com/SigNoz/signoz/pkg/sqlmigration" "github.com/SigNoz/signoz/pkg/sqlmigrator" "github.com/SigNoz/signoz/pkg/sqlstore" @@ -62,6 +63,9 @@ type Config struct { // Emailing config Emailing emailing.Config `mapstructure:"emailing" yaml:"emailing"` + + // Sharder config + Sharder sharder.Config `mapstructure:"sharder" yaml:"sharder"` } // DeprecatedFlags are the flags that are deprecated and scheduled for removal. @@ -86,6 +90,7 @@ func NewConfig(ctx context.Context, resolverConfig config.ResolverConfig, deprec prometheus.NewConfigFactory(), alertmanager.NewConfigFactory(), emailing.NewConfigFactory(), + sharder.NewConfigFactory(), } conf, err := config.New(ctx, resolverConfig, configFactories) diff --git a/pkg/signoz/handler.go b/pkg/signoz/handler.go index 2b1512b63a..6f5ccdce98 100644 --- a/pkg/signoz/handler.go +++ b/pkg/signoz/handler.go @@ -13,6 +13,8 @@ import ( "github.com/SigNoz/signoz/pkg/modules/quickfilter/implquickfilter" "github.com/SigNoz/signoz/pkg/modules/savedview" "github.com/SigNoz/signoz/pkg/modules/savedview/implsavedview" + "github.com/SigNoz/signoz/pkg/modules/tracefunnel" + "github.com/SigNoz/signoz/pkg/modules/tracefunnel/impltracefunnel" "github.com/SigNoz/signoz/pkg/modules/user" "github.com/SigNoz/signoz/pkg/modules/user/impluser" ) @@ -25,16 +27,18 @@ type Handlers struct { Apdex apdex.Handler Dashboard dashboard.Handler QuickFilter quickfilter.Handler + TraceFunnel tracefunnel.Handler } func NewHandlers(modules Modules) Handlers { return Handlers{ - Organization: implorganization.NewHandler(modules.Organization), + Organization: implorganization.NewHandler(modules.OrgGetter, modules.OrgSetter), Preference: implpreference.NewHandler(modules.Preference), User: impluser.NewHandler(modules.User), SavedView: implsavedview.NewHandler(modules.SavedView), Apdex: implapdex.NewHandler(modules.Apdex), Dashboard: impldashboard.NewHandler(modules.Dashboard), QuickFilter: implquickfilter.NewHandler(modules.QuickFilter), + TraceFunnel: impltracefunnel.NewHandler(modules.TraceFunnel), } } diff --git a/pkg/signoz/handler_test.go b/pkg/signoz/handler_test.go index b5ebd97d3e..0844ebf243 100644 --- a/pkg/signoz/handler_test.go +++ b/pkg/signoz/handler_test.go @@ -1,28 +1,40 @@ package signoz import ( + "context" "reflect" "testing" "time" "github.com/DATA-DOG/go-sqlmock" + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" "github.com/SigNoz/signoz/pkg/emailing/emailingtest" "github.com/SigNoz/signoz/pkg/factory/factorytest" + "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/sqlstore/sqlstoretest" "github.com/SigNoz/signoz/pkg/types/authtypes" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // This is a test to ensure that all fields of the handlers are initialized. // It also helps us catch these errors at compile time instead of runtime. func TestNewHandlers(t *testing.T) { sqlstore := sqlstoretest.New(sqlstore.Config{Provider: "sqlite"}, sqlmock.QueryMatcherEqual) + providerSettings := factorytest.NewSettings() + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(t, err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlstore), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{}, sqlstore, orgGetter) + require.NoError(t, err) jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) emailing := emailingtest.New() - providerSettings := factorytest.NewSettings() + modules := NewModules(sqlstore, jwt, emailing, providerSettings, orgGetter, alertmanager) - modules := NewModules(sqlstore, jwt, emailing, providerSettings) handlers := NewHandlers(modules) reflectVal := reflect.ValueOf(handlers) diff --git a/pkg/signoz/module.go b/pkg/signoz/module.go index 0abdff2f85..33d9be5983 100644 --- a/pkg/signoz/module.go +++ b/pkg/signoz/module.go @@ -1,6 +1,7 @@ package signoz import ( + "github.com/SigNoz/signoz/pkg/alertmanager" "github.com/SigNoz/signoz/pkg/emailing" "github.com/SigNoz/signoz/pkg/factory" "github.com/SigNoz/signoz/pkg/modules/apdex" @@ -15,6 +16,8 @@ import ( "github.com/SigNoz/signoz/pkg/modules/quickfilter/implquickfilter" "github.com/SigNoz/signoz/pkg/modules/savedview" "github.com/SigNoz/signoz/pkg/modules/savedview/implsavedview" + "github.com/SigNoz/signoz/pkg/modules/tracefunnel" + "github.com/SigNoz/signoz/pkg/modules/tracefunnel/impltracefunnel" "github.com/SigNoz/signoz/pkg/modules/user" "github.com/SigNoz/signoz/pkg/modules/user/impluser" "github.com/SigNoz/signoz/pkg/sqlstore" @@ -23,23 +26,37 @@ import ( ) type Modules struct { - Organization organization.Module - Preference preference.Module - User user.Module - SavedView savedview.Module - Apdex apdex.Module - Dashboard dashboard.Module - QuickFilter quickfilter.Module + OrgGetter organization.Getter + OrgSetter organization.Setter + Preference preference.Module + User user.Module + SavedView savedview.Module + Apdex apdex.Module + Dashboard dashboard.Module + QuickFilter quickfilter.Module + TraceFunnel tracefunnel.Module } -func NewModules(sqlstore sqlstore.SQLStore, jwt *authtypes.JWT, emailing emailing.Emailing, providerSettings factory.ProviderSettings) Modules { +func NewModules( + sqlstore sqlstore.SQLStore, + jwt *authtypes.JWT, + emailing emailing.Emailing, + providerSettings factory.ProviderSettings, + orgGetter organization.Getter, + alertmanager alertmanager.Alertmanager, +) Modules { + quickfilter := implquickfilter.NewModule(implquickfilter.NewStore(sqlstore)) + orgSetter := implorganization.NewSetter(implorganization.NewStore(sqlstore), alertmanager, quickfilter) + user := impluser.NewModule(impluser.NewStore(sqlstore, providerSettings), jwt, emailing, providerSettings, orgSetter) return Modules{ - Organization: implorganization.NewModule(implorganization.NewStore(sqlstore)), - Preference: implpreference.NewModule(implpreference.NewStore(sqlstore), preferencetypes.NewDefaultPreferenceMap()), - SavedView: implsavedview.NewModule(sqlstore), - Apdex: implapdex.NewModule(sqlstore), - Dashboard: impldashboard.NewModule(sqlstore), - User: impluser.NewModule(impluser.NewStore(sqlstore, providerSettings), jwt, emailing, providerSettings), - QuickFilter: implquickfilter.NewModule(implquickfilter.NewStore(sqlstore)), + OrgGetter: orgGetter, + OrgSetter: orgSetter, + Preference: implpreference.NewModule(implpreference.NewStore(sqlstore), preferencetypes.NewDefaultPreferenceMap()), + SavedView: implsavedview.NewModule(sqlstore), + Apdex: implapdex.NewModule(sqlstore), + Dashboard: impldashboard.NewModule(sqlstore), + User: user, + QuickFilter: quickfilter, + TraceFunnel: impltracefunnel.NewModule(impltracefunnel.NewStore(sqlstore)), } } diff --git a/pkg/signoz/module_test.go b/pkg/signoz/module_test.go index 67f6aa23b6..f18596b059 100644 --- a/pkg/signoz/module_test.go +++ b/pkg/signoz/module_test.go @@ -1,27 +1,39 @@ package signoz import ( + "context" "reflect" "testing" "time" "github.com/DATA-DOG/go-sqlmock" + "github.com/SigNoz/signoz/pkg/alertmanager" + "github.com/SigNoz/signoz/pkg/alertmanager/signozalertmanager" "github.com/SigNoz/signoz/pkg/emailing/emailingtest" "github.com/SigNoz/signoz/pkg/factory/factorytest" + "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/sqlstore/sqlstoretest" "github.com/SigNoz/signoz/pkg/types/authtypes" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // This is a test to ensure that all fields of the modules are initialized. // It also helps us catch these errors at compile time instead of runtime. func TestNewModules(t *testing.T) { sqlstore := sqlstoretest.New(sqlstore.Config{Provider: "sqlite"}, sqlmock.QueryMatcherEqual) + providerSettings := factorytest.NewSettings() + sharder, err := noopsharder.New(context.TODO(), providerSettings, sharder.Config{}) + require.NoError(t, err) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlstore), sharder) + alertmanager, err := signozalertmanager.New(context.TODO(), providerSettings, alertmanager.Config{}, sqlstore, orgGetter) + require.NoError(t, err) jwt := authtypes.NewJWT("", 1*time.Hour, 1*time.Hour) emailing := emailingtest.New() - providerSettings := factorytest.NewSettings() - modules := NewModules(sqlstore, jwt, emailing, providerSettings) + modules := NewModules(sqlstore, jwt, emailing, providerSettings, orgGetter, alertmanager) reflectVal := reflect.ValueOf(modules) for i := 0; i < reflectVal.NumField(); i++ { diff --git a/pkg/signoz/provider.go b/pkg/signoz/provider.go index 831d2e2a62..6076890333 100644 --- a/pkg/signoz/provider.go +++ b/pkg/signoz/provider.go @@ -11,8 +11,12 @@ import ( "github.com/SigNoz/signoz/pkg/emailing/noopemailing" "github.com/SigNoz/signoz/pkg/emailing/smtpemailing" "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/modules/organization" "github.com/SigNoz/signoz/pkg/prometheus" "github.com/SigNoz/signoz/pkg/prometheus/clickhouseprometheus" + "github.com/SigNoz/signoz/pkg/sharder" + "github.com/SigNoz/signoz/pkg/sharder/noopsharder" + "github.com/SigNoz/signoz/pkg/sharder/singlesharder" "github.com/SigNoz/signoz/pkg/sqlmigration" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/sqlstore/sqlitesqlstore" @@ -83,6 +87,8 @@ func NewSQLMigrationProviderFactories(sqlstore sqlstore.SQLStore) factory.NamedM sqlmigration.NewUpdateLicenseFactory(sqlstore), sqlmigration.NewMigratePATToFactorAPIKey(sqlstore), sqlmigration.NewUpdateApiMonitoringFiltersFactory(sqlstore), + sqlmigration.NewAddKeyOrganizationFactory(sqlstore), + sqlmigration.NewAddTraceFunnelsFactory(sqlstore), ) } @@ -98,10 +104,10 @@ func NewPrometheusProviderFactories(telemetryStore telemetrystore.TelemetryStore ) } -func NewAlertmanagerProviderFactories(sqlstore sqlstore.SQLStore) factory.NamedMap[factory.ProviderFactory[alertmanager.Alertmanager, alertmanager.Config]] { +func NewAlertmanagerProviderFactories(sqlstore sqlstore.SQLStore, orgGetter organization.Getter) factory.NamedMap[factory.ProviderFactory[alertmanager.Alertmanager, alertmanager.Config]] { return factory.MustNewNamedMap( - legacyalertmanager.NewFactory(sqlstore), - signozalertmanager.NewFactory(sqlstore), + legacyalertmanager.NewFactory(sqlstore, orgGetter), + signozalertmanager.NewFactory(sqlstore, orgGetter), ) } @@ -111,3 +117,10 @@ func NewEmailingProviderFactories() factory.NamedMap[factory.ProviderFactory[ema smtpemailing.NewFactory(), ) } + +func NewSharderProviderFactories() factory.NamedMap[factory.ProviderFactory[sharder.Sharder, sharder.Config]] { + return factory.MustNewNamedMap( + singlesharder.NewFactory(), + noopsharder.NewFactory(), + ) +} diff --git a/pkg/signoz/provider_test.go b/pkg/signoz/provider_test.go index 7245d50f66..752ff19db8 100644 --- a/pkg/signoz/provider_test.go +++ b/pkg/signoz/provider_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/DATA-DOG/go-sqlmock" + "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" "github.com/SigNoz/signoz/pkg/sqlstore" "github.com/SigNoz/signoz/pkg/sqlstore/sqlstoretest" "github.com/SigNoz/signoz/pkg/telemetrystore" @@ -40,10 +41,15 @@ func TestNewProviderFactories(t *testing.T) { }) assert.NotPanics(t, func() { - NewAlertmanagerProviderFactories(sqlstoretest.New(sqlstore.Config{Provider: "sqlite"}, sqlmock.QueryMatcherEqual)) + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlstoretest.New(sqlstore.Config{Provider: "sqlite"}, sqlmock.QueryMatcherEqual)), nil) + NewAlertmanagerProviderFactories(sqlstoretest.New(sqlstore.Config{Provider: "sqlite"}, sqlmock.QueryMatcherEqual), orgGetter) }) assert.NotPanics(t, func() { NewEmailingProviderFactories() }) + + assert.NotPanics(t, func() { + NewSharderProviderFactories() + }) } diff --git a/pkg/signoz/signoz.go b/pkg/signoz/signoz.go index 748b4af9b4..919520b5b3 100644 --- a/pkg/signoz/signoz.go +++ b/pkg/signoz/signoz.go @@ -9,7 +9,10 @@ import ( "github.com/SigNoz/signoz/pkg/factory" "github.com/SigNoz/signoz/pkg/instrumentation" "github.com/SigNoz/signoz/pkg/licensing" + "github.com/SigNoz/signoz/pkg/modules/organization" + "github.com/SigNoz/signoz/pkg/modules/organization/implorganization" "github.com/SigNoz/signoz/pkg/prometheus" + "github.com/SigNoz/signoz/pkg/sharder" "github.com/SigNoz/signoz/pkg/sqlmigration" "github.com/SigNoz/signoz/pkg/sqlmigrator" "github.com/SigNoz/signoz/pkg/sqlstore" @@ -33,6 +36,7 @@ type SigNoz struct { Zeus zeus.Zeus Licensing licensing.Licensing Emailing emailing.Emailing + Sharder sharder.Sharder Modules Modules Handlers Handlers } @@ -44,7 +48,7 @@ func New( zeusConfig zeus.Config, zeusProviderFactory factory.ProviderFactory[zeus.Zeus, zeus.Config], licenseConfig licensing.Config, - licenseProviderFactoryCb func(sqlstore.SQLStore, zeus.Zeus) factory.ProviderFactory[licensing.Licensing, licensing.Config], + licenseProviderFactoryCb func(sqlstore.SQLStore, zeus.Zeus, organization.Getter) factory.ProviderFactory[licensing.Licensing, licensing.Config], emailingProviderFactories factory.NamedMap[factory.ProviderFactory[emailing.Emailing, emailing.Config]], cacheProviderFactories factory.NamedMap[factory.ProviderFactory[cache.Cache, cache.Config]], webProviderFactories factory.NamedMap[factory.ProviderFactory[web.Web, web.Config]], @@ -162,19 +166,34 @@ func New( return nil, err } + // Initialize sharder from the available sharder provider factories + sharder, err := factory.NewProviderFromNamedMap( + ctx, + providerSettings, + config.Sharder, + NewSharderProviderFactories(), + config.Sharder.Provider, + ) + if err != nil { + return nil, err + } + + // Initialize organization getter + orgGetter := implorganization.NewGetter(implorganization.NewStore(sqlstore), sharder) + // Initialize alertmanager from the available alertmanager provider factories alertmanager, err := factory.NewProviderFromNamedMap( ctx, providerSettings, config.Alertmanager, - NewAlertmanagerProviderFactories(sqlstore), + NewAlertmanagerProviderFactories(sqlstore, orgGetter), config.Alertmanager.Provider, ) if err != nil { return nil, err } - licensingProviderFactory := licenseProviderFactoryCb(sqlstore, zeus) + licensingProviderFactory := licenseProviderFactoryCb(sqlstore, zeus, orgGetter) licensing, err := licensingProviderFactory.New( ctx, providerSettings, @@ -185,7 +204,7 @@ func New( } // Initialize all modules - modules := NewModules(sqlstore, jwt, emailing, providerSettings) + modules := NewModules(sqlstore, jwt, emailing, providerSettings, orgGetter, alertmanager) // Initialize all handlers for the modules handlers := NewHandlers(modules) @@ -212,6 +231,7 @@ func New( Zeus: zeus, Licensing: licensing, Emailing: emailing, + Sharder: sharder, Modules: modules, Handlers: handlers, }, nil diff --git a/pkg/sqlmigration/036_add_key_organization.go b/pkg/sqlmigration/036_add_key_organization.go new file mode 100644 index 0000000000..753736a0ed --- /dev/null +++ b/pkg/sqlmigration/036_add_key_organization.go @@ -0,0 +1,112 @@ +package sqlmigration + +import ( + "context" + "hash/fnv" + + "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/sqlstore" + "github.com/uptrace/bun" + "github.com/uptrace/bun/migrate" +) + +type addKeyOrganization struct { + sqlstore sqlstore.SQLStore +} + +func NewAddKeyOrganizationFactory(sqlstore sqlstore.SQLStore) factory.ProviderFactory[SQLMigration, Config] { + return factory.NewProviderFactory(factory.MustNewName("add_key_organization"), func(ctx context.Context, providerSettings factory.ProviderSettings, config Config) (SQLMigration, error) { + return newAddKeyOrganization(ctx, providerSettings, config, sqlstore) + }) +} + +func newAddKeyOrganization(_ context.Context, _ factory.ProviderSettings, _ Config, sqlstore sqlstore.SQLStore) (SQLMigration, error) { + return &addKeyOrganization{ + sqlstore: sqlstore, + }, nil +} + +func (migration *addKeyOrganization) Register(migrations *migrate.Migrations) error { + if err := migrations.Register(migration.Up, migration.Down); err != nil { + return err + } + + return nil +} + +func (migration *addKeyOrganization) Up(ctx context.Context, db *bun.DB) error { + ok, err := migration.sqlstore.Dialect().ColumnExists(ctx, db, "organizations", "key") + if err != nil { + return err + } + + if ok { + return nil + } + + tx, err := db.BeginTx(ctx, nil) + if err != nil { + return err + } + + defer func() { + _ = tx.Rollback() + }() + + if _, err := tx. + NewAddColumn(). + Table("organizations"). + ColumnExpr("key BIGINT"). + Exec(ctx); err != nil { + return err + } + + var existingOrgIDs []string + if err := tx.NewSelect(). + Table("organizations"). + Column("id"). + Scan(ctx, &existingOrgIDs); err != nil { + return err + } + + for _, orgID := range existingOrgIDs { + key := migration.getHash(ctx, orgID) + if _, err := tx. + NewUpdate(). + Table("organizations"). + Set("key = ?", key). + Where("id = ?", orgID). + Exec(ctx); err != nil { + return err + } + } + + if _, err := tx. + NewCreateIndex(). + Unique(). + IfNotExists(). + Index("idx_unique_key"). + Table("organizations"). + Column("key"). + Exec(ctx); err != nil { + return err + } + + if err := tx.Commit(); err != nil { + return err + } + + return nil +} + +func (migration *addKeyOrganization) Down(ctx context.Context, db *bun.DB) error { + return nil +} + +func (migration *addKeyOrganization) getHash(_ context.Context, orgID string) uint32 { + hasher := fnv.New32a() + + // Hasher never returns err. + _, _ = hasher.Write([]byte(orgID)) + return hasher.Sum32() +} diff --git a/pkg/sqlmigration/037_add_trace_funnels.go b/pkg/sqlmigration/037_add_trace_funnels.go new file mode 100644 index 0000000000..99a885b1cf --- /dev/null +++ b/pkg/sqlmigration/037_add_trace_funnels.go @@ -0,0 +1,89 @@ +package sqlmigration + +import ( + "context" + "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/sqlstore" + "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/valuer" + "github.com/uptrace/bun" + "github.com/uptrace/bun/migrate" +) + +// funnel Core Data Structure (funnel and funnelStep) +type funnel struct { + bun.BaseModel `bun:"table:trace_funnel"` + types.Identifiable // funnel id + types.TimeAuditable + types.UserAuditable + Name string `json:"funnel_name" bun:"name,type:text,notnull"` // funnel name + Description string `json:"description" bun:"description,type:text"` // funnel description + OrgID valuer.UUID `json:"org_id" bun:"org_id,type:varchar,notnull"` + Steps []funnelStep `json:"steps" bun:"steps,type:text,notnull"` + Tags string `json:"tags" bun:"tags,type:text"` + CreatedByUser *types.User `json:"user" bun:"rel:belongs-to,join:created_by=id"` +} + +type funnelStep struct { + types.Identifiable + Name string `json:"name,omitempty"` // step name + Description string `json:"description,omitempty"` // step description + Order int64 `json:"step_order"` + ServiceName string `json:"service_name"` + SpanName string `json:"span_name"` + Filters string `json:"filters,omitempty"` + LatencyPointer string `json:"latency_pointer,omitempty"` + LatencyType string `json:"latency_type,omitempty"` + HasErrors bool `json:"has_errors"` +} + +type addTraceFunnels struct { + sqlstore sqlstore.SQLStore +} + +func NewAddTraceFunnelsFactory(sqlstore sqlstore.SQLStore) factory.ProviderFactory[SQLMigration, Config] { + return factory.NewProviderFactory(factory.MustNewName("add_trace_funnels"), func(ctx context.Context, providerSettings factory.ProviderSettings, config Config) (SQLMigration, error) { + return newAddTraceFunnels(ctx, providerSettings, config, sqlstore) + }) +} + +func newAddTraceFunnels(_ context.Context, _ factory.ProviderSettings, _ Config, sqlstore sqlstore.SQLStore) (SQLMigration, error) { + return &addTraceFunnels{sqlstore: sqlstore}, nil +} + +func (migration *addTraceFunnels) Register(migrations *migrate.Migrations) error { + if err := migrations.Register(migration.Up, migration.Down); err != nil { + return err + } + return nil +} + +func (migration *addTraceFunnels) Up(ctx context.Context, db *bun.DB) error { + tx, err := db.BeginTx(ctx, nil) + if err != nil { + return err + } + defer func() { + _ = tx.Rollback() + }() + + _, err = tx.NewCreateTable(). + Model(new(funnel)). + ForeignKey(`("org_id") REFERENCES "organizations" ("id") ON DELETE CASCADE`). + IfNotExists(). + Exec(ctx) + if err != nil { + return err + } + + err = tx.Commit() + if err != nil { + return err + } + + return nil +} + +func (migration *addTraceFunnels) Down(ctx context.Context, db *bun.DB) error { + return nil +} diff --git a/pkg/types/alertmanagertypes/config.go b/pkg/types/alertmanagertypes/config.go index 21657fa1da..2cc7adf1bd 100644 --- a/pkg/types/alertmanagertypes/config.go +++ b/pkg/types/alertmanagertypes/config.go @@ -369,9 +369,6 @@ type ConfigStore interface { // Get returns the config for the given orgID Get(context.Context, string) (*Config, error) - // ListOrgs returns the list of orgs - ListOrgs(context.Context) ([]string, error) - // CreateChannel creates a new channel. CreateChannel(context.Context, *Channel, ...StoreOption) error diff --git a/pkg/types/apdextypes/settings.go b/pkg/types/apdextypes/settings.go new file mode 100644 index 0000000000..d08a1a7ee0 --- /dev/null +++ b/pkg/types/apdextypes/settings.go @@ -0,0 +1,15 @@ +package apdextypes + +import ( + "github.com/SigNoz/signoz/pkg/types" + "github.com/uptrace/bun" +) + +type Settings struct { + bun.BaseModel `bun:"table:apdex_setting"` + types.Identifiable + OrgID string `bun:"org_id,type:text" json:"orgId"` + ServiceName string `bun:"service_name,type:text" json:"serviceName"` + Threshold float64 `bun:"threshold,type:float,notnull" json:"threshold"` + ExcludeStatusCodes string `bun:"exclude_status_codes,type:text,notnull" json:"excludeStatusCodes"` +} diff --git a/pkg/types/licensetypes/license.go b/pkg/types/licensetypes/license.go index 55e4204238..d78c45585a 100644 --- a/pkg/types/licensetypes/license.go +++ b/pkg/types/licensetypes/license.go @@ -87,9 +87,6 @@ func GetActiveLicenseFromStorableLicenses(storableLicenses []*StorableLicense, o return nil, err } - if license.Status == "INVALID" { - continue - } if activeLicense == nil && (license.ValidFrom != 0) && (license.ValidUntil == -1 || license.ValidUntil > time.Now().Unix()) { @@ -383,7 +380,4 @@ type Store interface { GetFeature(context.Context, string) (*featuretypes.StorableFeature, error) GetAllFeatures(context.Context) ([]*featuretypes.StorableFeature, error) UpdateFeature(context.Context, *featuretypes.StorableFeature) error - - // ListOrganizations returns the list of orgs - ListOrganizations(context.Context) ([]valuer.UUID, error) } diff --git a/pkg/types/organization.go b/pkg/types/organization.go index d18e149890..2c177b2cbf 100644 --- a/pkg/types/organization.go +++ b/pkg/types/organization.go @@ -2,6 +2,7 @@ package types import ( "context" + "hash/fnv" "time" "github.com/SigNoz/signoz/pkg/errors" @@ -20,13 +21,15 @@ type Organization struct { Identifiable Name string `bun:"name,type:text,nullzero" json:"name"` Alias string `bun:"alias,type:text,nullzero" json:"alias"` + Key uint32 `bun:"key,type:bigint,notnull" json:"key"` DisplayName string `bun:"display_name,type:text,notnull" json:"displayName"` } func NewOrganization(displayName string) *Organization { + id := valuer.GenerateUUID() return &Organization{ Identifiable: Identifiable{ - ID: valuer.GenerateUUID(), + ID: id, }, TimeAuditable: TimeAuditable{ CreatedAt: time.Now(), @@ -34,22 +37,23 @@ func NewOrganization(displayName string) *Organization { }, // Name: "default/main", TODO: take the call and uncomment this later DisplayName: displayName, + Key: NewOrganizationKey(id), } } -type ApdexSettings struct { - bun.BaseModel `bun:"table:apdex_setting"` - Identifiable - OrgID string `bun:"org_id,type:text" json:"orgId"` - ServiceName string `bun:"service_name,type:text" json:"serviceName"` - Threshold float64 `bun:"threshold,type:float,notnull" json:"threshold"` - ExcludeStatusCodes string `bun:"exclude_status_codes,type:text,notnull" json:"excludeStatusCodes"` +func NewOrganizationKey(orgID valuer.UUID) uint32 { + hasher := fnv.New32a() + + // Hasher never returns err. + _, _ = hasher.Write([]byte(orgID.String())) + return hasher.Sum32() } type OrganizationStore interface { Create(context.Context, *Organization) error Get(context.Context, valuer.UUID) (*Organization, error) GetAll(context.Context) ([]*Organization, error) + ListByKeyRange(context.Context, uint32, uint32) ([]*Organization, error) Update(context.Context, *Organization) error Delete(context.Context, valuer.UUID) error } diff --git a/pkg/types/ruletypes/rule.go b/pkg/types/ruletypes/rule.go index 55fcc801e6..ffe5774f27 100644 --- a/pkg/types/ruletypes/rule.go +++ b/pkg/types/ruletypes/rule.go @@ -31,5 +31,4 @@ type RuleStore interface { GetStoredRules(context.Context, string) ([]*Rule, error) GetStoredRule(context.Context, valuer.UUID) (*Rule, error) GetRuleUUID(context.Context, int) (*RuleHistory, error) - ListOrgs(context.Context) ([]valuer.UUID, error) } diff --git a/pkg/types/tracefunneltypes/store.go b/pkg/types/tracefunneltypes/store.go new file mode 100644 index 0000000000..ba000410e0 --- /dev/null +++ b/pkg/types/tracefunneltypes/store.go @@ -0,0 +1,15 @@ +package tracefunneltypes + +import ( + "context" + + "github.com/SigNoz/signoz/pkg/valuer" +) + +type FunnelStore interface { + Create(context.Context, *StorableFunnel) error + Get(context.Context, valuer.UUID, valuer.UUID) (*StorableFunnel, error) + List(context.Context, valuer.UUID) ([]*StorableFunnel, error) + Update(context.Context, *StorableFunnel) error + Delete(context.Context, valuer.UUID, valuer.UUID) error +} diff --git a/pkg/types/tracefunneltypes/tracefunnel.go b/pkg/types/tracefunneltypes/tracefunnel.go new file mode 100644 index 0000000000..fdc51d943a --- /dev/null +++ b/pkg/types/tracefunneltypes/tracefunnel.go @@ -0,0 +1,98 @@ +package tracefunneltypes + +import ( + "github.com/SigNoz/signoz/pkg/errors" + v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3" + "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/valuer" + "github.com/uptrace/bun" +) + +var ( + ErrFunnelAlreadyExists = errors.MustNewCode("funnel_already_exists") +) + +// StorableFunnel Core Data Structure (StorableFunnel and FunnelStep) +type StorableFunnel struct { + types.Identifiable + types.TimeAuditable + types.UserAuditable + bun.BaseModel `bun:"table:trace_funnel"` + Name string `json:"funnel_name" bun:"name,type:text,notnull"` + Description string `json:"description" bun:"description,type:text"` + OrgID valuer.UUID `json:"org_id" bun:"org_id,type:varchar,notnull"` + Steps []*FunnelStep `json:"steps" bun:"steps,type:text,notnull"` + Tags string `json:"tags" bun:"tags,type:text"` + CreatedByUser *types.User `json:"user" bun:"rel:belongs-to,join:created_by=id"` +} + +type FunnelStep struct { + ID valuer.UUID `json:"id,omitempty"` + Name string `json:"name,omitempty"` // step name + Description string `json:"description,omitempty"` // step description + Order int64 `json:"step_order"` + ServiceName string `json:"service_name"` + SpanName string `json:"span_name"` + Filters *v3.FilterSet `json:"filters,omitempty"` + LatencyPointer string `json:"latency_pointer,omitempty"` + LatencyType string `json:"latency_type,omitempty"` + HasErrors bool `json:"has_errors"` +} + +// PostableFunnel represents all possible funnel-related requests +type PostableFunnel struct { + FunnelID valuer.UUID `json:"funnel_id,omitempty"` + Name string `json:"funnel_name,omitempty"` + Timestamp int64 `json:"timestamp,omitempty"` + Description string `json:"description,omitempty"` + Steps []*FunnelStep `json:"steps,omitempty"` + UserID string `json:"user_id,omitempty"` + + // Analytics specific fields + StartTime int64 `json:"start_time,omitempty"` + EndTime int64 `json:"end_time,omitempty"` + StepAOrder int64 `json:"step_a_order,omitempty"` + StepBOrder int64 `json:"step_b_order,omitempty"` +} + +// GettableFunnel represents all possible funnel-related responses +type GettableFunnel struct { + FunnelID string `json:"funnel_id,omitempty"` + FunnelName string `json:"funnel_name,omitempty"` + Description string `json:"description,omitempty"` + CreatedAt int64 `json:"created_at,omitempty"` + CreatedBy string `json:"created_by,omitempty"` + UpdatedAt int64 `json:"updated_at,omitempty"` + UpdatedBy string `json:"updated_by,omitempty"` + OrgID string `json:"org_id,omitempty"` + UserEmail string `json:"user_email,omitempty"` + Funnel *StorableFunnel `json:"funnel,omitempty"` + Steps []*FunnelStep `json:"steps,omitempty"` +} + +// TimeRange represents a time range for analytics +type TimeRange struct { + StartTime int64 `json:"start_time"` + EndTime int64 `json:"end_time"` +} + +// StepTransitionRequest represents a request for step transition analytics +type StepTransitionRequest struct { + TimeRange + StepStart int64 `json:"step_start,omitempty"` + StepEnd int64 `json:"step_end,omitempty"` +} + +// UserInfo represents basic user information +type UserInfo struct { + ID string `json:"id"` + Email string `json:"email"` +} + +type FunnelStepFilter struct { + StepNumber int + ServiceName string + SpanName string + LatencyPointer string // "start" or "end" + CustomFilters *v3.FilterSet +} diff --git a/pkg/types/tracefunneltypes/utils.go b/pkg/types/tracefunneltypes/utils.go new file mode 100644 index 0000000000..60ca4eaf36 --- /dev/null +++ b/pkg/types/tracefunneltypes/utils.go @@ -0,0 +1,139 @@ +package tracefunneltypes + +import ( + "fmt" + "sort" + "time" + + "github.com/SigNoz/signoz/pkg/errors" + "github.com/SigNoz/signoz/pkg/types/authtypes" + "github.com/SigNoz/signoz/pkg/valuer" +) + +// ValidateTimestamp validates a timestamp +func ValidateTimestamp(timestamp int64, fieldName string) error { + if timestamp == 0 { + return fmt.Errorf("%s is required", fieldName) + } + if timestamp < 0 { + return fmt.Errorf("%s must be positive", fieldName) + } + return nil +} + +// ValidateTimestampIsMilliseconds validates that a timestamp is in milliseconds +func ValidateTimestampIsMilliseconds(timestamp int64) bool { + return timestamp >= 1000000000000 && timestamp <= 9999999999999 +} + +func ValidateFunnelSteps(steps []*FunnelStep) error { + if len(steps) < 2 { + return fmt.Errorf("funnel must have at least 2 steps") + } + + for i, step := range steps { + if step.ServiceName == "" { + return fmt.Errorf("step %d: service name is required", i+1) + } + if step.SpanName == "" { + return fmt.Errorf("step %d: span name is required", i+1) + } + if step.Order < 0 { + return fmt.Errorf("step %d: order must be non-negative", i+1) + } + } + + return nil +} + +// NormalizeFunnelSteps normalizes step orders to be sequential starting from 1. +// The function takes a slice of pointers to FunnelStep and returns a new slice with normalized step orders. +// The input slice is left unchanged. If the input slice contains nil pointers, they will be filtered out. +// Returns an empty slice if the input is empty or contains only nil pointers. +func NormalizeFunnelSteps(steps []*FunnelStep) []*FunnelStep { + if len(steps) == 0 { + return []*FunnelStep{} + } + + // Filter out nil pointers and create a new slice + validSteps := make([]*FunnelStep, 0, len(steps)) + for _, step := range steps { + if step != nil { + validSteps = append(validSteps, step) + } + } + + if len(validSteps) == 0 { + return []*FunnelStep{} + } + + // Create a defensive copy of the valid steps + newSteps := make([]*FunnelStep, len(validSteps)) + for i, step := range validSteps { + // Create a copy of each step to avoid modifying the original + stepCopy := *step + newSteps[i] = &stepCopy + } + + sort.Slice(newSteps, func(i, j int) bool { + return newSteps[i].Order < newSteps[j].Order + }) + + for i := range newSteps { + newSteps[i].Order = int64(i + 1) + } + + return newSteps +} + +func ValidateAndConvertTimestamp(timestamp int64) (time.Time, error) { + if err := ValidateTimestamp(timestamp, "timestamp"); err != nil { + return time.Time{}, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "timestamp is invalid: %v", err) + } + return time.Unix(0, timestamp*1000000), nil // Convert to nanoseconds +} + +func ConstructFunnelResponse(funnel *StorableFunnel, claims *authtypes.Claims) GettableFunnel { + resp := GettableFunnel{ + FunnelName: funnel.Name, + FunnelID: funnel.ID.String(), + Steps: funnel.Steps, + CreatedAt: funnel.CreatedAt.UnixNano() / 1000000, + CreatedBy: funnel.CreatedBy, + OrgID: funnel.OrgID.String(), + UpdatedBy: funnel.UpdatedBy, + UpdatedAt: funnel.UpdatedAt.UnixNano() / 1000000, + Description: funnel.Description, + } + + if funnel.CreatedByUser != nil { + resp.UserEmail = funnel.CreatedByUser.Email + } else if claims != nil { + resp.UserEmail = claims.Email + } + + return resp +} + +func ProcessFunnelSteps(steps []*FunnelStep) ([]*FunnelStep, error) { + // First validate the steps + if err := ValidateFunnelSteps(steps); err != nil { + return nil, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "invalid funnel steps: %v", err) + } + + // Then process the steps + for i := range steps { + if steps[i].Order < 1 { + steps[i].Order = int64(i + 1) + } + if steps[i].ID.IsZero() { + steps[i].ID = valuer.GenerateUUID() + } + } + + return NormalizeFunnelSteps(steps), nil +} diff --git a/pkg/types/tracefunneltypes/utils_test.go b/pkg/types/tracefunneltypes/utils_test.go new file mode 100644 index 0000000000..cf345d92b5 --- /dev/null +++ b/pkg/types/tracefunneltypes/utils_test.go @@ -0,0 +1,698 @@ +package tracefunneltypes + +import ( + "net/http" + "net/http/httptest" + "testing" + "time" + + "github.com/SigNoz/signoz/pkg/types" + "github.com/SigNoz/signoz/pkg/types/authtypes" + "github.com/SigNoz/signoz/pkg/valuer" + "github.com/stretchr/testify/assert" +) + +func TestValidateTimestamp(t *testing.T) { + tests := []struct { + name string + timestamp int64 + fieldName string + expectError bool + }{ + { + name: "valid timestamp", + timestamp: time.Now().UnixMilli(), + fieldName: "timestamp", + expectError: false, + }, + { + name: "zero timestamp", + timestamp: 0, + fieldName: "timestamp", + expectError: true, + }, + { + name: "negative timestamp", + timestamp: -1, + fieldName: "timestamp", + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidateTimestamp(tt.timestamp, tt.fieldName) + if tt.expectError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestValidateTimestampIsMilliseconds(t *testing.T) { + tests := []struct { + name string + timestamp int64 + expected bool + }{ + { + name: "valid millisecond timestamp", + timestamp: 1700000000000, // 2023-11-14 12:00:00 UTC + expected: true, + }, + { + name: "too small timestamp", + timestamp: 999999999999, + expected: false, + }, + { + name: "too large timestamp", + timestamp: 10000000000000, + expected: false, + }, + { + name: "second precision timestamp", + timestamp: 1700000000, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := ValidateTimestampIsMilliseconds(tt.timestamp) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestValidateFunnelSteps(t *testing.T) { + tests := []struct { + name string + steps []*FunnelStep + expectError bool + }{ + { + name: "valid steps", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expectError: false, + }, + { + name: "too few steps", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + }, + expectError: true, + }, + { + name: "missing service name", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + SpanName: "test-span", + Order: 1, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expectError: true, + }, + { + name: "missing span name", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + Order: 1, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expectError: true, + }, + { + name: "negative order", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: -1, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidateFunnelSteps(tt.steps) + if tt.expectError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestNormalizeFunnelSteps(t *testing.T) { + tests := []struct { + name string + steps []*FunnelStep + expected []*FunnelStep + }{ + { + name: "already normalized steps", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expected: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + { + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + }, + { + name: "unordered steps", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + }, + expected: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + { + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + }, + { + name: "steps with gaps in order", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 3", + ServiceName: "test-service", + SpanName: "test-span-3", + Order: 3, + }, + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expected: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + { + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + { + Name: "Step 3", + ServiceName: "test-service", + SpanName: "test-span-3", + Order: 3, + }, + }, + }, + { + name: "steps with nil pointers", + steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + nil, + { + ID: valuer.GenerateUUID(), + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expected: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + { + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + }, + { + name: "empty steps", + steps: []*FunnelStep{}, + expected: []*FunnelStep{}, + }, + { + name: "all nil steps", + steps: []*FunnelStep{nil, nil}, + expected: []*FunnelStep{}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := NormalizeFunnelSteps(tt.steps) + + // Compare only the relevant fields + assert.Len(t, result, len(tt.expected)) + for i := range result { + assert.Equal(t, tt.expected[i].Name, result[i].Name) + assert.Equal(t, tt.expected[i].ServiceName, result[i].ServiceName) + assert.Equal(t, tt.expected[i].SpanName, result[i].SpanName) + assert.Equal(t, tt.expected[i].Order, result[i].Order) + } + }) + } +} + +func TestGetClaims(t *testing.T) { + tests := []struct { + name string + setup func(*http.Request) + expectError bool + }{ + { + name: "valid claims", + setup: func(r *http.Request) { + claims := authtypes.Claims{ + UserID: "user-123", + OrgID: "org-123", + Email: "test@example.com", + } + *r = *r.WithContext(authtypes.NewContextWithClaims(r.Context(), claims)) + }, + expectError: false, + }, + { + name: "no claims in context", + setup: func(r *http.Request) { + claims := authtypes.Claims{} + *r = *r.WithContext(authtypes.NewContextWithClaims(r.Context(), claims)) + }, + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + req := httptest.NewRequest("GET", "/", nil) + tt.setup(req) + + claims, err := authtypes.ClaimsFromContext(req.Context()) + if tt.expectError { + assert.Equal(t, authtypes.Claims{}, claims) + } else { + assert.NoError(t, err) + assert.NotNil(t, claims) + assert.Equal(t, "user-123", claims.UserID) + assert.Equal(t, "org-123", claims.OrgID) + assert.Equal(t, "test@example.com", claims.Email) + } + }) + } +} + +func TestValidateAndConvertTimestamp(t *testing.T) { + tests := []struct { + name string + timestamp int64 + expectError bool + }{ + { + name: "valid timestamp", + timestamp: time.Now().UnixMilli(), + expectError: false, + }, + { + name: "zero timestamp", + timestamp: 0, + expectError: true, + }, + { + name: "negative timestamp", + timestamp: -1, + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := ValidateAndConvertTimestamp(tt.timestamp) + if tt.expectError { + assert.Error(t, err) + assert.True(t, result.IsZero()) + } else { + assert.NoError(t, err) + assert.False(t, result.IsZero()) + // Verify the conversion from milliseconds to nanoseconds + assert.Equal(t, tt.timestamp*1000000, result.UnixNano()) + } + }) + } +} + +func TestConstructFunnelResponse(t *testing.T) { + now := time.Now() + funnelID := valuer.GenerateUUID() + orgID := valuer.GenerateUUID() + userID := valuer.GenerateUUID() + + tests := []struct { + name string + funnel *StorableFunnel + claims *authtypes.Claims + expected GettableFunnel + }{ + { + name: "with user email from funnel", + funnel: &StorableFunnel{ + Identifiable: types.Identifiable{ + ID: funnelID, + }, + TimeAuditable: types.TimeAuditable{ + CreatedAt: now, + UpdatedAt: now, + }, + UserAuditable: types.UserAuditable{ + CreatedBy: userID.String(), + UpdatedBy: userID.String(), + }, + Name: "test-funnel", + OrgID: orgID, + CreatedByUser: &types.User{ + Identifiable: types.Identifiable{ + ID: userID, + }, + Email: "funnel@example.com", + }, + Steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + }, + }, + claims: &authtypes.Claims{ + UserID: userID.String(), + OrgID: orgID.String(), + Email: "claims@example.com", + }, + expected: GettableFunnel{ + FunnelName: "test-funnel", + FunnelID: funnelID.String(), + Steps: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + }, + CreatedAt: now.UnixNano() / 1000000, + CreatedBy: userID.String(), + UpdatedAt: now.UnixNano() / 1000000, + UpdatedBy: userID.String(), + OrgID: orgID.String(), + UserEmail: "funnel@example.com", + }, + }, + { + name: "with user email from claims", + funnel: &StorableFunnel{ + Identifiable: types.Identifiable{ + ID: funnelID, + }, + TimeAuditable: types.TimeAuditable{ + CreatedAt: now, + UpdatedAt: now, + }, + UserAuditable: types.UserAuditable{ + CreatedBy: userID.String(), + UpdatedBy: userID.String(), + }, + Name: "test-funnel", + OrgID: orgID, + Steps: []*FunnelStep{ + { + ID: valuer.GenerateUUID(), + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + }, + }, + claims: &authtypes.Claims{ + UserID: userID.String(), + OrgID: orgID.String(), + Email: "claims@example.com", + }, + expected: GettableFunnel{ + FunnelName: "test-funnel", + FunnelID: funnelID.String(), + Steps: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 1, + }, + }, + CreatedAt: now.UnixNano() / 1000000, + CreatedBy: userID.String(), + UpdatedAt: now.UnixNano() / 1000000, + UpdatedBy: userID.String(), + OrgID: orgID.String(), + UserEmail: "claims@example.com", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := ConstructFunnelResponse(tt.funnel, tt.claims) + + // Compare top-level fields + assert.Equal(t, tt.expected.FunnelName, result.FunnelName) + assert.Equal(t, tt.expected.FunnelID, result.FunnelID) + assert.Equal(t, tt.expected.CreatedAt, result.CreatedAt) + assert.Equal(t, tt.expected.CreatedBy, result.CreatedBy) + assert.Equal(t, tt.expected.UpdatedAt, result.UpdatedAt) + assert.Equal(t, tt.expected.UpdatedBy, result.UpdatedBy) + assert.Equal(t, tt.expected.OrgID, result.OrgID) + assert.Equal(t, tt.expected.UserEmail, result.UserEmail) + + // Compare steps + assert.Len(t, result.Steps, len(tt.expected.Steps)) + for i, step := range result.Steps { + expectedStep := tt.expected.Steps[i] + assert.Equal(t, expectedStep.Name, step.Name) + assert.Equal(t, expectedStep.ServiceName, step.ServiceName) + assert.Equal(t, expectedStep.SpanName, step.SpanName) + assert.Equal(t, expectedStep.Order, step.Order) + } + }) + } +} + +func TestProcessFunnelSteps(t *testing.T) { + tests := []struct { + name string + steps []*FunnelStep + expectError bool + }{ + { + name: "valid steps with missing IDs", + steps: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: 0, // Will be normalized to 1 + }, + { + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 0, // Will be normalized to 2 + }, + }, + expectError: false, + }, + { + name: "invalid steps - missing service name", + steps: []*FunnelStep{ + { + Name: "Step 1", + SpanName: "test-span", + Order: 1, + }, + { + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expectError: true, + }, + { + name: "invalid steps - negative order", + steps: []*FunnelStep{ + { + Name: "Step 1", + ServiceName: "test-service", + SpanName: "test-span", + Order: -1, + }, + { + Name: "Step 2", + ServiceName: "test-service", + SpanName: "test-span-2", + Order: 2, + }, + }, + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := ProcessFunnelSteps(tt.steps) + if tt.expectError { + assert.Error(t, err) + assert.Nil(t, result) + } else { + assert.NoError(t, err) + assert.NotNil(t, result) + assert.Len(t, result, len(tt.steps)) + + // Verify IDs are generated + for _, step := range result { + assert.False(t, step.ID.IsZero()) + } + + // Verify orders are normalized + for i, step := range result { + assert.Equal(t, int64(i+1), step.Order) + } + } + }) + } +} diff --git a/pkg/valuer/string.go b/pkg/valuer/string.go index 18259ed0c9..ce2b5f7ea4 100644 --- a/pkg/valuer/string.go +++ b/pkg/valuer/string.go @@ -67,3 +67,8 @@ func (enum *String) Scan(val interface{}) error { *enum = NewString(str) return nil } + +func (enum *String) UnmarshalText(text []byte) error { + *enum = NewString(string(text)) + return nil +} diff --git a/pkg/valuer/uuid.go b/pkg/valuer/uuid.go index 35b49cda8a..a12979e0ce 100644 --- a/pkg/valuer/uuid.go +++ b/pkg/valuer/uuid.go @@ -122,3 +122,13 @@ func (enum *UUID) Scan(val interface{}) error { *enum = enumVal return nil } + +func (enum *UUID) UnmarshalText(text []byte) error { + uuid, err := NewUUID(string(text)) + if err != nil { + return err + } + + *enum = uuid + return nil +} diff --git a/pkg/valuer/valuer.go b/pkg/valuer/valuer.go index f069da04d8..7e65ac2857 100644 --- a/pkg/valuer/valuer.go +++ b/pkg/valuer/valuer.go @@ -3,6 +3,7 @@ package valuer import ( "database/sql" "database/sql/driver" + "encoding" "encoding/json" "fmt" ) @@ -28,4 +29,7 @@ type Valuer interface { // Implement fmt.Stringer to allow the value to be printed as a string fmt.Stringer + + // Implement encoding.TextUnmarshaler to allow the value to be unmarshalled from a string + encoding.TextUnmarshaler }