7 个版本
新 0.11.6 | 2024 年 8 月 23 日 |
---|---|
0.11.5 | 2024 年 8 月 19 日 |
2080 在 网页编程
729 每月下载量
1MB
14K SLoC
OpenTelemetry Google Cloud Monitoring Exporter
此库提供将指标导出到 Google Cloud Monitoring 的支持。
关于资源检测,请参阅 opentelemetry-resourcedetector-gcp-rust。
安装
cargo add opentelemetry_gcloud_monitoring_exporter
- 导出器
cargo add opentelemetry_resourcedetector_gcp_rust
- GCP 资源检测
或在 cargo.toml 中添加
[dependencies]
opentelemetry_gcloud_monitoring_exporter = { version = "0.11", features = [
"tokio",
"opentelemetry_0_24",
"gcp_auth",
] }
tokio = { version = "1.0", features = ["full"] }
opentelemetry = { version = "0.24", features = ["metrics"] }
opentelemetry_sdk = { version = "0.24", features = ["metrics", "rt-tokio"] }
opentelemetry_resourcedetector_gcp_rust = "0.11"
使用
use opentelemetry::{metrics::MeterProvider as _, KeyValue};
use opentelemetry_gcloud_monitoring_exporter::{
GCPMetricsExporter, GCPMetricsExporterConfig, MonitoredResourceDataConfig,
};
use opentelemetry_resourcedetector_gcp_rust::GoogleCloudResourceDetector;
use opentelemetry_sdk::{
metrics::{PeriodicReader, SdkMeterProvider},
runtime, Resource,
};
use serde_json::json;
use std::collections::HashMap;
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut cfg = GCPMetricsExporterConfig::default();
cfg.prefix = "custom.googleapis.com/test_service".to_string();
let exporter = GCPMetricsExporter::new_gcp_auth(cfg).await?;
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
let gcp_detector = GoogleCloudResourceDetector::new().await;
let res = Resource::default().merge(&rname);
SdkMeterProvider::builder()
.with_resource(res)
.with_reader(reader)
.build();
let meter = meter_provider.meter("user-event-test");
let counter = meter
.f64_counter("counter_f64_test")
.with_description("test_decription")
.with_unit("test_unit")
.init();
loop {
// Record measurements using the Counter instrument.
counter.add(
1.0,
&[
KeyValue::new("mykey1", "myvalue1"),
KeyValue::new("mykey2", "myvalue2"),
],
);
tokio::time::sleep(Duration::from_millis(300)).await;
}
}
自定义 Google 监控中的指标资源
let mut cfg = GCPMetricsExporterConfig::default();
cfg.prefix = "custom.googleapis.com/test_service".to_string();
// customize metric resource in google monitoring
cfg.custom_monitored_resource_data = Some(
// https://cloud.google.com/monitoring/api/resources#tag_global
MonitoredResourceDataConfig {
r#type: "global".to_string(),
labels: HashMap::from([
("project_id".to_string(), "my-project".to_string()),
]),
},
);
let exporter = GCPMetricsExporter::new_gcp_auth(cfg).await?;
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
SdkMeterProvider::builder()
.with_reader(reader)
.build();
参考
此仓库的测试用例
依赖项
~21–36MB
~688K SLoC