From 1655ff520c9c58e52a4bd53c2d4ada9cd5c02183 Mon Sep 17 00:00:00 2001 From: Phillip Adair Stewart Whelan Date: Thu, 10 Apr 2025 16:00:18 -0400 Subject: [PATCH 1/4] in_opentelemetry: add missing schema_url property to scope. Signed-off-by: Phillip Adair Stewart Whelan --- plugins/in_opentelemetry/opentelemetry_logs.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugins/in_opentelemetry/opentelemetry_logs.c b/plugins/in_opentelemetry/opentelemetry_logs.c index 63d37d336cc..f6b78f72aad 100644 --- a/plugins/in_opentelemetry/opentelemetry_logs.c +++ b/plugins/in_opentelemetry/opentelemetry_logs.c @@ -1346,6 +1346,16 @@ static int binary_payload_to_msgpack(struct flb_opentelemetry *ctx, if (scope && (scope->name || scope->version || scope->n_attributes > 0)) { flb_mp_map_header_init(&mh_tmp, &mp_pck); + if (scope_log->schema_url && strlen(scope_log->schema_url) > 0) { + flb_mp_map_header_append(&mh_tmp); + msgpack_pack_str(&mp_pck, 10); + msgpack_pack_str_body(&mp_pck, "schema_url", 10); + + len = strlen(scope_log->schema_url); + msgpack_pack_str(&mp_pck, len); + msgpack_pack_str_body(&mp_pck, scope_log->schema_url, len); + } + if (scope->name && strlen(scope->name) > 0) { flb_mp_map_header_append(&mh_tmp); msgpack_pack_str(&mp_pck, 4); From 7049c07a8b83827c09305e771553756074e80bb7 Mon Sep 17 00:00:00 2001 From: Phillip Adair Stewart Whelan Date: Thu, 10 Apr 2025 16:01:48 -0400 Subject: [PATCH 2/4] out_opentelemetry: add record accessor for scope.schema_url for scope_logs. Signed-off-by: Phillip Adair Stewart Whelan --- plugins/out_opentelemetry/opentelemetry.h | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/out_opentelemetry/opentelemetry.h b/plugins/out_opentelemetry/opentelemetry.h index 23f264dbe94..ed14252dcb7 100644 --- a/plugins/out_opentelemetry/opentelemetry.h +++ b/plugins/out_opentelemetry/opentelemetry.h @@ -172,6 +172,7 @@ struct opentelemetry_context { struct flb_record_accessor *ra_scope_name; struct flb_record_accessor *ra_scope_version; struct flb_record_accessor *ra_scope_attr; + struct flb_record_accessor *ra_scope_schema_url; /* log: metadata components coming from OTLP */ struct flb_record_accessor *ra_log_meta_otlp_observed_ts; From 3831fb499078a36c1d0273ed4fe14246748b8c00 Mon Sep 17 00:00:00 2001 From: Phillip Adair Stewart Whelan Date: Thu, 10 Apr 2025 16:02:21 -0400 Subject: [PATCH 3/4] out_opentelemetry: initialize record accessor for scope.schema_url. Signed-off-by: Phillip Adair Stewart Whelan --- plugins/out_opentelemetry/opentelemetry_conf.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/out_opentelemetry/opentelemetry_conf.c b/plugins/out_opentelemetry/opentelemetry_conf.c index 11a4ea4e84e..33d381c264b 100644 --- a/plugins/out_opentelemetry/opentelemetry_conf.c +++ b/plugins/out_opentelemetry/opentelemetry_conf.c @@ -516,6 +516,11 @@ struct opentelemetry_context *flb_opentelemetry_context_create(struct flb_output flb_plg_error(ins, "failed to create record accessor for scope attributes"); } + ctx->ra_scope_schema_url = flb_ra_create("$scope['schema_url']", FLB_FALSE); + if (ctx->ra_scope_schema_url == NULL) { + flb_plg_error(ins, "failed to create record accessor for resource schema url"); + } + /* log metadata under $otlp (set by in_opentelemetry) */ ctx->ra_log_meta_otlp_observed_ts = flb_ra_create("$otlp['observed_timestamp']", FLB_FALSE); @@ -711,6 +716,9 @@ void flb_opentelemetry_context_destroy(struct opentelemetry_context *ctx) if (ctx->ra_scope_attr) { flb_ra_destroy(ctx->ra_scope_attr); } + if (ctx->ra_scope_schema_url) { + flb_ra_destroy(ctx->ra_scope_schema_url); + } if (ctx->ra_log_meta_otlp_observed_ts) { flb_ra_destroy(ctx->ra_log_meta_otlp_observed_ts); From ab1312177da8ac6ccba4f4d609a517e3f4e695e4 Mon Sep 17 00:00:00 2001 From: Phillip Adair Stewart Whelan Date: Thu, 10 Apr 2025 16:03:32 -0400 Subject: [PATCH 4/4] out_opentelemetry: scope.schema_url record accessor to set scope_logs.schema_url. Signed-off-by: Phillip Adair Stewart Whelan --- .../out_opentelemetry/opentelemetry_logs.c | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/plugins/out_opentelemetry/opentelemetry_logs.c b/plugins/out_opentelemetry/opentelemetry_logs.c index c40e5371d13..bbb63680fdf 100644 --- a/plugins/out_opentelemetry/opentelemetry_logs.c +++ b/plugins/out_opentelemetry/opentelemetry_logs.c @@ -808,6 +808,34 @@ static int set_resource_schema_url(struct flb_record_accessor *ra, return 0; } +static int set_scope_schema_url(struct flb_record_accessor *ra, + msgpack_object *map, + Opentelemetry__Proto__Logs__V1__ScopeLogs *scope_log) +{ + + struct flb_ra_value *ra_val; + + ra_val = flb_ra_get_value_object(ra, *map); + if (ra_val == NULL) { + return -1; + } + + if (ra_val->o.type != MSGPACK_OBJECT_STR) { + flb_ra_key_value_destroy(ra_val); + return -1; + } + + scope_log->schema_url = flb_sds_create_len(ra_val->o.via.str.ptr, + ra_val->o.via.str.size); + flb_ra_key_value_destroy(ra_val); + + if (!scope_log->schema_url) { + return -1; + } + + return 0; +} + static int set_scope_name(struct flb_record_accessor *ra, msgpack_object *map, Opentelemetry__Proto__Common__V1__InstrumentationScope *scope) @@ -1079,6 +1107,9 @@ int otel_process_logs(struct flb_event_chunk *event_chunk, /* group body: $scope['attributes'] */ set_scope_attributes(ctx->ra_scope_attr, event.body, scope_log->scope); + + /* group body: $scope['schema_url'] */ + set_scope_schema_url(ctx->ra_scope_schema_url, event.body, scope_log); } ret = FLB_OK;