From 88f079ec94d546ce3d2e954f491af402c96a53ca Mon Sep 17 00:00:00 2001 From: mufazalov Date: Thu, 15 Feb 2024 12:45:11 +0300 Subject: [PATCH 1/5] fix(TenantOverview): use table storage for metric card if possible --- .../Diagnostics/TenantOverview/TenantOverview.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx b/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx index d542e65460..82927f63eb 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx +++ b/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx @@ -87,13 +87,19 @@ export function TenantOverview({ memoryLimit, } = calculateTenantMetrics(tenant); + // If there is table storage limit (data_size_hard_quota), + // use it for metric card instead of blob storage + const isTableStorageLimitSet = tableStorageLimit && tableStorageLimit > 0; + const storageUsed = isTableStorageLimitSet ? tableStorage : blobStorage; + const storageLimit = isTableStorageLimitSet ? tableStorageLimit : blobStorageLimit; + const calculatedMetrics: TenantMetrics = { memoryUsed: memory, memoryLimit, cpuUsed: cpu, cpuUsage, - storageUsed: blobStorage, - storageLimit: blobStorageLimit, + storageUsed, + storageLimit, }; const storageMetrics = { From a14ab955928fb3f3ba79b51707c2403600e87159 Mon Sep 17 00:00:00 2001 From: mufazalov Date: Thu, 15 Feb 2024 12:48:16 +0300 Subject: [PATCH 2/5] fix(TenantStorage): do not format storage to same size --- .../TenantOverview/TenantStorage/TenantStorage.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx b/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx index 3349c45b30..d7b113d0c4 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx +++ b/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx @@ -1,7 +1,6 @@ import InfoViewer from '../../../../../components/InfoViewer/InfoViewer'; import {ProgressViewer} from '../../../../../components/ProgressViewer/ProgressViewer'; import {formatStorageValues} from '../../../../../utils/dataFormatters/dataFormatters'; -import {getSizeWithSignificantDigits} from '../../../../../utils/bytesParsers'; import {TenantDashboard} from '../TenantDashboard/TenantDashboard'; @@ -26,11 +25,6 @@ interface TenantStorageProps { export function TenantStorage({tenantName, metrics}: TenantStorageProps) { const {blobStorageUsed, tableStorageUsed, blobStorageLimit, tableStorageLimit} = metrics; - const formatValues = (value?: number, total?: number) => { - const size = getSizeWithSignificantDigits(Number(blobStorageLimit || blobStorageUsed), 0); - - return formatStorageValues(value, total, size); - }; const info = [ { @@ -39,7 +33,7 @@ export function TenantStorage({tenantName, metrics}: TenantStorageProps) { Date: Wed, 21 Feb 2024 18:12:05 +0300 Subject: [PATCH 3/5] fix(TenantCpu): add explanations, rename storage types --- .../TenantOverview/TenantOverview.tsx | 14 ++++----- .../TenantStorage/TenantStorage.tsx | 30 +++++++++++++------ .../Diagnostics/TenantOverview/i18n/en.json | 13 ++++---- .../Diagnostics/TenantOverview/i18n/ru.json | 5 ---- src/store/reducers/tenants/utils.ts | 8 ++--- 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx b/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx index 82927f63eb..462bfbf3df 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx +++ b/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx @@ -79,19 +79,19 @@ export function TenantOverview({ const { cpu, blobStorage, - tableStorage, + tabletStorage, memory, cpuUsage, blobStorageLimit, - tableStorageLimit, + tabletStorageLimit, memoryLimit, } = calculateTenantMetrics(tenant); // If there is table storage limit (data_size_hard_quota), // use it for metric card instead of blob storage - const isTableStorageLimitSet = tableStorageLimit && tableStorageLimit > 0; - const storageUsed = isTableStorageLimitSet ? tableStorage : blobStorage; - const storageLimit = isTableStorageLimitSet ? tableStorageLimit : blobStorageLimit; + const isTabletStorageLimitSet = tabletStorageLimit && tabletStorageLimit > 0; + const storageUsed = isTabletStorageLimitSet ? tabletStorage : blobStorage; + const storageLimit = isTabletStorageLimitSet ? tabletStorageLimit : blobStorageLimit; const calculatedMetrics: TenantMetrics = { memoryUsed: memory, @@ -105,8 +105,8 @@ export function TenantOverview({ const storageMetrics = { blobStorageUsed: blobStorage, blobStorageLimit, - tableStorageUsed: tableStorage, - tableStorageLimit, + tabletStorageUsed: tabletStorage, + tabletStorageLimit, }; const renderName = () => { diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx b/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx index d7b113d0c4..26c7c12347 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx +++ b/src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx @@ -1,5 +1,6 @@ import InfoViewer from '../../../../../components/InfoViewer/InfoViewer'; import {ProgressViewer} from '../../../../../components/ProgressViewer/ProgressViewer'; +import {LabelWithPopover} from '../../../../../components/LabelWithPopover'; import {formatStorageValues} from '../../../../../utils/dataFormatters/dataFormatters'; import {TenantDashboard} from '../TenantDashboard/TenantDashboard'; @@ -10,12 +11,13 @@ import {storageDashboardConfig} from './storageDashboardConfig'; import {TopTables} from './TopTables'; import {TopGroups} from './TopGroups'; import {b} from '../utils'; +import i18n from '../i18n'; export interface TenantStorageMetrics { blobStorageUsed?: number; blobStorageLimit?: number; - tableStorageUsed?: number; - tableStorageLimit?: number; + tabletStorageUsed?: number; + tabletStorageLimit?: number; } interface TenantStorageProps { @@ -24,15 +26,20 @@ interface TenantStorageProps { } export function TenantStorage({tenantName, metrics}: TenantStorageProps) { - const {blobStorageUsed, tableStorageUsed, blobStorageLimit, tableStorageLimit} = metrics; + const {blobStorageUsed, tabletStorageUsed, blobStorageLimit, tabletStorageLimit} = metrics; const info = [ { - label: 'Database storage', + label: ( + + ), value: ( + ), value: ( { const cpu = isNumeric(CoresUsed) ? Number(CoresUsed) * 1_000_000 : undefined; const memory = isNumeric(MemoryUsed) ? Number(MemoryUsed) : undefined; const blobStorage = isNumeric(StorageAllocatedSize) ? Number(StorageAllocatedSize) : undefined; - const tableStorage = isNumeric(Metrics.Storage) ? Number(Metrics.Storage) : undefined; + const tabletStorage = isNumeric(Metrics.Storage) ? Number(Metrics.Storage) : undefined; // We use system pool usage and user pool usage to calculate cpu usage because // only these pools directly indicate resources available to perform user queries @@ -51,7 +51,7 @@ export const calculateTenantMetrics = (tenant?: TTenant) => { const blobStorageLimit = isNumeric(StorageAllocatedLimit) ? Number(StorageAllocatedLimit) : undefined; - const tableStorageLimit = isNumeric(DatabaseQuotas.data_size_hard_quota) + const tabletStorageLimit = isNumeric(DatabaseQuotas.data_size_hard_quota) ? Number(DatabaseQuotas.data_size_hard_quota) : undefined; @@ -59,11 +59,11 @@ export const calculateTenantMetrics = (tenant?: TTenant) => { cpu, memory, blobStorage, - tableStorage, + tabletStorage, cpuUsage, memoryLimit, blobStorageLimit, - tableStorageLimit, + tabletStorageLimit, }; }; From 2f3a4eb9aa874b1b545c3a3bd201940eb35928f4 Mon Sep 17 00:00:00 2001 From: mufazalov Date: Wed, 21 Feb 2024 18:19:54 +0300 Subject: [PATCH 4/5] chore: update quota comment --- .../Tenant/Diagnostics/TenantOverview/TenantOverview.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx b/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx index 462bfbf3df..c83e9f23d1 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx +++ b/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx @@ -88,7 +88,9 @@ export function TenantOverview({ } = calculateTenantMetrics(tenant); // If there is table storage limit (data_size_hard_quota), - // use it for metric card instead of blob storage + // use it for metric card instead of blob storage limit + // When datasize exceeds or equals to quota + // all write operations to the database are finished with error const isTabletStorageLimitSet = tabletStorageLimit && tabletStorageLimit > 0; const storageUsed = isTabletStorageLimitSet ? tabletStorage : blobStorage; const storageLimit = isTabletStorageLimitSet ? tabletStorageLimit : blobStorageLimit; From 15867cb50d406020b6e2b4aabe5fa67f3eed4195 Mon Sep 17 00:00:00 2001 From: mufazalov Date: Thu, 22 Feb 2024 11:36:23 +0300 Subject: [PATCH 5/5] fix(TenantOverview): remove incomplete ru locale --- .../Diagnostics/TenantOverview/i18n/index.ts | 2 -- .../Diagnostics/TenantOverview/i18n/ru.json | 28 ------------------- 2 files changed, 30 deletions(-) delete mode 100644 src/containers/Tenant/Diagnostics/TenantOverview/i18n/ru.json diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/i18n/index.ts b/src/containers/Tenant/Diagnostics/TenantOverview/i18n/index.ts index 2794ed8ff5..f2246dfd03 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/i18n/index.ts +++ b/src/containers/Tenant/Diagnostics/TenantOverview/i18n/index.ts @@ -1,11 +1,9 @@ import {i18n, Lang} from '../../../../../utils/i18n'; import en from './en.json'; -import ru from './ru.json'; const COMPONENT = 'ydb-diagnostics-tenant-overview'; i18n.registerKeyset(Lang.En, COMPONENT, en); -i18n.registerKeyset(Lang.Ru, COMPONENT, ru); export default i18n.keyset(COMPONENT); diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/i18n/ru.json b/src/containers/Tenant/Diagnostics/TenantOverview/i18n/ru.json deleted file mode 100644 index a71d8cfafa..0000000000 --- a/src/containers/Tenant/Diagnostics/TenantOverview/i18n/ru.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "no-data": "Нет данных", - "no-pools-data": "Нет данных о пулах", - - "top-nodes.empty-data": "Нет узлов", - "top-groups.empty-data": "Нет групп", - - "top": "Топ", - - "nodes": "узлов", - "shards": "шардов", - "groups": "групп", - "queries": "запросов", - "tables": "таблиц", - - "by-pools-usage": "по использованию пулов", - "by-cpu-time": "по времени cpu", - "by-cpu-usage": "по использованию cpu", - "by-load": "по нагрузке", - "by-memory": "по памяти", - "by-usage": "по потреблению", - "by-size": "по размеру", - - "charts.queries-per-second": "Количество запросов в секунду", - "charts.transaction-latency": "Задержка транзакций {{percentile}}", - "charts.cpu-usage": "Использование CPU", - "charts.memory-usage": "Использование памяти" -}