Vdash - Node dashboard for Safe Network

No worries at all! Will alter the line in the upcoming PRs accordingly and will notify you here :slight_smile:

5 Likes

This is so cool to see.

6 Likes

vdash display of my first Fleming Testnet node before I shut it down because I’m off-grid and can’t run my laptop overnight. You can see the PUTS (yellow), ERRORS (red) and that I have 10.4MB of immutable chunks stored!

See the OP if you want to give vdash a try: Vdash - Node dashboard for Safe Network

There may be some issues with vdash and Fleming as I haven’t tested and fixed anything recently. Let me know if you spot any problems.

9 Likes

And here’s vdash showing my cloud node running Fleming v1 on a mobile (using JuiceSSH Client Android app):

20 Likes

There needs to be a “cool as ice” emoji

10 Likes

That’s awesome! Nice one! :grinning:

3 Likes

I’ve made a minor update (v0.6.0) which now shows Node age (Unkown, Infant (joining), Adult or Elder) and makes some attempt at showing GETS.

None of this is perfect for now as MaidSafe are still busy before improving this area of the logs.

To update:

cargo install vdash

Screenshot:

14 Likes

I finally got around to installing @happybeing’s vdash, and it seems to be working.

I installed Rust on Linux Mint 20.1 Cinnamon earlier from the repositories, i.e. the not recommended way. What are some of the “significant downsides” to this?

sascha@Knut:~$ rustc --version
rustc 1.47.0

sascha@Knut:~$ vdash --version
vdash 0.6.0
4 Likes

Shouldn’t be a problem. You lose the ability to choose which version of Rust/Cargo you use but that’s unlikely to be an issue. Good to hear you got it going!

3 Likes

I broke it… :frowning:

willie@gagarin:~/.safe/node/baby-fleming-nodes$ RUST_BACKTRACE=full vdash ~/.safe/node/baby-fleming-nodes/sn-node-*/sn_node.log
Loading 11 files...
file: /home/willie/.safe/node/baby-fleming-nodes/sn-node-10/sn_node.log
thread 'main' panicked at 'index out of bounds: the len is 210 but the index is 18446744073709551615', /home/willie/.cargo/registry/src/github.com-1ecc6299db9ec823/vdash-0.6.2/src/bin/../custom/app.rs:692:21
stack backtrace:
   0:     0x555d23ac10f0 - std::backtrace_rs::backtrace::libunwind::trace::h25e12e0d899beba0
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
   1:     0x555d23ac10f0 - std::backtrace_rs::backtrace::trace_unsynchronized::h70e61195d6ae3df6
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x555d23ac10f0 - std::sys_common::backtrace::_print_fmt::hba93ab80d779695a
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x555d23ac10f0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf092b5883b4b2e50
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x555d23adffbc - core::fmt::write::hf68bc350a8f2f0dc
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/core/src/fmt/mod.rs:1078:17
   5:     0x555d23abd922 - std::io::Write::write_fmt::hf66811b1bc767436
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/io/mod.rs:1517:15
   6:     0x555d23ac3375 - std::sys_common::backtrace::_print::hd425a11bfe1f20f8
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x555d23ac3375 - std::sys_common::backtrace::print::h6d678795c1e61e13
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x555d23ac3375 - std::panicking::default_hook::{{closure}}::h78a02a4a0dee5e7e
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panicking.rs:208:50
   9:     0x555d23ac2eca - std::panicking::default_hook::h56eb7eda02f355a7
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panicking.rs:225:9
  10:     0x555d23ac3b11 - std::panicking::rust_panic_with_hook::hb27ea14285131c61
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panicking.rs:591:17
  11:     0x555d23ac3657 - std::panicking::begin_panic_handler::{{closure}}::hc552fcee62aad17f
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panicking.rs:497:13
  12:     0x555d23ac15ac - std::sys_common::backtrace::__rust_end_short_backtrace::hb9f0aa9a78e885a0
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/sys_common/backtrace.rs:141:18
  13:     0x555d23ac35b9 - rust_begin_unwind
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panicking.rs:493:5
  14:     0x555d23ade971 - core::panicking::panic_fmt::h12ac4570ea43d06f
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/core/src/panicking.rs:92:14
  15:     0x555d23ade932 - core::panicking::panic_bounds_check::hbb9512a833bf2248
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/core/src/panicking.rs:69:5
  16:     0x555d2392d191 - vdash::custom::app::TimelineSet::increment_value::hcf3f3e5ad936676f
  17:     0x555d2392eecd - vdash::custom::app::NodeMetrics::gather_metrics::hab0d04553b0fe849
  18:     0x555d2392ce19 - vdash::custom::app::LogMonitor::append_to_content::h2b2960f354d426a7
  19:     0x555d2392cb1c - vdash::custom::app::LogMonitor::load_logfile::h2fe590dd54a63161
  20:     0x555d2394819b - vdash::custom::app::App::new::{{closure}}::hc2f39937eb0a3588
  21:     0x555d239454f8 - <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll::h16be3ed826f3fc61
  22:     0x555d2392638e - tokio::macros::scoped_tls::ScopedKey<T>::set::h41b3ec5ae786d908
  23:     0x555d23944fe4 - tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on::hc17ab0185ab07b95
  24:     0x555d23951743 - tokio::runtime::context::enter::h6cf04a78c8ea4420
  25:     0x555d239450ce - tokio::runtime::handle::Handle::enter::h70e3ba3024ac8515
  26:     0x555d239279e0 - vdash::main::hc7e097ab29972569
  27:     0x555d2393f873 - std::sys_common::backtrace::__rust_begin_short_backtrace::ha65e4220e726d3ee
  28:     0x555d2394e339 - std::rt::lang_start::{{closure}}::h92929ddcde08dc50
  29:     0x555d23ac3f37 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h78040f802d89ccdc
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/core/src/ops/function.rs:259:13
  30:     0x555d23ac3f37 - std::panicking::try::do_call::h6853cad536dd09a1
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panicking.rs:379:40
  31:     0x555d23ac3f37 - std::panicking::try::h827495f03a9fbb9a
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panicking.rs:343:19
  32:     0x555d23ac3f37 - std::panic::catch_unwind::h4bdf17571090eb17
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/panic.rs:396:14
  33:     0x555d23ac3f37 - std::rt::lang_start_internal::h2f319c33bb013f29
                               at /rustc/cb75ad5db02783e8b0222fee363c5f63f7e2cf5b/library/std/src/rt.rs:51:25
  34:     0x555d23927af2 - main
  35:     0x7f14e73130b3 - __libc_start_main
  36:     0x555d2390d0ce - _start
  37:                0x0 - <unknown>
willie@gagarin:~/.safe/node/baby-fleming-nodes$ safe -V
sn_cli 0.26.0
willie@gagarin:~/.safe/node/baby-fleming-nodes$ safe node bin-version
sn_node 0.42.6
1 Like

Cool, something to look at! Is it repeatable if you repeat the vdash command with the same logfiles in place?

If so please keep a copy of the logfiles and if you have time, please upload them to a github issue so I can try to replicate.

Also please report vdash --version

1 Like

Sorry Mark, I meant to reply to this earlier. This was repeatable last night, hence the various runs until I reported with RUST_BACKTRACE=full. I left the machine on all night and it was locked in the morning out of memory. When I rebooted , vdash worked just fine as expected. The version is vdash 0.6.2

1 Like

No worries. Mmm, I doubt there much I can do unless it repeats on a particular logfile or group of logfiles. Thanks for the report though. It might be worth opening an issue so we can’t track this if it happens again.

1 Like

Yes , its a pretty crap follow-up report, isn’t it? Sorry…

No, very helpful. Thanks Willie.

@happybeing , I thought I’d let you know I tried to compile this on ARM but I get an error in compiling linemux:

ubuntu@instance-20210709-0856:~$ cargo install vdash
    Updating crates.io index
  Installing vdash v0.6.3
   Compiling libc v0.2.98
   Compiling cfg-if v1.0.0
   Compiling proc-macro2 v1.0.28
   Compiling version_check v0.9.3
   Compiling unicode-xid v0.2.2
   Compiling syn v1.0.74
   Compiling autocfg v1.0.1
   Compiling memchr v2.4.0
   Compiling proc-macro-hack v0.5.19
   Compiling log v0.4.14
   Compiling bitflags v1.2.1
   Compiling futures-core v0.3.16
   Compiling lazy_static v1.4.0
   Compiling proc-macro-nested v0.1.7
   Compiling futures-channel v0.3.16
   Compiling futures-task v0.3.16
   Compiling ppv-lite86 v0.2.10
   Compiling slab v0.4.3
   Compiling getrandom v0.1.16
   Compiling crossbeam-utils v0.8.5
   Compiling futures-sink v0.3.16
   Compiling unicode-width v0.1.8
   Compiling smallvec v1.6.1
   Compiling scopeguard v1.1.0
   Compiling pin-project-lite v0.2.7
   Compiling cfg-if v0.1.10
   Compiling futures-io v0.3.16
   Compiling pin-utils v0.1.0
   Compiling same-file v1.0.6
   Compiling const_fn v0.4.8
   Compiling unicode-segmentation v1.8.0
   Compiling serde v1.0.126
   Compiling numtoa v0.1.0
   Compiling regex-syntax v0.6.25
   Compiling vec_map v0.8.2
   Compiling fnv v1.0.7
   Compiling ansi_term v0.11.0
   Compiling pin-project-lite v0.1.12
   Compiling quick-error v1.2.3
   Compiling strsim v0.8.0
   Compiling bytes v0.5.6
   Compiling cassowary v0.3.0
   Compiling utf8-width v0.1.5
   Compiling termcolor v1.1.2
   Compiling remove_dir_all v0.5.3
   Compiling standback v0.2.17
   Compiling proc-macro-error-attr v1.0.4
   Compiling proc-macro-error v1.0.4
   Compiling time v0.2.27
   Compiling futures-macro v0.3.16
   Compiling futures-util v0.3.16
   Compiling num-traits v0.2.14
   Compiling num-integer v0.1.44
   Compiling lock_api v0.3.4
   Compiling textwrap v0.11.0
   Compiling walkdir v2.3.2
   Compiling heck v0.3.3
   Compiling humantime v1.3.0
   Compiling byte-unit v4.0.12
   Compiling quote v1.0.9
   Compiling getrandom v0.2.3
   Compiling inotify-sys v0.1.5
   Compiling signal-hook-registry v1.4.0
   Compiling atty v0.2.14
   Compiling parking_lot_core v0.7.2
   Compiling filetime v0.2.14
   Compiling time v0.1.44
   Compiling termion v1.5.6
   Compiling fs2 v0.4.3
   Compiling mio v0.7.13
   Compiling aho-corasick v0.7.18
   Compiling crossbeam-channel v0.5.1
   Compiling inotify v0.9.3
   Compiling rand_core v0.6.3
   Compiling rand_core v0.5.1
   Compiling clap v2.33.3
   Compiling parking_lot v0.10.2
   Compiling bincode v1.3.3
   Compiling signal-hook v0.1.17
   Compiling regex v1.5.4
   Compiling notify v5.0.0-pre.11
   Compiling rand_chacha v0.3.1
   Compiling rand_chacha v0.2.2
   Compiling crossterm v0.17.7
   Compiling env_logger v0.7.1
   Compiling chrono v0.4.19
   Compiling tokio-macros v0.2.6
   Compiling time-macros-impl v0.1.2
   Compiling tokio-macros v0.3.2
   Compiling rand v0.8.4
   Compiling rand v0.7.3
   Compiling tui v0.11.0
   Compiling structopt-derive v0.4.15
   Compiling tokio v0.2.25
   Compiling time-macros v0.1.1
   Compiling tempfile v3.2.0
   Compiling structopt v0.3.22
   Compiling futures-executor v0.3.16
Compiling linemux v0.1.3
error[E0599]: no function or associated item named `new_immediate` found for trait object `dyn Watcher` in the current scope
  --> /home/ubuntu/.cargo/registry/src/github.com-1ecc6299db9ec823/linemux-0.1.3/src/events.rs:61:64
   |
61 |         let inner: notify::RecommendedWatcher = NotifyWatcher::new_immediate(move |res| {
   |                                                                ^^^^^^^^^^^^^ function or associated item not found in `dyn Watcher`

error[E0308]: mismatched types
  --> /home/ubuntu/.cargo/registry/src/github.com-1ecc6299db9ec823/linemux-0.1.3/src/events.rs:90:20
   |
88 |     fn watch(watcher: &mut notify::RecommendedWatcher, path: impl AsRef<Path>) -> io::Result<()> {
   |                                                              ---------------- this type parameter
89 |         watcher
90 |             .watch(path, notify::RecursiveMode::NonRecursive)
   |                    ^^^^ expected `&Path`, found type parameter `impl AsRef<Path>`
   |
   = note:   expected reference `&Path`
           found type parameter `impl AsRef<Path>`

error[E0308]: mismatched types
  --> /home/ubuntu/.cargo/registry/src/github.com-1ecc6299db9ec823/linemux-0.1.3/src/events.rs:95:25
   |
94 |     fn unwatch(watcher: &mut notify::RecommendedWatcher, path: impl AsRef<Path>) -> io::Result<()> {
   |                                                                ---------------- this type parameter
95 |         watcher.unwatch(path).map_err(notify_to_io_error)
   |                         ^^^^ expected `&Path`, found type parameter `impl AsRef<Path>`
   |
   = note:   expected reference `&Path`
           found type parameter `impl AsRef<Path>`

error: aborting due to 3 previous errors

Some errors have detailed explanations: E0308, E0599.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `linemux`
2 Likes

Thanks @stout77, very useful to know. I think linemux was updated a few weeks ago so the first thing to do will be to open an issue for it on the linemux repository. The maintainer is very helpful and may well know right away what the problem is from those messages.

4 Likes

In the meantime @stout77 you could set the Cargo.toml to a previous version that works (as a stop gap) by setting the version of that to =x.x.x so you don’t get the latest. Worth changing that and do cargo update then you should be OK while the maintainer hopefully fixes it.

4 Likes

Not really knowing what version to use…cloning vdash and installing with --locked option did the trick

3 Likes

This issue looks related:

https://github.com/jmagnuson/linemux/issues/40#issue-952724124

1 Like