Skip to content

Commit 5ef2949

Browse files
committed
[#117]: Move display events for metric tracer to helpers
1 parent 8a3207e commit 5ef2949

File tree

3 files changed

+59
-41
lines changed

3 files changed

+59
-41
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
use aya::{
2+
maps::{
3+
MapData,
4+
perf::{PerfEventArrayBuffer},
5+
}
6+
};
7+
8+
use bytes::BytesMut;
9+
use std::{
10+
sync::{
11+
atomic::{AtomicBool, Ordering},
12+
},
13+
};
14+
15+
use tracing::{error, info};
16+
17+
use crate::structs::NetworkMetrics;
18+
19+
pub async fn display_metrics_map(
20+
mut perf_buffers: Vec<PerfEventArrayBuffer<MapData>>,
21+
running: AtomicBool,
22+
mut buffers: Vec<BytesMut>,
23+
) {
24+
while running.load(Ordering::SeqCst) {
25+
for buf in perf_buffers.iter_mut() {
26+
match buf.read_events(&mut buffers) {
27+
std::result::Result::Ok(events) => {
28+
for i in 0..events.read {
29+
let data = &buffers[i];
30+
if data.len() >= std::mem::size_of::<NetworkMetrics>() {
31+
let net_metrics: NetworkMetrics =
32+
unsafe { std::ptr::read_unaligned(data.as_ptr() as *const _) };
33+
let sk_drop_count = net_metrics.sk_drops;
34+
let sk_err = net_metrics.sk_err;
35+
let sk_err_soft = net_metrics.sk_err_soft;
36+
let sk_backlog_len = net_metrics.sk_backlog_len;
37+
let sk_write_memory_queued = net_metrics.sk_write_memory_queued;
38+
let sk_ack_backlog = net_metrics.sk_ack_backlog;
39+
let sk_receive_buffer_size = net_metrics.sk_receive_buffer_size;
40+
info!(
41+
"sk_drops: {}, sk_err: {}, sk_err_soft: {}, sk_backlog_len: {}, sk_write_memory_queued: {}, sk_ack_backlog: {}, sk_receive_buffer_size: {}",
42+
sk_drop_count, sk_err, sk_err_soft, sk_backlog_len, sk_write_memory_queued, sk_ack_backlog, sk_receive_buffer_size
43+
);
44+
}
45+
}
46+
}
47+
Err(e) => {
48+
error!("Error reading events: {:?}", e);
49+
}
50+
}
51+
}
52+
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
53+
}
54+
}

core/src/components/metrics/src/main.rs

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use std::{
1414
env, fs,
1515
path::Path,
1616
sync::{
17-
atomic::{AtomicBool, Ordering},
17+
atomic::{AtomicBool},
1818
},
1919
};
2020

@@ -25,8 +25,10 @@ use tracing_subscriber::{EnvFilter, fmt::format::FmtSpan};
2525

2626
const BPF_PATH: &str = "BPF_PATH"; //BPF env path
2727

28+
mod helpers;
29+
use crate::helpers::display_metrics_map;
30+
2831
mod structs;
29-
use crate::structs::NetworkMetrics;
3032

3133
#[tokio::main]
3234
async fn main() -> Result<(), anyhow::Error> {
@@ -90,44 +92,6 @@ async fn main() -> Result<(), anyhow::Error> {
9092
display_metrics_map(net_perf_buffer, running, buffers).await;
9193
});
9294

93-
9495
signal::ctrl_c().await?;
9596
Ok(())
9697
}
97-
98-
pub async fn display_metrics_map(
99-
mut perf_buffers: Vec<PerfEventArrayBuffer<MapData>>,
100-
running: AtomicBool,
101-
mut buffers: Vec<BytesMut>,
102-
) {
103-
while running.load(Ordering::SeqCst) {
104-
for buf in perf_buffers.iter_mut() {
105-
match buf.read_events(&mut buffers) {
106-
std::result::Result::Ok(events) => {
107-
for i in 0..events.read {
108-
let data = &buffers[i];
109-
if data.len() >= std::mem::size_of::<NetworkMetrics>() {
110-
let net_metrics: NetworkMetrics =
111-
unsafe { std::ptr::read_unaligned(data.as_ptr() as *const _) };
112-
let sk_drop_count = net_metrics.sk_drops;
113-
let sk_err = net_metrics.sk_err;
114-
let sk_err_soft = net_metrics.sk_err_soft;
115-
let sk_backlog_len = net_metrics.sk_backlog_len;
116-
let sk_write_memory_queued = net_metrics.sk_write_memory_queued;
117-
let sk_ack_backlog = net_metrics.sk_ack_backlog;
118-
let sk_receive_buffer_size = net_metrics.sk_receive_buffer_size;
119-
info!(
120-
"sk_drops: {}, sk_err: {}, sk_err_soft: {}, sk_backlog_len: {}, sk_write_memory_queued: {}, sk_ack_backlog: {}, sk_receive_buffer_size: {}",
121-
sk_drop_count, sk_err, sk_err_soft, sk_backlog_len, sk_write_memory_queued, sk_ack_backlog, sk_receive_buffer_size
122-
);
123-
}
124-
}
125-
}
126-
Err(e) => {
127-
error!("Error reading events: {:?}", e);
128-
}
129-
}
130-
}
131-
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
132-
}
133-
}

core/src/testing/metrics.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ spec:
1919
hostNetwork: true
2020
containers:
2121
- name: metrics
22-
image: metrics:0.0.1
22+
image: lorenzotettamanti/cortexflow-metrics:latest
2323
command: ["/bin/bash", "-c"]
2424
args:
2525
- |

0 commit comments

Comments
 (0)