mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
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 <dgoulet@torproject.org>
This commit is contained in:
parent
92b4e4d041
commit
9efb04bb3e
4
changes/ticket40581
Normal file
4
changes/ticket40581
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
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;
|
store = service->metrics.store;
|
||||||
|
|
||||||
for (size_t i = 0; i < base_metrics_size; ++i) {
|
for (size_t i = 0; i < base_metrics_size; ++i) {
|
||||||
metrics_store_entry_t *entry =
|
/* Add entries with port as label. We need one metric line per port. */
|
||||||
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));
|
|
||||||
if (base_metrics[i].port_as_label && service->config.ports) {
|
if (base_metrics[i].port_as_label && service->config.ports) {
|
||||||
SMARTLIST_FOREACH_BEGIN(service->config.ports,
|
SMARTLIST_FOREACH_BEGIN(service->config.ports,
|
||||||
const rend_service_port_config_t *, p) {
|
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,
|
metrics_store_entry_add_label(entry,
|
||||||
format_label("port", port_to_str(p->virtual_port)));
|
format_label("onion", service->onion_address));
|
||||||
|
metrics_store_entry_add_label(entry,
|
||||||
|
format_label("port", port_to_str(p->virtual_port)));
|
||||||
} SMARTLIST_FOREACH_END(p);
|
} 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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user