Ulogd2 s'arrête

Bonjour,

j’ai un soucis récurrent, j’ai ulogd2 que j’utilise pour les logs de mon parefeu sur un serveur qui s’arrête tout seul.
Je n’arrive pas à trouver pourquoi. Il semble que c’est tous les jours à 0H.
les seuls logs que j’ai:

root@dsrvbull01:~# systemctl status ulogd
○ ulogd2.service - Netfilter Userspace Logging Daemon
     Loaded: loaded (/lib/systemd/system/ulogd2.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/ulogd2.service.d
             └─override.conf
     Active: inactive (dead) since Sun 2022-07-03 00:00:00 CEST; 4 days ago
       Docs: man:ulogd(8)
   Main PID: 2892 (code=exited, status=0/SUCCESS)
        CPU: 5ms

juin 28 13:23:29 dsrvbull01 systemd[1]: Starting Netfilter Userspace Logging Daemon...
juin 28 13:23:29 dsrvbull01 systemd[1]: Started Netfilter Userspace Logging Daemon.
juil. 03 00:00:00 dsrvbull01 systemd[1]: ulogd2.service: Sent signal SIGHUP to main process 2892 (ulogd) on client request.
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: Terminal signal received, exiting
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: syslogemu: reopening logfile
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: calling stop for NFLOG
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: calling stop for IFINDEX
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: calling stop for LOGEMU
juil. 03 00:00:00 dsrvbull01 systemd[1]: ulogd2.service: Deactivated successfully.
root@dsrvbull01:~# systemctl status ulogd2.service
○ ulogd2.service - Netfilter Userspace Logging Daemon
     Loaded: loaded (/lib/systemd/system/ulogd2.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/ulogd2.service.d
             └─override.conf
     Active: inactive (dead) since Sun 2022-07-03 00:00:00 CEST; 4 days ago
       Docs: man:ulogd(8)
   Main PID: 2892 (code=exited, status=0/SUCCESS)
        CPU: 5ms

juin 28 13:23:29 dsrvbull01 systemd[1]: Starting Netfilter Userspace Logging Daemon...
juin 28 13:23:29 dsrvbull01 systemd[1]: Started Netfilter Userspace Logging Daemon.
juil. 03 00:00:00 dsrvbull01 systemd[1]: ulogd2.service: Sent signal SIGHUP to main process 2892 (ulogd) on client request.
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: Terminal signal received, exiting
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: syslogemu: reopening logfile
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: calling stop for NFLOG
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: calling stop for IFINDEX
juil. 03 00:00:00 dsrvbull01 ulogd[2892]: calling stop for LOGEMU
juil. 03 00:00:00 dsrvbull01 systemd[1]: ulogd2.service: Deactivated successfully.
root@dsrvbull01:~# systemctl restart ulogd2.service
root@dsrvbull01:~# systemctl status ulogd2.service
● ulogd2.service - Netfilter Userspace Logging Daemon
     Loaded: loaded (/lib/systemd/system/ulogd2.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/ulogd2.service.d
             └─override.conf
     Active: active (running) since Thu 2022-07-07 13:21:18 CEST; 1s ago
       Docs: man:ulogd(8)
    Process: 1161309 ExecStart=/usr/sbin/ulogd --daemon --uid ulog --pidfile /run/ulog/ulogd.pid (code=exited, status=0/SUCCESS)
   Main PID: 1161310 (ulogd)
      Tasks: 1 (limit: 37719)
     Memory: 532.0K
        CPU: 6ms
     CGroup: /system.slice/ulogd2.service
             └─1161310 /usr/sbin/ulogd --daemon --uid ulog --pidfile /run/ulog/ulogd.pid

juil. 07 13:21:18 dsrvbull01 systemd[1]: Starting Netfilter Userspace Logging Daemon...
juil. 07 13:21:18 dsrvbull01 systemd[1]: Started Netfilter Userspace Logging Daemon.
root@dsrvbull01:~# cat /var/log/syslog | grep -i ulog
Jul  3 00:00:00 dsrvbull01 systemd[1]: ulogd2.service: Sent signal SIGHUP to main process 2892 (ulogd) on client request.
Jul  3 00:00:00 dsrvbull01 ulogd: Terminal signal received, exiting
Jul  3 00:00:00 dsrvbull01 ulogd: syslogemu: reopening logfile
Jul  3 00:00:00 dsrvbull01 ulogd: calling stop for NFLOG
Jul  3 00:00:00 dsrvbull01 ulogd: calling stop for IFINDEX
Jul  3 00:00:00 dsrvbull01 ulogd: calling stop for LOGEMU
Jul  3 00:00:00 dsrvbull01 systemd[1]: ulogd2.service: Deactivated successfully.

Bonjour,

Tu n’aurais pas une tâche cron, voire un timer systemd, quelque part, qui pourrait expliquer le SIGHUP [...] on client request ?

Je ne pense pas qu’on voie beaucoup plus que dans le syslog, mais est-ce qu’il y a des choses intéressantes dans journalctl -u ulogd ?

la seule chose que j’ai trouvé c’est le logrotate:

/var/log/ulog/*.log /var/log/ulog/*.pcap {
    missingok
    compress
    delaycompress
    sharedscripts
    create 640 ulog adm
    postrotate
        if [ -d /run/systemd/system ] && command systemctl >/dev/null 2>&1 && systemctl is-active --quiet ulogd2.service; then
            systemctl kill --kill-who main --signal=SIGHUP ulogd2.service
        else
            invoke-rc.d ulogd2 reload > /dev/null
        fi
    endscript
}

Ah, on dirait que tu tiens le coupable !

Vérifie peut-être quand même que c’est bien ça, si logrotate est effectivement activé à 00:00 (ça doit être la ligne avec /etc/cron.daily dans /etc/crontab, et il faut aussi prendre en compte que c’est anacron qui gère, donc il ne faut pas toujours se fier à 100% à l’horodate de la crontab).

C’est bizarre comme postrotate, ce fichier de conf logrotate a été installé avec le paquet ulogd2 ?
De ce que j’en comprends, mais je peux me tromper, la ligne systemctl kill --kill-who main --signal=SIGHUP ulogd2.service pourrait tout aussi bien être remplacée par un bête systemctl reload ulogd2.service

Dans ce genre là :

/var/log/ulog/*.log /var/log/ulog/*.pcap {
    missingok
    compress
    sharedscripts
    create 640 ulog adm
    postrotate
	invoke-rc.d ulogd2 reload > /dev/null
    endscript
}

Mais la partie comprises dans le if force l’arrêt si jamais il est utilisé par un script ou autre, c’est pas un mal non plus de prendre soin qu’il ne bloque pas tous simplement pendant la rotation du log en perdant le fil.

Oui je suis d’accord, je parlais de modifier l’action qui suit le if ... then, pour donner quelque chose comme ça:

        if [ -d /run/systemd/system ] && command systemctl >/dev/null 2>&1 && systemctl is-active --quiet ulogd2.service; then
            systemctl reload ulogd2.service
        else
            invoke-rc.d ulogd2 reload > /dev/null
        fi

Le reload prendra t’il le pas sur l’exécution d’un script bash ou autre, je suis pas sûr, là au moins c’est sûr et certains.

Je dirais à tester finalement ça ne fera pas plus de mal.