Your SlideShare is downloading. ×
0
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins

1,129

Published on

Auch wenn in der letzten Zeit sehr viel Bewegung in die Monitoring-Szene gekommen ist (#monitoringsucks etc.), werden die Platzhirsche Nagios/Icinga und ihre Standards auf absehbare Zeit nicht …

Auch wenn in der letzten Zeit sehr viel Bewegung in die Monitoring-Szene gekommen ist (#monitoringsucks etc.), werden die Platzhirsche Nagios/Icinga und ihre Standards auf absehbare Zeit nicht verschwinden. Das Nagios-Plugin-API stellt eine sehr weit verbreitete Schnittstelle zur Anbindung einzelner Checks an Monitoring-Systeme dar. Obwohl das API in den Grundzügen sehr einfach ist, ist der Programmieraufwand für vollständig konforme Plugins erstaunlich hoch.

Die nagiosplugin-Bibliothek nimmt dem Entwickler viele Details ab, so dass er sich auf den Inhalt seiner Checks konzentrieren kann. Der Vortrag führt in das Schreiben von Nagios-kompatiblen Plugins ein, zeigt den typischen Aufbau von Nagios-Plugins und das Grundprinzip eigener Plugins. Die Konfiguration und der Betrieb von Monitoring-Systemen im Großen sollen nicht thematisiert werden.

Video: http://pyvideo.org/video/1460/nagiosplugin-eine-python-bibliothek-fur-monitor

Konferenzseite: https://2012.de.pycon.org/programm/schedule/sessions/45/

Projekt-Homepage: https://projects.gocept.com/projects/nagiosplugin/wiki

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,129
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. NAGIOSPLUGINEINE PYTHON-KLASSENBIBLIOTHEK FÜR NAGIOS/ICINGA- PLUGINS Christian Kauhaus kc@gocept.com
  • 2. “ The most important figures that oneneeds for management are unknown or unknowable. ” (Lloyd S. Nelson)
  • 3. CHRISTIAN KAUHAUS seit 2008 bei gocept Sysadmin Hosting/Data Center FlyingCircus.io
  • 4. ÜBERBLICKIntroKonzepteBasics Datenerhebung Datenbewertung PräsentationAdvanced Logging & Output Persistente Daten FehlerbehandlungFazit
  • 5. BEIPACKZETTEL DIESER VORTRAG ENTHÄLT Einführung in n g o p u i aislgn viele Code-Beispiele Live-Demos DIESER VORTRAG ENTHÄLT NICHTdie gesamte n g o p u i -API aislgnKonfiguration von Nagios/Icinga-Servern
  • 6. INTRO Plugins sind primäre Methode der Informationsgewinnung bei Nagios/IcingaInput: KommandozeileOutput: Text auf stdout, Exit-CodePlugin API:http://nagios.sourceforge.net/docs/3_0/pluginapi.htmlPlugin Development Guidelines:http://nagiosplug.sourceforge.net/developer-guidelines.html
  • 7. PLUGIN SCHREIBEN? IST DOCH EASY!#/i/h !bns#311ds pui cdz 13 ik lgn oe#()19,0420,01b wrzu C 9920-0621 y AEGY#i yudntudrtn ti g aa f o o nesad hs o wyeh "AEGYskw ds pui i rnig!" co wrzu el ik lgn s unn!!d /r/p0/aa|ge / |ak pit$ } | f svap1dt rp ^ w { rn 3 ge 15... | { rp [-].. | eh "M!!**ds i srwd!" ei 2 co OG! * ik s cee!!; xt}eh "iki o" co ds s kei 0 xt#XXsol nvrrahti X hud ee ec hs
  • 8. NAGIOS PLUGIN APItimeout standard options output spec exit codes range syntax performance data multi-threshold status line long output
  • 9. BEISPIEL: OUTPUT SPECCEK-sau ln |pr1pr2 HC tts ie ef efln otu og uptln otu og upt|pr3pr4 ef efpr5pr6 ef ef
  • 10. BEISPIEL: RANGE-SYNTAX 9 -6:8 ~:3 -2.25: @5:7.5
  • 11. NAGIOSPLUGIN IST... Python-Klassenbibliothek Open Source (ZPL-Lizenz) entstanden aus gocept -Eigenbedarf seit 2010 kontinuierlich weiterentwickelt Python 3-kompatibel Release-Stand:alte 0.4.x API wird nicht mehr weiterentwickeltInhalt des Vortrags neue 1.0 API
  • 12. KONZEPTETerminlogie bei #monitoringsucks – watch your language Resource Metric Context Event Action
  • 13. KONZEPTE IM NAGIOS-KONTEXT
  • 14. ZENTRALE KLASSEN
  • 15. BASICS #1: DATENERHEBUNG
  • 16. RESOURCE Domain Model Subklasse von R s u c eore p o e )erzeugt Metriken rb(casRsuc:ls eore @rpry poet dfnm(ef: e aesl) rtr sl._ls_._ae_ eun ef_cas__nm_ dfpoesl) e rb(ef: rtr [ eun ]
  • 17. BEISPIEL: CHECK_WORLDipr ngopuimot aislgncasWrdngopui.eore:ls ol(aislgnRsuc) dfpoesl) e rb(ef: rtr [ eun ngopui.ercol Tu,cnetul) aislgnMti(wrd, re otx=nl ]dfmi(:e an) cek=ngopui.hc(ol() hc aislgnCekWrd) cekmi( hc.an)i _nm_ = _an_: f _ae_ = _mi_ mi( an)
  • 18. METRICStrukturiertes Value-Objekt für einzelnen DatenpunktcasMti:ls erc df_ii_(ef nm,vle umNn,mnNn,mxNn, e _nt_sl, ae au, o=oe i=oe a=oe cnetNn) otx=oe: .. .
  • 19. BEISPIEL: CHECK_LOADcasLa(aislgnRsuc)ls odngopui.eore: df_ii_(ef prp=as) e _nt_sl, ecuFle: sl.ecu=prp efprp ecu dfcu(ef: e pssl) rtr itsbrcs.hc_upt[nrc]) eun n(upoescekotu(po) dfpoesl) e rb(ef: wt oe(/rclaag)a laag ih pnpo/odv s odv: la =laagraln(.pi([:] od odv.edie)slt)03 cu =sl.ps)i sl.ecues 1 ps efcu( f efprp le la =[la()/cu frli la] od fotl ps o n od fri pro i eueae[,5 1]: o , eid n nmrt(1 , 5) yedngopui.ercodd %pro,la[] il aislgnMti(la% eid odi, mn0 cneteal i=, otx=dfut)
  • 20. BASICS #2: DATENBEWERTUNG
  • 21. CONTEXT erzeugt R s l aus M t i und R s u c eut erc eore erzeugt Performance Data erzeugt Klartext-BeschreibungcasCnetls otx: df_ii_(ef nm,..: e _nt_sl, ae .) .. . dfeaut(ef mti,rsuc) e vlaesl, erc eore: rtr Rsl(.) eun eut.. dfpromnesl,mti,rsuc) e efrac(ef erc eore: rtr Promne.. eun efrac(.) dfdsrb(ef mti) e eciesl, erc: rtr . eun ..
  • 22. SCALARCONTEXT Häufig gebrauchter Spezialfall warning und critical RangescasSaaCnetCnet:ls clrotx(otx) df_ii_(ef nm,wrig ciia,..: e _nt_sl, ae ann, rtcl .) .. . Verwendung direkt in Check-Initialisierung:cek=ngopui.hc(hc aislgnCek ngopui.clrotx(la ag.ann, aislgnSaaCnetod, rswrig ag.rtcl,.. rsciia) .)
  • 23. ZUORDNUNG METRIC/CONTEXT Jede M t i benennt den zuständigen C n e t erc otx#La.rb( odpoe) frpro,ii zp[,5 1] ietoscut): o eid n i(1 , 5, trol.on() yedngopui.ercodd %pro,la[] il aislgnMti(la% eid odi, mn0 cnetod) i=, otx=la#mi( an)cek=ngopui.hc(hc aislgnCek La(, od) ngopui.clrotx(la ag.ann, aislgnSaaCnetod, rswrig ag.rtcl,.. rsciia) .) Standard-Contexts: n l - tut gar nichts ul d f u t- gibt Performance-Daten aus eal
  • 24. BASICS #3: PRÄSENTATION
  • 25. SUMMARY Statuszeile ist wichtig!erscheint in Mails, in SMS, auf Pagerin 80-140 Zeichen die „Message“ herüberbringenmuss nachts 3:30 Uhr verständlich sein
  • 26. NICHT HILFREICH
  • 27. SUMMARY – STANDARDIMPLEMENTIERUNGcasSmayls umr: dfo(ef rsls: e ksl, eut) rtr srrsls0) eun t(eut[] dfpolmsl,rsls: e rbe(ef eut) ty r: rtr srrslsfrtsgiiat eun t(eut.is_infcn) ecp Idxro: xet neErr rtr ocekrsls eun n hc eut dfvroesl,rsls: e ebs(ef eut) mg =[ ss ] frrsl i rsls o eut n eut: i rsl.tt = O: f eutsae = k cniu otne mg.ped} {fra(eutsae rsl) ssapn({: }.omtrsl.tt, eut) rtr mg eun ss
  • 28. BEISPIEL: CHECK_LOADcasLaSmayngopui.umr)ls odumr(aislgnSmay: df_ii_(ef prp) e _nt_sl, ecu: sl.ecu=prp efprp ecu dfo(ef rsls: e ksl, eut) i sl.ecu f efprp: wa =odv prcu ht laag e p es: le wa =odv ht laag rtr }i {fra(ht ji( eun { s }.omtwa, , .on srrslsr.erc t(eut[]mti) frri [la1,od od5]) o n od la5, la1)
  • 29. ADVANCED #1: LOGGING & OUTPUT Setup:dfmi(:e an) .. . ag.d_ruetv,-ebs ato=cut, rpadagmn(- -vroe, cinon dfut0 hl=ices vroiy) eal=, epnrae ebst .. . cekmi(ebs=rsvroe hc.anvroeag.ebs) Logging:dfls_sr(ef:e ituessl) lgigif(qeyn ueswt "s cmad, ogn.nourig sr ih %" omn sl.h_m) efwocd ues=[ sr ] .. .
  • 30. VERBOSE=0 Status und Perfdata auf einer Zeile Loglevel warning und höher Summary.verbose() wird nicht angezeigt$cekues hc_srUESO -4ueslge i |ttl4;0uiu=;;SR K sr ogd n oa=;; nqe1;0
  • 31. VERBOSE=1 mehrzeilige Ausgabe sollte Standard sein für Server, die long output verarbeiten Loglevel warning und höher Summary.verbose() wird angezeigt$cekues- hc_sr vUESO -4ueslge iSR K sr ogd nues cahu,cahu,cahu,cahusr: kuas kuas kuas kuas|ttl4;0uiu=;; oa=;; nqe1;0
  • 32. VERBOSE=2 Konfigurationsinformationen zum Plugin z.B. Commandlines externer Aufrufe Loglevel info und höher$cekuesp -v hc_sr.y vUESO -4ueslge iSR K sr ogd nues cahu,cahu,cahu,cahusr: kuas kuas kuas kuasqeyn ueswt "h"cmad(hc_sr.y3)urig sr ih wo omn cekuesp:4|ttl4;0uiu=;; oa=;; nqe1;0
  • 33. VERBOSE=3 Debugging-Informationen z.B. Zwischenergebnisse Loglevel debug und höher$cekuesp -v hc_sr.y vvUESO -4ueslge iSR K sr ogd nues cahu,cahu,cahu,cahusr: kuas kuas kuas kuasqeyn ueswt "h"cmad(hc_sr.y3)urig sr ih wo omn cekuesp:4wootu:bcahu ty 21-02 1:6 (hc_sr.y3)h upt kuas t1 021-9 23 cekuesp:8...|ttl4;0uiu=;; oa=;; nqe1;0
  • 34. FORMATIERUNG VON METRIKEN C n e tist für „seine“ Metriken zuständig otx Variante 1: String-TemplateCnet.. ftmti={ae i {auui})otx(., m_ercnm} s vlent Variante 2: Callabledffra_sron(erc cnet:e omtuecutmti, otx) rtr . eun ..Cnet.. ftmti=omtuecutotx(., m_ercfra_sron)
  • 35. ADVANCED #2: PERSISTENTE DATEN Zustand zwischen Plugin-Aufrufen behalten Cookie LogTail
  • 36. COOKIE persistentes d c it Serialisierung mit JSON Locking wt ngopui.okesl.ttfl)a coi: ih aislgnCoi(efsaeie s oke sl.ietm =coi.e(ls_en,) eftmsap okegtatse mtis=sl.osmtig) erc efd_oehn( coi[ls_en]=sl.ietm okeatse eftmsap Inhalt von statefile:{ "atse" "021-81:82" ls_en: 21-02 20:5}
  • 37. LOGTAILInkrementelles Lesen von wachsenden Logfiles baut auf C o i auf oke erkennt Log-Rotation Wiederaufsetzen nach Exceptionsdfprelgsl)e as_o(ef: coi =ngopui.okesl.ttfl) oke aislgnCoi(efsaeie wt ngopui.oTi(eflgie coi)a l: ih aislgnLgalsl.ofl, oke s f frln i l: o ie n f .. .
  • 38. ADVANCED #3: FEHLERBEHANDLUNG Was ist, wenn es nicht so läuft wie geplant? Wichtige Fehlerklassen: Resource nicht da/nicht abfragbar Fehlerhafte Kommandozeilen-Parameter Umgebungsfehler Programmierfehler
  • 39. @NAGIOSPLUGIN.GUARDED Schützt die main()-Funktion bei Exceptions: Exit-Status 3 API-konforme Ausgabe Traceback bei verbose ≥ 1@aislgngaddngopui.uredfmi(:e an) ag =agas.ruetasr) rp rpreAgmnPre( ag.d_ruet.. rpadagmn(.) ag =ag.as_rs) rs rppreag( cek=ngopui.hc(odag.ecu,.. hc aislgnCekLa(rsprp) .) cekmi( hc.an)
  • 40. BEISPIEL: EXCEPTION IN PROBE()casFi(aislgnRsuc)ls alngopui.eore: dfpoesl) e rb(ef: rieRniero(Imfeigbd) as utmErr" eln a"@aislgngaddngopui.uredfmi(:e an) ag =agas.ruetasr) rp rpreAgmnPre( ag.d_ruetv,ato=cut,dfut0 rpadagmn(- cinon eal=) ag =ag.as_rs) rs rppreag( cek=ngopui.hc(al) hc aislgnCekFi() cekmi(rsvroe hc.anag.ebs) Ausgabe (verbose=0):$cekfi.y hc_alpFI UKON Rniero:ImfeigbdAL NNW: utmErr eln a#ei 3 xt
  • 41. FAZIT Mit n g o p u i macht das aislgnSchreiben von Plugins beinahe Spaß. ;-) Trennung der Verantwortlichkeiten wartbarer, objekt-orientierter Code volle Unterstützung der Plugin-API kleine Helfer robustes Verhalten im Fehlerfall
  • 42. USE THE SOURCE, LUKE Download: http://pypi.python.org/pypi/nagiosplugin Code: https://bitbucket.org/gocept/nagiosplugin Wiki/Tracker/Forum:https://projects.gocept.com/projects/nagiosplugin/wiki
  • 43. DANKE! FRAGEN?

×