diff --git a/plugins/filter_kubernetes/kube_conf.c b/plugins/filter_kubernetes/kube_conf.c index e4b72b4e1a7..79769e753e9 100644 --- a/plugins/filter_kubernetes/kube_conf.c +++ b/plugins/filter_kubernetes/kube_conf.c @@ -52,6 +52,7 @@ struct flb_kube *flb_kube_conf_create(struct flb_filter_instance *i, } ctx->config = config; ctx->merge_log = FLB_FALSE; + ctx->keep_log = FLB_TRUE; ctx->labels = FLB_TRUE; ctx->annotations = FLB_TRUE; ctx->dummy_meta = FLB_FALSE; @@ -118,6 +119,12 @@ struct flb_kube *flb_kube_conf_create(struct flb_filter_instance *i, ctx->merge_log_trim = FLB_TRUE; } + /* Keep original log key after successful parsing */ + tmp = flb_filter_get_property("keep_log", i); + if (tmp) { + ctx->keep_log = flb_utils_bool(tmp); + } + /* Get Kubernetes API server */ url = flb_filter_get_property("kube_url", i); if (!url) { diff --git a/plugins/filter_kubernetes/kube_conf.h b/plugins/filter_kubernetes/kube_conf.h index 38b8be2f7cb..e2c941d1fa5 100644 --- a/plugins/filter_kubernetes/kube_conf.h +++ b/plugins/filter_kubernetes/kube_conf.h @@ -95,6 +95,9 @@ struct flb_kube { int merge_log_key_len; char *merge_log_key; + /* Keep original log key after successful parsing */ + int keep_log; + /* API Server end point */ char kube_url[1024]; diff --git a/plugins/filter_kubernetes/kubernetes.c b/plugins/filter_kubernetes/kubernetes.c index f41bc3ec256..ef450a2e31d 100644 --- a/plugins/filter_kubernetes/kubernetes.c +++ b/plugins/filter_kubernetes/kubernetes.c @@ -316,6 +316,10 @@ static int pack_map_content(msgpack_packer *pck, msgpack_sbuffer *sbuf, new_map_size += log_buf_entries; } + if (merge_status == MERGE_PARSED && ctx->keep_log == FLB_FALSE) { + new_map_size--; + } + msgpack_pack_map(pck, new_map_size); /* Original map */ @@ -330,9 +334,11 @@ static int pack_map_content(msgpack_packer *pck, msgpack_sbuffer *sbuf, */ if (log_index == i && (merge_status == MERGE_UNESCAPED || merge_status == MERGE_PARSED)) { - msgpack_pack_object(pck, k); - msgpack_pack_str(pck, ctx->unesc_buf_len); - msgpack_pack_str_body(pck, ctx->unesc_buf, ctx->unesc_buf_len); + if (merge_status == MERGE_UNESCAPED || ctx->keep_log == FLB_TRUE) { + msgpack_pack_object(pck, k); + msgpack_pack_str(pck, ctx->unesc_buf_len); + msgpack_pack_str_body(pck, ctx->unesc_buf, ctx->unesc_buf_len); + } } else { /* MERGE_BINARY ? */ msgpack_pack_object(pck, k);