* to process this kind of value). It returns 1 on success. Otherwise, it
* returns 0. The buffer's length must not exceed <max> value.
*/
-static int promex_metric_to_str(struct buffer *out, struct field *f, size_t max)
+static int promex_ts_val_to_str(struct buffer *out, struct field *f, size_t max)
{
int ret = 0;
return 1;
}
-/* Dump the header lines for <metric>. It is its #HELP and #TYPE strings. It
- * returns 1 on success. Otherwise, if <out> length exceeds <max>, it returns 0.
+/* Dump the time series header lines for <metric>. It is its #HELP and #TYPE
+ * strings. It returns 1 on success. Otherwise, if <out> length exceeds <max>,
+ * it returns 0.
*/
-static int promex_dump_metric_header(struct appctx *appctx, const struct promex_metric *metric,
- const struct ist name, const struct ist d,
- struct ist *out, size_t max)
+static int promex_dump_ts_header(struct appctx *appctx, const struct promex_metric *metric,
+ const struct ist name, const struct ist d,
+ struct ist *out, size_t max)
{
struct promex_ctx *ctx = appctx->svcctx;
struct ist type;
return 0;
}
-/* Dump the line for <metric>. It starts by the metric name followed by its
- * labels (proxy name, server name...) between braces and finally its value. If
- * not already done, the header lines are dumped first. It returns 1 on
- * success. Otherwise if <out> length exceeds <max>, it returns 0.
+/* Dump the time series for <metric>. It starts by the metric name followed by
+ * its labels (proxy name, server name...) between braces and finally its
+ * value. If not already done, the header lines are dumped first. It returns 1
+ * on success. Otherwise if <out> length exceeds <max>, it returns 0.
*/
-static int promex_dump_metric(struct appctx *appctx, struct ist prefix,
- const struct ist n, const struct ist desc, const struct promex_metric *metric,
- struct field *val, struct promex_label *labels, struct ist *out, size_t max)
+static int promex_dump_ts(struct appctx *appctx, struct ist prefix,
+ const struct ist n, const struct ist desc, const struct promex_metric *metric,
+ struct field *val, struct promex_label *labels, struct ist *out, size_t max)
{
struct ist name = { .ptr = (char[PROMEX_MAX_NAME_LEN]){ 0 }, .len = 0 };
struct promex_ctx *ctx = appctx->svcctx;
istcat(&name, (isttest(n) ? n : metric->n), PROMEX_MAX_NAME_LEN);
if ((ctx->flags & PROMEX_FL_METRIC_HDR) &&
- !promex_dump_metric_header(appctx, metric, name, desc, out, max))
+ !promex_dump_ts_header(appctx, metric, name, desc, out, max))
goto full;
if (istcat(out, name, max) == -1)
goto full;
trash.data = out->len;
- if (!promex_metric_to_str(&trash, val, max))
+ if (!promex_ts_val_to_str(&trash, val, max))
goto full;
out->len = trash.data;
val = info[ctx->field_num];
}
- if (!promex_dump_metric(appctx, prefix, IST_NULL, IST_NULL,
- &promex_global_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix, IST_NULL, IST_NULL,
+ &promex_global_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
ctx->flags |= PROMEX_FL_METRIC_HDR;
labels[1].value = promex_front_st[ctx->obj_state];
val = mkf_u32(FO_STATUS, state == ctx->obj_state);
- if (!promex_dump_metric(appctx, prefix,
- promex_st_front_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_front_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
ctx->obj_state = 0;
val = stats[ctx->field_num];
}
- if (!promex_dump_metric(appctx, prefix,
- promex_st_front_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_front_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
next_px:
px = px->next;
val = stats[ctx->field_num + ctx->mod_field_num];
metric.type = ((val.type == FN_GAUGE) ? PROMEX_MT_GAUGE : PROMEX_MT_COUNTER);
- if (!promex_dump_metric(appctx, prefix,
- ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
- ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
- &metric, &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
+ ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
+ &metric, &val, labels, &out, max))
goto full;
next_px2:
val = mkf_u32(FO_STATUS, status == ctx->obj_state);
labels[2].name = ist("state");
labels[2].value = ist(li_status_st[ctx->obj_state]);
- if (!promex_dump_metric(appctx, prefix,
- promex_st_li_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_li_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
ctx->obj_state = 0;
val = stats[ctx->field_num];
}
- if (!promex_dump_metric(appctx, prefix,
- promex_st_li_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_li_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
li = NULL;
val = stats[ctx->field_num + ctx->mod_field_num];
metric.type = ((val.type == FN_GAUGE) ? PROMEX_MT_GAUGE : PROMEX_MT_COUNTER);
- if (!promex_dump_metric(appctx, prefix,
- ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
- ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
- &metric, &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
+ ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
+ &metric, &val, labels, &out, max))
goto full;
}
li = NULL;
val = mkf_u32(FN_GAUGE, srv_state_count[ctx->obj_state]);
labels[1].name = ist("state");
labels[1].value = promex_srv_st[ctx->obj_state];
- if (!promex_dump_metric(appctx, prefix,
- promex_st_back_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
ctx->obj_state = 0;
check_state = get_check_status_info(ctx->obj_state);
labels[1].name = ist("state");
labels[1].value = ist(check_state);
- if (!promex_dump_metric(appctx, prefix,
- promex_st_back_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
ctx->obj_state = 0;
labels[1].name = ist("state");
labels[1].value = promex_back_st[ctx->obj_state];
val = mkf_u32(FO_STATUS, bkd_state == ctx->obj_state);
- if (!promex_dump_metric(appctx, prefix,
- promex_st_back_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
ctx->obj_state = 0;
val = stats[ctx->field_num];
}
- if (!promex_dump_metric(appctx, prefix,
- promex_st_back_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
next_px:
px = px->next;
val = stats[ctx->field_num + ctx->mod_field_num];
metric.type = ((val.type == FN_GAUGE) ? PROMEX_MT_GAUGE : PROMEX_MT_COUNTER);
- if (!promex_dump_metric(appctx, prefix,
- ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
- ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
- &metric, &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
+ ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
+ &metric, &val, labels, &out, max))
goto full;
next_px2:
val = mkf_u32(FO_STATUS, state == ctx->obj_state);
labels[2].name = ist("state");
labels[2].value = promex_srv_st[ctx->obj_state];
- if (!promex_dump_metric(appctx, prefix,
- promex_st_srv_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_srv_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
ctx->obj_state = 0;
check_state = get_check_status_info(ctx->obj_state);
labels[2].name = ist("state");
labels[2].value = ist(check_state);
- if (!promex_dump_metric(appctx, prefix,
- promex_st_srv_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_srv_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
}
ctx->obj_state = 0;
val = stats[ctx->field_num];
}
- if (!promex_dump_metric(appctx, prefix,
- promex_st_srv_metrics_names[ctx->field_num],
- promex_st_metric_desc[ctx->field_num],
- &promex_st_metrics[ctx->field_num],
- &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ promex_st_srv_metrics_names[ctx->field_num],
+ promex_st_metric_desc[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
+ &val, labels, &out, max))
goto full;
next_sv:
sv = sv->next;
val = stats[ctx->field_num + ctx->mod_field_num];
metric.type = ((val.type == FN_GAUGE) ? PROMEX_MT_GAUGE : PROMEX_MT_COUNTER);
- if (!promex_dump_metric(appctx, prefix,
- ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
- ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
- &metric, &val, labels, &out, max))
+ if (!promex_dump_ts(appctx, prefix,
+ ist2(mod->stats[ctx->mod_field_num].name, strlen(mod->stats[ctx->mod_field_num].name)),
+ ist2(mod->stats[ctx->mod_field_num].desc, strlen(mod->stats[ctx->mod_field_num].desc)),
+ &metric, &val, labels, &out, max))
goto full;
next_sv2:
if (ret < 0)
goto error;
- if (!promex_dump_metric(appctx, prefix, IST_NULL, desc, &metric,
- &val, labels, out, max))
+ if (!promex_dump_ts(appctx, prefix, IST_NULL, desc, &metric,
+ &val, labels, out, max))
goto full;
next: