From fdf02d954286288f435c84395bc9b9be13806899 Mon Sep 17 00:00:00 2001 From: Stephen Wakely Date: Wed, 28 Jun 2023 10:40:52 +0100 Subject: [PATCH] fix(observability): issues with event_cache PR (#17768) Ref #17580 Ref #17581 Re this PR #17549 This fixes a couple of issues with the mentioned PR. - When telemetry was turned off it was still emitting the empty tags. - The service tag was being emitted by converting the value using `to_string`. This meant the value was delimited by `"`. - A `telemetry` section is added to the global configuration docs. --------- Signed-off-by: Stephen Wakely --- lib/vector-common/src/request_metadata.rs | 10 +++- lib/vector-core/src/event/log_event.rs | 2 +- website/cue/reference/configuration.cue | 56 +++++++++++++++++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/lib/vector-common/src/request_metadata.rs b/lib/vector-common/src/request_metadata.rs index d28d7da681a58..9b93a63df7626 100644 --- a/lib/vector-common/src/request_metadata.rs +++ b/lib/vector-common/src/request_metadata.rs @@ -25,6 +25,14 @@ impl EventCountTags { service: OptionalTag::Specified(None), } } + + #[must_use] + pub fn new_unspecified() -> Self { + Self { + source: OptionalTag::Ignored, + service: OptionalTag::Ignored, + } + } } /// Must be implemented by events to get the tags that will be attached to @@ -133,7 +141,7 @@ impl GroupedCountByteSize { } } GroupedCountByteSize::Untagged { size } => { - event_cache.emit(&EventCountTags::new_empty(), *size); + event_cache.emit(&EventCountTags::new_unspecified(), *size); } } } diff --git a/lib/vector-core/src/event/log_event.rs b/lib/vector-core/src/event/log_event.rs index c782476b5c515..e5755f12d7e66 100644 --- a/lib/vector-core/src/event/log_event.rs +++ b/lib/vector-core/src/event/log_event.rs @@ -224,7 +224,7 @@ impl GetEventCountTags for LogEvent { let service = if telemetry().tags().emit_service { self.get_by_meaning("service") - .map(ToString::to_string) + .map(|value| value.to_string_lossy().to_string()) .into() } else { OptionalTag::Ignored diff --git a/website/cue/reference/configuration.cue b/website/cue/reference/configuration.cue index 6fcacb5c6c3c6..d1a1476d3de38 100644 --- a/website/cue/reference/configuration.cue +++ b/website/cue/reference/configuration.cue @@ -252,6 +252,62 @@ configuration: { } } + telemetry: { + common: false + description: """ + Configures options for how Vector emits telemetry. + """ + required: false + type: object: { + examples: [] + options: { + tags: { + required: false + description: """ + Controls which tags should be included with the `vector_component_sent_events_total` and + `vector_component_sent_event_bytes_total` metrics. + """ + type: object: { + examples: [] + options: { + emit_source: { + common: true + description: """ + Add a `source` tag with the source component the event was received from. + + If there is no source component, for example if the event was generated by + the `lua` transform a `-` is emitted for this tag. + """ + required: false + type: bool: { + default: false + } + } + emit_service: { + common: false + description: """ + Adds a `service` tag with the service component the event was received from. + + For logs this is the field that has been determined to mean `service`. Each source may + define different fields for this. For example, with `syslog` events the `appname` field + is used. + + Metric events will use the tag named `service`. + + If no service is available a `-` is emitted for this tag. + """ + required: false + type: bool: { + default: false + } + } + } + } + } + } + } + } + log_schema: { common: false description: """