/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Nagios og check_mssql eller check_file?
Fra : John Doe


Dato : 01-05-03 08:15

Disse to ting findes jo desværre ikke til Nagios (af én eller anden grund),
men jeg vil meget gerne om jeg kan kontrollere om en MS SQL database er oppe
og om indholdet af en query giver et bestemt resultat.

Jeg har installeret SQSH og deen virker jo glimrende som en MSSQL shell og
jeg kan sagtens eksportere resultatet af min query til en fil eller til
stdout, men hvordan får jeg Nagios til at kontrollere efter indholdet?

Jeg ville jo gerne have en "check_mssql -H $ipnumber -u $username -p
$password -q $query -s $checkstring" eller noget i den stil. Det kunne også
være fint med en "check_file -f $filename -s $checkstring" eller lignende.

Jeg ved ikke om Nagios' plugins skal være perl? Og hvornår bliver en service
meldt nede (hvilket output skal check_? returnere)?

BTW: Jeg køre FreeBSD v4.7 med Nagios v1.0

John



 
 
Peter Makholm (01-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 01-05-03 08:59

"John Doe" <john@doe.com> writes:

> Jeg ved ikke om Nagios' plugins skal være perl? Og hvornår bliver en service
> meldt nede (hvilket output skal check_? returnere)?

Det skal det ikke. Langt de fleste af de plugins der fulgte med den
Nagios jeg har leget med var skrevet i C.

Et nagios-plugin kan være hvad som helst der skriver én linje ud på
STDOUT og returnerer 0, 1, 2 eller 3. En service bliver markeret som i
en kritisk tilstand (for eksempel at den er nede) hvis returværdien er
2.

--
Peter Makholm | What if:
peter@makholm.net | IBM bought Xenix from Microsoft instead of buying
http://hacking.dk | DOS?

John Doe (01-05-2003)
Kommentar
Fra : John Doe


Dato : 01-05-03 09:31

> Et nagios-plugin kan være hvad som helst der skriver én linje ud på
> STDOUT og returnerer 0, 1, 2 eller 3. En service bliver markeret som i
> en kritisk tilstand (for eksempel at den er nede) hvis returværdien er
> 2.

0 = ? (no error?)
1 = ? (warning?)
2 = critical
3 = ?

Men hvordan kunne man så lave et shellscript (bash) som returnere "2", hvis
ordet "MyRecord" strengen ikke findes i filen "/tmp/sqsh_output.txt"?

John



Peter Makholm (01-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 01-05-03 09:46

"John Doe" <john@doe.com> writes:

> 0 = ? (no error?)
> 1 = ? (warning?)
> 2 = critical
> 3 = ?

Ja og 3 er unknown. Prøv at læse dokumentationen, så bliver man ledt
ledt hen til Nagios plug-in development guidelines hvor den slags og
meget mere kan læses.

<http://nagiosplug.sourceforge.net/developer-guidelines.html>

> Men hvordan kunne man så lave et shellscript (bash) som returnere "2", hvis
> ordet "MyRecord" strengen ikke findes i filen "/tmp/sqsh_output.txt"?

exit 2

--
Peter Makholm | Emacs is the only modern general-purpose
peter@makholm.net | operating system that doesn't multitask
http://hacking.dk |

John Doe (01-05-2003)
Kommentar
Fra : John Doe


Dato : 01-05-03 15:48

> > 0 = ? (no error?)
> > 1 = ? (warning?)
> > 2 = critical
> > 3 = ?
>
> Ja og 3 er unknown. Prøv at læse dokumentationen, så bliver man ledt
> ledt hen til Nagios plug-in development guidelines hvor den slags og
> meget mere kan læses.
> <http://nagiosplug.sourceforge.net/developer-guidelines.html>

Og så er der så kommet dette script ud af det:

[START]

#!/usr/local/bin/bash
#
# ./check_mssql server username password sqlquery checkstring

fout="/tmp/sqsh_output.txt";

s1=`/usr/local/bin/sqsh -S $1 -U $2 -P $3 -b -C "$4" | /usr/bin/grep "$5" |
/usr/bin/awk '{print $1}'`

if /bin/test -f $fout; then
f=`/bin/cat $fout`
else
f="0"
fi

if /bin/test "$s1" = "$5"; then
/bin/echo "$s1"
/bin/echo "0" > $fout
exit 0
else
if /bin/test "$f" = "2"; then
/bin/echo "$s1 (exit errorcode 2)"
/bin/echo "2" > $fout
exit 2
else
/bin/echo "$s1 (exit errorcode 1)"
echo `/bin/expr $f + 1` > $fout
exit 1
fi
fi

[STOP]

Det kan selvfølgelig gøres på mange måder, men er dette ikke en nogenlunde
måde at gøre det på? Jeg er ikke helt tilfreds med måden hvorpå den
kontrollere outputtet på, da den ikke er så fleksibel til at lede efter et
vilkårligt output (se awk).

John



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408843
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste