nsca: Kein daemon-start at boottime, obwohl startlink ok!?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

nsca: Kein daemon-start at boottime, obwohl startlink ok!?

Beitrag von whiizy » 03.10.2012 00:56:20

Hallo,

ich bin etwas ratlos, warum ein daemon zur Boot-Zeit nicht startet, obwohl sein Script '/etc/init.d/nsca start' (Nagios Service Check Acceptor) an der Konsole anstandslos funktioniert. Konkret geht es zwar um nsca 2.9.1-2 aus Debian/wheezy, aber die Frage darf ruhig auch allgemeiner verstanden werden. Irgendwelche Schalter in einer /etc/default/nsca gibt es nicht, diese existiert nichtmal. Der Startlink für den Runlevel 2 ist auch vorhanden:

Code: Alles auswählen

/etc/rc2.d# ls -la *nsca*
lrwxrwxrwx 1 root root 14 Oct  1 22:41 S18nsca -> ../init.d/nsca
In den Logfiles ist kein Fehlschlag oder versuchter Start des nsca daemon beim boot zu sehen, wie allerdings bei einem Handstart im syslog:

Code: Alles auswählen

/etc/init.d/nsca start
syslog:
Oct  3 00:48:20 dallas nsca[6742]: Starting up daemon
Oct  3 00:48:20 dallas nsca[6742]: Listening for connections on port 5667
Ich behelfe mich nun erstmal damit, den nsca über einen Eintrag in der /etc/rc.local (/etc/init.d/nsca start) zu starten, dann geht es seltsamerweise. - Idee?

Gruß

DeletedUserReAsG

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von DeletedUserReAsG » 03.10.2012 01:15:10

Du solltest dich mit dem aktuellen init-System vertraut machen. Die rcX.d sind mehr oder weniger nur noch Deko.

cu,
niemand

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 10:20:32

Moin,
Du meinst sicherlich, daß da das neuere "dependency-based booting" und insserv eine Rolle spielen könnten. Damit bin ich leider noch nicht so vertraut, aber ich sehe da bislang keine Verletzung von Abhängigkeiten, die den boot von nsca verhindern sollten. Im .depend.start taucht nsca auf ...

Code: Alles auswählen

/etc/init.d/.depend.start:

TARGETS = killprocs motd rpcbind nfs-common rsyslog munin munin-node apache2 icinga exim4 nsca atd dbus ssh acpid cron ntp bootlogs single stop-bootlogd rc.local rmnologin
INTERACTIVE = apache2
apache2: rsyslog
icinga: rsyslog
exim4: rsyslog
nsca: rsyslog
atd: rsyslog
dbus: rsyslog
ssh: rsyslog
acpid: rsyslog
cron: rsyslog
ntp: rsyslog
single: killprocs bootlogs motd
stop-bootlogd: icinga rsyslog exim4 rpcbind munin munin-node nsca nfs-common atd apache2 bootlogs motd dbus ssh acpid cron ntp
rc.local: icinga rsyslog exim4 rpcbind munin munin-node nsca nfs-common atd apache2 bootlogs motd dbus ssh acpid cron ntp
rmnologin: icinga rsyslog exim4 rpcbind munin munin-node nsca nfs-common atd apache2 bootlogs motd dbus ssh acpid cron ntp
... und der header der /etc/init.d/nsca sieht auch nicht anders aus, als bei einem anderen daemon, wie z.B. icinga, welcher jedoch korrekt beim Boot startet:

Code: Alles auswählen

/etc/init.d/nsca
#!/bin/sh

### BEGIN INIT INFO
# Provides:          nsca
# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop the Nagios Service Check Acceptor (nsca) daemon
### END INIT INFO
Könnte mich eventuell noch jemand etwas genauer in die richtige Richtung schubsen?

Gruß

Benutzeravatar
pil
Beiträge: 629
Registriert: 30.04.2002 15:47:27

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von pil » 03.10.2012 12:34:39

Wenn das Script beim Booten nicht ausgeführt wird, kann ich mir in diesem Fall nur vorstellen, dass die unter "Required-Start" im header genannten Bedongungen nicht vollständig erfüllt sind, d.h. irgend etwas, was dort definiert ist, wurde nicht ausgeführt.

Wofür die Variablen - geannt facilities - $local_fs $remote_fs etc. stehen, findest du hier

http://wiki.debian.org/LSBInitScripts/


Du kannst versuchen,

update-rc.d -n nsca defaults

aufzurufen. Mit dem Schalter -n wird keine Aktion ausgeführt, nur mögliche Warnungen ausgegeben und angezeigt, was passieren würde.

Ansonsten lässt sich das schwer debuggen.

(In meinen Augen ist dieses modifizierte sysvinit (die Paralellisierung der init-Scripts) ohnehin Murks - genauer: Suse-Murks, leider von Debian übernommen).

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 14:49:52

Hallo pil,
danke für Deine Tips, haben aber auch nichts Auffälliges zu Tage gefördert. Wenn ungewohnterweise nichts in den Logfiles steht, ist ein debugging echt blöd, da haste Recht (ist dependency-based boot echt so intransparent?). Ich habe auch nochmal dpkg-reconfigure nsca aufgerufen, aber das debconf veranlasst nur den Start als eigenständiger daemon. Eine Gegenprobe auf einem zweiten PC-System verhält sich im Übrigen genauso, nsca startet dort auch nicht nach dem Hochfahren. Bug oder feature? Ich werde wohl einen Bugreport machen müssen.

Gruß

Benutzeravatar
pil
Beiträge: 629
Registriert: 30.04.2002 15:47:27

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von pil » 03.10.2012 17:49:27

Hast du irgend etwas in /etc/insserv/overrides/ eingetragen?
Was ich allerdings nicht annehme.
Dort eingetragene header überschreiben jene in /etc/init.d/
niemand hat geschrieben:Die rcX.d sind mehr oder weniger nur noch Deko.
Tja, Makulatur sind die Nummern der Links in /etc/rcX.d - also z.B. S18nsca -> ../init.d/nsca. Das aber nur, wenn die "Paralellisierung" (genannt: "makefile-style concurrent boot" ) aktiviert ist. Und die ist per default aktiviert. Wenn sie nicht aktiviert ist, haben die Nummern sofort wieder die alte Bedeutung, nämlich die genaue Reihenfolge der Ausführung der Init-Scripts festzulegen.

Die Paralellisierung - die gar keine echte Paralellisierung ist - wird scheinbar kaum ausgeschaltet, weil man Angst davor hat, dass das Booten dann noch langsamer wird. Wenn ich mal Lust und Zeit habe, werde ich den Unterschied - oder Nicht-Unterschied - mal testen.

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 18:32:17

Keine overrides vorhanden, stimmt. - Was ich wie gesagt widersprüchlich finde, ist, daß die boot-dependencies nach meiner Auffassung erfüllt sein müssten, wenn andere daemons mit demselben header-block beim Boot erfolgreich starten. Hier als Beispiel icinga im Gegensatz zu nsca:

Code: Alles auswählen

 /etc/init.d/icinga:

### BEGIN INIT INFO
# Provides:          icinga
# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: icinga host/service/network monitoring and management system
# Description:       icinga is a monitoring and management system for hosts, services and networks.
### END INIT INFO


/etc/init.d/nsca:

### BEGIN INIT INFO
# Provides:          nsca
# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop the Nagios Service Check Acceptor (nsca) daemon
### END INIT INFO
Gruß

Benutzeravatar
pil
Beiträge: 629
Registriert: 30.04.2002 15:47:27

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von pil » 03.10.2012 18:50:17

Hmm, schau dir mal oben den Inhalt deiner Datei .depend.start an. Da kommt icinga insgesamt 5x vor und nsca nur 1x. Leider gibt es zu diesen .depend-Dateien kaum Dokumentation, vermutlich sollte man sie auch nicht manuell editieren. Die werden von insserv generiert. Möglicherweise ist etwas mit insserv nicht in Ordnung.

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 19:19:45

... habe ich gemacht, allerdings komme ich auf 5:5, auch kein signifikanter Unterschied ;)
Wenn ich die manpage von insserv richtig verstehe, soll man mit insserv eigentlich nichts zu tun bekommen, denn das empfohlene Frontend sei (weiterhin) update-rc.d:
"It is not recommended to execute insserv directly unless you know exactly what you're doing, doing so may render your boot system inoperable. update-rc.d is the recommended interface for managing init scripts."
Gruß

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von cosmac » 03.10.2012 20:27:12

hi,

probier mal:

Code: Alles auswählen

dpkg-reconfigure debconf  # priority "low" einstellen
dpkg-reconfigure nsca
dabei fragt er mich etwas in der Richtung, ob nsca automatisch gestartet werden soll.
Beware of programmers who carry screwdrivers.

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 20:50:10

Auch nicht. Aber mal eine Gegenfrage: Startet der daemon denn bei Dir?

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von r900 » 03.10.2012 20:51:55

cosmac hat geschrieben: probier mal:

Code: Alles auswählen

dpkg-reconfigure debconf  # priority "low" einstellen
dpkg-reconfigure nsca
Einfacher geht es so:

Code: Alles auswählen

dpkg-reconfigure -plow nsca

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von r900 » 03.10.2012 21:33:30

Um das Problem etwas einzugrenzen könntest du mal an den Anfang des init-scripts nach "### END INIT INFO" eine Zeile einfügen.

Code: Alles auswählen

### END INIT INFO

touch /nsca_$1
Vergiss aber nicht den manuellen Start aus rc.local zu entfernen. Wenn dann nach dem Neustart die (natürlich leere) Datei /nsca_start existiert bist du schon mal einen Schritt weiter.

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 22:12:11

Gute Idee,
die Testdatei wurde beim Hochfahren erzeugt ...

# ls -la /nsca*
-rw-r--r-- 1 root root 0 Oct 3 22:03 /nsca_start
-rw-r--r-- 1 root root 0 Oct 3 22:02 /nsca_stop

... und nebenbei auch bereits beim Herunterfahren, wie zu sehen :)

Das ist doch schonmal ein Fortschritt! Das init-script wird also beim Booten zwar mit start aufgerufen, aber der nsca daemon läuft später nicht (mehr?) . Hm ...

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von r900 » 03.10.2012 22:22:50

Okay also das Script wird gestartet.. Dann bastel dir eine Art logging im Skript:

Code: Alles auswählen

### END INIT INFO

set -x
exec >/nsca_$1.log 2>&1
Das gibt alle ausgeführten Befehle aus und leitet stdout und stderr in /nsca_start.log um.

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 23:19:03

Ah, der Wald lichtet sich ....
Wenn ich Dein script-debugging anwende, sieht man, daß das init-script mit exit 1 aussteigt:

Code: Alles auswählen

/nsca_start.log:
+ PATH=/sbin:/bin:/usr/sbin:/usr/bin
+ DAEMON=/usr/sbin/nsca
+ NAME=nsca
+ DESC=Nagios Service Check Acceptor
+ CONF=/etc/nsca.cfg
+ OPTS=--daemon -c /etc/nsca.cfg
+ PIDFILE=/var/run/nsca.pid
+ test -f /usr/sbin/nsca
+ [ -x /lib/lsb/init-functions ]
+ . /lib/lsb/init-functions
+ run-parts --lsbsysinit --list /lib/lsb/init-functions.d
+ [ -r /lib/lsb/init-functions.d/20-left-info-blocks ]
+ . /lib/lsb/init-functions.d/20-left-info-blocks
+ FANCYTTY=
+ [ -e /etc/lsb-base-logging.sh ]
+ true
+ [ -f /etc/default/nsca ]
+ confget -f /etc/nsca.cfg pid_file
+ PIDFILE=/var/run/icinga/nsca.pid
+ [ -z /var/run/icinga/nsca.pid ]
+ [ ! -d /var/run/nagios ]
+ mkdir -p /var/run/nagios
+ exit 1
Das init-script arbeitet an jenem Ausstiegspunkt gerade das hier ab:

Code: Alles auswählen

/etc/init.d/nsca:
[...]
if [ ! -d "/var/run/nagios" ]; then
    mkdir -p /var/run/nagios || log_failure_msg "couldn't create /var/run/nagios"
    exit 1
fi
Der Pfad /var/run/nagios existiert offenbar zu diesem Zeitpunkt des Bootens noch nicht und wird dann mit mkdir angelegt - trotzdem wird das script mit exit 1 abgebrochen. Wenn ich dann nach dem späteren Einloggen erneut /etc/init.d/nsca aufrufe, existiert der Pfad durch den vorherigen init bereits und der start kann dann (mit exit 0) durchlaufen. So interpretiere ich es jedenfalls. Ein Zusatzproblem ist offenbar, daß nach dem Herunterfahren dieser Pfad (/var/run/nagios) ja auch wieder verschwindet, denn er ist an ein temporäres Speicher-Filesystem (tmpfs) gemountet:

Code: Alles auswählen

ls -la /var/run
lrwxrwxrwx 1 root root 4 Jan  5  2012 /var/run -> /run

# mount
[...]
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=207464k,mode=755)
Also trifft man bei jedem Hochfahren erneut auf die Problematik. Aber wie jetzt sauber ändern? Einfach das 'exit 1' auskommentieren??

Danke für die super Unterstützung schonmal an dieser Stelle!

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 03.10.2012 23:39:25

Noch schnell ein P.S.
Wenn ich 'exit 1' schlicht auskommentiere, startet nsca wie gewünscht! Das init-script läuft an der entsprechenden Stelle dann weiter:

Code: Alles auswählen

/nsca_start.log:
[...]
+ [ ! -d /var/run/nagios ]
+ mkdir -p /var/run/nagios
+ log_daemon_msg Starting Nagios Service Check Acceptor nsca
+ [ -z Starting Nagios Service Check Acceptor ]
+ log_daemon_msg_pre Starting Nagios Service Check Acceptor nsca
+ log_use_fancy_output
[...]

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von Cae » 03.10.2012 23:48:37

Das Problem dürfte nur sein, dass du dann ein /var/run/nagios/ auf der Festplatte hast, und ein /var/run/ im tmpfs, welches darüber gemountet ist. Jedenfalls muss das Startskript nach dem tmpfs-Mount ausgeführt werden.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 04.10.2012 00:05:42

Ich würde einmal davon ausgehen, daß mounts - auch die von tmpfs - sehr früh am Beginn des Boot-Prozesses stehen. So startet nsca z.B. sogar erst nach icinga und jenes hat auch Pfade unter /var/run/:

Code: Alles auswählen

Oct  3 23:31:17 dallas icinga: Icinga 1.7.1 starting... (PID=2444)
Oct  3 23:31:17 dallas icinga: Local time is Wed Oct 03 23:31:17 CEST 2012
Oct  3 23:31:17 dallas icinga: LOG VERSION: 2.0
Oct  3 23:31:17 dallas icinga: Finished daemonizing... (New PID=2445)
Oct  3 23:31:17 dallas icinga: Event loop started...
Oct  3 23:31:17 dallas nsca[2470]: Starting up daemon
Oct  3 23:31:17 dallas nsca[2470]: Listening for connections on port 5667
Ich sehe es im Moment als ein Problem des init-scriptes /etc/init.d/nsca.

Gruß

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von r900 » 04.10.2012 00:11:33

Cae hat geschrieben:Das Problem dürfte nur sein, dass du dann ein /var/run/nagios/ auf der Festplatte hast, und ein /var/run/ im tmpfs, welches darüber gemountet ist. Jedenfalls muss das Startskript nach dem tmpfs-Mount ausgeführt werden.
Nein das ist tatsächlich ein Bug im Skript. Guck mal genau hin:

Code: Alles auswählen

if [ ! -d "/var/run/nagios" ]; then
    mkdir -p /var/run/nagios || log_failure_msg "couldn't create /var/run/nagios"
    exit 1
fi
So wie es da steht ergibt es doch gar keinen Sinn. Wenn das Verzeichnis nicht existiert wird es erstellt. Und dann wird egal ob das Verzeichnis erstellt werden konnte oder nicht das Skript mit exit 1 verlassen. Wenn das Verzeichnis erstellt werden konnte sollte das Skript doch ganz normal weiter durchlaufen. log_failure und exit müssen gruppiert werden oder es muss ein zusätzliches if mit rein.

Code: Alles auswählen

if [ ! -d "/var/run/nagios" ]; then
    mkdir -p /var/run/nagios || { log_failure_msg "couldn't create /var/run/nagios"; exit 1; }
fi
Wer hat Lust einen bug zu melden? :)

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von whiizy » 04.10.2012 18:16:42

Besten Dank, r900,
Deine Änderung an /etc/init.d/nsca löst das Problem. - Auf [SOLVED] setzen kann ich den Betreff leider nicht, da die maximale Zeilenlänge überschritten wird.

Benutzeravatar
pil
Beiträge: 629
Registriert: 30.04.2002 15:47:27

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von pil » 04.10.2012 19:29:42

pil hat geschrieben:
Die Paralellisierung - die gar keine echte Paralellisierung ist - wird scheinbar kaum ausgeschaltet, weil man Angst davor hat, dass das Booten dann noch langsamer wird. Wenn ich mal Lust und Zeit habe, werde ich den Unterschied - oder Nicht-Unterschied - mal testen.
Nur für jene, die es interessiert:

Ich habe diesen Test soeben durchgeführt. Das Ergebnis ist unerwartet: Die Abarbeitung der Init-Scripts im 'normalen' Modus - also ohne 'concurrent boot' erfolgt 2 bis 4 Sekunden schneller als im 'paralellen' Modus. Um diese Zeit also lässt sich der Bootvorgang auf einfachste Weise beschleunigen.

Man benötigt lediglich folgende Datei

Code: Alles auswählen

.legacy-bootordering
in /etc/init.d/. Geht also wirklich einfach und lässt sich durch Entfernung der Datei auch jederzeit rückgängig machen.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: nsca: Kein daemon-start at boottime, obwohl startlink ok

Beitrag von r900 » 05.10.2012 17:42:32

whiizy hat geschrieben:Besten Dank, r900,
Deine Änderung an /etc/init.d/nsca löst das Problem. - Auf [SOLVED] setzen kann ich den Betreff leider nicht, da die maximale Zeilenlänge überschritten wird.
Gern geschehen. Sei doch noch so nett und melde den Fehler: http://www.debian.org/Bugs/Reporting

Antworten