// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include #include #include #include #include namespace storage { struct DataStoredMetrics : metrics::MetricSet { using SP = std::shared_ptr; metrics::LongValueMetric buckets; metrics::LongValueMetric docs; metrics::LongValueMetric bytes; metrics::LongValueMetric active; metrics::LongValueMetric ready; DataStoredMetrics(const std::string& name, metrics::MetricSet* owner); ~DataStoredMetrics() override; }; struct ContentBucketDbMetrics : metrics::MetricSet { explicit ContentBucketDbMetrics(metrics::MetricSet* owner); ~ContentBucketDbMetrics() override; metrics::MemoryUsageMetrics memory_usage; }; struct BucketSpaceMetrics : metrics::MetricSet { // Superficially very similar to DataStoredMetrics, but metric naming and dimensions differ metrics::LongValueMetric buckets_total; metrics::LongValueMetric docs; metrics::LongValueMetric bytes; metrics::LongValueMetric active_buckets; metrics::LongValueMetric ready_buckets; ContentBucketDbMetrics bucket_db_metrics; BucketSpaceMetrics(const vespalib::string& space_name, metrics::MetricSet* owner); ~BucketSpaceMetrics() override; }; class ContentBucketSpaceRepo; class BucketManagerMetrics : public metrics::MetricSet { public: std::shared_ptr disk; using BucketSpaceMap = std::unordered_map, document::BucketSpace::hash>; BucketSpaceMap bucket_spaces; metrics::SumMetric total; metrics::LongValueMetric simpleBucketInfoRequestSize; metrics::LongAverageMetric fullBucketInfoRequestSize; metrics::LongAverageMetric fullBucketInfoLatency; explicit BucketManagerMetrics(const ContentBucketSpaceRepo& repo); ~BucketManagerMetrics() override; }; }