Vigil

Build Status

Microservices Status Page. Monitors a distributed infrastructure and sends alerts to Slack.

Vigil is an open-source Status Page you can host on your infrastructure, used to monitor all your servers and apps, and visible to your users (on a domain of your choice, eg. status.example.com).

It is useful in microservices contexts to monitor both apps and backends. If a node goes down in your infrastructure, you receive a status change notification in a Slack channel.

👉 See a live demo of Vigil on Crisp Status Page.

Vigil

Who uses it?

Crisp

👋 You use Vigil and you want to be listed there? Contact me.

Features

How does it work?

Vigil monitors all your infrastructure services. You first need to configure target services to be monitored, and then Vigil does the rest for you.

There are two kinds of services Vigil can monitor:

It is recommended to configure Vigil or Vigil Reporter to send frequent probe checks, as to ensure you are quickly notified when a service gets down (thus to reduce unexpected downtime on your services).

How to use it?

Installation

Install from releases:

The best way to install Vigil is to pull the latest release from the Vigil releases page.

Make sure to pick the correct server architecture (either Intel 32 bits, Intel 64 bits, or ARM).

Install from Cargo:

If you prefer managing vigil via Rust's Cargo, install it directly via cargo install:

bash cargo install vigil-server

Ensure that your $PATH is properly configured to source the Crates binaries, and then run Vigil using the vigil command.

Install from sources:

The last option is to pull the source code from Git and compile Vigil via cargo:

bash cargo build --release

You can find the built binaries in the ./target/release directory.

Configuration

Use the sample config.cfg configuration file and adjust it to your own environment.

Available configuration options are commented below, with allowed values:

[server]

[assets]

[branding]

[metrics]

[notify]

[notify.email]

[notify.slack]

[probe]

[[probe.service]]

[[probe.service.node]]

Run Vigil

Vigil can be run as such:

./vigil -c /path/to/config.cfg

Usage recommendations

Consider the following recommendations when using Vigil:

What status variants look like?

Vigil has 3 status variants, either healthy (no issue ongoing), sick (services under high load) or dead (outage):

Healthy status variant

Status Healthy

Sick status variant

Status Sick

Dead status variant

Status Dead

How can I integrate Vigil Reporter in my code?

Vigil Reporter is used to actively submit health information to Vigil from your apps. Apps are best monitored via application probes, which are able to report detailed system information such as CPU and RAM load. This lets Vigil show if an application host system is under high load.

📦 Vigil Reporter Libraries:

👉 Cannot find the library for your programming language? Build your own and be referenced here! (contact me)

:fire: Report A Vulnerability

If you find a vulnerability in Vigil, you are more than welcome to report it directly to @valeriansaliou by sending an encrypted email to valerian@valeriansaliou.name. Do not report vulnerabilities in public GitHub issues, as they may be exploited by malicious people to target production servers running an unpatched Vigil server.

:warning: You must encrypt your email using @valeriansaliou GPG public key: :key:valeriansaliou.gpg.pub.asc.

:gift: Based on the severity of the vulnerability, I may offer a $100 (US) bounty to whomever reported it.