Vdash - Node dashboard for Safe Network

With the latest, I get 14 Elders and the rest unknown on a 40 node testnet

NODE_COUNT=40 RUST_LOG=sn_node=trace cargo run --release --bin testnet

So it works fine on a split. It takes a while but the Chunk storage bar and figure eventually appear and look correct but the bar is at 100% as above.
Space available is always zero and space free unknown. THe time line works well and the i and o zoom keys work OK, likewise the arrow keys.

I’ll leave it uploading overnight and look at it again tomorrow.

5 Likes

8 posts were split to a new topic: ClientError: Did not receive sufficient ACK messages from Elders to be sure this cmd passed

In anticipation of JoshNet, vdash 0.8.1 is available, over to you MaidSafe :grimacing:

To update:

cargo install vdash

With a local testnet this shows basic status (top left), timelines of PUTS, GETS and ERRORS (middle band) and the end of the logfile (bottom band) for one or more node logilfes, and updates in real time.

The top right window doesn’t show anything useful as the logfiles not longer provide that information, but perhaps this will be added later.

I won’t add display of Network status (e.g. storage pricing, transactions etc) until I can see that working.

For newbies or general information about vdash, see the OP

6 Likes

and then
vdash ~/.safe/node/local-test-network/safenode-*/safenode.log

and then

maybe choose a different terminal profile if you are on Ubuntu - the default maroon does not do vdash justice.

Green on black is a bit better IIRC

1 Like

Im seeing that if I repeatedly edit a register
like this

willie@gagarin:~$ safe register edit todo "get rear wiper blade for Janets car"
Trying to retrieve Register from 48c701(01001000).., 3006
Successfully retrieved Register 'todo' from 48c701.., 3006!
Editing Register 'todo' with: get rear wiper blade for Janets car
willie@gagarin:~$ safe register edit todo "get rear wiper blade for Janets car"
Trying to retrieve Register from 48c701(01001000).., 3006
Successfully retrieved Register 'todo' from 48c701.., 3006!
Editing Register 'todo' with: get rear wiper blade for Janets car
willie@gagarin:~$ safe register edit todo "get rear wiper blade for Janets car"
Trying to retrieve Register from 48c701(01001000).., 3006
Successfully retrieved Register 'todo' from 48c701.., 3006!
Editing Register 'todo' with: get rear wiper blade for Janets car
willie@gagarin:~$ safe register edit todo "get rear wiper blade for Janets car"
Trying to retrieve Register from 48c701(01001000).., 3006
Successfully retrieved Register 'todo' from 48c701.., 3006!
Editing Register 'todo' with: get rear wiper blade for Janets car
willie@gagarin:~$ safe register edit todo "get rear wiper blade for Janets car"
Trying to retrieve Register from 48c701(01001000).., 3006
Successfully retrieved Register 'todo' from 48c701.., 3006!
Editing Register 'todo' with: get rear wiper blade for Janets car

I get success in the console but errors on vdash

and checking in a random node, I can see the register entries are stored. Its binary but filesizes and timestamp make sense.

1 Like


Yes definitely worth experimenting with the colour themes if you are on Ubuntu. Also noting that prviously vdash was quite memory hungry. No such problem with the latest version – which is nice.

2 Likes

Since ReplicationNet (ended 12 June 2023) I’ve updated vdash (v0.8.5) to improve display of node state and revived counting of GETS.

To be ready for the next testnet:

cargo install vdash

If you run it on ReplicationNet logfiles you should see it counts GETS once again.

10 Likes

Not on ReplicationNet but on a vanilla home testnet with this afternoon’s latest, I see no chunks shown anywhere

not sure why i get “Currently ignored node event” though - RUST_LOG is set to RUST_LOG=trace=ALL

Could this be my error?

EDIT - the testnet itself is working well and fast - already I have hit the 1024 entries limit on several nodes

2 Likes

I’d never bothered to run this before and now I wish I had for the other testnets.

This is amazing work! How long did it take to program?

8 Likes

Glad you like it and thanks for saying so. It isn’t that complex but was my learn some Rust project so a few weeks I guess, I’m not sure.

Let me know if you have suggestions for what metrics to show and how. I don’t have much time to poke around to see what is available in logfiles or think about improvements but can make tweaks here and there.

7 Likes

I’ve just published vdash v0.8.6 which adds display of chunk storage fee which is available since ThePriceIsRightNet, and fixes a progressive memory leak.

To install/update:

cargo install vdash

You’ll need to capture node logs to a file to use with vdash, more details in the OP: Vdash - Node dashboard for Safe Network

8 Likes

Poll for anyone who has ever run a Safe Network node about vdash to help gauge interest and usefulness:

  • What’s vdash? (see below)
  • I run nodes but never used it
  • I’ve used it but no longer
  • I use it now and again
  • I use it most times I run a node
  • I’d use it more if… (please explain)
0 voters

vdash is a terminal based graphical dashboard which provides information about one or more nodes you are running as part of a test network. See: Vdash - Node dashboard for Safe Network

For interest it has been downloaded 24 times since I last updated on Tuesday and 3,967 times since May 2022. Stats here: https://crates.io/crates/vdash

8 Likes

Voted I would use it more if… I did not need to install rust on every device I use to run a node.

4 Likes

Yep, fine for desktops and Pi4s but a bit of a PITA for low-end SBCs.
I have a basic image I put on any cloud nodes that includes rust and vdash.

1 Like

I’ve just published vdash v0.8.7 which displays PUTS correctly in the current (DialNet) test network.

To install/update:

cargo install vdash

You’ll need to capture node logs to a file to use with vdash, more details in the OP: Vdash - Node dashboard for Safe Network

8 Likes

Is this still needed? Monitor and display max node age · Issue #17 · happybeing/vdash · GitHub I’m asking because I’m trying to get a developer started exploring the Safe Network but trying not to blow the bank while doing so. I thought this might be a great small task to get someone started and not break me at the same time.

1 Like

No, I’m afraid I’ve not reviewed the issues for a while and node age is no longer used by the network.

I’d be very happy to put forward something for your developer to start with.

If you want, let me know what your needs are and I’ll make some suggestions.

2 Likes

Honestly anything you can think of? Just trying to get someone poking around on something the community needs. I originally started asking about creating a separate client but not sure the visibility at this point. Fiverr has tons of talent hungry for work and the one i’m working with I found there. He mentioned Polkadot and how he is already involved with that as well. One of his suggestions was some cross project with Polkadot. I then mentioned starting a way to backup the bitcoin blockchain as a way to show the Safe Networks capabilities. Mind you all these are ideas have no real research to back them and are merely ideas bouncing around my head.

2 Likes

For anyone interested I’ve just outlined a design to support an arbitrary number timelines in vdash, including a new type which will display min, mean or max value of a statistic which will debut as a node storage fee timeline.

Once payment received is in the log I’ll also add a node earnings timeline.

It is a significant piece of work and I’m not sure how long it will take. More below.

It was interesting to watch the design evolve over time purely in my head over about two weeks. Normally I’d have hit the keyboard much sooner and it would have changed in the same way, but during the coding phase. This time it kept being refined all the way until I began itemising the structs in the list below, and I hope, will be pretty close to the actual code. We’ll see! :man_shrugging:

Add to and enhance vdash Timeline display

Notes on:

  • adding timelines for Store Price and Token Earnings
  • enhance Store Price timeline to show min, mean, max (press ‘m’?) per timeslot

Implementation

[x] FIGURE OUT DESIGN (SEE BELOW) to allow token price to support min/mean/average per slot
    [x] elaborate Options
    [x] read up about Traits to refine option 2
[x] Choose from option 1 and 2 (not shown in this post)
[x] Elaborate these steps based on Option 2
[x] Rework the following for an arbitrary number of timelines (see below)
    [x] consider UI mode, timeline naming, min/mean/max mode for access and label of timeline (maybe use TL index to access these?)
[ ] implement timelines module in parallel with existing code
    [ ] define Structs, Traits and Enums
        [ ] Buckets - as now, an array of scalar values
        [ ] MinMeanMaxBucket - a struct to hold a min/mean/max value bucket
        [ ] BucketsMMM - is a new array of struct MinMeanMax with a Buckets array for min, mean and max values (for access by UI)
        [ ] BucketsType - enum for gets|puts|storage_fee
        [ ] MMMType - enum for min|mean|max
        [ ] BucketSet - map? of Buckets by active_timeline_name (scale)
        [ ] BucketSetMMM - map? of BucketsMMM by active_timeline_name (scale)
    [ ] TimelinesSet - struct which holds app timelines for gets, puts, storage_fee
        Implements Trait - methods to bump Buckets and BucketsMMM, and for access Buckets
        [x] think about implementation from UI access to buckets (e.g. access to immutable array of values, inc for min/mean/max)
            Ideally: get_timeline( enum gets|puts|storage_fee, min|mean|max).get_bucket_set(active_timeline_name)
[ ] Implement app TimelinesSet struct to hold the required NUM_TIMELINES timelines, with access by index (enum?) for UI
    [ ] holds timeline UI state: min/mean/max (enum) and irst_timeline index of first on display (1-NUM_TIMELINES)
    [ ] holds app timeline state and each timeline's data as a BucketSet or BucketSetMMM
    [ ] method to access UI label, for ex. "Storage Fee (Max)", and Buckets by numeric index (enum?) from 1 to NUM_TIMELINES
    [ ] method per timeline to update puts, gets etc
    [ ] keyboard input 't' increases first_timeline, 'T' decreases (starts at 1, wrapping at NUM_TIMELINES)
[ ] Add token price timeline for now stores minimum token price
[ ] select and test new code
[ ] eliminate old code
[ ] keyboard input 'm' rotates 0->1->2, 'M' 2->1->0 (or enum) to determine mmm_display
[ ] Modify UI to display min/mean/max of any TimelineSetMMM based on mmm_display
[ ] LATER: add earnings timeline
5 Likes

I’ve just published vdash v0.8.8 which restores collection of Storage Cost and adds a new timeline for it, including the ability to display the minimum, mean and maximum Storage Cost values as timelines.

Tested with IntolerantNodeNet.

To install/update:

cargo install vdash

You’ll need to capture node logs to a file to use with vdash, more details in the OP: Vdash - Node dashboard for Safe Network

Here’s a summary of keyboard commands including new ones to show all four timelines (three at a time) and cycle through the min, mean and max displays when the Storage Cost timeline is visible.

I’ll add an Earnings timeline as soon as this is available in the log file.

Keyboard commands:

‘<-’ and ‘->’: When monitoring multiple safenode logfiles you can cycle through the different nodes using left/right arrow keys.

‘i’ and ‘o’: Zoom the timeline scale in/out using ‘i’ and ‘o’ (or ‘+’ and ‘-’).

‘t’ and ‘T’: Three timelines are visible at any one time but you can cycle through all timelines to bring them all into view by pressing ‘t’ (forward) and ‘T’ (backward).

‘m’ or ‘M’: The Storage Cost timeline displays minimum, mean and maximum values in each time-slot. To cycle through the min, mean and max displays press ‘m’ or ‘M’.

‘q’: Press ‘q’ to quit.

10 Likes