/Monyk

Primary LanguageC#MIT LicenseMIT

Monyk

Build Status

Overview

What is this?

It's a distributed reliability monitoring tool that can be operated without learning rocket science. It's like UptimeRobot, only open-source, extensible, self-hosted, cross-platform, RESTful, DevOps-friendly and cost-efficient.

What exactly can it do?

At the moment, it can check HTTP(S) endpoints and ping hosts from multiple locations. Alerts can be posted via WebHook (e.g. via Slack).

Anything else I need to know before trying it?

Monyk consist of the following loosely-coupled components:

  1. Ground Control allows you to specify monitors via its REST API and takes care of triggering the checks according to the specifications.
  2. Probes actually perform the checks. You may want to put many of those around the globe - it's optimized for minimal resource consumption.
  3. Lab processes the results of the checks according to defined reactions, configurable via its REST API.

OK, how do I use it?

This section covers launching Monyk using default setting for development environment:

Check out Details section for instructions on preparing it to run in the wild.

Note that all the further commands assume that you have cloned the repository:

git clone https://github.com/leon99/monyk
cd monyk

Run using Docker Compose

docker-compose up

Run/debug using Visual Studio

  1. Run docker-compose -f .\docker-compose-infra-only.yml up to launch just the required infrastructure.
  2. Use SwitchStartupProject to launch all the Monyk components from VS at once. An appropriate config file for it is included here.

Run manually

  1. Install RabbitMQ
  2. Make sure that you have the latest release of .NET Core SDK installed
  3. Run GroundControl: dotnet run --project src/Monyk.GroundControl.Main
  4. Run Probes: dotnet run --project src/Monyk.Lab.Main
  5. Run Lab: dotnet run --project src/Monyk.Probe.Main
  6. (Optional) Install Seq to make use of semantic logging support

Hold on, but you said there will be no rocket science?

Feel free to improve things and submit a PR 🖖

Details

Installation

Recommended way to run Monyk in non-development environments is using Docker images (leon99/monyk-groundcontrol, leon99/monyk-probe, leon99/monyk-lab).

Configuration

Configuration can be done using any of the following methods (in order of priority, starting with the highest):

  1. Command line parameters
  2. Environment variables
  3. Using appsettings.<environment>.yml, when <environment> can be specified using ASPNETCORE_ENVIRONMENT environment variable

Check appsettings-reference.yml for the reference on available settings.

When configuring using environment variables, use MONYK_ prefix and __ as a delimiter in hierarchical keys. Examples can be found in docker-compose.override.yml.

Recipes