Skip to content

Commit d8b23cd

Browse files
committed
telemetry: Reduce cardinality of some otel span names
I tried to follow OpenTelemetry naming guidance, e.g. https://opentelemetry.io/docs/specs/semconv/db/database-spans/#name
1 parent 70347e5 commit d8b23cd

9 files changed

Lines changed: 310 additions & 43 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/factor-outbound-mqtt/src/host.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,13 @@ impl v3::HostConnectionWithStore for crate::MqttFactorData {
142142
}
143143

144144
#[instrument(name = "spin_outbound_mqtt.publish", skip(accessor, connection, payload), err(level = Level::INFO),
145-
fields(otel.kind = "producer", otel.name = format!("{} publish", topic), messaging.operation = "publish",
146-
messaging.system = "mqtt"))]
145+
fields(
146+
otel.kind = "producer",
147+
otel.name = "publish",
148+
messaging.operation = "publish",
149+
messaging.system = "mqtt",
150+
messaging.destination.name = topic,
151+
))]
147152
async fn publish<T: Send>(
148153
accessor: &Accessor<T, Self>,
149154
connection: Resource<v3::Connection>,
@@ -204,8 +209,13 @@ impl v2::HostConnection for InstanceState {
204209
/// current trace context into the payload yourself.
205210
/// https://w3c.github.io/trace-context-mqtt/#mqtt-v3-recommendation.
206211
#[instrument(name = "spin_outbound_mqtt.publish", skip(self, connection, payload), err(level = Level::INFO),
207-
fields(otel.kind = "producer", otel.name = format!("{} publish", topic), messaging.operation = "publish",
208-
messaging.system = "mqtt"))]
212+
fields(
213+
otel.kind = "producer",
214+
otel.name = "publish",
215+
messaging.operation = "publish",
216+
messaging.system = "mqtt",
217+
messaging.destination.name = topic,
218+
))]
209219
async fn publish(
210220
&mut self,
211221
connection: Resource<v2::Connection>,

crates/factor-outbound-mysql/src/host.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ impl<C: Client> InstanceState<C> {
5151
impl<C: Client> v2::Host for InstanceState<C> {}
5252

5353
impl<C: Client> v2::HostConnection for InstanceState<C> {
54-
#[instrument(name = "spin_outbound_mysql.open", skip(self, address), err(level = Level::INFO), fields(otel.kind = "client", db.system = "mysql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
54+
#[instrument(name = "spin_outbound_mysql.open", skip(self, address), err(level = Level::INFO),
55+
fields(otel.kind = "client", db.system = "mysql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
5556
async fn open(&mut self, address: String) -> Result<Resource<Connection>, v2::Error> {
5657
self.otel.reparent_tracing_span();
5758
spin_factor_outbound_networking::record_address_fields(&address);
@@ -72,7 +73,8 @@ impl<C: Client> v2::HostConnection for InstanceState<C> {
7273
self.open_connection(&address).await
7374
}
7475

75-
#[instrument(name = "spin_outbound_mysql.execute", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "mysql", otel.name = statement))]
76+
#[instrument(name = "spin_outbound_mysql.execute", skip(self, connection, params), err(level = Level::INFO),
77+
fields(otel.kind = "client", db.system = "mysql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
7678
async fn execute(
7779
&mut self,
7880
connection: Resource<Connection>,
@@ -87,7 +89,8 @@ impl<C: Client> v2::HostConnection for InstanceState<C> {
8789
.map_err(track_db_error_on_span)
8890
}
8991

90-
#[instrument(name = "spin_outbound_mysql.query", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "mysql", otel.name = statement))]
92+
#[instrument(name = "spin_outbound_mysql.query", skip(self, connection, params), err(level = Level::INFO),
93+
fields(otel.kind = "client", db.system = "mysql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
9194
async fn query(
9295
&mut self,
9396
connection: Resource<Connection>,

crates/factor-outbound-pg/src/host.rs

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ fn v3_params_to_v4(params: Vec<v3::ParameterValue>) -> Vec<v4::ParameterValue> {
8383
}
8484

8585
impl<CF: ClientFactory> v3::HostConnection for InstanceState<CF> {
86-
#[instrument(name = "spin_outbound_pg.open", skip(self, address), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
86+
#[instrument(name = "spin_outbound_pg.open", skip(self, address), err(level = Level::INFO),
87+
fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
8788
async fn open(&mut self, address: String) -> Result<Resource<v3::Connection>, v3::Error> {
8889
spin_factor_outbound_networking::record_address_fields(&address);
8990

@@ -97,7 +98,8 @@ impl<CF: ClientFactory> v3::HostConnection for InstanceState<CF> {
9798
.map_err(v3::Error::from)
9899
}
99100

100-
#[instrument(name = "spin_outbound_pg.execute", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
101+
#[instrument(name = "spin_outbound_pg.execute", skip(self, connection, params), err(level = Level::INFO),
102+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
101103
async fn execute(
102104
&mut self,
103105
connection: Resource<v3::Connection>,
@@ -113,7 +115,8 @@ impl<CF: ClientFactory> v3::HostConnection for InstanceState<CF> {
113115
.map_err(track_db_error_on_span_v3)
114116
}
115117

116-
#[instrument(name = "spin_outbound_pg.query", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
118+
#[instrument(name = "spin_outbound_pg.query", skip(self, connection, params), err(level = Level::INFO),
119+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
117120
async fn query(
118121
&mut self,
119122
connection: Resource<v3::Connection>,
@@ -190,7 +193,8 @@ impl<CF: ClientFactory> v4::HostConnectionBuilder for InstanceState<CF> {
190193
}
191194

192195
impl<CF: ClientFactory> v4::HostConnection for InstanceState<CF> {
193-
#[instrument(name = "spin_outbound_pg.open", skip(self, address), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
196+
#[instrument(name = "spin_outbound_pg.open", skip(self, address), err(level = Level::INFO),
197+
fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
194198
async fn open(&mut self, address: String) -> Result<Resource<v4::Connection>, v4::Error> {
195199
spin_factor_outbound_networking::record_address_fields(&address);
196200

@@ -201,7 +205,8 @@ impl<CF: ClientFactory> v4::HostConnection for InstanceState<CF> {
201205
self.open_connection(&address, None).await
202206
}
203207

204-
#[instrument(name = "spin_outbound_pg.execute", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
208+
#[instrument(name = "spin_outbound_pg.execute", skip(self, connection, params), err(level = Level::INFO),
209+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
205210
async fn execute(
206211
&mut self,
207212
connection: Resource<v4::Connection>,
@@ -215,7 +220,8 @@ impl<CF: ClientFactory> v4::HostConnection for InstanceState<CF> {
215220
.map_err(track_db_error_on_span_v4)
216221
}
217222

218-
#[instrument(name = "spin_outbound_pg.query", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
223+
#[instrument(name = "spin_outbound_pg.query", skip(self, connection, params), err(level = Level::INFO),
224+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
219225
async fn query(
220226
&mut self,
221227
connection: Resource<v4::Connection>,
@@ -238,7 +244,8 @@ impl<CF: ClientFactory> v4::HostConnection for InstanceState<CF> {
238244
impl<CF: ClientFactory> spin_world::spin::postgres4_2_0::postgres::HostConnectionWithStore
239245
for crate::PgFactorData<CF>
240246
{
241-
#[instrument(name = "spin_outbound_pg.open_async", skip(accessor, address), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
247+
#[instrument(name = "spin_outbound_pg.open_async", skip(accessor, address), err(level = Level::INFO),
248+
fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
242249
async fn open_async<T>(
243250
accessor: &Accessor<T, Self>,
244251
address: String,
@@ -251,7 +258,8 @@ impl<CF: ClientFactory> spin_world::spin::postgres4_2_0::postgres::HostConnectio
251258
Self::open_connection_async(accessor, &address, None).await
252259
}
253260

254-
#[instrument(name = "spin_outbound_pg.execute", skip(accessor, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
261+
#[instrument(name = "spin_outbound_pg.execute", skip(accessor, connection, params), err(level = Level::INFO),
262+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
255263
async fn execute_async<T>(
256264
accessor: &Accessor<T, Self>,
257265
connection: Resource<v4::Connection>,
@@ -270,7 +278,8 @@ impl<CF: ClientFactory> spin_world::spin::postgres4_2_0::postgres::HostConnectio
270278
}
271279

272280
#[allow(clippy::type_complexity)] // blame bindgen, clippy, blame bindgen
273-
#[instrument(name = "spin_outbound_pg.query_async", skip(accessor, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
281+
#[instrument(name = "spin_outbound_pg.query_async", skip(accessor, params), err(level = Level::INFO),
282+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
274283
async fn query_async<T>(
275284
accessor: &Accessor<T, Self>,
276285
connection: Resource<v4::Connection>,
@@ -446,7 +455,8 @@ macro_rules! delegate {
446455
impl<CF: ClientFactory> v2::Host for InstanceState<CF> {}
447456

448457
impl<CF: ClientFactory> v2::HostConnection for InstanceState<CF> {
449-
#[instrument(name = "spin_outbound_pg.open", skip(self, address), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
458+
#[instrument(name = "spin_outbound_pg.open", skip(self, address), err(level = Level::INFO),
459+
fields(otel.kind = "client", db.system = "postgresql", db.address = Empty, server.port = Empty, db.namespace = Empty))]
450460
async fn open(&mut self, address: String) -> Result<Resource<v2::Connection>, v2::Error> {
451461
self.otel.reparent_tracing_span();
452462
spin_factor_outbound_networking::record_address_fields(&address);
@@ -460,7 +470,8 @@ impl<CF: ClientFactory> v2::HostConnection for InstanceState<CF> {
460470
.map_err(v2::Error::from)
461471
}
462472

463-
#[instrument(name = "spin_outbound_pg.execute", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
473+
#[instrument(name = "spin_outbound_pg.execute", skip(self, connection, params), err(level = Level::INFO),
474+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
464475
async fn execute(
465476
&mut self,
466477
connection: Resource<v2::Connection>,
@@ -480,7 +491,8 @@ impl<CF: ClientFactory> v2::HostConnection for InstanceState<CF> {
480491
.map_err(track_db_error_on_span_v2)
481492
}
482493

483-
#[instrument(name = "spin_outbound_pg.query", skip(self, connection, params), err(level = Level::INFO), fields(otel.kind = "client", db.system = "postgresql", otel.name = statement))]
494+
#[instrument(name = "spin_outbound_pg.query", skip(self, connection, params), err(level = Level::INFO),
495+
fields(otel.kind = "client", db.system = "postgresql", otel.name = spin_telemetry::db::sql_span_name(&statement)))]
484496
async fn query(
485497
&mut self,
486498
connection: Resource<v2::Connection>,

0 commit comments

Comments
 (0)