{"id":93,"date":"2008-08-26T09:31:16","date_gmt":"2008-08-26T07:31:16","guid":{"rendered":"http:\/\/blog.it4sport.de\/?p=93"},"modified":"2008-08-26T09:31:16","modified_gmt":"2008-08-26T07:31:16","slug":"nagios-weakness-mir-bekannte-schwachen-von-nagios","status":"publish","type":"post","link":"https:\/\/gmbd.de\/wordpress\/index.php\/2008\/08\/26\/nagios-weakness-mir-bekannte-schwachen-von-nagios\/","title":{"rendered":"Nagios Weakness &#8211; mir bekannte Schw\u00e4chen von Nagios"},"content":{"rendered":"<p>\t\t\t\t<img decoding=\"async\" id=\"image29\" src=\"http:\/\/gmbd.de\/wp-content\/uploads\/2008\/07\/nagios.thumbnail.png\" alt=\"Nagios\" hspace=\"10\" style=\"float:left;\" \/>Das ist eine Sammlung von Merkw\u00fcrdigkeiten oder M\u00e4ngeln in Nagios, \u00fcber die ich mich in meiner Zeit als Nagios Consultant ge\u00e4rgert hatte. Keine Garantie auf Vollst\u00e4ndigkeit. Im Gegenteil manche M\u00e4ngel k\u00f6nnen auch mit der aktuellen Version schon behoben sein. Ich schreibe mir diese hier zusammen, damit sie nicht verloren gehen.<\/p>\n<p><strong>Schw\u00e4chen in der Konfiguration<\/strong><\/p>\n<ul>\n<li>Benennung der Parameter. Mal mit Unterstrich, mal ohne. Mal Mehrzahl, mal Einzahl. Gut das es oft mehr als eine M\u00f6glichkeit gibt.\n<\/li>\n<li>Redundanz in der Konfiguration: Wo ist etwa  der Unterschied zwischen Parents und Hostdependencies? Parents sind nur eine besondere Art von Hostdependencies, oder?\n<\/li>\n<li>Nagios versucht \u00fcber die &#8222;illegal_.._chars&#8220; Sicherheitsprobleme in der Konfig zu l\u00f6sen. Dabei macht einen genau dies das Leben schwer. Es gibt n\u00e4mlich keine M\u00f6glichkeit Sonderzeichen zu escapen. Noch schlimmer ist, dass  alles nach einem Strichpunkt verworfen wird. Braucht man einen Strichpunkt als Parameter muss man tats\u00e4chlich das Plugin anpassen oder einen Wrapper schreiben<\/li>\n<\/ul>\n<p><!--more--><br \/>\n\t<strong>Schw\u00e4chen im Daemon<\/strong><\/p>\n<ul>\n<li>Das Konzept einer sequentiellen status.dat ist nicht ausreichend. Ein Update der Datei erfordert ein komplettes Neuschreiben. W\u00e4hrend des Updates ist der aktuelle Status im Webinterface nicht vollst\u00e4ndig. Selbst das Auslagern in eine Ramdisk verbessert diese Situation nicht merklich. Ich habe sogar das Gegenteil beobachtet. Kann das aber nicht erkl\u00e4ren.\n<\/li>\n<li>Die beste Maschine n\u00fctzt nichts, wenn Nagios viele Dinge immer nach einander ausf\u00fchrt. Zwar werden mehrere Prozessoren durch die gleichzeitige Aufrufe der Plugins genutzt, aber viele Dinge sind sequentiell nur auf einen Prozessor fest gebunden (obsess, perfdata, &#8230;). Nagios unterst\u00fctzt weder SMP noch an wichtigen Stellen Threads.\n<\/li>\n<li>\u00c4ndert sich die Konfiguration in Nagios so wird kein automatisch Check geforced. Das ist besonders interessant, wenn etwa die Schwellwerte ge\u00e4ndert wurden. Nur das Plugin alleine entscheidet \u00fcber OK,WARNING,CRITICAL und daher m\u00fcsste Nagios eigentlich sofort einen neuen Check ausl\u00f6sen. Nagios hat keine R\u00fcckkopplung zu den Plugins.<\/li>\n<li>Passive Events behalten nur den letzten Status. Es fehlt \u00fcberhaupt ein vern\u00fcnftiges Handling von asynchronen Events. Passive Checks halten immer nur den letzten Status.<\/li>\n<li>Zuviele Macros? Die Macros wechseln zwischen den Versionen die Namen, machen nicht immer was sie versprechen und bieten auch nicht alle M\u00f6glichkeiten, die man so braucht. Warum nicht einfach eine vern\u00fcnftige Schnittstelle zur status.dat?\n<\/li>\n<li>Warum unterscheidet sich status.dat und retention.dat. Warum bleibt der Status beim Beenden nicht einfach stehen &#8230;<\/li>\n<li>Jetzt liefern die Plugins doch tats\u00e4chlich mittlerweile gro\u00dfteils formatierte Performancewerte. Nagios stellt sie auch dar, aber dennoch gibt es keine vern\u00fcnftige Schnittstelle um diese abzugreifen. Tools wie PNP, NagiosGrapher, &#8230; m\u00fcssen Klimmz\u00fcge machen um sie zu ermitteln und anschlie\u00dfend auch selbst parsen.<\/li>\n<\/ul>\n<p>\t<strong>Schw\u00e4chen im Webinterface<\/strong><\/p>\n<ul>\n<li>Die Statusmap ist in ihrer jetzigen Umsetzung eigentlich zu 95% nicht verwendbar. Meist sieht man nur schwarze Flecken.\n<\/li>\n<li>Un\u00fcbersichtlich. Sucht mal den Kommentar zu einer Downtime \ud83d\ude42 &#8230;\n<\/li>\n<li>Nicht &#8222;Mehr-&#8222;Instanzenf\u00e4hig. Das Webinterface beherrscht immer nur ein Nagios. Bei verteilten Konfigurationen ist es nicht m\u00f6glich \u00fcber ein Webinterface External Commands auf daran angebundenen Nagios Servern diese auszuf\u00fchren.<\/li>\n<li>Kein vern\u00fcnftiges Reporting! Beim Reporting fehlen wichtige Features. So flie\u00dfen z.B. die Timeperiods in das Reporting nicht ein. Oder etwa doch?\n<\/li>\n<p><\/UL><br \/>\n\t<strong>Schw\u00e4chen bei verteilten Installationen<\/strong><\/p>\n<ul>\n<li>NSCA \u00fcbermittelt keinen Timestamp. Nagios \u00fcbermittelt die Ergebnisse ohne jegliche Information wann sie ermittelt wurden<\/li>\n<li>NSCA\/Obsess Bottleneck. Durch Obesses over Services\/Hosts wird nach jedem Check eine Shell gespawnt und das entsprechende Command ausgef\u00fchrt. Das Problem ist, dass solch ein Kommand nicht parallel aufgerufen wird. Ist es zu langsam so stauen sich diese Commands und die Latenz in Nagios w\u00e4chst\n<\/li>\n<\/ul>\n<p><strong>Schw\u00e4chen bei Plugins<\/strong><\/p>\n<ul>\n<li>Plugins und deren Output sind nur wage definiert. Es gibt leider keine einfache M\u00f6glichkeit ein Plugin automatisch zu erkennen und so etwa die Definition f\u00fcr Graphen automatisch zu zuordnen. Solch eine Verkn\u00fcpfung geht zur Zeit nur \u00fcber Umwege (NagiosGrapher? verwendet hier die ServiceDescription). Bei den Plugins fehlt zur Zeit eine ID (MD5-Checksum?), Versionsnummer und Beschreibung der Ausgaben.\n<\/li>\n<\/ul>\n<p><strong>Schw\u00e4chen in Addons<\/strong><\/p>\n<ul>\n<li>NRPE\n<ul>\n<li>Authentifizierung\/Autorisierung. Rein \u00fcber die Source IP. Wenig sicher, oder?\n<\/li>\n<li>Parameter\u00fcbergabe. Es gibt nur 2 M\u00f6glichkeiten. Entweder sind s\u00e4mtliche Parameter der Plugins auf dem Client konfiguriert oder aber NRPE pr\u00fcft die Parameter\u00fcbergabe nicht. Weder die eine noch die andere Methode ist wirklich sinnvoll einsetzbar.\n<\/li>\n<\/ul>\n<li>NDO\n<ul>\n<li>Blocking! Hat die Anbindung an die Datenbank ein Problem steht Nagios.\n<\/li>\n<li>Einbahnstra\u00dfe. NDO ist nur Output. Es bringt nichts die Daten in der Datenbank zur Laufzeit zu \u00e4ndern\n<\/li>\n<li>V\u00f6llig un\u00fcbersichtliches Datenmodell.<\/li>\n<li>Wenn NDO in Zukunft das Mittel f\u00fcr distributed Monitoring sein soll, wie sollen dann External Commands ausgetauscht werden. Da fehlt noch ein Konzept. <\/li>\n<li>NDO liefert Daten ohne Ende. Mit dem Datenwust ist nicht vern\u00fcnftig m\u00f6glich Auswertungen zu fahren. Es fehlt eine Schicht, die Werte extrahiert (Performancewerte) und agregiert (etwa Up- und Down-Zeiten ermittelt).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Das ist eine Sammlung von Merkw\u00fcrdigkeiten oder M\u00e4ngeln in Nagios, \u00fcber die ich mich in meiner Zeit als Nagios Consultant ge\u00e4rgert hatte. Keine Garantie auf Vollst\u00e4ndigkeit. Im Gegenteil manche M\u00e4ngel k\u00f6nnen auch mit der aktuellen Version schon behoben sein. Ich schreibe mir diese hier zusammen, damit sie nicht verloren gehen. Schw\u00e4chen in der Konfiguration Benennung\u2026 <span class=\"read-more\"><a href=\"https:\/\/gmbd.de\/wordpress\/index.php\/2008\/08\/26\/nagios-weakness-mir-bekannte-schwachen-von-nagios\/\">Weiterlesen &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[237,248],"_links":{"self":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/93"}],"collection":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":0,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"wp:attachment":[{"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gmbd.de\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}