static cdtime_t staleness_delta = PROMETHEUS_DEFAULT_STALENESS_DELTA;
static int format_label_set(strbuf_t *buf, label_set_t const *labels,
- char const *prefix, bool first_label) {
+ char const *prefix, bool translate,
+ bool first_label) {
int status = 0;
for (size_t i = 0; i < labels->num; i++) {
if (!first_label) {
status = status || strbuf_print(buf, ",");
}
+ char const *name = labels->ptr[i].name;
+ if (translate) {
+ if (strcmp("service.name", name) == 0) {
+ name = "job";
+ } else if (strcmp("service.instance.id", name) == 0) {
+ name = "instance";
+ }
+ }
+
status =
status || strbuf_print_restricted(buf, prefix, VALID_LABEL_CHARS, '_');
- status = status || strbuf_print_restricted(buf, labels->ptr[i].name,
- VALID_LABEL_CHARS, '_');
+ status =
+ status || strbuf_print_restricted(buf, name, VALID_LABEL_CHARS, '_');
status = status || strbuf_print(buf, "=\"");
status = status || strbuf_print_escaped(buf, labels->ptr[i].value,
"\\\"\n\r\t", '\\');
bool first_label = true;
if (resource->num != 0) {
status = status || format_label_set(buf, resource, RESOURCE_LABEL_PREFIX,
- first_label);
+ true, first_label);
first_label = false;
}
- status = status || format_label_set(buf, &m->label, "", first_label);
+ status = status || format_label_set(buf, &m->label, "", false, first_label);
return status || strbuf_print(buf, "}");
}
strbuf_print(buf, "# TYPE target info\n");
strbuf_print(buf, "# HELP target Target metadata\n");
- metric_t m = {
- .family =
- &(metric_family_t){
- .name = "target_info",
- },
- .label = resource,
- };
- format_metric(buf, &m);
-
- strbuf_print(buf, " 1\n");
+ strbuf_print(buf, "target_info{");
+ format_label_set(buf, &resource, "", true, true);
+ strbuf_print(buf, "} 1\n");
}
static void format_text(strbuf_t *buf) {
"# HELP target Target metadata\n"
"target_info{foo=\"bar\"} 1\n",
},
+ {
+ .name = "service.name gets translated to job",
+ .resource =
+ {
+ .ptr = &(label_pair_t){"service.name", "unittest"},
+ .num = 1,
+ },
+ .want = "# TYPE target info\n"
+ "# HELP target Target metadata\n"
+ "target_info{job=\"unittest\"} 1\n",
+ },
+ {
+ .name = "service.instance.id gets translated to instance",
+ .resource =
+ {
+ .ptr = &(label_pair_t){"service.instance.id", "42"},
+ .num = 1,
+ },
+ .want = "# TYPE target info\n"
+ "# HELP target Target metadata\n"
+ "target_info{instance=\"42\"} 1\n",
+ },
};
for (size_t i = 0; i < STATIC_ARRAY_SIZE(cases); i++) {