Pulseway onder Arch Linux
Voor de monitoring van een Arch Linux container wil ik graag Pulseway gebruiken. Helaas blijkt het pakket - wat Pulseway zelf aanbiedt - op het moment van schrijven standaard niet te werken (en verouderd te zijn). In deze post beschrijf ik hoe ik Pulseway toch werkend gekregen heb. De oorzaak is dat er in het pakket geen ondersteuning is voor systemd (systemd is tegenwoordig standaard onder Arch Linux).
Sterker nog: systemd is sinds oktober 2012 standaard onder Arch Linux...
Aanleiding
Ik draai Vaultwarden onder Arch Linux in een Proxmox container - en ik moet Pulseway gebruiken voor de monitoring.
Vaultwarden is een Bitwarden compatible server geschreven in Rust. Vaultwarden draait standaard in een Docker container - maar er zijn packages beschikbaar voor Arch Linux. Mijn persoonlijke voorkeur is om de Arch Linux packages te gebruiken - en d.m.v. Caddy de reverse proxy functionaliteit toe te voegen.
Probleem
Normaal kan onder Arch Linux een pakket geïnstalleerd worden met het commando pacman -U pakketnaam.txz
. Het viel mij op dat dit voor het Pulseway pakket een foutmelding oplevert.
# pacman -U pulseway_x64.txz
loading packages...
error: missing package metadata in pulseway_x64.txz
error: 'pulseway_x64.txz': invalid or corrupted package
Conclusie is dat het pakket verouderd is. Dat blijkt ook wanneer ik het pakket uitpak:
mkdir /usr/src/pulseway
mv pulseway_x64.txz /usr/src/pulseway
cd /usr/src/pulseway
tar Jxvf pulseway_x64.txz
Dat levert een aantal mappen op - waar onder andere een etc
map in voorkomt.
# ls -lah etc/
total 16K
drwxr-xr-x 4 root root 4.0K Sep 26 2014 .
drwxr-xr-x 6 root root 4.0K Sep 27 2014 ..
drwxr-xr-x 2 root root 4.0K Jan 11 2015 pulseway
drwxr-xr-x 2 root root 4.0K Sep 27 2014 rc.d
Inderdaad: rc.d - dat lijkt niet op systemd maar op SysVInit.
Wanneer ik zoek naar een bestand wat eindigt op .service
dan blijkt dat die niet bestaat: find /usr/src/pulseway/ -name "*.service" -print
. Hiermee is wat mij betreft (opnieuw) bevestigd dat er geen systemd ondersteuning in het Pulseway pakket zit. Ik vind dat vreemd - omdat Arch Linux standaard al meer dan 10 jaar systemd gebruikt.
Oplossing
Ik heb de mappen naar de juiste locaties gekopieerd. Ik ben "gewoon" uitgegaan van de root folder. Dus de inhoud van bijvoorbeeld /usr/src/pulseway/etc heb ik naar /etc gekopieerd (et cetera).
Vervolgens heb ik de unit file uit de Debian (.deb) package gekopieerd en in de systemd map neergezet (onderaan deze post staat de inhoud van dit bestand):
/usr/lib/systemd/system/pulseway.service
Vervolgens heb ik Pulseway gestart met systemctl start pulseway
en vervolgens de status gecontroleerd systemctl status pulseway
.
De Pulseway service moet tijdens system boot ook gestart worden. Ik heb hiervoor het enable commando uitgevoerd: systemctl enable --now pulseway
.
Intussen heb ik contact opgenomen met Pulseway support. Ik hoop dat dit probleem spoedig opgelost zal worden - zodat de installatie minder omslachtig wordt.
File: /usr/lib/systemd/system/pulseway.service
Description=Remotely Monitor and Control IT Systems
Wants=network-online.target
After=syslog.target network.target network-online.target
[Service]
Type=simple
ExecStartPre=/bin/sleep 10
ExecStart=/usr/sbin/pulsewayd --no-daemonize
SuccessExitStatus=15
KillMode=process
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=60
[Install]
WantedBy=multi-user.target```