From b8393bd57e08f8458f062d6cfc11c02ee7428dba Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Tue, 4 Jun 2024 10:17:22 -0600 Subject: [PATCH] out_opentelemetry: logs: refactor keys lookup Signed-off-by: Eduardo Silva --- .../out_opentelemetry/opentelemetry_logs.c | 135 +++++++++++------- 1 file changed, 80 insertions(+), 55 deletions(-) diff --git a/plugins/out_opentelemetry/opentelemetry_logs.c b/plugins/out_opentelemetry/opentelemetry_logs.c index e7d0ff794ee..7560bba9ab4 100644 --- a/plugins/out_opentelemetry/opentelemetry_logs.c +++ b/plugins/out_opentelemetry/opentelemetry_logs.c @@ -293,28 +293,36 @@ static int append_v1_logs_metadata(struct opentelemetry_context *ctx, /* ObservedTimestamp */ ra_val = flb_ra_get_value_object(ctx->ra_log_meta_otlp_observed_ts, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { - log_record->observed_time_unix_nano = ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { + log_record->observed_time_unix_nano = ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } else if (ctx->ra_observed_timestamp_metadata) { ra_val = flb_ra_get_value_object(ctx->ra_observed_timestamp_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { - log_record->observed_time_unix_nano = ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { + log_record->observed_time_unix_nano = ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } } /* Timestamp */ ra_val = flb_ra_get_value_object(ctx->ra_log_meta_otlp_timestamp, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { - log_record->time_unix_nano = ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { + log_record->time_unix_nano = ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } else if (ctx->ra_timestamp_metadata) { ra_val = flb_ra_get_value_object(ctx->ra_timestamp_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { - log_record->time_unix_nano = ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { + log_record->time_unix_nano = ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } else { @@ -324,38 +332,44 @@ static int append_v1_logs_metadata(struct opentelemetry_context *ctx, /* SeverityNumber */ ra_val = flb_ra_get_value_object(ctx->ra_log_meta_otlp_severity_number, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER && - is_valid_severity_number(ra_val->o.via.u64) == FLB_TRUE) { - log_record->severity_number = ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER && is_valid_severity_number(ra_val->o.via.u64)) { + log_record->severity_number = ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } else if (ctx->ra_severity_number_metadata) { ra_val = flb_ra_get_value_object(ctx->ra_severity_number_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER && - is_valid_severity_number(ra_val->o.via.u64) == FLB_TRUE) { - log_record->severity_number = ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER && is_valid_severity_number(ra_val->o.via.u64)) { + log_record->severity_number = ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } } /* SeverityText */ ra_val = flb_ra_get_value_object(ctx->ra_log_meta_otlp_severity_text, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_STR && - is_valid_severity_text(ra_val->o.via.str.ptr, ra_val->o.via.str.size) == FLB_TRUE) { - log_record->severity_text = flb_calloc(1, ra_val->o.via.str.size + 1); - if (log_record->severity_text) { - strncpy(log_record->severity_text, ra_val->o.via.str.ptr, ra_val->o.via.str.size); + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_STR && + is_valid_severity_text(ra_val->o.via.str.ptr, ra_val->o.via.str.size)) { + + log_record->severity_text = flb_calloc(1, ra_val->o.via.str.size + 1); + if (log_record->severity_text) { + strncpy(log_record->severity_text, ra_val->o.via.str.ptr, ra_val->o.via.str.size); + } } flb_ra_key_value_destroy(ra_val); - } else if (ctx->ra_severity_text_metadata) { ra_val = flb_ra_get_value_object(ctx->ra_severity_text_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_STR && - is_valid_severity_text(ra_val->o.via.str.ptr, ra_val->o.via.str.size) == FLB_TRUE) { - log_record->severity_text = flb_calloc(1, ra_val->o.via.str.size+1); - if (log_record->severity_text) { - strncpy(log_record->severity_text, ra_val->o.via.str.ptr, ra_val->o.via.str.size); + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_STR && + is_valid_severity_text(ra_val->o.via.str.ptr, ra_val->o.via.str.size)) { + log_record->severity_text = flb_calloc(1, ra_val->o.via.str.size + 1); + if (log_record->severity_text) { + strncpy(log_record->severity_text, ra_val->o.via.str.ptr, ra_val->o.via.str.size); + } } flb_ra_key_value_destroy(ra_val); } @@ -367,33 +381,37 @@ static int append_v1_logs_metadata(struct opentelemetry_context *ctx, /* Attributes */ ra_val = flb_ra_get_value_object(ctx->ra_log_meta_otlp_attr, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_MAP) { - if (log_record->attributes != NULL) { - otlp_kvarray_destroy(log_record->attributes, - log_record->n_attributes); + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_MAP) { + if (log_record->attributes != NULL) { + otlp_kvarray_destroy(log_record->attributes, log_record->n_attributes); + } + log_record->attributes = msgpack_map_to_otlp_kvarray(&ra_val->o, &log_record->n_attributes); } - log_record->attributes = msgpack_map_to_otlp_kvarray(&ra_val->o, &log_record->n_attributes); flb_ra_key_value_destroy(ra_val); } else if (ctx->ra_attributes_metadata) { ra_val = flb_ra_get_value_object(ctx->ra_attributes_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_MAP) { - if (log_record->attributes != NULL) { - otlp_kvarray_destroy(log_record->attributes, - log_record->n_attributes); + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_MAP) { + if (log_record->attributes != NULL) { + otlp_kvarray_destroy(log_record->attributes, log_record->n_attributes); + } + log_record->attributes = msgpack_map_to_otlp_kvarray(&ra_val->o, &log_record->n_attributes); } - log_record->attributes = msgpack_map_to_otlp_kvarray(&ra_val->o, &log_record->n_attributes); flb_ra_key_value_destroy(ra_val); } } /* TraceId */ ra_val = flb_ra_get_value_object(ctx->ra_log_meta_otlp_trace_id, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_BIN) { - log_record->trace_id.data = flb_calloc(1, ra_val->o.via.bin.size); - if (log_record->trace_id.data) { - memcpy(log_record->trace_id.data, ra_val->o.via.bin.ptr, ra_val->o.via.bin.size); - log_record->trace_id.len = ra_val->o.via.bin.size; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_BIN) { + log_record->trace_id.data = flb_calloc(1, ra_val->o.via.bin.size); + if (log_record->trace_id.data) { + memcpy(log_record->trace_id.data, ra_val->o.via.bin.ptr, ra_val->o.via.bin.size); + log_record->trace_id.len = ra_val->o.via.bin.size; + } } flb_ra_key_value_destroy(ra_val); } @@ -405,27 +423,30 @@ static int append_v1_logs_metadata(struct opentelemetry_context *ctx, memcpy(log_record->trace_id.data, ra_val->o.via.bin.ptr, ra_val->o.via.bin.size); log_record->trace_id.len = ra_val->o.via.bin.size; } - flb_ra_key_value_destroy(ra_val); } } /* SpanId */ ra_val = flb_ra_get_value_object(ctx->ra_log_meta_otlp_span_id, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_BIN) { - log_record->span_id.data = flb_calloc(1, ra_val->o.via.bin.size); - if (log_record->span_id.data) { - memcpy(log_record->span_id.data, ra_val->o.via.bin.ptr, ra_val->o.via.bin.size); - log_record->span_id.len = ra_val->o.via.bin.size; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_BIN) { + log_record->span_id.data = flb_calloc(1, ra_val->o.via.bin.size); + if (log_record->span_id.data) { + memcpy(log_record->span_id.data, ra_val->o.via.bin.ptr, ra_val->o.via.bin.size); + log_record->span_id.len = ra_val->o.via.bin.size; + } } flb_ra_key_value_destroy(ra_val); } else if (ctx->ra_span_id_metadata) { ra_val = flb_ra_get_value_object(ctx->ra_span_id_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_BIN) { - log_record->span_id.data = flb_calloc(1, ra_val->o.via.bin.size); - if (log_record->span_id.data) { - memcpy(log_record->span_id.data, ra_val->o.via.bin.ptr, ra_val->o.via.bin.size); - log_record->span_id.len = ra_val->o.via.bin.size; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_BIN) { + log_record->span_id.data = flb_calloc(1, ra_val->o.via.bin.size); + if (log_record->span_id.data) { + memcpy(log_record->span_id.data, ra_val->o.via.bin.ptr, ra_val->o.via.bin.size); + log_record->span_id.len = ra_val->o.via.bin.size; + } } flb_ra_key_value_destroy(ra_val); } @@ -433,14 +454,18 @@ static int append_v1_logs_metadata(struct opentelemetry_context *ctx, /* TraceFlags */ ra_val = flb_ra_get_value_object(ctx->ra_trace_flags_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { - log_record->flags = (uint32_t)ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { + log_record->flags = (uint32_t) ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } else if (ctx->ra_trace_flags_metadata) { ra_val = flb_ra_get_value_object(ctx->ra_trace_flags_metadata, *event->metadata); - if (ra_val != NULL && ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { - log_record->flags = (uint32_t)ra_val->o.via.u64; + if (ra_val != NULL) { + if (ra_val->o.type == MSGPACK_OBJECT_POSITIVE_INTEGER) { + log_record->flags = (uint32_t) ra_val->o.via.u64; + } flb_ra_key_value_destroy(ra_val); } }