Skip to content

Commit d35facd

Browse files
authored
AzMon - add count of network errors (open-telemetry#2324)
Network errors (connect failures, timeouts) were **invisible** in the exporter's metrics dashboard — all HTTP status counters showed 0 even during total export failure. Added a laclient_network_errors counter that increments on each failed HTTP attempt before a response is received, making connectivity issues immediately diagnosable. Tested by turning wifi off and running exporter. The new counters helps troubleshoot quickly
1 parent 0bb31b8 commit d35facd

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

  • rust/otap-dataflow/crates/contrib-nodes/src/exporters/azure_monitor_exporter

rust/otap-dataflow/crates/contrib-nodes/src/exporters/azure_monitor_exporter/client.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ impl LogsIngestionClient {
229229
let body_len = body.len();
230230
let start = Instant::now();
231231

232-
let response = self
232+
let response = match self
233233
.http_client
234234
.post(&self.endpoint)
235235
.header(CONTENT_TYPE, "application/json")
@@ -238,7 +238,13 @@ impl LogsIngestionClient {
238238
.body(body)
239239
.send()
240240
.await
241-
.map_err(Error::network)?;
241+
{
242+
Ok(resp) => resp,
243+
Err(e) => {
244+
self.metrics.borrow_mut().add_network_error();
245+
return Err(Error::network(e));
246+
}
247+
};
242248

243249
let status_code = response.status().as_u16();
244250
let elapsed = start.elapsed();

rust/otap-dataflow/crates/contrib-nodes/src/exporters/azure_monitor_exporter/metrics.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ pub struct AzureMonitorExporterMetrics {
6161
/// Number of HTTP 5xx (server error) responses.
6262
#[metric(unit = "{response}")]
6363
pub laclient_http_5xx: Counter<u64>,
64+
/// Number of network errors (connect, timeout, etc.) before receiving an HTTP response.
65+
#[metric(unit = "{error}")]
66+
pub laclient_network_errors: Counter<u64>,
6467
/// Number of failed authentication attempts.
6568
pub auth_failures: Counter<u64>,
6669
/// Authentication success latency in milliseconds (min/max/sum/count).
@@ -317,6 +320,12 @@ impl AzureMonitorExporterMetricsTracker {
317320
self.metrics.msg_to_data_count.set(count);
318321
}
319322

323+
/// Increment the network error counter.
324+
#[inline]
325+
pub fn add_network_error(&mut self) {
326+
self.metrics.laclient_network_errors.inc();
327+
}
328+
320329
/// Increment the log-entry-too-large counter.
321330
#[inline]
322331
pub fn add_log_entry_too_large(&mut self) {
@@ -466,6 +475,20 @@ mod tests {
466475
assert_eq!(stats.metrics().laclient_http_5xx.get(), 3);
467476
}
468477

478+
#[test]
479+
fn test_network_error_counter() {
480+
let mut stats = new_test_tracker();
481+
482+
assert_eq!(stats.metrics().laclient_network_errors.get(), 0);
483+
484+
stats.add_network_error();
485+
assert_eq!(stats.metrics().laclient_network_errors.get(), 1);
486+
487+
stats.add_network_error();
488+
stats.add_network_error();
489+
assert_eq!(stats.metrics().laclient_network_errors.get(), 3);
490+
}
491+
469492
#[test]
470493
fn test_report() {
471494
let mut stats = new_test_tracker();

0 commit comments

Comments
 (0)