[ST_F_AGG_CHECK_STATUS] = { .n = IST("agg_check_status"), .type = PROMEX_MT_GAUGE, .flags = ( PROMEX_FL_BACK_METRIC ) },
};
+/* Specialized frontend metric names, to override default ones */
+const struct ist promex_st_front_metrics_names[ST_F_TOTAL_FIELDS] = {
+};
+
+/* Specialized bakcend metric names, to override default ones */
+const struct ist promex_st_back_metrics_names[ST_F_TOTAL_FIELDS] = {
+};
+
+/* Specialized listener metric names, to override default ones */
+const struct ist promex_st_li_metrics_names[ST_F_TOTAL_FIELDS] = {
+};
+
+/* Specialized server metric names, to override default ones */
+const struct ist promex_st_srv_metrics_names[ST_F_TOTAL_FIELDS] = {
+};
+
/* Description of overridden stats fields */
const struct ist promex_st_metric_desc[ST_F_TOTAL_FIELDS] = {
[ST_F_STATUS] = IST("Current status of the service, per state label value."),
* success. Otherwise if <out> length exceeds <max>, it returns 0.
*/
static int promex_dump_metric(struct appctx *appctx, struct htx *htx, struct ist prefix,
- const struct promex_metric *metric, struct field *val,
- struct promex_label *labels, struct ist *out, size_t max)
+ const struct ist n, 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;
/* Fill the metric name */
istcat(&name, prefix, PROMEX_MAX_NAME_LEN);
- istcat(&name, metric->n, PROMEX_MAX_NAME_LEN);
+ istcat(&name, (isttest(n) ? n : metric->n), PROMEX_MAX_NAME_LEN);
if ((ctx->flags & PROMEX_FL_METRIC_HDR) &&
val = info[ctx->field_num];
}
- if (!promex_dump_metric(appctx, htx, prefix, &promex_global_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix, IST_NULL, &promex_global_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
labels[1].name = ist("state");
labels[1].value = promex_front_st[ctx->obj_state];
val = mkf_u32(FO_STATUS, state == ctx->obj_state);
- if (!promex_dump_metric(appctx, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_front_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
}
val = stats[ctx->field_num];
}
- if (!promex_dump_metric(appctx, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_front_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
next_px:
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, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_li_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
}
}
if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_li_metrics_names[ctx->field_num],
&promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
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, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
}
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, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
}
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, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
}
val = stats[ctx->field_num];
}
- if (!promex_dump_metric(appctx, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_back_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
next_px:
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, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_srv_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
}
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, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_srv_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
}
val = stats[ctx->field_num];
}
- if (!promex_dump_metric(appctx, htx, prefix, &promex_st_metrics[ctx->field_num],
+ if (!promex_dump_metric(appctx, htx, prefix,
+ promex_st_srv_metrics_names[ctx->field_num],
+ &promex_st_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;
next_sv:
goto next_px;
}
- if (!promex_dump_metric(appctx, htx, prefix,
+ if (!promex_dump_metric(appctx, htx, prefix, IST_NULL,
&promex_sticktable_metrics[ctx->field_num],
&val, labels, &out, max))
goto full;