From 9dbf155d1f115d588b88ffb5eac86e08e2222c1f Mon Sep 17 00:00:00 2001 From: fumingwei Date: Tue, 14 Mar 2023 16:34:18 +0800 Subject: feature:过滤lineprotocol和prometheus输出 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/prometheus_output.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src/prometheus_output.cpp') diff --git a/src/prometheus_output.cpp b/src/prometheus_output.cpp index c3ee470..1d4fbfd 100644 --- a/src/prometheus_output.cpp +++ b/src/prometheus_output.cpp @@ -241,6 +241,20 @@ static int prometheus_output_histogram_and_summary(struct metric_t *metric, char return used_len; } +static int is_output_prometheus(struct metric_t *metric) +{ + int i = 0, ret = 0; + for(i = 0; i < (int)metric->n_tag; i++) + { + if(strcmp(metric->tag_key[i], "disable_output_prometheus") == 0 + && strcmp(metric->tag_value[i], "yes") == 0) + { + ret = 1; + break; + } + } + return ret; +} static int prometheus_get_instance_metric_playload(struct fieldstat_instance *instance, char **payload, int *payload_size, int offset) @@ -254,6 +268,7 @@ static int prometheus_get_instance_metric_playload(struct fieldstat_instance *in int append_offset = offset; char *new_payload = NULL; int new_payload_size = 0; + int current_metric_cnt = instance->metric_cnt; if(instance->running != 1) { @@ -270,10 +285,17 @@ static int prometheus_get_instance_metric_playload(struct fieldstat_instance *in str_unescape(instance->name, instance_name, sizeof(instance_name)); - for(i = 0; i < instance->metric_cnt; i++) + for(i = 0; i < current_metric_cnt; i++) { metric = get_metric(instance, i); - + if(metric == NULL) + { + continue; + } + if(is_output_prometheus(metric) == 1) + { + continue; + } if(metric->is_ratio == 1) { continue; -- cgit v1.2.3