2 stable releases
Uses old Rust 2015
1.0.1 | Jan 14, 2020 |
---|---|
1.0.0 | Nov 4, 2019 |
#884 in Unix APIs
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