#systemd #watchdog #docker #connect #service #health-check #periodic

app healthdog

Helper program that connects external periodic heathchecks with systemd's watchdog support

2 stable releases

Uses old Rust 2015

1.0.1 Jan 14, 2020
1.0.0 Nov 4, 2019

#884 in Unix APIs

Apache-2.0 and LGPL-2.1-or-later WITH GCC-exception-2.0

8KB
103 lines

healthdog

healthdog is a utility program that runs a healthcheck program periodically and pets systemd's service watchdog.

Installing

You can use cargo build --release to build this project and then copy ./target/release/healthdog to /usr/local/bin/healthdog.

Usage

Let's say that we wish to run Docker and continuously monitor that the daemon is responsive and restart in case it isn't.

First we create a program that will test the docker daemon and return 0 on success, 1 otherwise.

  • /usr/bin/check-docker:
#!/bin/sh

set -o errexit

# Check that info works
docker info > /dev/null
# Check that we can read containers from disk
docker ps > /dev/null

Then we prefix the ExecStart directive with healthdog and also set our desired WatchdogSec value.

  • docker.service
[Unit]
Description=Docker Application Container Engine

[Service]
Type=simple
ExecStart=/usr/local/bin/healthdog --healthcheck=check-docker /usr/bin/dockerd
WatchdogSec=10
Restart=always

[Install]
WantedBy=multi-user.target

The service will spawn healthdog which in turn will run check-docker every 5 seconds (half the systemd duration) and pet the watchdog if it successfully returns.

Dependencies

~3MB
~54K SLoC