Skip to content

Commit 3edf47b

Browse files
committed
Add telemetry to logrotate_fs
This commit adds telemetry around filesystem and model operations. I am especially interested to know when rotations happen, how often and what operations the reader is calling against the filesystem. Signed-off-by: Brian L. Troutwine <[email protected]>
1 parent 4c851a7 commit 3edf47b

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

lading/src/generator/file_gen/logrotate_fs.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use fuser::{
1010
ReplyDirectory, ReplyEntry, Request,
1111
};
1212
use lading_payload::block;
13+
use metrics::counter;
1314
use nix::libc::{self, ENOENT};
1415
use rand::{rngs::SmallRng, SeedableRng};
1516
use serde::{Deserialize, Serialize};
@@ -250,6 +251,8 @@ impl Filesystem for LogrotateFS {
250251
let mut state = self.state.lock().expect("lock poisoned");
251252
state.advance_time(tick);
252253

254+
counter!("fs_lookup").increment(1);
255+
253256
let name_str = name.to_str().unwrap_or("");
254257
if let Some(ino) = state.lookup(tick, parent as usize, name_str) {
255258
if let Some(attr) = getattr_helper(&mut state, self.start_time_system, tick, ino) {
@@ -270,6 +273,8 @@ impl Filesystem for LogrotateFS {
270273
let mut state = self.state.lock().expect("lock poisoned");
271274
state.advance_time(tick);
272275

276+
counter!("fs_getattr").increment(1);
277+
273278
if let Some(attr) = getattr_helper(&mut state, self.start_time_system, tick, ino as usize) {
274279
reply.attr(&TTL, &attr);
275280
} else {
@@ -293,6 +298,8 @@ impl Filesystem for LogrotateFS {
293298
let mut state = self.state.lock().expect("lock poisoned");
294299
state.advance_time(tick);
295300

301+
counter!("fs_read").increment(1);
302+
296303
// Get the FileHandle from fh
297304
let file_handle = {
298305
let open_files = self.open_files.lock().expect("lock poisoned");
@@ -329,6 +336,8 @@ impl Filesystem for LogrotateFS {
329336
let mut state = self.state.lock().expect("lock poisoned");
330337
state.advance_time(tick);
331338

339+
counter!("fs_release").increment(1);
340+
332341
// Remove the FileHandle from the mapping
333342
let file_handle = {
334343
let mut open_files = self.open_files.lock().expect("lock poisoned");
@@ -350,6 +359,8 @@ impl Filesystem for LogrotateFS {
350359
let mut state = self.state.lock().expect("lock poisoned");
351360
state.advance_time(tick);
352361

362+
counter!("fs_readdir").increment(1);
363+
353364
let root_inode = state.root_inode();
354365
let mut entry_offset = 0;
355366

@@ -410,6 +421,8 @@ impl Filesystem for LogrotateFS {
410421
let mut state = self.state.lock().expect("lock poisoned");
411422
state.advance_time(tick);
412423

424+
counter!("fs_open").increment(1);
425+
413426
if let Some(file_handle) = state.open_file(tick, ino as usize) {
414427
let fh = file_handle.id();
415428
{

lading/src/generator/file_gen/logrotate_fs/model.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,7 @@ impl State {
642642
let (remove_current, next_peer) = match node {
643643
Node::File { file } => {
644644
file.incr_ordinal();
645+
counter!("log_file_rotated").increment(1);
645646

646647
let remove_current = file.ordinal() > self.max_rotations;
647648
(remove_current, file.peer)
@@ -712,6 +713,7 @@ impl State {
712713
for inode in to_remove {
713714
if let Some(Node::File { file }) = self.nodes.remove(&inode) {
714715
let lost_bytes = file.bytes_written.saturating_sub(file.max_offset_observed);
716+
counter!("log_file_deleted").increment(1);
715717
counter!("lost_bytes").increment(lost_bytes);
716718
}
717719
}

0 commit comments

Comments
 (0)