Skip to content

Commit 5b723f4

Browse files
committed
feat(o11y): add metric macro
1 parent ac64b3a commit 5b723f4

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
11
use opentelemetry::KeyValue;
2-
use opentelemetry_sdk::Resource;
2+
use opentelemetry_sdk::{resource::EnvResourceDetector, Resource};
33
use opentelemetry_semantic_conventions::{
4-
resource::{DEPLOYMENT_ENVIRONMENT, SERVICE_NAME, SERVICE_NAMESPACE, SERVICE_VERSION},
4+
resource::{SERVICE_NAME, SERVICE_NAMESPACE, SERVICE_VERSION},
55
SCHEMA_URL,
66
};
7-
use std::borrow::Cow;
7+
use std::{borrow::Cow, time::Duration};
88

99
pub fn resource(
1010
service_name: impl Into<Cow<'static, str>>,
1111
service_version: impl Into<Cow<'static, str>>,
12-
deployment_environment: impl Into<Cow<'static, str>>,
1312
) -> Resource {
14-
Resource::from_schema_url(
13+
Resource::from_detectors(
14+
Duration::from_millis(200),
15+
// Detect "OTEL_RESOURCE_ATTRIBUTES" enviornment variables
16+
vec![Box::new(EnvResourceDetector::new())],
17+
)
18+
.merge(&Resource::from_schema_url(
1519
[
1620
(SERVICE_NAME, service_name.into()),
1721
(SERVICE_VERSION, service_version.into()),
1822
(SERVICE_NAMESPACE, "syndicationd".into()),
19-
(DEPLOYMENT_ENVIRONMENT, deployment_environment.into()),
2023
]
2124
.into_iter()
2225
.map(|(key, value)| KeyValue::new(key, value)),
2326
SCHEMA_URL,
24-
)
27+
))
2528
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#[macro_export]
2+
macro_rules! metric {
3+
($($tt:tt)* ) => { ::tracing::event!(
4+
target: $crate::tracing_subscriber::otel_metrics::METRICS_EVENT_TARGET,
5+
::tracing::Level::INFO,
6+
$($tt)*
7+
);}
8+
}

crates/synd_o11y/src/tracing_subscriber/otel_metrics/mod.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
use std::time::Duration;
22

33
use opentelemetry_sdk::{metrics::MeterProvider, runtime, Resource};
4-
use tracing::Subscriber;
4+
use tracing::{Metadata, Subscriber};
55
use tracing_opentelemetry::MetricsLayer;
6-
use tracing_subscriber::{registry::LookupSpan, Layer};
6+
use tracing_subscriber::{filter::filter_fn, layer::Filter, registry::LookupSpan, Layer};
7+
8+
pub mod macros;
9+
10+
pub const METRICS_EVENT_TARGET: &str = "metrics";
11+
12+
pub fn metrics_event_filter<S: Subscriber>() -> impl Filter<S> {
13+
filter_fn(|metadata: &Metadata<'_>| metadata.target() != METRICS_EVENT_TARGET)
14+
}
715

816
pub fn layer<S>(resource: Resource) -> impl Layer<S>
917
where

0 commit comments

Comments
 (0)