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.
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).
Monyk consist of the following loosely-coupled components:
- Ground Control allows you to specify monitors via its REST API and takes care of triggering the checks according to the specifications.
- Probes actually perform the checks. You may want to put many of those around the globe - it's optimized for minimal resource consumption.
- Lab processes the results of the checks according to defined reactions, configurable via its REST API.
This section covers launching Monyk using default setting for development environment:
- databases re-created on start-up
- mock data initially added to the databases to help kick-start things
- Ground Control API is accessible on https://localhost:42113/swagger
- Lab API is accessible on https://localhost:42133/swagger
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
docker-compose up
- Run
docker-compose -f .\docker-compose-infra-only.yml up
to launch just the required infrastructure. - Use SwitchStartupProject to launch all the Monyk components from VS at once. An appropriate config file for it is included here.
- Install RabbitMQ
- Make sure that you have the latest release of .NET Core SDK installed
- Run GroundControl:
dotnet run --project src/Monyk.GroundControl.Main
- Run Probes:
dotnet run --project src/Monyk.Lab.Main
- Run Lab:
dotnet run --project src/Monyk.Probe.Main
- (Optional) Install Seq to make use of semantic logging support
Feel free to improve things and submit a PR 🖖
Recommended way to run Monyk in non-development environments is using Docker images (leon99/monyk-groundcontrol, leon99/monyk-probe, leon99/monyk-lab).
Configuration can be done using any of the following methods (in order of priority, starting with the highest):
- Command line parameters
- Environment variables
- Using
appsettings.<environment>.yml
, when<environment>
can be specified usingASPNETCORE_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.
- Terraform with REST API Provider can be used to manage Monyk as part of an infrastructure-as-a-code solution.