summaryrefslogtreecommitdiff
path: root/src/prometheus_output.cpp
diff options
context:
space:
mode:
authorfumingwei <[email protected]>2023-03-14 16:34:18 +0800
committerfumingwei <[email protected]>2023-03-14 16:34:18 +0800
commit9dbf155d1f115d588b88ffb5eac86e08e2222c1f (patch)
tree5c3a40277ed10879a101d41593aee9e8e93f0377 /src/prometheus_output.cpp
parent13638b967b68b4f60a487ce2ec12c5c7b81d9ba6 (diff)
feature:过滤lineprotocol和prometheus输出
Diffstat (limited to 'src/prometheus_output.cpp')
-rw-r--r--src/prometheus_output.cpp26
1 files changed, 24 insertions, 2 deletions
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;