mirror of
https://codeberg.org/privacy1st/nix-git
synced 2024-11-21 22:03:19 +01:00
monitor unhealthy containers
This commit is contained in:
parent
286a0d2225
commit
b2e0d29801
@ -144,6 +144,4 @@ in
|
||||
# Start after login.
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
|
||||
# TODO: Service which checks if all running docker containers are healthy. Also for yodaYoga.
|
||||
}
|
||||
|
@ -26,4 +26,40 @@
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Monitor unhealthy Docker containers.
|
||||
systemd.timers."docker-health" = {
|
||||
wantedBy = [ "timers.target" ];
|
||||
partOf = [ "docker-health.service" ];
|
||||
timerConfig = {
|
||||
OnBootSec = "0m";
|
||||
OnUnitInactiveSec = "3m";
|
||||
|
||||
AccuracySec = "15s";
|
||||
RandomizedDelaySec = "15s";
|
||||
};
|
||||
};
|
||||
systemd.services."docker-health" = {
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
PrivateTmp = true;
|
||||
# `docker` requires root access.
|
||||
User = "root";
|
||||
Nice = 19;
|
||||
IOSchedulingClass = "idle";
|
||||
};
|
||||
path = with pkgs; [
|
||||
docker
|
||||
];
|
||||
# If there are no unhealthy Docker containers, the output of `docker ps -f health=unhealthy` is just one line:
|
||||
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
# We filter this line with `grep -v`.
|
||||
# As a result, grep returns exit code 1 if there are no unhealthy containers (as not a single line is printed).
|
||||
# Thus, we prefix the whole command with `!`.
|
||||
# Lastly, we redirect stdout to stderr with `1>&2` so that unhealthy containers are written to stderr.
|
||||
script = ''
|
||||
set -eu -o pipefail
|
||||
! sudo docker ps -f health=unhealthy | grep -v 'CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES' 1>&2
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user