Skip to content

Commit 13ba79b

Browse files
committed
feat(api): export basic counter metrics
1 parent 5b723f4 commit 13ba79b

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
lines changed

crates/synd_api/src/main.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
use synd_o11y::{opentelemetry::OpenTelemetryGuard, tracing_subscriber::otel_metrics};
1+
use synd_o11y::{
2+
opentelemetry::OpenTelemetryGuard,
3+
tracing_subscriber::otel_metrics::{self, metrics_event_filter},
4+
};
25
use tracing::{error, info};
36

47
use synd_api::{
58
args::{self, Args},
69
config,
710
dependency::Dependency,
811
repository::kvsd::ConnectKvsdFailed,
9-
serve::{layer::request_metrics::METRICS_TARGET, listen_and_serve},
12+
serve::listen_and_serve,
1013
shutdown::Shutdown,
1114
};
12-
use tracing_subscriber::filter::filter_fn;
1315

1416
fn init_tracing() -> Option<OpenTelemetryGuard> {
1517
use synd_o11y::{
@@ -33,8 +35,7 @@ fn init_tracing() -> Option<OpenTelemetryGuard> {
3335
None => (None, None),
3436
Some(endpoint) if endpoint.is_empty() => (None, None),
3537
Some(endpoint) => {
36-
let resource =
37-
synd_o11y::opentelemetry::resource(config::NAME, config::VERSION, "local");
38+
let resource = synd_o11y::opentelemetry::resource(config::NAME, config::VERSION);
3839

3940
tracing::info!(endpoint, ?resource, "Export opentelemetry signals");
4041

@@ -58,7 +59,7 @@ fn init_tracing() -> Option<OpenTelemetryGuard> {
5859
.with_file(show_src)
5960
.with_line_number(show_src)
6061
.with_target(show_target)
61-
.with_filter(filter_fn(|metadata| metadata.target() != METRICS_TARGET))
62+
.with_filter(metrics_event_filter())
6263
.and_then(opentelemetry_layers)
6364
.with_filter(
6465
EnvFilter::try_from_default_env()

crates/synd_api/src/serve/layer/request_metrics.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ use std::{
66

77
use axum::{extract::Request, response::Response};
88
use futures_util::Future;
9+
use synd_o11y::metric;
910
use tower::{Layer, Service};
10-
use tracing::Level;
11-
12-
pub const METRICS_TARGET: &str = "metrics";
1311

1412
#[derive(Clone)]
1513
pub struct RequestMetricsLayer {}
@@ -55,7 +53,7 @@ where
5553
let response = this.inner.call(req).await.unwrap();
5654
let status = response.status().as_u16();
5755

58-
tracing::event!(target: METRICS_TARGET, Level::INFO, monotonic_counter.request = 1, path, status);
56+
metric!(monotonic_counter.request = 1, path, status);
5957

6058
Ok(response)
6159
})

crates/synd_api/src/usecase/mod.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub mod authorize;
1818
use std::{future::Future, sync::Arc};
1919

2020
use synd_feed::feed::cache::FetchCachedFeed;
21-
use synd_o11y::{audit, tracing_subscriber::audit::Audit};
21+
use synd_o11y::{audit, metric, tracing_subscriber::audit::Audit};
2222

2323
use crate::{
2424
principal::Principal,
@@ -113,10 +113,12 @@ impl Runtime {
113113

114114
{
115115
let user_id = principal.user_id().unwrap_or("?");
116+
let operation = uc.audit_operation();
116117
audit!(
117118
{ Audit::USER_ID } = user_id,
118-
{ Audit::OPERATION } = uc.audit_operation(),
119+
{ Audit::OPERATION } = operation,
119120
);
121+
metric!(monotonic_counter.usecase = 1, operation);
120122
}
121123

122124
let principal = match self.authorizer.authorize(principal, &uc, &input).await {

0 commit comments

Comments
 (0)