From cb448280112f1b81fc2d94108e9f1674331f5636 Mon Sep 17 00:00:00 2001 From: Ueli Graf Date: Thu, 26 Sep 2024 16:05:03 +0200 Subject: [PATCH 1/2] out_influxdb: allow stripping of tag prefix Removes a configured prefix from measurement names Signed-off-by: Ueli Graf --- plugins/out_influxdb/influxdb.c | 27 ++++++++++++++++++++++++++- plugins/out_influxdb/influxdb.h | 4 ++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/plugins/out_influxdb/influxdb.c b/plugins/out_influxdb/influxdb.c index 671dd5c16a6..4e881284a97 100644 --- a/plugins/out_influxdb/influxdb.c +++ b/plugins/out_influxdb/influxdb.c @@ -74,6 +74,8 @@ static int influxdb_format(struct flb_config *config, char *str = NULL; size_t str_size; char tmp[128]; + int prefix_match = 0; + int prefix_offset = 0; msgpack_object map; struct flb_time tm; struct influxdb_bulk *bulk = NULL; @@ -124,8 +126,16 @@ static int influxdb_format(struct flb_config *config, ctx->seq++; } + prefix_match = strncmp(tag, ctx->prefix, ctx->prefix_len); + if (prefix_match == 0) { + if (tag_len > ctx->prefix_len) { + prefix_offset = ctx->prefix_len; + } + } + ret = influxdb_bulk_append_header(bulk_head, - tag, tag_len, + tag + prefix_offset, + tag_len - prefix_offset, seq, ctx->seq_name, ctx->seq_len); if (ret == -1) { @@ -368,6 +378,15 @@ static int cb_influxdb_init(struct flb_output_instance *ins, struct flb_config * } ctx->seq_len = strlen(ctx->seq_name); + /* prefix */ + tmp = flb_output_get_property("strip_prefix", ins); + if (!tmp) { + ctx->prefix = flb_strdup(""); + } else { + ctx->prefix = flb_strdup(tmp); + } + ctx->prefix_len = strlen(ctx->prefix); + if (ctx->custom_uri) { /* custom URI endpoint (e.g: Grafana */ if (ctx->custom_uri[0] != '/') { @@ -696,6 +715,12 @@ static struct flb_config_map config_map[] = { "Use influxdb line protocol's integer type suffix." }, + { + FLB_CONFIG_MAP_STR, "strip_prefix", NULL, + 0, FLB_FALSE, 0, + "Prefix to be removed from the record tag when writing influx measurements." + }, + /* EOF */ {0} }; diff --git a/plugins/out_influxdb/influxdb.h b/plugins/out_influxdb/influxdb.h index c21145611c8..c6cc54e57d3 100644 --- a/plugins/out_influxdb/influxdb.h +++ b/plugins/out_influxdb/influxdb.h @@ -56,6 +56,10 @@ struct flb_influxdb { char *seq_name; int seq_len; + /* prefix */ + char *prefix; + int prefix_len; + /* auto_tags: on/off */ int auto_tags; From c45887d9476b99ee7e6c82ebb46abfb41d3b8a05 Mon Sep 17 00:00:00 2001 From: Ueli Graf Date: Mon, 30 Sep 2024 08:39:51 +0000 Subject: [PATCH 2/2] out_influxdb properly free configuration string value on exit Signed-off-by: Ueli Graf --- plugins/out_influxdb/influxdb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/out_influxdb/influxdb.c b/plugins/out_influxdb/influxdb.c index 4e881284a97..2205ee06096 100644 --- a/plugins/out_influxdb/influxdb.c +++ b/plugins/out_influxdb/influxdb.c @@ -613,6 +613,10 @@ static int cb_influxdb_exit(void *data, struct flb_config *config) flb_free(ctx->seq_name); } + if (ctx->prefix) { + flb_free(ctx->prefix); + } + flb_upstream_destroy(ctx->u); flb_free(ctx);