From 6aa475624ed574adc75662149fe937d83f78ec17 Mon Sep 17 00:00:00 2001 From: jmacd Date: Wed, 2 Sep 2020 17:03:22 -0700 Subject: [PATCH 1/5] Add an idempotency key to ExportMetricsServiceRequest --- .../proto/collector/metrics/v1/metrics_service.proto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto index 5a3cbee4..fd2522c6 100644 --- a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto +++ b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto @@ -39,6 +39,14 @@ message ExportMetricsServiceRequest { // data from multiple origins typically batch the data before forwarding further and // in that case this array will contain multiple elements. repeated opentelemetry.proto.metrics.v1.ResourceMetrics resource_metrics = 1; + + // An idempotency key is optional information used in a server bytes used to + // detect retried requests and avoid duplicate counting. This is especially + // important for metrics exported with AggregationTemporality=DELTA. + // + // OTLP clients SHOULD include a randomly generated idempotency key. The recommended + // size for an idempotency key is 8 bytes. + optional bytes idempotency_key = 2; } message ExportMetricsServiceResponse { From e6aeaf89b821ff5a147f12116b85fd3e13841778 Mon Sep 17 00:00:00 2001 From: jmacd Date: Wed, 2 Sep 2020 22:34:36 -0700 Subject: [PATCH 2/5] Extend to all OTel --- .../proto/collector/logs/v1/logs_service.proto | 11 +++++++++++ .../collector/metrics/v1/metrics_service.proto | 15 +++++++++------ .../proto/collector/trace/v1/trace_service.proto | 11 +++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/opentelemetry/proto/collector/logs/v1/logs_service.proto b/opentelemetry/proto/collector/logs/v1/logs_service.proto index 8df23c6c..24d562c3 100644 --- a/opentelemetry/proto/collector/logs/v1/logs_service.proto +++ b/opentelemetry/proto/collector/logs/v1/logs_service.proto @@ -42,6 +42,17 @@ message ExportLogsServiceRequest { // data from multiple origins typically batch the data before forwarding further and // in that case this array will contain multiple elements. repeated opentelemetry.proto.logs.v1.ResourceLogs resource_logs = 1; + + // An idempotency key is optional information used in a server to + // detect retried requests and avoid double-counting of logging + // events. + // + // OTLP clients SHOULD include a randomly generated idempotency key. + // Values of size less than 8 bytes are invalid and must be ignored. + // + // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // recommended idempotency key format. + string idempotency_key = 2; } message ExportLogsServiceResponse { diff --git a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto index fd2522c6..daaf87d8 100644 --- a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto +++ b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto @@ -40,13 +40,16 @@ message ExportMetricsServiceRequest { // in that case this array will contain multiple elements. repeated opentelemetry.proto.metrics.v1.ResourceMetrics resource_metrics = 1; - // An idempotency key is optional information used in a server bytes used to - // detect retried requests and avoid duplicate counting. This is especially - // important for metrics exported with AggregationTemporality=DELTA. + // An idempotency key is optional information used in a server to + // detect retried requests and avoid double-counting of metric + // events. // - // OTLP clients SHOULD include a randomly generated idempotency key. The recommended - // size for an idempotency key is 8 bytes. - optional bytes idempotency_key = 2; + // OTLP clients SHOULD include a randomly generated idempotency key. + // Values of size less than 8 bytes are invalid and must be ignored. + // + // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // recommended idempotency key format. + string idempotency_key = 2; } message ExportMetricsServiceResponse { diff --git a/opentelemetry/proto/collector/trace/v1/trace_service.proto b/opentelemetry/proto/collector/trace/v1/trace_service.proto index 37d02372..193cd7e0 100644 --- a/opentelemetry/proto/collector/trace/v1/trace_service.proto +++ b/opentelemetry/proto/collector/trace/v1/trace_service.proto @@ -39,6 +39,17 @@ message ExportTraceServiceRequest { // data from multiple origins typically batch the data before forwarding further and // in that case this array will contain multiple elements. repeated opentelemetry.proto.trace.v1.ResourceSpans resource_spans = 1; + + // An idempotency key is optional information used in a server to + // detect retried requests and avoid double-counting of tracinfg + // events. + // + // OTLP clients SHOULD include a randomly generated idempotency key. + // Values of size less than 8 bytes are invalid and must be ignored. + // + // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // recommended idempotency key format. + string idempotency_key = 2; } message ExportTraceServiceResponse { From 394c562a036e5b598dffdd15e06abe22f8ea14ff Mon Sep 17 00:00:00 2001 From: jmacd Date: Wed, 2 Sep 2020 22:44:03 -0700 Subject: [PATCH 3/5] MUST --- opentelemetry/proto/collector/logs/v1/logs_service.proto | 2 +- opentelemetry/proto/collector/metrics/v1/metrics_service.proto | 2 +- opentelemetry/proto/collector/trace/v1/trace_service.proto | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opentelemetry/proto/collector/logs/v1/logs_service.proto b/opentelemetry/proto/collector/logs/v1/logs_service.proto index 24d562c3..39258b93 100644 --- a/opentelemetry/proto/collector/logs/v1/logs_service.proto +++ b/opentelemetry/proto/collector/logs/v1/logs_service.proto @@ -48,7 +48,7 @@ message ExportLogsServiceRequest { // events. // // OTLP clients SHOULD include a randomly generated idempotency key. - // Values of size less than 8 bytes are invalid and must be ignored. + // Values of size less than 8 bytes are invalid and MUST be ignored. // // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the // recommended idempotency key format. diff --git a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto index daaf87d8..601971e4 100644 --- a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto +++ b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto @@ -45,7 +45,7 @@ message ExportMetricsServiceRequest { // events. // // OTLP clients SHOULD include a randomly generated idempotency key. - // Values of size less than 8 bytes are invalid and must be ignored. + // Values of size less than 8 bytes are invalid and MUST be ignored. // // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the // recommended idempotency key format. diff --git a/opentelemetry/proto/collector/trace/v1/trace_service.proto b/opentelemetry/proto/collector/trace/v1/trace_service.proto index 193cd7e0..f599236b 100644 --- a/opentelemetry/proto/collector/trace/v1/trace_service.proto +++ b/opentelemetry/proto/collector/trace/v1/trace_service.proto @@ -45,7 +45,7 @@ message ExportTraceServiceRequest { // events. // // OTLP clients SHOULD include a randomly generated idempotency key. - // Values of size less than 8 bytes are invalid and must be ignored. + // Values of size less than 8 bytes are invalid and MUST be ignored. // // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the // recommended idempotency key format. From 5ceab53e67eae66a2a34f454fc8eafac2490b2d6 Mon Sep 17 00:00:00 2001 From: jmacd Date: Thu, 3 Sep 2020 17:23:27 -0700 Subject: [PATCH 4/5] Use bytes, recommend V4 UUID, state that 0-length is invalid --- opentelemetry/proto/collector/logs/v1/logs_service.proto | 9 ++++----- .../proto/collector/metrics/v1/metrics_service.proto | 9 ++++----- .../proto/collector/trace/v1/trace_service.proto | 9 ++++----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/opentelemetry/proto/collector/logs/v1/logs_service.proto b/opentelemetry/proto/collector/logs/v1/logs_service.proto index 39258b93..b6d84874 100644 --- a/opentelemetry/proto/collector/logs/v1/logs_service.proto +++ b/opentelemetry/proto/collector/logs/v1/logs_service.proto @@ -47,12 +47,11 @@ message ExportLogsServiceRequest { // detect retried requests and avoid double-counting of logging // events. // - // OTLP clients SHOULD include a randomly generated idempotency key. - // Values of size less than 8 bytes are invalid and MUST be ignored. - // - // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // OTLP clients SHOULD include an idempotency key. Empty + // idempotency keys are invalid and MUST be ignored. A 128-bit [V4 + // UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the // recommended idempotency key format. - string idempotency_key = 2; + bytes idempotency_key = 2; } message ExportLogsServiceResponse { diff --git a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto index 601971e4..5a5c7300 100644 --- a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto +++ b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto @@ -44,12 +44,11 @@ message ExportMetricsServiceRequest { // detect retried requests and avoid double-counting of metric // events. // - // OTLP clients SHOULD include a randomly generated idempotency key. - // Values of size less than 8 bytes are invalid and MUST be ignored. - // - // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // OTLP clients SHOULD include an idempotency key. Empty + // idempotency keys are invalid and MUST be ignored. A 128-bit [V4 + // UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the // recommended idempotency key format. - string idempotency_key = 2; + bytes idempotency_key = 2; } message ExportMetricsServiceResponse { diff --git a/opentelemetry/proto/collector/trace/v1/trace_service.proto b/opentelemetry/proto/collector/trace/v1/trace_service.proto index f599236b..389838e4 100644 --- a/opentelemetry/proto/collector/trace/v1/trace_service.proto +++ b/opentelemetry/proto/collector/trace/v1/trace_service.proto @@ -44,12 +44,11 @@ message ExportTraceServiceRequest { // detect retried requests and avoid double-counting of tracinfg // events. // - // OTLP clients SHOULD include a randomly generated idempotency key. - // Values of size less than 8 bytes are invalid and MUST be ignored. - // - // [V4 UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // OTLP clients SHOULD include an idempotency key. Empty + // idempotency keys are invalid and MUST be ignored. A 128-bit [V4 + // UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the // recommended idempotency key format. - string idempotency_key = 2; + bytes idempotency_key = 2; } message ExportTraceServiceResponse { From c074fe1cd4177e1cb1bd2b3a75e02d973b4a1391 Mon Sep 17 00:00:00 2001 From: jmacd Date: Thu, 3 Sep 2020 17:24:59 -0700 Subject: [PATCH 5/5] Remove markdown format --- opentelemetry/proto/collector/logs/v1/logs_service.proto | 4 ++-- .../proto/collector/metrics/v1/metrics_service.proto | 4 ++-- opentelemetry/proto/collector/trace/v1/trace_service.proto | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/opentelemetry/proto/collector/logs/v1/logs_service.proto b/opentelemetry/proto/collector/logs/v1/logs_service.proto index b6d84874..fae46603 100644 --- a/opentelemetry/proto/collector/logs/v1/logs_service.proto +++ b/opentelemetry/proto/collector/logs/v1/logs_service.proto @@ -48,8 +48,8 @@ message ExportLogsServiceRequest { // events. // // OTLP clients SHOULD include an idempotency key. Empty - // idempotency keys are invalid and MUST be ignored. A 128-bit [V4 - // UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // idempotency keys are invalid and MUST be ignored. A 128-bit V4 + // UUID (https://tools.ietf.org/html/rfc4122) is the // recommended idempotency key format. bytes idempotency_key = 2; } diff --git a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto index 5a5c7300..b96e9dea 100644 --- a/opentelemetry/proto/collector/metrics/v1/metrics_service.proto +++ b/opentelemetry/proto/collector/metrics/v1/metrics_service.proto @@ -45,8 +45,8 @@ message ExportMetricsServiceRequest { // events. // // OTLP clients SHOULD include an idempotency key. Empty - // idempotency keys are invalid and MUST be ignored. A 128-bit [V4 - // UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // idempotency keys are invalid and MUST be ignored. A 128-bit V4 + // UUID (https://tools.ietf.org/html/rfc4122) is the // recommended idempotency key format. bytes idempotency_key = 2; } diff --git a/opentelemetry/proto/collector/trace/v1/trace_service.proto b/opentelemetry/proto/collector/trace/v1/trace_service.proto index 389838e4..be87c607 100644 --- a/opentelemetry/proto/collector/trace/v1/trace_service.proto +++ b/opentelemetry/proto/collector/trace/v1/trace_service.proto @@ -45,8 +45,8 @@ message ExportTraceServiceRequest { // events. // // OTLP clients SHOULD include an idempotency key. Empty - // idempotency keys are invalid and MUST be ignored. A 128-bit [V4 - // UUID]([RFC 4122](https://tools.ietf.org/html/rfc4122)) is the + // idempotency keys are invalid and MUST be ignored. A 128-bit V4 + // UUID (https://tools.ietf.org/html/rfc4122) is the // recommended idempotency key format. bytes idempotency_key = 2; }