Network Uptime Monitor (num) is a CLI program written in Rust that conducts analysis on the uptime of a network. It performs pings on an address/URL and logs latency and time data to a CSV file.
Features
- Small disk, memory, and CPU footprint
- Configurable TTL, delay, timeout, number of bytes sent, and output directory
- Color-coded text for easy parsing of output
- Support for logging time/latency data to a CSV, and a configuration JSON file to track environment variables of previous runs
- Cross platform (currently builds on Linux/Windows 10-11)
Prebuilt packages are currently WIP.
Building:
git clone https://github.com/adih-20/num.git
cd num
# Run this for debugging purposes
cargo build
# Run this for optimized binary
cargo build --releaseThe resulting binary (num) will be found in ./target/debug or ./target/release/ depending on which type you built for.
To learn how to use num, invoke num with the -h or --help argument.
CSV files created by num follow the following format:
Timestamp,Latency(ms)
2023-05-31 17:10:38.662942381 -05:00:00,51
2023-05-31 17:10:43.630355854 -05:00:00,42
2023-05-31 17:10:48.630140626 -05:00:00,48
2023-05-31 17:10:53.630425122 -05:00:00,47
...
The configuration JSON file contains the runtime environment variables and follows the following format:
{
"address": "140.82.114.3",
"num_bytes": 4,
"timeout": "1000ms",
"ttl": 128,
"delay": "120s"
}num outputs a minified JSON which can be pretty printed with a tool like jq.
Contributions (Pull Requests) are currently closed for this project.
num is licensed under the AGPLv3. See LICENSE for more information.
Copyright (C) 2023 Aditya Hadavale
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
