[Nagios] Exit-code van een powershell script implementeren

Pagina: 1
Acties:

Vraag


  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
Ik realiseer me dat dit een oud topic is, maar waarom zou ik een nieuw topic aanmaken als er al eentje bestaat :)

Sinds een paar weken ben ik me aan het verdiepen in Nagios, en dat gaat al erg goed. De basics van het monitoren van servers/computers lukken me al aardig, bv dingen als drive space, service up/down enz zijn al gelukt mbv de NSclient++

Nu struikel ik echter nu ik niet-standaards wil monitoren. Het komt er op neer dat ik de exit-code van een powershell script in Nagios wil hebben (Normal/Warning/Critical) en dat zou moeten kunnen, als ik dit soort websites mag geloven.

Wat ik nu heb:
  • NSClient++ draait, service is up, geeft standaard checks goed door aan Nagios.
  • Het PS-script van die website waar ik hierboven naar link staat in C:\Program Files\NSClient++\scripts met als naam nagios_powershell_test.ps1
  • Ik heb in de nsclient.ini ingevoegd:
    code:
    1
    2
    3
    
    [/settings/external scripts/scripts]
    ;my_script description
    my_script = cmd /c echo scripts\nagios_powershell_test.ps1; exit($LastExitCode)

    Dit omgebouwd van het voorbeeld zoals het me goed leek. Ook CheckExternalScripts op enabled gezet. Na opslaan de NSclient++ service geherstart, en Nagios ook.
En daarna loop ik vast.... Ik begrijp niet wat ik op de Nagios server in moet stellen om de output van het PS-script zichtbaar te maken. Ik neem aan dat ik zo'n define service { } item aan moet maken in de windows.cfg (waarvan ik er al een heel stel heb gemaakt voor de standaard checks) maar ik kan nergens vinden hoe ik dat exact moet doen.

Weet iemand a) of wat ik gedaan heb goed is en b) hoe ik dit als monitoring-item zichtbaar maak in Nagios? Ik zit al twee dagen af en aan te googlen, maar ik kan geen stap-voor-stap tutorial vinden die het van begin tot einde uitlegt....

Xtool D1 10w laser cutter - IoT moet nooit op internet

Alle reacties


Acties:
  • +1 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

pak als voorbeeld bv https://exchange.nagios.o...-Expiration-Check/details

Het commando word uitgevoerd en de output word opgedeeld in 1 of 2 variable(n) die variable($max...) kan je weer verder programmeren dat hij die in nagios iets doet.

maar wat je wilt monitoren zit ook vaak in snmp/wmi of batch scripts er zijn vaak meerdere wegen naar de oplossing

Tja vanalles


Acties:
  • +1 Henk 'm!

  • rens-br
  • Registratie: December 2009
  • Laatst online: 10:00

rens-br

Admin IN & Moderator Mobile
@JeroenH ik heb toch even je vraag afgeplitst vanuit Nagios Monitoring Service. Tenzij het ervaringen en discussie topics zijn, heeft het aanmaken van een nieuw topic eigenlijk altijd de voorkeur. Komt ook de zichtbaarheid en aantal reacties ten goede.

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
vso schreef op woensdag 20 september 2023 @ 14:08:
pak als voorbeeld bv https://exchange.nagios.o...-Expiration-Check/details

Het commando word uitgevoerd en de output word opgedeeld in 1 of 2 variable(n) die variable($max...) kan je weer verder programmeren dat hij die in nagios iets doet.
Dank, maar in dit voorbeeld staat niet omschreven wat ik exact in Nagios moet doen om het als check in te voeren...

Wat ik bedoel is dit. Een simpele check om het geheugengebruik te monitoren heb ik als volgt in de windows.cfg:

code:
1
2
3
4
5
6
7
define service {

    use                     generic-service
    host_name               PC060491
    service_description     Memory Usage
    check_command           check_nt!MEMUSE!-w 80 -c 90
}


...maar na dagen googlen en dingen proberen kom ik er gewoon niet achter wat ik moet doen om de output van een PS-script op een dergelijke wijze in te voegen.
maar wat je wilt monitoren zit ook vaak in snmp/wmi of batch scripts er zijn vaak meerdere wegen naar de oplossing
Ik heb een paar non-standaard dingen die ik wil monitoren, dus heel generiek de output van een PS-script kunnen monitoren (normal/warning/cricital) is wat ik wil kunnen. En ik heb het idee dat het niet zo moelijk is, maar ik kan de informatie gewoon nergens vinden.

Xtool D1 10w laser cutter - IoT moet nooit op internet


  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

JeroenH schreef op woensdag 20 september 2023 @ 14:39:
[...]


Dank, maar in dit voorbeeld staat niet omschreven wat ik exact in Nagios moet doen om het als check in te voeren...

Wat ik bedoel is dit. Een simpele check om het geheugengebruik te monitoren heb ik als volgt in de windows.cfg:

code:
1
2
3
4
5
6
7
define service {

    use                     generic-service
    host_name               PC060491
    service_description     Memory Usage
    check_command           check_nt!MEMUSE!-w 80 -c 90
}


...maar na dagen googlen en dingen proberen kom ik er gewoon niet achter wat ik moet doen om de output van een PS-script op een dergelijke wijze in te voegen.


[...]


Ik heb een paar non-standaard dingen die ik wil monitoren, dus heel generiek de output van een PS-script kunnen monitoren (normal/warning/cricital) is wat ik wil kunnen. En ik heb het idee dat het niet zo moelijk is, maar ik kan de informatie gewoon nergens vinden.
het is niet moeilijk als je bedenkt dat elk commando wat 1 resultaat geeft als output .. bij voorkeur een getal

als het goed is kan je in de plugin directory gewoon een .bat of .ps1 neerzetten

kan zo simpel zijn als test.bat
code:
1
echo "70"


nu roep je op afstand test.bat -w70 -c 80 (het checkcommand) aan .. wel even uitvinden hoe je dat handmatig af kan trappen ...

verander dan in test .bat naar 80 en doe het nog een keer vanaf de server.

als dat lukt kan je naar stap 2

als dit lukt is de stap naar wat je wilt zien via een powershell / batch script niet zo'n grote stap meer toch ?

Tja vanalles


Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
vso schreef op woensdag 20 september 2023 @ 18:47:
als het goed is kan je in de plugin directory gewoon een .bat of .ps1 neerzetten

kan zo simpel zijn als test.bat
code:
1
echo "70"
OK, bovenstaande heb ik gedaan, staat in folder C:\Program Files\NSClient++\scripts. Batch file werkt lokaal ook zoals je verwacht, spuugt "70" uit.
nu roep je op afstand test.bat -w70 -c 80 (het checkcommand) aan .. wel even uitvinden hoe je dat handmatig af kan trappen ...
En dat is dus het punt waarop ik vastloop. Ik begrijp niet (en kan met uren googlen ook niet vinden) hoe je zo'n script dan aanroept vanuit Nagios. Ik heb nu dit maar geprobeerd:

code:
1
2
3
4
5
6
7
define service {

    use                     generic-service
    host_name               PC060491
    service_description     test
    check_command           test.bat
}


Maar dan wil Nagios niet starten.
het is niet moeilijk
Dat wil ik best geloven maar op de één of andere manier kom ik er maar niet achter wat ik verkeerd doe.

Xtool D1 10w laser cutter - IoT moet nooit op internet


Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

JeroenH schreef op vrijdag 22 september 2023 @ 08:01:
[...]


OK, bovenstaande heb ik gedaan, staat in folder C:\Program Files\NSClient++\scripts. Batch file werkt lokaal ook zoals je verwacht, spuugt "70" uit.


[...]


En dat is dus het punt waarop ik vastloop. Ik begrijp niet (en kan met uren googlen ook niet vinden) hoe je zo'n script dan aanroept vanuit Nagios. Ik heb nu dit maar geprobeerd:

code:
1
2
3
4
5
6
7
define service {

    use                     generic-service
    host_name               PC060491
    service_description     test
    check_command           test.bat
}


Maar dan wil Nagios niet starten.


[...]


Dat wil ik best geloven maar op de één of andere manier kom ik er maar niet achter wat ik verkeerd doe.
leesvoer https://nsclient.org/docs/howto/external_scripts/

En "het is niet moeilijk" is niet het zelfde als " het is onduidelijk" als ik het leesvoer linkje bekijk denk ik dat er 99% in staat van wat je nog mist . in elk geval plaatjes van hoe het werkt .

anders kan je zoeken op "check nagios plugin commandline" maar die nsclient++ is wel een aparte.
ik werkte jaren geleden met iets dat ik remote een script/plugin/batchfile direct kon afroepen. zoals je nu gedaan hebt in het check command

btw heb je de log bekeken waarom die weigert ? vaak kan je ook de verbose / debug functie iets hoger zetten door "nsclient++ /verbose high" ofzo .. (eventlog ?) zoiets als -w -c kan ook noodzakelijk zijn .


ps als je aangeeft ik doe X op server of Y op client bij dit soort issues maakt antwoorden voor anderen wel makkelijker .
belangrijkste is niet opgeven ! je hebt niet de juiste route gevonden maar begrijpt al wel delen

[ Voor 33% gewijzigd door vso op 22-09-2023 09:00 ]

Tja vanalles


Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
OK.

Tot en met "Running your script heb ik het nu werkend. Die tutorial is m.i. niet heel helder dat je na het initiële commando "nscp test" handmatig nog e.e.a moet in geven, maar ok. Ik zie "OK: Everything is going to be fine a" dus op de client zou dit in orde moeten zijn. Hoop ik.

Dan vanaf de Nagios server proberen:

code:
1
2
jeroen@nagios:/usr/lib/nagios/plugins$ ./check_nrpe -H 192.168.15.1 -c testscript
CHECK_NRPE: (ssl_err != 5) Error - Could not complete SSL handshake with 192.168.15.1: 1


Ik ga daar maar weer induiken.

Wel iets geks:

Ik heb in de nslicent.ini dit:
code:
1
2
[/settings/external scripts/scripts]
testscript=scripts\test.bat


Als ik op de Nagios server "jeroen@nagios:/usr/lib/nagios/plugins$ ./check_nrpe -H 192.168.15.1 -c testscript" uitvoer krijg ik die SSL foutmelding, maar als ik "jeroen@nagios:/usr/lib/nagios/plugins$ ./check_nrpe -H 192.168.15.1 -c randomwoord" uitvoer krijg ik dezelfde foutmelding. Dat is vreemd, toch?
belangrijkste is niet opgeven !
Ik moet je zeggen dat ik na bijna een week zonder enig resultaat daar wel serieus over aan het nadenken ben :| Ik begrijp gewoon niet dat er voor zoiets basics geen begin-tot-eind tutorials zijn. Alles wat ik vind veronderstelt als flink wat kennis - maar hoe kun je die kennis opdoen als je de absolute basics niet werkend kunt krijgen?

Ben wel blij met hulp hier :>

[ Voor 88% gewijzigd door JeroenH op 22-09-2023 09:57 ]

Xtool D1 10w laser cutter - IoT moet nooit op internet


Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 23-05 22:36

ElCondor

Geluk is Onmisbaar

De .15 machine is de machine waar je de check op wilt uitvoeren? Niet zijnde de NAGIOS server?
Het lijkt er dan op dat NAGIOS via SSL wilt communiceren, met andere woorden een beveiligde verbinding wil opzetten.
Je zult dit op de client moeten regelen dan. Daar dus een geldig certificaat voor de client configureren of het client certificaat naar de server exporteren en daar als geldig configureren.
Wat ook mogelijk is, maar niet aan te raden in een productie omgeving: SSL voor de NAGIOS verbindingen uitschakelen. Dan kun je het in ieder geval werkend krijgen. SSL verbindingen staat in principe los van NAGIOS, dus daar heb je op dit moment wellicht geen belang bij en het is dan alleen maar ruis op de lijn los van het daadwerkelijke probleem. Namelijk NAGIOS laten babbelen met de client agent op de .15 machine.

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
ElCondor schreef op vrijdag 22 september 2023 @ 10:21:
De .15 machine is de machine waar je de check op wilt uitvoeren? Niet zijnde de NAGIOS server?
Ja, en de andere checks (memory etc) werken goed op dat adres.
Wat ook mogelijk is, maar niet aan te raden in een productie omgeving: SSL voor de NAGIOS verbindingen uitschakelen.
OK.

jeroen@nagios:/usr/lib/nagios/plugins$ ./check_nrpe -H 192.168.15.1 -n -c testscript
CHECK_NRPE: Receive header underflow - only 0 bytes received (4 expected).

(de -n zorgt er als het goed is voor dat hij geen SSL verwacht/vereist)

Maar dus weer een andere error. Daar uiteraard naar gegoogled - vind ik allemaal dingen dat ik de NRPE client opnieuw moet compileren. Dat kan toch niet waar zijn?

Ik vond ook ook ergens de tip om in de nsclient.ini het volgende in te voegen:

code:
1
2
insecure = true
use ssl = false


Service geherstart etc, zelfde resultaat.

Best wat vragen gevonden van mensen met hetzelfde probleem (voorbeeld) - maar geen oplossing.

Ik geef het op. Inmiddels zit ik zover vandaan bij wat ik wil bereiken, en met elke slag heb ik het idee dat ik verder verwijderd raak van mijn doel.

Iedereen bedankt voor de hulp.

Xtool D1 10w laser cutter - IoT moet nooit op internet


Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 23-05 22:36

ElCondor

Geluk is Onmisbaar

Het lijkt er op dat hij geen reactie ontvangt. Heb je wellicht ook logging op de client? Om te zien of hij inderdaad iets terug stuurt?

Hmmm, in de discussie die je meestuurde zie ik dat de de originele poster wel de client logs erbij had gepakt en daar ziet dat er geklaagd wordt in de client over geen gebruik van SSL. Wellicht zie jij dat dan ook. Wellicht een bug van de client? Of dat de Windows client het eenvoudigweg verplicht stelt om SSL te gebruiken?

Kun je in de client nog expliciet aangeven dat hij geen SSL moet gebruiken?

[ Voor 61% gewijzigd door ElCondor op 22-09-2023 11:11 ]

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
ElCondor schreef op vrijdag 22 september 2023 @ 10:59:
Het lijkt er op dat hij geen reactie ontvangt. Heb je wellicht ook logging op de client?
Dat zal C:\Program Files\NSClient++\nsclient.log zijn.

Daar vind ik niets als ik een poging doe vanaf de Nagios server. Ik vind alleen dit als ik de windows service herstart:

code:
1
2
3
2023-09-22 11:05:48: error:c:\source\master\modules\CheckSystem\pdh_thread.cpp:147: Exception in Failed to add counter disk_queue_length: 
2023-09-22 11:05:48: info:c:\source\master\modules\CheckSystem\pdh_thread.cpp:236: Not checking PDH data
2023-09-22 11:05:50: error:c:\source\master\modules\CheckSystem\pdh_thread.cpp:307: Failed to get network metrics: Failed to fetch network metrics, disabling...


En, zoals ik een paar posts hoger al beschreef, wtf heeft hij te zoeken in directory c:\source\etcetera (die helemaal niet bestaat), en ik kan er online niets nuttigs over vinden.
Kun je in de client nog expliciet aangeven dat hij geen SSL moet gebruiken?
Ik denk (want het staat nergens duidelijk beschreven...) dat ik dat hiermee doe:
Ik vond ook ook ergens de tip om in de nsclient.ini het volgende in te voegen:

code:
1
2
insecure = true
use ssl = false
Maar dat helpt niet.

Xtool D1 10w laser cutter - IoT moet nooit op internet


Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 23-05 22:36

ElCondor

Geluk is Onmisbaar

Nu zie ik verder nog dingen waarbij naar voren komt dat de client versie en server versie wel met elkaar overweg moeten kunnen. Je weet zeker dat je overal de laatste compatible versie van te pakken hebt?

Ik moet wel eerlijk bekennen dat ik Nagios ook wel eens geprobeerd heb, maar het heeft een stijle leercurve en ik ben er op een gegeven moment uitgestapt.
JeroenH schreef op vrijdag 22 september 2023 @ 11:19:
[...]


Dat zal C:\Program Files\NSClient++\nsclient.log zijn.

Daar vind ik niets als ik een poging doe vanaf de Nagios server. Ik vind alleen dit als ik de windows service herstart:

code:
1
2
3
2023-09-22 11:05:48: error:c:\source\master\modules\CheckSystem\pdh_thread.cpp:147: Exception in Failed to add counter disk_queue_length: 
2023-09-22 11:05:48: info:c:\source\master\modules\CheckSystem\pdh_thread.cpp:236: Not checking PDH data
2023-09-22 11:05:50: error:c:\source\master\modules\CheckSystem\pdh_thread.cpp:307: Failed to get network metrics: Failed to fetch network metrics, disabling...


En, zoals ik een paar posts hoger al beschreef, wtf heeft hij te zoeken in directory c:\source\etcetera (die helemaal niet bestaat), en ik kan er online niets nuttigs over vinden.
Die source folder komt voort uit het build process van de client. Dit is echt informatie die door een developer te gebruiken is om te achterhalen waar in de sourcecode een fout optreedt oom daar dan een fix voor te schrijven.
Welke metrics heb je nu in de client aan staan? Of zijn er bepaalde standaard metrics die door de client opgevraagd worden? Kun je er daar van uitzetten? Dat hij alléén met jouw script bezig gaat?

[ Voor 64% gewijzigd door ElCondor op 22-09-2023 11:37 ]

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
ElCondor schreef op vrijdag 22 september 2023 @ 11:29:
Nu zie ik verder nog dingen waarbij naar voren komt dat de client versie en server versie wel met elkaar overweg moeten kunnen. Je weet zeker dat je overal de laatste compatible versie van te pakken hebt?
Ik weet bijna niets meer zeker op dit vlak...
Ik moet wel eerlijk bekennen dat ik Nagios ook wel eens geprobeerd heb, maar het heeft een stijle leercurve en ik ben er op een gegeven moment uitgestapt.
Ik geloof het ook wel. Het is ongetwijfeld zeer flexibel allemaal maar voor een beginner bijna niet in te stappen.

Xtool D1 10w laser cutter - IoT moet nooit op internet


Acties:
  • +1 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 23-05 22:36

ElCondor

Geluk is Onmisbaar

JeroenH schreef op vrijdag 22 september 2023 @ 11:36:
[...]


Ik weet bijna niets meer zeker op dit vlak...
Mooi!
Ik geloof het ook wel. Het is ongetwijfeld zeer flexibel allemaal maar voor een beginner bijna niet in te stappen.
Ja, idd, dat is mijn gevoel ook. Niet echt iets om in je uppie in te duiken, wellicht, meer ervaring als sysadmin en wellicht zelfs een cursus zijn nodig om dit in te richten.
Hebben server en de client wellicht nog opties om logging op een dieper niveau te doen? Iets van verbose bijvoorbeeld? Zodat je echt alles qua logging uitgespuugd krijgt. Dat is dan vaak weer heeeeel veel, maar in ieder geval meer info dan dat je nu krijgt, lijkt het...

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • bramassendorp
  • Registratie: December 2013
  • Laatst online: 08:07
Best kun je de NCPA plugin gebruiken van Nagios.

Daarnaast moet je gewoon zorgen dat je script eindigd met de jusit exit code:

voorbeeld:

code:
1
2
3
4
if iets {
write-Host "CRITICAL: bericht | iets=getal(performancedata)"
exit 2
}


https://www.nagios.org/ncpa/

Zorg ervoor dat het script in de script directory in de ncpa folder op de betreffende host staat, draait vervolgens een service check:

$USER1$/check_ncpa.py -H $HOSTADDRESS$ -t 'Secret_Token' -P 5693 -M 'plugins/powershell.ps1'

De NCPA heeft ook een webinterface, waar je eventuele plugins kan testen, en vrij simpel de service check code kan genereren, standaard is de plugin te bereiken op https://hostname:5693

[ Voor 50% gewijzigd door bramassendorp op 22-09-2023 11:56 ]


Acties:
  • +1 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 09:58
bramassendorp schreef op vrijdag 22 september 2023 @ 11:48:
Best kun je de NCPA plugin gebruiken van Nagios.
Nee :)

Ik heb het anders opgelost.

- Dummy service aangemaakt
- Mijn lokale script stopt/start service al naar gelang de conditie van hetgeen ik in de gaten wil houden
- Nagios laat de status service zien

In 15 minuten zonder problemen gebouwd, na een week lang vruchteloos diep gefrustreerd googlen, proberen en vragen.

Mooi? Nee, absoluut niet. Maar het werkt en ik kan door.

Xtool D1 10w laser cutter - IoT moet nooit op internet


Acties:
  • 0 Henk 'm!

  • bramassendorp
  • Registratie: December 2013
  • Laatst online: 08:07
JeroenH schreef op vrijdag 22 september 2023 @ 12:06:
[...]


Nee :)

Ik heb het anders opgelost.

- Dummy service aangemaakt
- Mijn lokale script stopt/start service al naar gelang de conditie van hetgeen ik in de gaten wil houden
- Nagios laat de status service zien

In 15 minuten zonder problemen gebouwd, na een week lang vruchteloos diep gefrustreerd googlen, proberen en vragen.

Mooi? Nee, absoluut niet. Maar het werkt en ik kan door.
Toch, zou ik gaan kijken naar de ncpa client, welke volgens Nagios de opvolger gaat worden (als dat inmiddels niet al is) van de NSClient++.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

JeroenH schreef op vrijdag 22 september 2023 @ 12:06:
[...]


Nee :)

Ik heb het anders opgelost.

- Dummy service aangemaakt
- Mijn lokale script stopt/start service al naar gelang de conditie van hetgeen ik in de gaten wil houden
- Nagios laat de status service zien

In 15 minuten zonder problemen gebouwd, na een week lang vruchteloos diep gefrustreerd googlen, proberen en vragen.

Mooi? Nee, absoluut niet. Maar het werkt en ik kan door.
If it work's it aint stupid

Wat wilde je eigenlijk monitoren ?

en zoals @bramassendorp zou ik deze pagina eens checken https://nagiosenterprises...lugins-With-NCPA-32a58c75

deze handleiding is wel netjes gemaakt en super duidelijk (vind ik) stap voor stap en vanaf de server een example .. hoe je het test

ps Goeie kans dat dit ook werkt onder ns++ dingus denk ik zo maar

Tja vanalles

Pagina: 1