Skip to content

aviate-labs/node-monitor

Repository files navigation

Node Monitor

Node monitoring is an open-source notification service for Internet Computer Nodes. It queries the Internet Computer API with a specified interval and reports status changes to email and communication channels like Slack and Telegram.

You can run Node Monitor yourself or use the free hosted version.

Setup

Place a .env file in this directory.
Use .env.example as a template.
You will also need a running Postgres database to store user information.

🚀 Hosted version

Don't want the hassle of hosting the service yourself? We've got you covered! Introducing our free hosted version - instant monitoring, zero setup. Sign up here: aviatelabs.co/node-monitor

The service uses the same functionality as the open-source service, with Slack and Telegram already integrated. Features will be added to provide management and incident-handling support to Node Providers.

Running

Docker (recommended)

# To run the app
$ docker compose up --build
# To only run the tests, then exit
$ TEST=true docker compose up --build

Without Docker

# Install dependencies
$ pip install -r requirements.txt

# Check static typing, basic tests
$ make check
$ make test
# Integration tests (live email, database)
$ make testall

# Run the app, using Gunicorn as the WSGI server
$ make prod

For more control over testing, see tests/conftest.py, and/or Makefile.

Logging

Node Monitor writes all logs to the logs/ directory.

  • logs/gunicorn_access.log contains all HTTP requests.
  • logs/gunicorn_error.log contains all gunicorn errors and information.
  • logs/node_monitor.log contains all Node Monitor specific logs.

Notes

Rsync Example

# a=preserve links, n=dry run, v=verbose
$ rsync -anv --exclude '.git/' . username@remote_host:/root/directory
# remove the `n` to run for real

2FA Gmail

If you are using gmail, you may need to create an 'app password'