Skip to content

rvhonorato/remotesysmonitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RemoteSysMonitor

Crates.io Version Crates.io Total Downloads Crates.io Codacy Badge test

This is a small command-line tool that runs some checks on remote servers and posts the results to a Slack channel.

Check the project's website for a full list of available checks and how to configure them.

TL:DR

Install

Make sure you have Rust and Cargo installed, if not follow the instructions here.

cargo install remotesysmonitor

Execute

Check the output of the remotesysmonitor --help command for a list of available options.

$ remotesysmonitor -h
Usage: remotesysmonitor [OPTIONS] <CONFIG>

Arguments:
  <CONFIG>

Options:
  -f, --full     Post a check to Slack even if there is no ❌ in the checks
  -p, --print    Print the output of the checks in stdout
  -h, --help     Print help
  -V, --version  Print version

You need to define SLACK_HOOK_URL as an environment variable with the URL of the Slack webhook you want to use and a path to the configuration file.

SLACK_HOOK_URL=<your-slack-hook-url> remotesysmonitor configuration.yaml

The configuration file should look like this:

servers:
  - name: name-of-your-server
    host: myserver.nl
    port: 22
    user: rodrigo
    private_key: /home/rodrigo/.ssh/id_ed25519
    checks:
      ping:
        url:
          - /
      load:
        interval: 15
        warning_cutoff: 50.0
      number_of_subfolders:
        path:
          - /path/full/of/subfolders
      custom_command:
        command: cd /some/path && ./some_script.sh
      list_old_directories:
        loc: /path/full/of/old/directories
        cutoff: 2 # days

  - name: raspberryPi
    host: ip.of.your.raspberry.pi
    port: 22
    user: rodrigo
    private_key: /home/rodrigo/.ssh/id_ed25519
    checks:
      temperature:
        sensor: /sys/bus/w1/devices/28-00000b694311/w1_slave

It might make sense to configure a cron job to run this command periodically.

# Run every 10 minutes, it will only post to Slack if one of the checks has ❌
*/10 * * * * SLACK_HOOK_URL=<your-slack-hook-url> remotesysmonitor configuration.yaml

# Post a full report to Slack at 8, 12, 16 and 20 hours
## Running with -f will post to Slack even if there is no ❌ in the checks
0 8,12,16,20 * * * SLACK_HOOK_URL=<your-slack-hook-url> remotesysmonitor -f configuration.yaml