mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Merge branch 'maint-0.4.7'
This commit is contained in:
@@ -39,9 +39,11 @@
|
||||
#include <event2/dns.h>
|
||||
|
||||
/** Declarations of each fill function for metrics defined in base_metrics. */
|
||||
static void fill_cc_values(void);
|
||||
static void fill_cc_counters_values(void);
|
||||
static void fill_cc_gauges_values(void);
|
||||
static void fill_circuits_values(void);
|
||||
static void fill_connections_values(void);
|
||||
static void fill_conn_counter_values(void);
|
||||
static void fill_conn_gauge_values(void);
|
||||
static void fill_dns_error_values(void);
|
||||
static void fill_dns_query_values(void);
|
||||
static void fill_dos_values(void);
|
||||
@@ -110,11 +112,18 @@ static const relay_metrics_entry_t base_metrics[] =
|
||||
.fill_fn = fill_tcp_exhaustion_values,
|
||||
},
|
||||
{
|
||||
.key = RELAY_METRICS_NUM_CONNECTIONS,
|
||||
.type = METRICS_TYPE_GAUGE,
|
||||
.key = RELAY_METRICS_CONN_COUNTERS,
|
||||
.type = METRICS_TYPE_COUNTER,
|
||||
.name = METRICS_NAME(relay_connections_total),
|
||||
.help = "Total number of connections",
|
||||
.fill_fn = fill_connections_values,
|
||||
.help = "Total number of created/rejected connections",
|
||||
.fill_fn = fill_conn_counter_values,
|
||||
},
|
||||
{
|
||||
.key = RELAY_METRICS_CONN_GAUGES,
|
||||
.type = METRICS_TYPE_GAUGE,
|
||||
.name = METRICS_NAME(relay_connections),
|
||||
.help = "Total number of opened connections",
|
||||
.fill_fn = fill_conn_gauge_values,
|
||||
},
|
||||
{
|
||||
.key = RELAY_METRICS_NUM_STREAMS,
|
||||
@@ -124,11 +133,18 @@ static const relay_metrics_entry_t base_metrics[] =
|
||||
.fill_fn = fill_streams_values,
|
||||
},
|
||||
{
|
||||
.key = RELAY_METRICS_NUM_CC,
|
||||
.key = RELAY_METRICS_CC_COUNTERS,
|
||||
.type = METRICS_TYPE_COUNTER,
|
||||
.name = METRICS_NAME(relay_congestion_control_total),
|
||||
.help = "Congestion control related counters",
|
||||
.fill_fn = fill_cc_values,
|
||||
.fill_fn = fill_cc_counters_values,
|
||||
},
|
||||
{
|
||||
.key = RELAY_METRICS_CC_GAUGES,
|
||||
.type = METRICS_TYPE_GAUGE,
|
||||
.name = METRICS_NAME(relay_congestion_control),
|
||||
.help = "Congestion control related gauges",
|
||||
.fill_fn = fill_cc_gauges_values,
|
||||
},
|
||||
{
|
||||
.key = RELAY_METRICS_NUM_DOS,
|
||||
@@ -376,14 +392,15 @@ fill_dos_values(void)
|
||||
metrics_store_entry_update(sentry, hs_dos_get_intro2_rejected_count());
|
||||
}
|
||||
|
||||
/** Fill function for the RELAY_METRICS_NUM_CC metric. */
|
||||
/** Fill function for the RELAY_METRICS_CC_COUNTERS metric. */
|
||||
static void
|
||||
fill_cc_values(void)
|
||||
fill_cc_counters_values(void)
|
||||
{
|
||||
const relay_metrics_entry_t *rentry = &base_metrics[RELAY_METRICS_NUM_CC];
|
||||
const relay_metrics_entry_t *rentry =
|
||||
&base_metrics[RELAY_METRICS_CC_COUNTERS];
|
||||
|
||||
metrics_store_entry_t *sentry =
|
||||
metrics_store_add(the_store, rentry->type, rentry->name, rentry->help);
|
||||
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "starvation"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
@@ -401,6 +418,48 @@ fill_cc_values(void)
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "flow_control"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "xoff_num_sent"));
|
||||
metrics_store_entry_update(sentry,
|
||||
cc_stats_flow_num_xoff_sent);
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "flow_control"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "xon_num_sent"));
|
||||
metrics_store_entry_update(sentry,
|
||||
cc_stats_flow_num_xon_sent);
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "cc_limits"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "above_delta"));
|
||||
metrics_store_entry_update(sentry, cc_stats_vegas_above_delta);
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "cc_limits"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "above_ss_cwnd_max"));
|
||||
metrics_store_entry_update(sentry, cc_stats_vegas_above_ss_cwnd_max);
|
||||
}
|
||||
|
||||
/** Fill function for the RELAY_METRICS_CC_GAUGES metric. */
|
||||
static void
|
||||
fill_cc_gauges_values(void)
|
||||
{
|
||||
const relay_metrics_entry_t *rentry =
|
||||
&base_metrics[RELAY_METRICS_CC_GAUGES];
|
||||
|
||||
metrics_store_entry_t *sentry =
|
||||
metrics_store_add(the_store, rentry->type, rentry->name, rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "slow_start_exit"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
@@ -426,24 +485,6 @@ fill_cc_values(void)
|
||||
metrics_store_entry_update(sentry,
|
||||
tor_llround(cc_stats_circ_close_ss_cwnd_ma));
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "flow_control"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "xoff_num_sent"));
|
||||
metrics_store_entry_update(sentry,
|
||||
cc_stats_flow_num_xoff_sent);
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "flow_control"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "xon_num_sent"));
|
||||
metrics_store_entry_update(sentry,
|
||||
cc_stats_flow_num_xon_sent);
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
@@ -462,22 +503,6 @@ fill_cc_values(void)
|
||||
metrics_store_entry_update(sentry,
|
||||
tor_llround(cc_stats_flow_xoff_outbuf_ma));
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "cc_limits"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "above_delta"));
|
||||
metrics_store_entry_update(sentry, cc_stats_vegas_above_delta);
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("state", "cc_limits"));
|
||||
metrics_store_entry_add_label(sentry,
|
||||
metrics_format_label("action", "above_ss_cwnd_max"));
|
||||
metrics_store_entry_update(sentry, cc_stats_vegas_above_ss_cwnd_max);
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
metrics_store_entry_add_label(sentry,
|
||||
@@ -563,12 +588,12 @@ fill_single_connection_value(metrics_store_entry_t *sentry,
|
||||
metrics_store_entry_update(sentry, value);
|
||||
}
|
||||
|
||||
/** Fill function for the RELAY_METRICS_NUM_CONNECTIONS metric. */
|
||||
/** Fill function for the RELAY_METRICS_CONN_COUNTERS metric. */
|
||||
static void
|
||||
fill_connections_values(void)
|
||||
fill_conn_counter_values(void)
|
||||
{
|
||||
const relay_metrics_entry_t *rentry =
|
||||
&base_metrics[RELAY_METRICS_NUM_CONNECTIONS];
|
||||
&base_metrics[RELAY_METRICS_CONN_COUNTERS];
|
||||
|
||||
for (unsigned int i = CONN_TYPE_MIN_; i < CONN_TYPE_MAX_ ; i++) {
|
||||
/* Type is unused. Ugly but else we clobber the output. */
|
||||
@@ -596,6 +621,31 @@ fill_connections_values(void)
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
fill_single_connection_value(sentry, i, "received", "rejected", AF_INET,
|
||||
rep_hist_get_conn_rejected(i, AF_INET));
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
fill_single_connection_value(sentry, i, "received", "rejected", AF_INET6,
|
||||
rep_hist_get_conn_rejected(i, AF_INET6));
|
||||
|
||||
/* No counter for "initiated" + "rejected" connections exists. */
|
||||
}
|
||||
}
|
||||
|
||||
/** Fill function for the RELAY_METRICS_CONN_GAUGES metric. */
|
||||
static void
|
||||
fill_conn_gauge_values(void)
|
||||
{
|
||||
const relay_metrics_entry_t *rentry =
|
||||
&base_metrics[RELAY_METRICS_CONN_GAUGES];
|
||||
|
||||
for (unsigned int i = CONN_TYPE_MIN_; i < CONN_TYPE_MAX_ ; i++) {
|
||||
/* Type is unused. Ugly but else we clobber the output. */
|
||||
if (i == 10) {
|
||||
continue;
|
||||
}
|
||||
metrics_store_entry_t *sentry =
|
||||
metrics_store_add(the_store, rentry->type, rentry->name, rentry->help);
|
||||
fill_single_connection_value(sentry, i, "initiated", "opened", AF_INET,
|
||||
rep_hist_get_conn_opened(false, i, AF_INET));
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
@@ -611,15 +661,6 @@ fill_connections_values(void)
|
||||
rentry->help);
|
||||
fill_single_connection_value(sentry, i, "received", "opened", AF_INET6,
|
||||
rep_hist_get_conn_opened(true, i, AF_INET6));
|
||||
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
fill_single_connection_value(sentry, i, "received", "rejected", AF_INET,
|
||||
rep_hist_get_conn_rejected(i, AF_INET));
|
||||
sentry = metrics_store_add(the_store, rentry->type, rentry->name,
|
||||
rentry->help);
|
||||
fill_single_connection_value(sentry, i, "received", "rejected", AF_INET6,
|
||||
rep_hist_get_conn_rejected(i, AF_INET6));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,33 +16,37 @@
|
||||
* the base_metrics array. */
|
||||
typedef enum {
|
||||
/** Number of OOM invocation. */
|
||||
RELAY_METRICS_NUM_OOM_BYTES = 0,
|
||||
RELAY_METRICS_NUM_OOM_BYTES,
|
||||
/** Number of onionskines handled. */
|
||||
RELAY_METRICS_NUM_ONIONSKINS = 1,
|
||||
RELAY_METRICS_NUM_ONIONSKINS,
|
||||
/** Number of sockets. */
|
||||
RELAY_METRICS_NUM_SOCKETS = 2,
|
||||
RELAY_METRICS_NUM_SOCKETS,
|
||||
/** Number of global connection rate limit. */
|
||||
RELAY_METRICS_NUM_GLOBAL_RW_LIMIT = 3,
|
||||
RELAY_METRICS_NUM_GLOBAL_RW_LIMIT,
|
||||
/** Number of DNS queries. */
|
||||
RELAY_METRICS_NUM_DNS = 4,
|
||||
RELAY_METRICS_NUM_DNS,
|
||||
/** Number of DNS query errors. */
|
||||
RELAY_METRICS_NUM_DNS_ERRORS = 5,
|
||||
RELAY_METRICS_NUM_DNS_ERRORS,
|
||||
/** Number of TCP exhaustion reached. */
|
||||
RELAY_METRICS_NUM_TCP_EXHAUSTION = 6,
|
||||
/** Number of connections. */
|
||||
RELAY_METRICS_NUM_CONNECTIONS = 7,
|
||||
RELAY_METRICS_NUM_TCP_EXHAUSTION,
|
||||
/** Connections counters (always going up). */
|
||||
RELAY_METRICS_CONN_COUNTERS,
|
||||
/** Connections gauges. */
|
||||
RELAY_METRICS_CONN_GAUGES,
|
||||
/** Number of streams. */
|
||||
RELAY_METRICS_NUM_STREAMS = 8,
|
||||
RELAY_METRICS_NUM_STREAMS,
|
||||
/** Congestion control counters. */
|
||||
RELAY_METRICS_NUM_CC = 9,
|
||||
RELAY_METRICS_CC_COUNTERS,
|
||||
/** Congestion control gauges. */
|
||||
RELAY_METRICS_CC_GAUGES,
|
||||
/** Denial of Service defenses subsystem. */
|
||||
RELAY_METRICS_NUM_DOS = 10,
|
||||
RELAY_METRICS_NUM_DOS,
|
||||
/** Denial of Service defenses subsystem. */
|
||||
RELAY_METRICS_NUM_TRAFFIC = 11,
|
||||
RELAY_METRICS_NUM_TRAFFIC,
|
||||
/** Relay flags. */
|
||||
RELAY_METRICS_RELAY_FLAGS = 12,
|
||||
RELAY_METRICS_RELAY_FLAGS,
|
||||
/** Numer of circuits. */
|
||||
RELAY_METRICS_NUM_CIRCUITS = 13,
|
||||
RELAY_METRICS_NUM_CIRCUITS,
|
||||
} relay_metrics_key_t;
|
||||
|
||||
/** The metadata of a relay metric. */
|
||||
|
||||
Reference in New Issue
Block a user