diff --git a/src/api/stats_api.js b/src/api/stats_api.js index 7cd7418384..3c62969939 100644 --- a/src/api/stats_api.js +++ b/src/api/stats_api.js @@ -447,6 +447,9 @@ module.exports = { }, is_healthy: { type: 'boolean' + }, + is_low_capacity: { + type: 'boolean' } } } diff --git a/src/server/analytic_services/prometheus_reports/noobaa_core_report.js b/src/server/analytic_services/prometheus_reports/noobaa_core_report.js index afd1004ef2..32a4531b32 100644 --- a/src/server/analytic_services/prometheus_reports/noobaa_core_report.js +++ b/src/server/analytic_services/prometheus_reports/noobaa_core_report.js @@ -294,6 +294,13 @@ const NOOBAA_CORE_METRICS = js_utils.deep_freeze([{ help: 'Bucket Capacity Precent', labelNames: ['bucket_name'] } + }, { + type: 'Gauge', + name: 'backing_store_low_capacity', + configuration: { + help: 'Does backing store in has low capacity', + labelNames: ['backing_store_name'] + } }, { type: 'Gauge', name: 'bucket_size_quota', @@ -622,8 +629,12 @@ class NooBaaCoreReport extends BasePrometheusReport { if (!this._metrics) return; this._metrics.resource_status.reset(); + this._metrics.backing_store_low_capacity.reset(); resources_info.forEach(resource_info => { this._metrics.resource_status.set({ resource_name: resource_info.resource_name }, Number(resource_info.is_healthy)); + this._metrics.backing_store_low_capacity.set( + { backing_store_name: resource_info.resource_name }, + Number(resource_info.is_low_capacity)); }); } diff --git a/src/server/system_services/stats_aggregator.js b/src/server/system_services/stats_aggregator.js index 757056723b..6ef9d0b2c7 100644 --- a/src/server/system_services/stats_aggregator.js +++ b/src/server/system_services/stats_aggregator.js @@ -726,6 +726,10 @@ async function get_cloud_pool_stats(req) { 'TIER_LOW_CAPACITY', 'LOW_CAPACITY', ]; + const LOW_CAPACITY_MODES = [ + 'TIER_LOW_CAPACITY', + 'LOW_CAPACITY', + ]; //Per each system fill out the needed info for (const pool of system_store.data.pools) { if (pool.is_default_pool) continue; @@ -794,6 +798,7 @@ async function get_cloud_pool_stats(req) { cloud_pool_stats.resources.push({ resource_name: pool_info.name, is_healthy: _.includes(OPTIMAL_MODES, pool_info.mode), + is_low_capacity: _.includes(LOW_CAPACITY_MODES, pool_info.mode), }); }