Commit 9efb04bb authored by David Goulet's avatar David Goulet 🤘
Browse files

hs: Fix multiple port label on single metric

Prometheus needs unique labels and so this bug was causing an onion
service with multiple ports to have multiple "port=" label for the
metrics requiring a port label.

Fixes #40581

Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
parent 92b4e4d0
Pipeline #31213 passed with stage
in 26 minutes and 1 second
o Minor bugfixes (metrics port, onion service):
- Fix the metrics with a port label to be unique. Before this, all ports of
an onion service would be on the same line which violates the Prometheus
rules of unique labels. Fixes bug 40581; bugfix on 0.4.5.1-alpha.
......@@ -59,19 +59,26 @@ init_store(hs_service_t *service)
store = service->metrics.store;
for (size_t i = 0; i < base_metrics_size; ++i) {
metrics_store_entry_t *entry =
metrics_store_add(store, base_metrics[i].type, base_metrics[i].name,
base_metrics[i].help);
/* Add labels to the entry. */
metrics_store_entry_add_label(entry,
format_label("onion", service->onion_address));
/* Add entries with port as label. We need one metric line per port. */
if (base_metrics[i].port_as_label && service->config.ports) {
SMARTLIST_FOREACH_BEGIN(service->config.ports,
const rend_service_port_config_t *, p) {
metrics_store_entry_t *entry =
metrics_store_add(store, base_metrics[i].type, base_metrics[i].name,
base_metrics[i].help);
/* Add labels to the entry. */
metrics_store_entry_add_label(entry,
format_label("onion", service->onion_address));
metrics_store_entry_add_label(entry,
format_label("port", port_to_str(p->virtual_port)));
format_label("port", port_to_str(p->virtual_port)));
} SMARTLIST_FOREACH_END(p);
} else {
metrics_store_entry_t *entry =
metrics_store_add(store, base_metrics[i].type, base_metrics[i].name,
base_metrics[i].help);
metrics_store_entry_add_label(entry,
format_label("onion", service->onion_address));
}
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment