From e25dd1836f7fa4fcfb32c822b851bb1f555f64fc Mon Sep 17 00:00:00 2001 From: Edd Robinson Date: Thu, 29 Apr 2021 11:21:46 +0100 Subject: [PATCH] feat: instrument tag_keys --- src/influxdb_ioxd/rpc/storage/service.rs | 84 +++++++++++++++++++++++- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/src/influxdb_ioxd/rpc/storage/service.rs b/src/influxdb_ioxd/rpc/storage/service.rs index 8d88800051..5f81346090 100644 --- a/src/influxdb_ioxd/rpc/storage/service.rs +++ b/src/influxdb_ioxd/rpc/storage/service.rs @@ -418,6 +418,12 @@ where info!(%db_name, ?range, predicate=%predicate.loggable(), "tag_keys"); + let ob = self.metrics.requests.observation(); + let labels = &[ + KeyValue::new("operation", "tag_keys"), + KeyValue::new("db_name", db_name.to_string()), + ]; + let measurement = None; let response = tag_keys_impl( @@ -428,12 +434,20 @@ where predicate, ) .await - .map_err(|e| e.to_status()); + .map_err(|e| { + if e.is_internal() { + ob.error_with_labels(labels); + } else { + ob.client_error_with_labels(labels); + } + e.to_status() + }); tx.send(response) .await .expect("sending tag_keys response to server"); + ob.ok_with_labels(labels); Ok(tonic::Response::new(ReceiverStream::new(rx))) } @@ -619,6 +633,12 @@ where info!(%db_name, ?range, %measurement, predicate=%predicate.loggable(), "measurement_tag_keys"); + let ob = self.metrics.requests.observation(); + let labels = &[ + KeyValue::new("operation", "measurement_tag_keys"), + KeyValue::new("db_name", db_name.to_string()), + ]; + let measurement = Some(measurement); let response = tag_keys_impl( @@ -629,12 +649,20 @@ where predicate, ) .await - .map_err(|e| e.to_status()); + .map_err(|e| { + if e.is_internal() { + ob.error_with_labels(labels); + } else { + ob.client_error_with_labels(labels); + } + e.to_status() + }); tx.send(response) .await .expect("sending measurement_tag_keys response to server"); + ob.ok_with_labels(labels); Ok(tonic::Response::new(ReceiverStream::new(rx))) } @@ -1266,6 +1294,19 @@ mod tests { "\nActual: {:?}\nExpected: {:?}", actual_predicate, expected_predicate ); + + fixture + .test_storage + .metrics_registry + .has_metric_family("gRPC_requests_total") + .with_labels(&[ + ("operation", "tag_keys"), + ("db_name", "000000000000007b_00000000000001c8"), + ("status", "ok"), + ]) + .counter() + .eq(1.0) + .unwrap(); } #[tokio::test] @@ -1303,6 +1344,19 @@ mod tests { let response = fixture.storage_client.tag_keys(request).await; assert_contains!(response.unwrap_err().to_string(), "Sugar we are going down"); + + fixture + .test_storage + .metrics_registry + .has_metric_family("gRPC_requests_total") + .with_labels(&[ + ("operation", "tag_keys"), + ("db_name", "000000000000007b_00000000000001c8"), + ("status", "client_error"), + ]) + .counter() + .eq(1.0) + .unwrap(); } /// test the plumbing of the RPC layer for measurement_tag_keys-- @@ -1383,6 +1437,19 @@ mod tests { "\nActual: {:?}\nExpected: {:?}", actual_predicate, expected_predicate ); + + fixture + .test_storage + .metrics_registry + .has_metric_family("gRPC_requests_total") + .with_labels(&[ + ("operation", "measurement_tag_keys"), + ("db_name", "000000000000007b_00000000000001c8"), + ("status", "ok"), + ]) + .counter() + .eq(1.0) + .unwrap(); } #[tokio::test] @@ -1423,6 +1490,19 @@ mod tests { let response = fixture.storage_client.measurement_tag_keys(request).await; assert_contains!(response.unwrap_err().to_string(), "This is an error"); + + fixture + .test_storage + .metrics_registry + .has_metric_family("gRPC_requests_total") + .with_labels(&[ + ("operation", "measurement_tag_keys"), + ("db_name", "000000000000007b_00000000000001c8"), + ("status", "client_error"), + ]) + .counter() + .eq(1.0) + .unwrap(); } /// test the plumbing of the RPC layer for tag_keys -- specifically that