Skip to content

Commit 07627b4

Browse files
prashantvedsiper
authored andcommitted
in_opentelemetry: Configurable logs_body_key
Currently, the logs body is added to the record in multiple ways * If it's a MAP, then the key-value pairs are added to the record at the top-level. * For other types, it's added under the key "message" for OTLP Proto and "log" for OTLP JSON. Support a way to always nest the logs body under a specific key for consistency, and to avoid possible clashes with other top-level keys in the record (e.g., `__internal__`). Signed-off-by: Prashant Varanasi <[email protected]>
1 parent b95fa0a commit 07627b4

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

plugins/in_opentelemetry/opentelemetry.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,12 @@ static struct flb_config_map config_map[] = {
251251
FLB_CONFIG_MAP_STR, "logs_metadata_key", "otlp",
252252
0, FLB_TRUE, offsetof(struct flb_opentelemetry, logs_metadata_key),
253253
},
254+
{
255+
FLB_CONFIG_MAP_STR, "logs_body_key", NULL,
256+
0, FLB_TRUE, offsetof(struct flb_opentelemetry, logs_body_key),
257+
"Key to use for the logs body. If unset, body key-value pairs will be " \
258+
"used as the log record, and other types will be nested under a key."
259+
},
254260

255261
/* EOF */
256262
{0}

plugins/in_opentelemetry/opentelemetry.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ struct flb_opentelemetry {
3838
int raw_traces;
3939
int tag_from_uri;
4040
flb_sds_t logs_metadata_key;
41+
flb_sds_t logs_body_key;
4142
int profile_support_enabled;
4243
int encode_profiles_as_log;
4344

plugins/in_opentelemetry/opentelemetry_logs.c

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ static int process_json_payload_log_records_entry(struct flb_opentelemetry *ctx,
368368
msgpack_object_map *log_records_entry;
369369
msgpack_object *timestamp_object;
370370
uint64_t timestamp_uint64;
371+
char *logs_body_key;
371372
msgpack_object *metadata_object;
372373
msgpack_object *body_object;
373374
msgpack_object *observed_time_unix_nano = NULL;
@@ -585,14 +586,20 @@ static int process_json_payload_log_records_entry(struct flb_opentelemetry *ctx,
585586
body_object != NULL) {
586587
result = json_payload_get_wrapped_value(body_object, NULL, &body_type);
587588

588-
if (result != 0 || body_type == MSGPACK_OBJECT_MAP) {
589+
if (result != 0 ||
590+
(ctx->logs_body_key == NULL && body_type == MSGPACK_OBJECT_MAP)) {
589591
flb_log_event_encoder_dynamic_field_reset(&encoder->body);
590592
}
591593
else {
594+
logs_body_key = ctx->logs_body_key;
595+
if (ctx->logs_body_key == NULL) {
596+
logs_body_key = (char *) "log";
597+
}
598+
592599
flb_log_event_encoder_append_cstring(
593600
encoder,
594601
FLB_LOG_EVENT_BODY,
595-
"log");
602+
logs_body_key);
596603
}
597604

598605
result = json_payload_append_converted_value(
@@ -1257,6 +1264,7 @@ static int binary_payload_to_msgpack(struct flb_opentelemetry *ctx,
12571264
int resource_logs_index;
12581265
int scope_log_index;
12591266
int log_record_index;
1267+
char *logs_body_key;
12601268
struct flb_mp_map_header mh;
12611269
struct flb_mp_map_header mh_tmp;
12621270
struct flb_time tm;
@@ -1500,17 +1508,22 @@ static int binary_payload_to_msgpack(struct flb_opentelemetry *ctx,
15001508
ret = FLB_EVENT_ENCODER_ERROR_SERIALIZATION_FAILURE;
15011509
}
15021510
else {
1503-
if (log_records[log_record_index]->body->value_case ==
1511+
if (ctx->logs_body_key == NULL &&
1512+
log_records[log_record_index]->body->value_case ==
15041513
OPENTELEMETRY__PROTO__COMMON__V1__ANY_VALUE__VALUE_KVLIST_VALUE) {
15051514
ret = flb_log_event_encoder_set_body_from_raw_msgpack(
15061515
encoder,
15071516
mp_sbuf.data,
15081517
mp_sbuf.size);
15091518
}
15101519
else {
1520+
logs_body_key = ctx->logs_body_key;
1521+
if (logs_body_key == NULL) {
1522+
logs_body_key = "message";
1523+
}
15111524
ret = flb_log_event_encoder_append_body_values(
15121525
encoder,
1513-
FLB_LOG_EVENT_CSTRING_VALUE("message"),
1526+
FLB_LOG_EVENT_CSTRING_VALUE(logs_body_key),
15141527
FLB_LOG_EVENT_MSGPACK_RAW_VALUE(mp_sbuf.data, mp_sbuf.size));
15151528
}
15161529
}

0 commit comments

Comments
 (0)