summaryrefslogtreecommitdiff
path: root/src/fieldstat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/fieldstat.cpp')
-rw-r--r--src/fieldstat.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/fieldstat.cpp b/src/fieldstat.cpp
index 6014600..0caa896 100644
--- a/src/fieldstat.cpp
+++ b/src/fieldstat.cpp
@@ -1074,3 +1074,68 @@ void disable_line_protocol_output(struct line_protocol_output *line_protocol_out
}
return;
}
+
+
+int fieldstat_set_metric_ratio_para(struct fieldstat_instance *instance, int metric_id, int numerator_metric_id, int denominator_metric_id, int output_scaling)
+{
+ struct metric *metric = NULL;
+ struct metric *metric_n = NULL;
+ struct metric *metric_d = NULL;
+ if(instance->running == 1)
+ {
+ return -1;
+ }
+ if(metric_id >= instance->metric_cnt || numerator_metric_id >= instance->metric_cnt ||denominator_metric_id >= instance->metric_cnt)
+ {
+ return -1;
+ }
+
+ metric = get_metric(instance, metric_id);
+ metric_n = get_metric(instance, numerator_metric_id);
+ metric_d = get_metric(instance, denominator_metric_id);
+
+ if(metric->field_type != FIELD_TYPE_GAUGE && metric->field_type != FIELD_TYPE_COUNTER)
+ {
+ return -1;
+ }
+
+ if(metric_n->field_type != FIELD_TYPE_GAUGE && metric_n->field_type != FIELD_TYPE_COUNTER)
+ {
+ return -1;
+ }
+
+ if(metric_d->field_type != FIELD_TYPE_GAUGE && metric_d->field_type != FIELD_TYPE_COUNTER)
+ {
+ return -1;
+ }
+ if(output_scaling == 0)
+ {
+ return -1;
+ }
+
+ metric->is_ratio = 1;
+ metric->numerator_id = numerator_metric_id;
+ metric->denominator_id = denominator_metric_id;
+ metric->output_scaling = output_scaling;
+
+ return 0;
+}
+
+
+int fieldstat_set_metric_invisible_para(struct fieldstat_instance *instance, int metric_id)
+{
+ struct metric *metric = NULL;
+ if(instance->running == 1)
+ {
+ return -1;
+ }
+ if(metric_id >= instance->metric_cnt)
+ {
+ return -1;
+ }
+
+ metric = get_metric(instance, metric_id);
+ metric->is_invisible = 1;
+
+ return 0;
+} \ No newline at end of file