summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfumingwei <[email protected]>2023-02-28 20:39:02 +0800
committerfumingwei <[email protected]>2023-02-28 20:39:14 +0800
commit0c526d87110e6e83c19a461ca4d06a2f73c20767 (patch)
tree9e0bb0f274193169009f42ff10127d08eea0e8ff /src
parent67a6ff21b5ef05da4513559149835ec3ea278e83 (diff)
feature:fieldstat_register_table_metrics构建index_table存储table metric的id
Diffstat (limited to 'src')
-rw-r--r--src/fieldstat.cpp124
1 files changed, 71 insertions, 53 deletions
diff --git a/src/fieldstat.cpp b/src/fieldstat.cpp
index a0d881a..4d5fb52 100644
--- a/src/fieldstat.cpp
+++ b/src/fieldstat.cpp
@@ -417,54 +417,91 @@ void append_line_protocol_line(struct fieldstat_instance *instance, const char*
return;
}
-
-
-int line_protocol_output(struct fieldstat_instance *instance)
+/*
+static int output_file_format_default_table(struct fieldstat_instance *instance)
{
+ int i = 0, j = 0, k = 0;
metric_t *metric = NULL;
- long long value=0;
- int i=0,j=0;
+ long long value = 0;
+ //double ratio = 0.0;
+ struct metric_t **table_column = NULL;
+ size_t table_column_size = 0;
+
+ char* print_buf_append_position = print_buf;
+
+ int index_table[NUM_MAX_TABLE][1024];
+ int table_metric_number[NUM_MAX_TABLE];
+ memset(table_metric_number,0, sizeof(table_metric_number));
+ char *line_name = NULL;
+ int table_id = 0;
+ int per_table_counter = 0;
+ int metric_id = 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;
+ char *tag_set_buff_append = tag_set_buff;
+ char *field_set_buff_append = field_set_buff;
+ char *measurement = NULL;
for(i = 0; i < instance->metric_cnt; i++)
{
metric = instance->metric[i];
- if(metric->is_ratio == 1)
+ if(metric->belong_to_table != 1)
{
continue;
}
+ table_id = metric->table_id;
+ per_table_counter = table_metric_number[table_id]++;
+ index_table[table_id][per_table_counter] = i;
+ }
- if(metric->belong_to_table != 1)
+ for(i = 0; i < instance->table_num; i++)
+ {
+ if(table_metric_number[i] == 0)
{
continue;
}
- value = get_metric_unit_val(metric, FS_CALC_CURRENT, 1);
- if()
- if(value != 0)
+
+ table_column = instance->table_metrics[i].column;
+ table_column_size = instance->table_metrics[i].column_size;
+
+ for(j = 0; j < table_metric_number[i]; j++)
{
- 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++)
+ metric_id = index_table[i][j];
+ metric = instance->metric[metric_id];
+ if(line_name == NULL || strcmp(line_name, metric->field_name))
+ {
+ if(line_name != NULL)
+ {
+ append_line_protocol_line(instance, measurement, tag_set_buff, field_set_buff);
+ }
+ line_name = metric->field_name;
+ tag_set_buff_append += snprintf(tag_set_buff, sizeof(tag_set_buff) - (tag_set_buff_append - tag_set_buff), ",app_name=", 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]);
+ }
+ }
+ if(metric->field_type == FIELD_TYPE_COUNTER)
{
- 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]);
+ value = get_metric_unit_val(metric, FS_CALC_SPEED, 1);
}
- append_line_protocol_line(instance, metric->field_name, tag_set_buff, field_set_buff);
- tag_set_buff_append = tag_set_buff;
-
+ if(metric->field_type == FIELD_TYPE_GAUGE)
+ {
+ value = get_metric_unit_val(metric, FS_CALC_CURRENT, 1);
+ }
+ field_set_buff_append += snprintf(field_set_buff_append, sizeof(field_set_buff) - (field_set_buff_append - tag_set_buff), "%s=%lld,", metric->table_column_name, value);
}
+
+ line_name = NULL;
}
- flush_line_protocol_metric(instance);
- return 0;
-}
-
-
+ return print_buf_append_position - print_buf;
+}
+*/
int line_protocol_output(struct fieldstat_instance *instance)
{
@@ -706,34 +743,13 @@ static int output_file_format_default_table(struct fieldstat_instance *instance,
char* print_buf_append_position = print_buf;
- int index_table[NUM_MAX_TABLE][1024];
int table_metric_number[NUM_MAX_TABLE];
memset(table_metric_number,0, sizeof(table_metric_number));
- char *line_name = NULL;
- int table_id = 0;
- int per_table_counter = 0;
int metric_id = 0;
char print_buf_tags[1024] = {0};
- for(i = 0; i < instance->metric_cnt; i++)
- {
- metric = instance->metric[i];
- if(metric->belong_to_table != 1)
- {
- continue;
- }
- table_id = metric->table_id;
- per_table_counter = table_metric_number[table_id]++;
- index_table[table_id][per_table_counter] = i;
- }
-
for(i = 0; i < instance->table_num; i++)
{
- if(table_metric_number[i] == 0)
- {
- continue;
- }
-
table_column = instance->table_metrics[i].column;
table_column_size = instance->table_metrics[i].column_size;
@@ -742,22 +758,20 @@ static int output_file_format_default_table(struct fieldstat_instance *instance,
{
print_buf_append_position += snprintf(print_buf_append_position ,size - (print_buf_append_position - print_buf), "\t%10s", table_column[k]->field_name);
}
- for(j = 0; j < table_metric_number[i]; j++)
+
+ for(j = 0; j < instance->per_table_metric_number[i]; j++)
{
- metric_id = index_table[i][j];
+ metric_id = instance->index_table[i][j];
metric = instance->metric[metric_id];
- if(line_name == NULL || strcmp(line_name, metric->field_name))
+ if( (j + 1) % table_column_size == 1)
{
print_buf_tag_append_position(metric, print_buf_tags, sizeof(print_buf_tags));
print_buf_append_position += snprintf(print_buf_append_position, size - (print_buf_append_position - print_buf), "\n%s %-20s\t", metric->field_name,print_buf_tags);
-
- line_name = metric->field_name;
}
value = get_metric_unit_val(metric, FS_CALC_CURRENT, 0);
print_buf_append_position += snprintf(print_buf_append_position, size - (print_buf_append_position - print_buf), "%10lld\t", value);
}
print_buf_append_position += snprintf(print_buf_append_position,size - (print_buf_append_position - print_buf), "\n");
- line_name = NULL;
if(print_buf_append_position - print_buf > 0)
{
@@ -768,7 +782,6 @@ static int output_file_format_default_table(struct fieldstat_instance *instance,
print_buf_append_position += snprintf(print_buf_append_position, size - (print_buf_append_position - print_buf), "\n%s\n", draw_line);
}
}
-
return print_buf_append_position - print_buf;
}
@@ -940,6 +953,7 @@ struct metric_id_list fieldstat_register_table_metrics(struct fieldstat_instance
int metric_id = 0;
int i = 0;
+ int per_table_metrics_num = 0;
struct metric_t * metric_choosen = NULL;
metric_t **table_column = instance->table_metrics[table_id].column;
int table_column_size = instance->table_metrics[table_id].column_size;
@@ -968,12 +982,15 @@ struct metric_id_list fieldstat_register_table_metrics(struct fieldstat_instance
//TODO not block
table_column = instance->table_metrics[table_id].column;
- for(; i < table_column_size; i ++)
+ for( i = 0; i < table_column_size; i ++)
{
metric_id = instance->metric_cnt++;
assert(instance->metric_cnt < instance->metric_size);
metric_choosen = instance->metric[metric_id] = metric_new(table_column[i]->field_type,field_name,tag_key,tag_value,n_tag);
+ per_table_metrics_num = instance->per_table_metric_number[table_id]++;
+ instance->index_table[table_id][per_table_metrics_num] = metric_id;
+
metric_choosen->table_id = table_id;
metric_choosen->belong_to_table = 1;
metric_choosen->table_column_id = i;
@@ -1005,6 +1022,7 @@ struct metric_id_list fieldstat_register_table_metrics(struct fieldstat_instance
if(table_column_size < TABLE_COLUMN_SIZE)
{
metric_id_list.id[metric_id_list.num ++] = metric_id;
+ printf("list_num:%d, metric_id:%d, name:%s\n",metric_id_list.num, metric_id, metric_choosen->field_name);
}
}