From 33338d4dad9db5dc7a1cce8953c59396accdc5bc Mon Sep 17 00:00:00 2001 From: thiagoftsm Date: Wed, 6 Mar 2024 20:45:56 +0000 Subject: [PATCH] Network Viewer Stats (#69) --- kernel-collector | 2 +- src/networkviewer.bpf.c | 76 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 73 insertions(+), 5 deletions(-) diff --git a/kernel-collector b/kernel-collector index 7265684..eb20e9b 160000 --- a/kernel-collector +++ b/kernel-collector @@ -1 +1 @@ -Subproject commit 726568437bb1707829ded99299bf389b1cff65a8 +Subproject commit eb20e9b47826d37e8f9620ce992790792512f5ac diff --git a/src/networkviewer.bpf.c b/src/networkviewer.bpf.c index a5e3448..05b35ab 100644 --- a/src/networkviewer.bpf.c +++ b/src/networkviewer.bpf.c @@ -161,8 +161,6 @@ static __always_inline void set_common_tcp_nv_data(netdata_nv_idx_t *idx, if (data->state > 12) return; - - bpf_map_update_elem(&tbl_nv_socket, idx, data, BPF_ANY); } static __always_inline void set_common_udp_nv_data(netdata_nv_idx_t *idx, @@ -188,8 +186,6 @@ static __always_inline void set_common_udp_nv_data(netdata_nv_idx_t *idx, if (data->state > 12) return; - - bpf_map_update_elem(&tbl_nv_socket, idx, data, BPF_ANY); } /*********************************************************************************** @@ -220,6 +216,10 @@ int BPF_KRETPROBE(netdata_nv_inet_csk_accept_kretprobe) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -245,6 +245,10 @@ int BPF_KPROBE(netdata_nv_tcp_v4_connect_kprobe) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -270,6 +274,10 @@ int BPF_KPROBE(netdata_nv_tcp_v6_connect_kprobe) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -295,6 +303,10 @@ int BPF_KPROBE(netdata_nv_tcp_retransmit_skb_kprobe) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -321,6 +333,10 @@ int BPF_KPROBE(netdata_nv_tcp_cleanup_rbuf_kprobe) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -350,6 +366,10 @@ int BPF_KPROBE(netdata_nv_tcp_set_state_kprobe) data.state = state; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -375,6 +395,10 @@ int BPF_KPROBE(netdata_nv_tcp_sendmsg_kprobe) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -420,6 +444,10 @@ int BPF_KPROBE(netdata_nv_udp_sendmsg_kprobe) netdata_nv_data_t data = { }; set_common_udp_nv_data(&idx, &data, sk, family, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -449,6 +477,10 @@ int BPF_KPROBE(netdata_nv_udp_recvmsg_kprobe) direction = NETDATA_SOCKET_DIRECTION_OUTBOUND | NETDATA_SOCKET_DIRECTION_INBOUND; set_common_udp_nv_data(&idx, &data, sk, family, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -479,6 +511,10 @@ int BPF_PROG(netdata_nv_inet_csk_accept_fexit, struct sock *sk) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -503,6 +539,10 @@ int BPF_PROG(netdata_nv_tcp_v4_connect_fentry, struct sock *sk, struct sockaddr netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -527,6 +567,10 @@ int BPF_PROG(netdata_nv_tcp_v6_connect_fentry, struct sock *sk, struct sockaddr netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -551,6 +595,10 @@ int BPF_PROG(netdata_nv_tcp_retransmit_skb_fentry, struct sock *sk) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -576,6 +624,10 @@ int BPF_PROG(netdata_nv_tcp_cleanup_rbuf_fentry, struct sock *sk, int copied) netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -602,6 +654,10 @@ int BPF_PROG(netdata_nv_tcp_set_state_fentry, struct sock *sk, int state) data.state = state; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -626,6 +682,10 @@ int BPF_PROG(netdata_nv_tcp_sendmsg_fentry, struct sock *sk, struct msghdr *msg, netdata_nv_data_t data = { }; set_common_tcp_nv_data(&idx, &data, sk, family, 0, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -666,6 +726,10 @@ int BPF_PROG(netdata_nv_udp_sendmsg_fentry, struct sock *sk, struct msghdr *msg, netdata_nv_data_t data = { }; set_common_udp_nv_data(&idx, &data, sk, family, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; } @@ -695,6 +759,10 @@ int BPF_PROG(netdata_nv_udp_recvmsg_fentry, struct sock *sk) direction = NETDATA_SOCKET_DIRECTION_OUTBOUND | NETDATA_SOCKET_DIRECTION_INBOUND; set_common_udp_nv_data(&idx, &data, sk, family, direction); + bpf_map_update_elem(&tbl_nv_socket, &idx, &data, BPF_ANY); + + libnetdata_update_global(&nv_ctrl, NETDATA_CONTROLLER_PID_TABLE_ADD, 1); + return 0; }