29.06.2011, 02:48 UTC+2

Sie sind nicht angemeldet.

maximale Anzahl Server/Services in einer Servciegroup?

smiler

Anfänger

Beiträge: 38

Anzahl Nagios-Server: 4

Nagios-Version(en): 3.2

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: 750

Anzahl Services: 6800

Betriebssystem(e): linux

Plugin-Version(en): 1.4

Sonstige Addon's: pnp4nagios

1

24.06.2011, 14:01

maximale Anzahl Server/Services in einer Servciegroup?

Hallo,

aufgrund meines gestrigen Problems:

https://nagios-portal.org/wbb/index.p…&threadID=23064

Und des Lösungshinweises Hier:

https://nagios-portal.org/wbb/index.p…&threadID=22924


Nagios scheint eine nicht naeher zu bestimmende grenze in der Anzahl der Mitglieder von Servicegroups zu haben. Ein Überschreiten dieser Grenze führt zu dem nicht hilfreichen Fehler im Nagios Logfile:

Quellcode

1
2
[1308853122] Warning: Return code of 127 for check of service 'cpu load' on host 'zhhapssp-nag002' was out of bounds. Make sure the plugin you're trying to run actually exists.
[1308853122] SERVICE ALERT: zhhapssp-nag002;cpu load;CRITICAL;SOFT;2;(Return code of 127 is out of bounds - plugin may be missing)


Die Grenzen scheinen nicht genau betimmbar zu sein und von verschiedneen Faktoren abzuhängen?
Der Fehler ist im Vorfeld nicht erkennbar, erst im laufenden Betrieb bemerkt man, dass die checks plötzlich nicht mehr laufen.

Weiss jemand, woran diese Grenze liegt und ob man irgendwas im Vorfeld erkennen kann bzw. ob man die Grenze nach oben "schieben kann"

Vor allem bin ich erstaunt, dass es anscheinden niemanden anderen passiert. bei den teilweise doch schon ziemlich grossen Installationen hier im Forum bin ich mit 6000 Objekten in einer Servicegroup, bzw. c.a 5000 im anderen thread doch eher klein, oder benutzt hier niemand Servicegroups?

Viele Grüsse

Thomas

Wolfgang

Erleuchteter

Beiträge: 5 437

Geschlecht: Männlich

Anzahl Nagios-Server: 2

Nagios-Version(en): 3.2.1

Icinga-Version(en): Icinga 1.0.1

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: >70

Anzahl Services: >200

Betriebssystem(e): SLES10

Plugin-Version(en): 1.4.11

Sonstige Addon's: NRPE 2.6, NSCA 2.7, PNP 0.4.14 / 0.6

2

26.06.2011, 18:14

Vermutung: Vielleicht ist es nicht die Anzahl der Objekte, sondern die Länge der Objektbezeichnungen.
Nagios-Doc: Wiki-Format (3.x) oder als (3.0.6)

Icinga-Doc: (de) (en)

PNP-Troubleshooting (de) (en)

bern

Profi

Beiträge: 1 494

Anzahl Nagios-Server: 2-5

Nagios-Version(en): 1-3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 80-200

Anzahl Services: 1400-2000

Betriebssystem(e): Linux

Plugin-Version(en): Whatever I can download, patch, or cobble together myself :-)

Sonstige Addon's: n2rrd, PNP, livestatus

3

27.06.2011, 16:21

Weiss jemand, woran diese Grenze liegt und ob man irgendwas im Vorfeld erkennen kann bzw. ob man die Grenze nach oben "schieben kann"
Wenn die im Tracker geäußerte Vermutung stimmt, nämlich daß beim Aufruf des Plugins der reservierte Platz für die Environment-Variablen platzt bzw. die eigentliche Kommandozeile nicht mehr hineinpaßt, dann hätte das eine Reihe von Konsequenzen:
  • Betroffen sind nur Nagios-Installationen, die (noch) mit "enable_environment_macros=1" laufen (für große Umgebungen eine schlechte Idee)
  • Das Limit wird vom OS festgelegt, gern auch wild unterschiedlich, möglicherweise ist die Methode zu seiner Ermittlung auch nicht wirklich portabel
  • Es gibt keinen festgelegten Weg, wie das OS den Fall abfangen und an Nagios zurückmelden kann (schon die textuelle Interpretation des Exit Codes 127 ist Kaffeesatzleserei, denn der ist ein bash-ismus, eine echte Bourne Shell - etwa auf Solaris - hat keinen besonderen Exit Status für diesen Fall und liefert IIRC eine 255)

sni

Profi

Beiträge: 651

Geschlecht: Männlich

Wohnort: München

Anzahl Nagios-Server: viele

Nagios-Version(en): 2.* / 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: viele

Anzahl Services: viele

Betriebssystem(e): viele

Plugin-Version(en): 1.4.11

Sonstige Addon's: Thruk, ModGearman

4

27.06.2011, 18:00

Entscheident ist:
/usr/include/linux/limits.h:#define ARG_MAX 131072 /* # bytes of args + environ for exec() */

Insofern, ja, betroffen sind nur Installationen die enable_environment_macros=1 gesetzt haben. Das ist dabei natürlich auch unabhängig von der verwendeten Shell.

bern

Profi

Beiträge: 1 494

Anzahl Nagios-Server: 2-5

Nagios-Version(en): 1-3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 80-200

Anzahl Services: 1400-2000

Betriebssystem(e): Linux

Plugin-Version(en): Whatever I can download, patch, or cobble together myself :-)

Sonstige Addon's: n2rrd, PNP, livestatus

5

27.06.2011, 19:47

Um einfach 'mal 'n paar Daten für den ARGH!-Effekt in die Runde zu schmeißen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# uname -srp
SunOS 5.10 i386
# echo $0
-sh
# /foo/bar/baz
/foo/bar/baz: not found
# echo $?
1
# bash
bash-3.00# /foo/bar/baz
bash: /foo/bar/baz: No such file or directory
bash-3.00# echo $?
127
bash-3.00# sed -e '1,43d' -e '57,78d' -e '87q' /usr/include/limits.h
/*
 * ARG_MAX is calculated as follows:
 * NCARGS - space for other stuff on initial stack
 * like aux vectors, saved registers, etc..
 */
#define _ARG_MAX32      1048320 /* max length of args to exec 32-bit program */
#define _ARG_MAX64      2096640 /* max length of args to exec 64-bit program */
#ifdef  _LP64
#define ARG_MAX         _ARG_MAX64      /* max length of arguments to exec */
#else   /* _LP64 */
#define ARG_MAX         _ARG_MAX32      /* max length of arguments to exec */
#endif  /* _LP64 */

/*
 * POSIX conformant definitions - An implementation may define
 * other symbols which reflect the actual implementation. Alternate
 * definitions may not be as restrictive as the POSIX definitions.
 */
#define _POSIX_AIO_LISTIO_MAX           2
#define _POSIX_AIO_MAX                  1
#define _POSIX_ARG_MAX          4096
#ifdef _XPG6
bash-3.00# getconf ARG_MAX
1048320


Hmmmm, Moment 'mal, kann das sein, daß Linux da ein wenig an gespaltener Persönlichkeit leidet ... ?

Quellcode

1
2
3
4
5
6
$ uname -srp
Linux 2.6.31.14-0.8-desktop i686
$ find /usr/include -type f -name '*limit*' -print0 | xargs -0 grep ARG_MAX
/usr/include/linux/limits.h:#define ARG_MAX     131072          /* # bytes of args + environ for exec() */
$ getconf ARG_MAX
2097152

smiler

Anfänger

Beiträge: 38

Anzahl Nagios-Server: 4

Nagios-Version(en): 3.2

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: 750

Anzahl Services: 6800

Betriebssystem(e): linux

Plugin-Version(en): 1.4

Sonstige Addon's: pnp4nagios

6

Gestern, 14:18

Hallo,

Erstmal vielen Dank an Alle für die Beitraege. Unglaublich wie schnelldie Ursache gefunden wurde. Ich bin echt beeindruckt.

Aber wenn ich mir in der Nagios Doku die Umgebungsvariablen anschaue, so sind da doch keine dabei, die eine Liste der Servicegroup member beinhalten, und gerade die Anzahl der Meember der Servicegroup hat dann doch die Fehlermeldung hervorgerufen. Welches macro wird denn da zu gross? Irgendeine Idee?

Und "enable_environment_macros" habe ich wirklich auf 1 stehen. Wir benötigen es aber auch, da wir einige Skripte eingebaut haben, die die Umgebungsvariablen nutzen.
Habt Ihr gar keine externen Skripte, die Nagios Variablen nutzen?


Vielen Dank nochmal für die Beteiligung hier

Viele Grüsse

Thomas

bern

Profi

Beiträge: 1 494

Anzahl Nagios-Server: 2-5

Nagios-Version(en): 1-3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 80-200

Anzahl Services: 1400-2000

Betriebssystem(e): Linux

Plugin-Version(en): Whatever I can download, patch, or cobble together myself :-)

Sonstige Addon's: n2rrd, PNP, livestatus

7

Gestern, 14:58

Zitat von »smiler«

Aber wenn ich mir in der Nagios Doku die Umgebungsvariablen anschaue, so sind da doch keine dabei, die eine Liste der Servicegroup member beinhalten
http://nagios.sourceforge.net/docs/3_0/macrolist.html#servicegroupmembers

Zitat von »smiler«

Habt Ihr gar keine externen Skripte, die Nagios Variablen nutzen?
Nicht mehr. Die Performance-Probleme entstehen ja dadurch, daß Nagios auf Verdacht alle Macros in entsprechende Env Vars stopfen muß. Wenn ein Plugin (oder sonstiges Command) bekanntermaßen auf bestimmte Macros angewiesen ist, kann man genau die explizit im Command übergeben - sei es als Parameter (den das Originalkommando dann, notfalls per Patch/Rewrite, lesen muß) oder mithilfe der (noch zwischen Nagios und Command steckenden) Shell:

Quellcode

1
2
3
4
# sh -c 'LANG=C ls -l v*'
-rw-r--r-- 1 root root 85061 Jun 11  2010 vautour_style.zip
# sh -c 'LANG=de_DE ls -l v*'
-rw-r--r-- 1 root root 85061 11. Jun 2010  vautour_style.zip

smiler

Anfänger

Beiträge: 38

Anzahl Nagios-Server: 4

Nagios-Version(en): 3.2

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: 750

Anzahl Services: 6800

Betriebssystem(e): linux

Plugin-Version(en): 1.4

Sonstige Addon's: pnp4nagios

8

Gestern, 16:02

Hallo,

Zitat von »bern«

Aarrgh!
Wie hab ich das übersehen können? Dabei habe ich nach Servicegroup und member gesucht. Unglaublich...
Danke!

Zitat von »bern«

Nicht mehr. Die Performance-Probleme entstehen ja dadurch, daß Nagios auf Verdacht alle Macros in entsprechende Env Vars stopfen muß. Wenn ein Plugin (oder sonstiges Command) bekanntermaßen auf bestimmte Macros angewiesen ist, kann man genau
die explizit im Command übergeben - sei es als Parameter (den das
Originalkommando dann, notfalls per Patch/Rewrite, lesen muß) oder
mithilfe der (noch zwischen Nagios und Command steckenden) Shell:
Hm...
klingt einleuchtend. Da gäbe es bei uns ja teilweise ganz schön lange Argumentlisten. Da muss ich mal schauen. Das schreibe ich auf jeden Fall mal auf die Wishlist drauf, dass wir die Skripte mal mit dem Fokus auf die Nagiosvariablen anschauen und umschreiben.

Vielen Dank für die Tips!

Viele Grüsse

Thomas

bern

Profi

Beiträge: 1 494

Anzahl Nagios-Server: 2-5

Nagios-Version(en): 1-3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 80-200

Anzahl Services: 1400-2000

Betriebssystem(e): Linux

Plugin-Version(en): Whatever I can download, patch, or cobble together myself :-)

Sonstige Addon's: n2rrd, PNP, livestatus

9

Gestern, 19:07

Zitat von »smiler«

Das schreibe ich auf jeden Fall mal auf die Wishlist drauf, dass wir die Skripte mal mit dem Fokus auf die Nagiosvariablen anschauen und umschreiben.
Nicht vergessen: Sowas muß nicht nur in der eigenen Software drinstecken. (Ich bin beim Umstellen darüber gestolpert, daß n2rrd in irgendeinem bestimmten Spezialfall Infos aus den Env Vars ziehen wollte.)

Ähnliche Themen