Friday, September 3rd 2010, 11:11am UTC+2

You are not logged in.

  • Login
  • Register

RomanK

Beginner

Posts: 30

Birthday: Oct 28th 1983 (26)

Gender: male

Location: Berlin

Occupation: Fachinformatiker Systemintegration

Number of Nagios server: 2

Nagios Versions: 3.0rc1

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts: ~30

Number of services: ~160

OS: CentOS 5

Plugin Versions: 1.4.10

Other Addons: PNP, dokuWiKi

1

Friday, October 19th 2007, 2:15pm

Event Handlers heute mal dynamisch

Hallo Leute,

ich hatte mich in letzter Zeit sehr stark mit den Event Handlers beschäftigt und bin darauf gestoßen, dass ich immer für jeden Event Handler ein eigenes Script schreiben müsste. Da ich etwas schreibfaul bin :) habe ich mir eine Erleichterung des ganzen gemacht und würde die gerne mit euch teilen.

Als erstes wie immer der Hinweis, dass ich keine Gewährleitung für die Funktionalität des Script gebe. Bei meinem Server tut es seinen Dienst.

Das Script ist für NRPE auf Linux ausgelegt. (Sollte aber auch für Windows laufen. Wenn das jemand testet und hier die Infos Postet währe ich sehr dankbar)

Lange Rede kurzer Sinn hier das HowTo:

Die Definition des Befehls in commands.cfg:

Source code

1
2
3
4
define command{
	command_name	do_event
	command_line	/usr/local/nagios/libexec/event/run_command  $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$ $ARG1$
	}


Das Script "run_command" welches bei mir im Ordner "/usr/local/nagios/libexec/event/" liegt selbst (kann natürlich nach belieben geändert werden):

Source code

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
#!/bin/sh
case "$1" in

OK)
	;;

WARNING)
	;;

UNKNOWN)
	;;

CRITICAL)

	case "$2" in
	SOFT)
			
		case "$3" in
			
		3)
		echo -n "Restarting Service (3rd soft critical state)..."
		/usr/local/nagios/libexec/check_nrpe -H "$4" -c "$5" 
			;;
			esac
		;;
	HARD)
		echo -n "Restarting Service..."
		/usr/local/nagios/libexec/check_nrpe -H "$4" -c "$5" 
		;;
	esac
	;;
esac
exit 0

Nun kann man im Host oder Service Teil folgenden Befehl aufrufen:

Source code

1
event_handler do_event!restart_httpd

In diesem Beispiel ist die Definition von dem Event Handler im Service Teil und ruft über check_nrpe auf dem überwachten Server folgendes auf:

Source code

1
command[restart_httpd]=sudo /etc/init.d/httpd restart

Achtung: für dieses Kommando muss der User (in der Regel) nagios in der sudoers Liste stehen und den Befehl ohne Passwort ausführen dürfen. Nachzulesen unter [2].

Kurze Erklärung:

Ich habe das Script von der Doku [1] von Nagios soweit verändert, dass ich nicht den genauen Befehl eingeben muss, sonder nur über das erste Argument (in diesem Beispiel „!restart_httpd“) dem Script den Befehl übergebe welcher auf dem Remote Host definiert ist. Damit kann ich immer den gleichen Event-Handler-Befehl aufrufen und einen anderen Befehl übergeben. Da die Befehle auf dem Remote Host definiert sind funktioniert das bei mir wunderbar.

Quellen:
[1] http://nagios.sourceforge.net/docs/2_0/eventhandlers.html
[2] http://www.gratisoft.us/sudo/man/sudoers.html

Sollte jemand Fehler oder Verbesserungen finden: Her damit :baby:

Gruß Roman

This post has been edited 1 times, last edit by "RomanK" (Oct 19th 2007, 2:26pm)


raheem

Beginner

Posts: 10

Number of Nagios server: 1

Nagios Versions: 3.0b7

OS: Suse 10.1 x64

2

Thursday, November 22nd 2007, 10:51am

Hallo,
ich bin noch ganz neu in dem Gebiet, auch was Linux betrifft :O
jedenfalls klappt das bei mir nicht

ich versuche den Apache Dienst am Windows Server zu starten
hier der auszug aus der nagios.log file

Source code

1
2
3
[1195724314] SERVICE ALERT: bvs-web01;Apache1;CRITICAL;SOFT;1;apache2: Stopped
[1195724314] SERVICE EVENT HANDLER: bvs-web01;Apache1;(null);(null);(null);do_event!start_apache
[1195724314] Warning: Attempting to execute the command "/usr/local/nagios/libexec/event/run_command  CRITICAL SOFT 1 10.40.2.4 start_apache" resulted in a return code of 126.  Make sure the script or binary you are trying to execute actually exists...


in der command.cfg file hab ich das genauso eingefügt was in dem HowTo steht
auch die run_command datei ist erstellt und liegt in dem Ordner

in der Hosts datei ist folgendes eingetragen

Source code

1
2
3
4
5
6
7
8
define service{
      use			generic-service
      host_name		bvs-web01
      service_description	Apache1
      check_command	check_nt!SERVICESTATE!-d SHOWALL -l apache2
      event_handler do_event!start_apache
      notification_options  w,c,r
}

und in der nrpe.cfg file beim Client

Source code

1
command[start_apache]=C:\NSClient++\nrpe\bin\apache.bat


es funktioniert wenn ich den Befehl manuell eingebe also mit "./check_nrpe -H bvs-web01 -c start_apache"

Kann mir wer dabei bitte helfen? :(

This post has been edited 2 times, last edit by "raheem" (Nov 22nd 2007, 10:55am)


Andurin

Super Moderator

3

Thursday, November 22nd 2007, 12:55pm

Hallo Rahem,

die Meldung aus der nagios.log spricht doch eigentlich schon Bände.

Ich vermute mal, dass das Script bei dir nicht unter:

/usr/local/nagios/libexec/event/run_command

zu finden ist.

Source code

1
ls -la /usr/local/nagios/libexec/event/run_command

sollte hier der erste Weg sein.

EDIT: Das Script sollte ebenfalls für deinen Nagios User ausführbar sein.

-
Hendrik
Wenn Sie das hier lesen, bin ich schon nicht mehr da... schön war die Ära, toll die Zeiten, super die Kontakte aber für den Moment bin ich raus.

raheem

Beginner

Posts: 10

Number of Nagios server: 1

Nagios Versions: 3.0b7

OS: Suse 10.1 x64

4

Thursday, November 22nd 2007, 1:23pm

Hi Andurin,
doch das Script liegt in dem Ordner

Source code

1
-rwxr-xr-x 1 nagios nagios 411 Nov 22 10:10 /usr/local/nagios/libexec/event/run_command

das mit der Berechtigung hab ich im nachhinein gelesen und habs nun geändert
trotzdem hat das nicht geholfen, die Fehlermeldung ist dieselbe :(

This post has been edited 1 times, last edit by "raheem" (Nov 22nd 2007, 1:23pm)


RomanK

Beginner

Posts: 30

Birthday: Oct 28th 1983 (26)

Gender: male

Location: Berlin

Occupation: Fachinformatiker Systemintegration

Number of Nagios server: 2

Nagios Versions: 3.0rc1

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts: ~30

Number of services: ~160

OS: CentOS 5

Plugin Versions: 1.4.10

Other Addons: PNP, dokuWiKi

5

Saturday, November 24th 2007, 6:52pm

Hallo raheem,

gib mal als User Nagios folgendes ein:

Source code

1
/usr/local/nagios/libexec/event/run_command  CRITICAL SOFT 1 10.40.2.4 start_apache


und poste bitte die Ausgabe und auch gleich deine "run_command"

Gruß Roman

raheem

Beginner

Posts: 10

Number of Nagios server: 1

Nagios Versions: 3.0b7

OS: Suse 10.1 x64

6

Monday, November 26th 2007, 8:23am

Hallo RomanK,
also ich bekomme diese fehlermeldung wenn ich den Befehl ausführe

Source code

1
-bash: /usr/local/nagios/libexec/event/run_command: /bin/sh^M: bad interpreter: Datei oder Verzeichnis nicht gefunden


EDIT: hab ich jetzt gelöst indem ich die datei ohne CR+LF(was auch immer das heißt) speicher, muß dazu noch sagen das ich das alles von einem Windows PC mache und dann rüberkopiere
also läuft jetzt alles bestens :D

vielen Dank

This post has been edited 3 times, last edit by "raheem" (Nov 26th 2007, 10:53am)