saido means monitor in Hausa
NOTE: We've currently only tested on Mac Os
, Windows 11
and Linux Ubuntu 20.04 LTS
Download latest binary for the target machine from Github Releases
REM Check your `PATH`
path
REM Copy the saido binary to a directory that is on your `PATH`
copy <path_to_saido_binary> <path>
#Appends to existing path
$env:Path += ";<path_to_saido_binary>"
#Add saido to your `.bashrc` or `.zshrc`
alias saido="<path_to_saido_binary>"
#Or Copy binary to your bin directory
cp <path_to_saido_binary> /usr/local/bin
NOTE: !windows
flag is our current specification of what unix
means, see issue for why *_unix.go files will still attempt to run on windows.
git clone https://github.com/bisohns/saido
cd saido
## Update dependencies
make dependencies
# Build and serve frontend
make app
# Modify generated `config-test.yaml` file and air would reload server
The simplest usage is running
# binary is downloaded and named as saido
saido --config <path_to_configuration_yaml_file> --port 3000 --verbose
Saido cli flags & commands
Saido
Tool for monitoring metrics
Usage:
saido [flags]
saido [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
version Get saido version
Flags:
--config string Path to config file
-h, --help help for saido
-b, --open-browser Prompt open browser
-p, --port string Port to run application server on (default "3000")
-v, --verbose Run saido in verbose mode
Use "saido [command] --help" for more information about a command.
NOTE: Use single qoutes (''
) for any string within the config file.
hosts
NOTE: The broad assumptions we make is that the host names are treated as unique.
children
- a list of hosts with host names
hosts:
children:
# Host with host name `localhost`
'localhost':
connection:
# define `connection` with `type` as `local`
type: local
metrics:
memory:
disk:
tcp:
docker:
uptime:
poll-interval: 10
hosts:
children:
# Host with host name `192.168.166.167`
'192.168.166.167':
connection:
# define `connection` with `type` as `ssh`
type: ssh
# define `username` and `password` for connection to ssh server
username: <username>
password: <password>
metrics:
custom-ls: 'ls $HOME/app'
metrics:
memory:
disk:
tcp:
docker:
uptime:
poll-interval: 10
hosts:
children:
# Host with host name `0.0.0.0`
'0.0.0.0':
connection:
# define `connection` with `type` as `ssh`
type: ssh
# define `username` and `port` and `private_key_path` for connection to ssh server
username: <username>
port: 2222
private_key_path: 'path_to_private_key'
metrics:
memory:
disk:
tcp:
docker:
uptime:
poll-interval: 10
hosts:
children:
# Host with host name `0.0.0.0`
'0.0.0.0':
connection:
# define `connection` with `type` as `ssh`
type: ssh
# define `username` and `port` , `private_key_path` and `private_key_passphrase` for connection to ssh server
username: <username>
port: 2222
private_key_path: <'path_to_private_key'>
private_key_passphrase: <private_key_passphrase>
metrics:
memory:
disk:
tcp:
docker:
uptime:
poll-interval: 10
metrics
NOTE: Custom metrics with commands can be added to the configuration file
memory
- for calculating memory usagedisk
- for calculating disk usagetcp
- for getting tcp connection informationdocker
- for getting docker container informationuptime
- for calculating uptime and idle time of the host
hosts:
children:
'localhost':
connection:
type: local
'0.0.0.0':
connection:
type: ssh
username: <username>
port: 2222
private_key_path: '<path_to_private_key>'
# Metrics are defined on a global scope. Same level with the hosts
metrics:
memory:
disk:
tcp:
docker:
uptime:
poll-interval: 10
hosts:
children:
'localhost':
connection:
type: local
# Metrics are defined within a host (localhost) scope
metrics:
memory:
disk:
tcp:
docker:
uptime:
poll-interval: 10
hosts:
children:
'localhost':
connection:
type: local
# A custom metric named `custom-ls` with a command `ls $HOME/app` is defined within a host (localhost) scope
metrics:
custom-ls: 'ls $HOME/app'
poll-interval: 10
polling-interval
- interval in seconds between requests to host (value must be greater than or equal to 5 seconds)
NOTE: Use a reasonable time interval between 10-30 seconds to avoid overloading server
hosts:
children:
'localhost':
connection:
type: local
metrics:
disk:
# polling-interval set to 5 seconds
poll-interval: 5
To create a new tag, use the make file
make upgrade version=0.x.x
This will tag a new version, push to github and trigger goreleaser
The project is opened under the Apache License
- Logo by Williams Praise
- Goph by Melbahja