summaryrefslogtreecommitdiff
path: root/src/fieldstat.cpp
diff options
context:
space:
mode:
authorfumingwei <[email protected]>2023-02-28 09:35:25 +0800
committerfumingwei <[email protected]>2023-02-28 09:35:25 +0800
commit67a6ff21b5ef05da4513559149835ec3ea278e83 (patch)
tree55ad3f25147ae01defd6905ba5d473fc5797afef /src/fieldstat.cpp
parentc2a77c781f1bfd4752999f41b32739874db17e40 (diff)
feature:新增lineprotocol输出
Diffstat (limited to 'src/fieldstat.cpp')
-rw-r--r--src/fieldstat.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/fieldstat.cpp b/src/fieldstat.cpp
index 735b856..a0d881a 100644
--- a/src/fieldstat.cpp
+++ b/src/fieldstat.cpp
@@ -418,6 +418,54 @@ void append_line_protocol_line(struct fieldstat_instance *instance, const char*
}
+
+int line_protocol_output(struct fieldstat_instance *instance)
+{
+ metric_t *metric = NULL;
+ long long value=0;
+ int i=0,j=0;
+ char field_set_buff[UDP_PAYLOAD_SIZE];
+ char tag_set_buff[UDP_PAYLOAD_SIZE];
+ char *line_name = NULL;
+
+ memset(field_set_buff, 0, sizeof(field_set_buff));
+ memset(tag_set_buff, 0, sizeof(tag_set_buff));
+ char *tag_set_buff_append = tag_set_buff;
+
+ for(i = 0; i < instance->metric_cnt; i++)
+ {
+ metric = instance->metric[i];
+ if(metric->is_ratio == 1)
+ {
+ continue;
+ }
+
+ if(metric->belong_to_table != 1)
+ {
+ continue;
+ }
+ value = get_metric_unit_val(metric, FS_CALC_CURRENT, 1);
+ if()
+ if(value != 0)
+ {
+ snprintf(field_set_buff, UDP_PAYLOAD_SIZE, "%s=%lld", metric->field_name, value);
+ tag_set_buff_append += snprintf(tag_set_buff_append, sizeof(tag_set_buff) - (tag_set_buff_append - tag_set_buff), ",app_name=%s", instance->app_name);
+ for(j = 0; j < (int)metric->n_tag; j++)
+ {
+ tag_set_buff_append += snprintf(tag_set_buff_append, sizeof(tag_set_buff) - (tag_set_buff_append - tag_set_buff), ",%s=%s", metric->tag_key[i],metric->tag_value[i]);
+ }
+ append_line_protocol_line(instance, metric->field_name, tag_set_buff, field_set_buff);
+ tag_set_buff_append = tag_set_buff;
+
+ }
+ }
+ flush_line_protocol_metric(instance);
+ return 0;
+}
+
+
+
+
int line_protocol_output(struct fieldstat_instance *instance)
{
metric_t *metric = NULL;