etcpmon: add queue metrics, error counters, timer flags and peer_node_id
- Added queue bytes/packets for all 6 ETCP queues - Added error counters: reinit_count, reset_count, pkt_format_errors - Added timer active flags for connection and link timers - Added peer_node_id to identify connection in metrics
This commit is contained in:
1 parent
8a59b51b49
commit
fbd1128bf1
2 files changed
+57
No files matched your search
@@ -12,6 +12,7 @@
|
||||
#include "../lib/u_async.h"
|
||||
#include "../lib/debug_config.h"
|
||||
#include "../lib/mem.h"
|
||||
#include "../lib/ll_queue.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -717,6 +718,7 @@ static void send_metrics(struct control_server* server, struct control_client* c
|
||||
struct etcpmon_rsp_metrics* rsp = (struct etcpmon_rsp_metrics*)(buffer + sizeof(*hdr));
|
||||
|
||||
/* Fill ETCP metrics */
|
||||
rsp->etcp.peer_node_id = conn->peer_node_id;
|
||||
rsp->etcp.rtt_last = conn->rtt_last;
|
||||
rsp->etcp.rtt_avg_10 = conn->rtt_avg_10;
|
||||
rsp->etcp.rtt_avg_100 = conn->rtt_avg_100;
|
||||
@@ -727,6 +729,29 @@ static void send_metrics(struct control_server* server, struct control_client* c
|
||||
rsp->etcp.unacked_bytes = conn->unacked_bytes;
|
||||
rsp->etcp.optimal_inflight = conn->optimal_inflight;
|
||||
rsp->etcp.links_count = links_count;
|
||||
|
||||
/* Queue metrics */
|
||||
rsp->etcp.input_queue_bytes = (uint32_t)queue_total_bytes(conn->input_queue);
|
||||
rsp->etcp.input_queue_packets = (uint32_t)queue_entry_count(conn->input_queue);
|
||||
rsp->etcp.input_send_q_bytes = (uint32_t)queue_total_bytes(conn->input_send_q);
|
||||
rsp->etcp.input_send_q_packets = (uint32_t)queue_entry_count(conn->input_send_q);
|
||||
rsp->etcp.input_wait_ack_bytes = (uint32_t)queue_total_bytes(conn->input_wait_ack);
|
||||
rsp->etcp.input_wait_ack_packets = (uint32_t)queue_entry_count(conn->input_wait_ack);
|
||||
rsp->etcp.ack_q_bytes = (uint32_t)queue_total_bytes(conn->ack_q);
|
||||
rsp->etcp.ack_q_packets = (uint32_t)queue_entry_count(conn->ack_q);
|
||||
rsp->etcp.recv_q_bytes = (uint32_t)queue_total_bytes(conn->recv_q);
|
||||
rsp->etcp.recv_q_packets = (uint32_t)queue_entry_count(conn->recv_q);
|
||||
rsp->etcp.output_queue_bytes = (uint32_t)queue_total_bytes(conn->output_queue);
|
||||
rsp->etcp.output_queue_packets = (uint32_t)queue_entry_count(conn->output_queue);
|
||||
|
||||
/* Error counters */
|
||||
rsp->etcp.reinit_count = conn->reinit_count;
|
||||
rsp->etcp.reset_count = conn->reset_count;
|
||||
rsp->etcp.pkt_format_errors = (conn->links && conn->links->conn) ? (uint32_t)conn->links->conn->pkt_format_errors : 0;
|
||||
|
||||
/* Timer flags */
|
||||
rsp->etcp.retrans_timer_active = (conn->retrans_timer != NULL) ? 1 : 0;
|
||||
rsp->etcp.ack_resp_timer_active = (conn->ack_resp_timer != NULL) ? 1 : 0;
|
||||
|
||||
/* Fill TUN metrics */
|
||||
if (instance->tun) {
|
||||
@@ -756,6 +781,9 @@ static void send_metrics(struct control_server* server, struct control_client* c
|
||||
link_info[i].nat_changes_count = link->nat_changes_count;
|
||||
link_info[i].rtt_last = link->rtt_last;
|
||||
link_info[i].tt_last = link->tt_last;
|
||||
link_info[i].init_timer_active = (link->init_timer != NULL) ? 1 : 0;
|
||||
link_info[i].keepalive_timer_active = (link->keepalive_timer != NULL) ? 1 : 0;
|
||||
link_info[i].shaper_timer_active = (link->shaper_timer != NULL) ? 1 : 0;
|
||||
link = link->next;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user