mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-13 16:46:55 +00:00
44 lines
1.7 KiB
Rust
44 lines
1.7 KiB
Rust
// Copyright 2024 RustFS Team
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
use crate::S3Operation;
|
|
use metrics::{counter, describe_counter};
|
|
use std::sync::OnceLock;
|
|
|
|
const S3_OPS_METRIC: &str = "rustfs_s3_operations_total";
|
|
|
|
/// Records an S3 operation in the metrics system.
|
|
/// This function should be called whenever an S3 API operation is handled, allowing us to track the usage of different S3 operations across buckets.
|
|
///
|
|
/// # Arguments
|
|
/// * `op` - The S3 operation being recorded.
|
|
/// * `bucket` - The name of the bucket associated with the operation, used as a label for more granular metrics analysis.
|
|
///
|
|
/// Example usage:
|
|
/// ```ignore
|
|
/// record_s3_op(S3Operation::GetObject, "my-bucket");
|
|
/// ```
|
|
pub fn record_s3_op(op: S3Operation, bucket: &str) {
|
|
counter!(S3_OPS_METRIC, "op" => op.as_str(), "bucket" => bucket.to_owned()).increment(1);
|
|
}
|
|
|
|
/// One-time registration of indicator meta information
|
|
/// This function ensures that metric descriptors are registered only once.
|
|
pub fn init_s3_metrics() {
|
|
static METRICS_DESC_INIT: OnceLock<()> = OnceLock::new();
|
|
METRICS_DESC_INIT.get_or_init(|| {
|
|
describe_counter!(S3_OPS_METRIC, "Total number of S3 API operations handled");
|
|
});
|
|
}
|