3 releases

0.1.2 Jan 24, 2019
0.1.1 Dec 23, 2018
0.1.0 Dec 22, 2018

#4 in #healthcheck

MIT license

51KB
1.5K SLoC

Hellcheck

HTTP health checker.

Installation

Install with cargo

Install system dependencies.

On Debian/Ubuntu:

apt-get install libssl-dev pkg-config

Install hellcheck crate:

cargo install hellcheck

Configuration

Basic configuration example

Configuration file hellcheck.yml may have the following format:

# Declare what has to be watched
checkers:
  example:
    url: https://www.example.com
    notifiers: [my_team]
  localhost8000:
    url: http://localhost:8000
    interval: 1500ms
    notifiers: [my_team, sound_alarm]
    basic_auth:
      username: "foo"
      password: "bar"

# Declare notification channels
notifiers:
  my_team:
    type: slack
    token: <WEBHOOK_URL>
  sound_alarm:
    type: command
    command: ["./custom.sh", "arg1", "arg2"]

Notifiers

Slack notifier

Create an incoming webhook in Slack. Then define your notifier with type slack and webhook_url:

notifiers:
  notifier_name:
    type: slack
    webhook_url: <WEBHOOK_URL>

Telegram notifier

For telegram notifier you have to create a bot with BotFather and obtain the bot token.

Chat ID can be found out with GetidsBot.

notifiers:
  notifier_name:
    type: telegram
    token: <BOT-TOKEN>
    chat_id: <CHAT-ID>

HipChat notifier

notifiers:
  notifier_name:
    type: hipchat
    base_url: https://hipchat.com
    token: <AUTH_TOKEN>
    room_id: <ROOM_NAME_OR_ID>

Command notifier

Command notifier allows you to invoke any shell command or custom script as notifier.

Example:

notifiers:
  custom:
    type: command
    command: ["/path/to/custom-notifier.sh", "arg1", "arg2"]

Within the script the following environment variables are accessible:

  • HELLCHECK_ID - checker id
  • HELLCHECK_URL - checker URL
  • HELLCHECK_OK
    • true - when service is up
    • false - when service is down

Start

Assuming, you have ./hellcheck.yml in your current directory, this will start monitoring of the services, described in checkers configuration sections:

hellcheck watch --file ./hellcheck.yml

Roadmap

  • Support notifiers
    • Command customer notifier
    • Telegram
    • HipChat
    • Slack
  • Checkers
    • Custom intervals
    • Verify body (presence of some given text)
    • Custom OKish HTTP status
  • Use structopt/clap for nice command line interface
  • Implement hellcheck test command to test notifiers
  • Configure CI
    • Run build/tests
    • Setup clippy lint
    • Setup rusmft
  • Ensure endpoints with http basic authentication can be health checked
  • Inject credentials with env variables into yaml file
  • Allow customizable messages for notifiers
  • Allow custom scripts as checkers
  • Make pretty colorized output for console
  • Validate for unexpected panics in the code (unwrap, panic, expect, etc..)

License

MIT © Sergey Potapov

Contributors

  • greyblake Potapov Sergey - creator, maintainer.

Dependencies

~19–30MB
~534K SLoC