Skip to content

Commit b4e2f4d

Browse files
Merge pull request #9205 from aayushchouhan09/quota-met
Added metrics - object count, max_objects and max_size for quota
2 parents 078d4e5 + 0e4f273 commit b4e2f4d

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

src/server/analytic_services/prometheus_reports/noobaa_core_report.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,27 @@ const NOOBAA_CORE_METRICS = js_utils.deep_freeze([{
308308
help: 'Bucket Quantity Quota Precent',
309309
labelNames: ['bucket_name']
310310
}
311+
}, {
312+
type: 'Gauge',
313+
name: 'bucket_object_count',
314+
configuration: {
315+
help: 'Current Number of Objects per Bucket',
316+
labelNames: ['bucket_name']
317+
}
318+
}, {
319+
type: 'Gauge',
320+
name: 'bucket_max_objects_quota',
321+
configuration: {
322+
help: 'Bucket Maximum Objects Quota',
323+
labelNames: ['bucket_name']
324+
}
325+
}, {
326+
type: 'Gauge',
327+
name: 'bucket_max_bytes_quota',
328+
configuration: {
329+
help: 'Bucket Maximum Bytes Quota',
330+
labelNames: ['bucket_name']
331+
}
311332
}, {
312333
type: 'Gauge',
313334
name: 'resource_status',
@@ -563,6 +584,9 @@ class NooBaaCoreReport extends BasePrometheusReport {
563584
this._metrics.bucket_capacity.reset();
564585
this._metrics.bucket_tagging.reset();
565586
this._metrics.bucket_used_bytes.reset();
587+
this._metrics.bucket_object_count.reset();
588+
this._metrics.bucket_max_objects_quota.reset();
589+
this._metrics.bucket_max_bytes_quota.reset();
566590
buckets_info.forEach(bucket_info => {
567591
const bucket_labels = { bucket_name: bucket_info.bucket_name };
568592
if (bucket_info.tagging && bucket_info.tagging.length) {
@@ -574,6 +598,9 @@ class NooBaaCoreReport extends BasePrometheusReport {
574598
this._metrics.bucket_quantity_quota.set({ bucket_name: bucket_info.bucket_name }, bucket_info.quota_quantity_percent);
575599
this._metrics.bucket_capacity.set({ bucket_name: bucket_info.bucket_name }, bucket_info.capacity_precent);
576600
this._metrics.bucket_used_bytes.set({ bucket_name: bucket_info.bucket_name }, bucket_info.bucket_used_bytes);
601+
this._metrics.bucket_object_count.set({ bucket_name: bucket_info.bucket_name }, bucket_info.object_count || 0);
602+
this._metrics.bucket_max_objects_quota.set({ bucket_name: bucket_info.bucket_name }, bucket_info.quota_max_objects || 0);
603+
this._metrics.bucket_max_bytes_quota.set({ bucket_name: bucket_info.bucket_name }, bucket_info.quota_max_bytes || 0);
577604
});
578605
}
579606

src/server/system_services/stats_aggregator.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,19 @@ async function get_partial_systems_stats(req) {
419419
}
420420
}
421421

422+
function _get_bucket_quota_info(bucket) {
423+
const quota = new Quota(bucket.quota);
424+
const { size_used_percent, quantity_used_percent } = quota.get_bucket_quota_usages_percent(bucket);
425+
const quota_max_objects = quota.get_quota_by_quantity() === '0' ? 0 : parseInt(quota.get_quota_by_quantity(), 10);
426+
const quota_max_bytes = quota.get_quota_by_size() === '0' ? 0 : size_utils.json_to_bigint(quota.get_quota_by_size()).toJSNumber();
427+
428+
return {
429+
size_used_percent,
430+
quantity_used_percent,
431+
quota_max_objects,
432+
quota_max_bytes
433+
};
434+
}
422435

423436
async function _partial_buckets_info(req) {
424437
const buckets_stats = _.cloneDeep(PARTIAL_BUCKETS_STATS_DEFAULTS);
@@ -515,7 +528,8 @@ async function _partial_buckets_info(req) {
515528
const bucket_available = size_utils.json_to_bigint(_.get(bucket_info, 'data.free') || 0);
516529
const bucket_total = bucket_used.plus(bucket_available);
517530
const is_capacity_relevant = _.includes(CAPACITY_MODES, bucket_info.mode);
518-
const { size_used_percent, quantity_used_percent } = new Quota(bucket.quota).get_bucket_quota_usages_percent(bucket);
531+
const { size_used_percent, quantity_used_percent, quota_max_objects, quota_max_bytes } = _get_bucket_quota_info(bucket);
532+
519533
buckets_stats.buckets.push({
520534
bucket_name: bucket_info.name.unwrap(),
521535
quota_size_precent: size_used_percent,
@@ -524,7 +538,10 @@ async function _partial_buckets_info(req) {
524538
.divide(bucket_total)) : 0,
525539
is_healthy: _.includes(OPTIMAL_MODES, bucket_info.mode),
526540
tagging: bucket_info.tagging || [],
527-
bucket_used_bytes: bucket_used.valueOf()
541+
bucket_used_bytes: bucket_used.valueOf(),
542+
object_count: bucket_info.num_objects.value || 0,
543+
quota_max_objects: quota_max_objects,
544+
quota_max_bytes: quota_max_bytes
528545
});
529546
}
530547

0 commit comments

Comments
 (0)