30

Lennart Betz Thomas Widhalm › img › books › extract › ... · Nachschlagewerk und als roter Faden beim Einsatz von Icinga2 in Ihrer Organisation. Bereits nach einigen Zeilen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • Lennart Betz arbeitet als Consultant und Trainer bei der Nürnber-ger NETWAYS GmbH. Seine Hauptarbeitsgebiete sind Planung,Aufbau und Betreuung von Monitoringlösungen, Konfigurations-management und weitere Automatisierungsthemen. Schon frühwährend seines Mathematikstudiums beschäftigte er sich mitFreier Software und verfolgt dies auch seit dem Abschluss in seinerberuflichen Tätigkeit konsequent weiter.

    Thomas Widhalm hilft als Lead Support Engineer Kunden der Net-ways GmbH beim Beheben von Problemen mit Icinga-Installation.Außerdem unterstützt er als Consultant Kunden bei der Planung,Umsetzung und weiteren Betreuung von Projekten im BereichMonitoring und Logmanagement. Als Trainer zeichnet er sich fürdie Schulungen im Bereich Logmanagement verantwortlich. ImIcinga-Team arbeitet er an der Online-Dokumentation mit. Er istüberzeugt, dass Freie Software proprietärer Software überlegen istund ihre Konzepte auch außerhalb der IT mehr Anwendung findensollten.

    Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

    www.dpunkt.plus

    00_Titelei.fm Seite ii Donnerstag, 21. Juni 2018 9:58 09

  • Lennart Betz · Thomas Widhalm

    Icinga 2

    Ein praktischer Einstieg ins Monitoring

    2., aktualisierte und erweiterte Auflage

    00_Titelei.fm Seite iii Donnerstag, 21. Juni 2018 9:58 09

  • Lennart [email protected]

    Thomas [email protected]

    [email protected]

    Lektorat: Dr. Michael BarabasCopy-Editing: Petra Kienle, FürstenfeldbruckSatz: Lennart Betz, Thomas WidhalmHerstellung: Stefanie WeidnerUmschlaggestaltung: Helmut Kraus, www.exclam.de Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn

    Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

    ISBN:Print 978-3-86490-556-8PDF 978-3-96088-425-5ePub 978-3-96088-426-2mobi 978-3-96088-427-9

    2. Auflage 2018Copyright © 2018 dpunkt.verlag GmbHWieblinger Weg 1769123 Heidelberg

    Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

    5 4 3 2 1 0

    00_Titelei.fm Seite iv Donnerstag, 21. Juni 2018 9:58 09

  • This Book is the Property of the Half-Blood Prince.

  • vii

    Vorwort

    Als wir Icinga im April 2009 zum Leben erweckten, konnten wir nur erah-nen, wohin uns das Projekt führen würde. Natürlich waren wir von demPotenzial des Projekts und der beteiligten Menschen überzeugt. Die Fragewar jedoch, ob wir auch die Open-Source-Community von Icinga überzeugenkönnen.

    Das Feedback war schlichtweg überwältigend. Bereits nach den erstenVersionen erreichten uns unglaublich viel positives Feedback und viele UserStories über den erfolgreichen Einsatz von Icinga. Ausschlaggebend für denEinsatz von Icinga waren in der Praxis meist nicht das ein oder andereneue Feature, sondern das Vertrauen unserer Anwender. Vertrauen der An-wender in das Projekt, die Menschen dahinter und die Überzeugung, einezukunftssichere Technologie einzusetzen.

    Dieses Vertrauen war und ist seitdem unser Antrieb und auch dieHauptmotivation hinter Icinga 2. Zu behaupten, die Neuentwicklung vonIcinga war rein altruistischi, wäre sicherlich etwas übertrieben, aber ge-genüber unseren bestehenden Anwendern haben wir immer die größte Ver-antwortung. Icinga 2 und Icinga Web 2 sind die Folge unzähliger Entwick-lungsjahre, aber auch zweier Grundfesten unserer Arbeit: das Bestreben,die Stärken von Icinga beizubehalten und gleichzeitig auch die aktuellenBedürfnisse hinsichtlich Performance und Skalierbarkeit zu befriedigen.

    Das Ergebnis dieser Arbeit wird in dem Buch, das Sie in Ihren Händenhalten, vortrefflich beschrieben und erläutert. Dabei ist es weit mehr alseine Erweiterung der bestehenden Dokumentation. Es dient Ihnen alsNachschlagewerk und als roter Faden beim Einsatz von Icinga 2 in IhrerOrganisation. Bereits nach einigen Zeilen Lektüre werden Sie als Leserbemerken, dass keine Theoretiker für dieses Buch verantwortlich sind.Lennart und Thomas arbeiten seit vielen Jahren in den unterschiedlichs-ten Einsatzgebieten mit Icinga und wissen, worum es geht. Die Communitykann sich glücklich schätzen, dass sie ihr Wissen mit diesem Buch weiter-geben. Ich wünsche Ihnen damit mindestens genauso viel Freude wie mitIcinga selbst.

    Bernd ErkIcinga Co-Founder

  • viii Vorwort

    Vorwort zur 2. Auflage

    Als mich Lennart und Thomas bei der ersten Auflage dieses Buchs um einVorwort gebeten haben, bin ich dem natürlich sehr gerne nachgekommen.Dass ich bei der nun bereits zweiten Auflage wieder die Gelegenheit habe,freut mich ganz besonders und daher gilt mein Dank dafür den beiden Auto-ren. Sowohl für die Möglichkeit, aber vor allem für den hohen persönlichenEinsatz und die endlosen Abend- und Wochenendstunden für dieses Werk.

    Dass der Untertitel »Ein praktischer Einstieg ins Monitoring« dem In-halt des Buchs nicht gerecht wird, zeigt sich in der aktualisierten Ausga-be noch deutlicher als beim ersten Buch. Denn genau dieser Einstieg istnach einem Drittel eigentlich erledigt und die Autoren gehen auf viele Spe-zialfälle, Anbindung externer Komponenten und erweiterte HA-Szenarienein. Auch dem Icinga Director, der sich in den letzten Jahren quasi zumStandard für Konfiguration und Verwaltung der Monitoring-Umgebungentwickelt, wurden ebenso wie Graphing und der REST-API viel Zeit undDetailtiefe gewidmet.

    Was das Buch jedoch wirklich besonders macht, ist die Tatsache, dasses sich nicht um eine erweiterte Dokumentation der Software handelt. DieAutoren haben neben dem Schreiben viel Zeit in Szenarien, Installationund praktische Ausarbeitung der Komponenten investiert. Das macht die-ses Buch zu einem praktischen Nachschlagewerk für die Installation, aberauch die fortwährende Pflege und Erweiterung von Icinga 2 und seinenKomponenten.

    Sollten Sie zu meiner großen Überraschung nicht bereits die erste Aus-gabe dieses Buchs besitzen, wünsche ich Ihnen viel Freunde beim Erlernenund der praktischen Umsetzung des in diesem Buch erarbeiteten Wissens.Der Wiederholungstäter erhält jedoch nicht nur eine überarbeitete Version,sondern auch viele hundert Seiten, auf denen er Icinga 2 und seine Weltwieder oder neu entdecken kann. Dabei wünsche ich Ihnen ein glücklichesHändchen und viel Freude!

    Bernd ErkCEO – Icinga

    Einige Zeilen zum Buch selbst

    Das vorliegende Buch richtet sich vorwiegend an Administratoren, die Icin-ga 2 einsetzen, mit dem Gedanken spielen, dies zu tun, oder in absehbarerZeit von Icinga in der ersten Version auf die aktuelle migrieren wollen. Aberwir hoffen, mit der zweiten Auflage auch erfahrene Monitorverantwortlichezu unterstützen und mit dem ein oder anderen Wissen zu bereichern.

  • Vorwort ix

    Struktur dieses Buchs

    Dieses Buch besteht aus vier Teilen, die sich wiederum in einzelne Kapitelgliedern. Der erste Teil gibt eine kleine Einführung in das Thema Moni-toring und stellt die einzelnen Software-Komponenten vor, die Icinga 2 alsGesamtheit bilden. Von der Installation über die grundsätzliche Konfigura-tion und einen ersten Blick auf die Benutzeroberfläche Icinga Web 2 werdenalle wichtigen Begrifflichkeiten erkärt.

    Im zweiten Teil geht es um zu ermittelnde Daten auf unterschiedli-chen Betriebsystemen, vor allem Linux und Windows. Es befasst sich über-wiegend damit, wie diese Daten lokal auf dem zu überwachenden Systemermittelt werden und dem Transport zum Icinga-Server. Dies sind grund-legende Werte wie die CPU-, Hauptspeicher- oder Festplattenauslastung.Hier unterstützt Icinga 2 unterschiedliche Transportverfahren wie den mitIcinga 2 eingeführten Icinga-Agenten, aber auch alte Methoden wie NRPE,SSH oder SNMP.

    Der dritte Teil vertieft Wissen, z. B. was Icinga 2 betrifft, erweitert diesaber auch durch die Themenkomplexe Benachrichtigungen, Verteilte Über-wachung und Hochverfügbarkeit. Einen großen Abschnitt nehmen Beispie-le aus der Praxis ein. Dort wird an Beispielen erläutert, wie Dienste bzw.Services mittels unterschiedlicher Plugins überwacht werden können.

    Integration ist das Thema des vierten Teils. Es werden einige Erweite-rungen vorgestellt, sowie andere Software, die mit Icinga 2 zusammenarbei-tet. Auch die REST-API von Icinga 2 als Schnittstelle zum Datenaustauschmit beliebigen anderen Komponenten wird eingehend vorgestellt. Das Ka-pitel stellt einige Projekte aus dem Bereich Graphing vor, die Icinga 2 mitDaten beliefern kann, und erklärt, wie diese wiederum in Icinga Web 2 vi-sualisiert werden. In Logmanagement geht es um die Alarmierung bei Ano-malien, die in Logfiles erscheinen und ausgewertet werden müssen. Der Di-rector als grafisches Konfigurationswerkzeug wird ebenfalls in diesem Teilbehandelt, da er in der Lage ist, Daten aus unterschiedlichen Datenquellenzu beziehen, um daraus eine Überwachungskonfiguration zu erzeugen.

    Den Abschluss bildet der Anhang mit Tipps zum Troubleshooting,durchzuführenden Updates und wichtigen anzustellenden Überlegungen.Zusätzlich befinden sich hier viele Codebeispiele, die die vorangegangenenKapitel unterstützen.

    Neues in der zweiten Auflage

    Alle Kapitel wurden überarbeitet und größenteils komplett neu geschrie-ben. Dies hatte massive Umstrukturierungsmaßnahmen zur Folge. So be-findet sich der Themenkomplex rund um Icinga Web 2 nicht mehr in einemKapitel, sondern er verteilt sich auf deren drei in unterschiedlichen Teilen

  • x Vorwort

    dieses Buchs. Umfangreiche Erweiterungen erfuhren z. B. Icinga Web 2 undGraphing. Neu hinzugekommen sind die Themen Director, Hochverfügbar-keit und die REST-API. All diesem ist der Umstand geschuldet, dass diezweite Auflage den doppelten Umfang im Vergleich zum Vorgänger hat.

    In diesem Buch behandelte Versionen

    Dieses Buch behandelt hauptsächlich Icinga 2 in der Version 2.8 undIcinga Web 2 2.5. Alle Beispiele zu Installationen beziehen sich, wenn nichtanders angegeben, auf die Distributionen RHEL/CentOS 7 bzw. Debian 9.Dabei wird RHEL wie auch CentOS mit RedHat synonym verwendet.

    Das in mehreren Kapiteln eingesetzte und in seiner Benutzung be-schriebene MySQL wird ebenfalls als Synonym für MariaDB benutzt.

    Typografische Konventionen

    In diesem Buch werden folgende typografischen Konventionen verwendet:

    n NichtproportionalschriftWird benutzt für Namen von Programmen, Befehlen sowie für Codebei-spiele.

    n KursivschriftKommt zum Einsatz bei spezifischen Wörtern in Konfigurationenwie Schlüsselwörtern, Objektnamen, deren Attribute oder Custom-Attribute.

    n Nichtproportionalschrift kursivWird bei Datei- und Verzeichnisnamen verwendet.

    Kommandos oder Codezeilen, die dem Format dieses Buchs geschul-det einem unnötigen oder falschen Zeilenumbruch unterworfen sind,haben am Ende der Zeilen einen Backslash »\«.

  • xi

    Danksagungen

    Thomas Widhalm

    Ich möchte die Chance nutzen und folgenden Leuten danken: Dr. Michael Bara-bas, Stefanie Weidner und Miriam Metsch vom dpunkt.verlag für die Unterstützungbeim Schaffen dieses Buchs. Sie ließen uns alle Freiheiten und waren doch da, wennwir Hilfe brauchten. Das ging sogar so weit, dass sie oft vermittelnd eingriffen, wennweitere Leute benötigt wurden, um das Projekt voranzutreiben. Daher kennen wirteilweise die guten Geister nicht namentlich, denen wir es verdanken, dass diesesBuch nun gedruckt vor uns liegt. Das betrifft insbesondere einige der Reviewer undLektoren, denen ich gerne ganz besonders danken möchte. Es war sicher nicht im-mer leicht, dieselben missachteten Rechtschreibregeln immer und immer wiederausbessern zu müssen. Vielen Dank für das Feedback und die Geduld.

    Im Weiteren möchte ich mich bei der Firma NETWAYS GmbH bedanken, diees uns nicht nur ermöglicht, uns täglich mit Projekten rund um Icinga 2 und dieanderen in diesem Buch erwähnten Tools zu beschäftigen, sondern uns auch sehraktiv beim Schaffen dieses Buchs unterstützt hat, sei es durch Zeit zum Schreibenoder Hardware für Teststellungen. Aber die NETWAYS hat auch indirekt ihren Teilzum Buch beigetragen: Ohne einen Arbeitgeber und Kollegen, bei denen man sichderartig wohlfühlt, hätte zumindest ich nicht die Muße, noch Freizeit in ein Projektdieser Größenordnung zu stecken. NETWAYS – just awesome.

    Auch das Icinga-Team hat natürlich seinen Anteil an der Entstehung diesesBuchs. Ohne seine Arbeit gäbe es nichts, worüber wir schreiben könnten. Aber eini-ge der Teammitglieder haben uns auch direkter unterstützt: mit Reviews und demBeantworten einiger Fragen, die sich im Laufe des Schreibens ergeben haben. IhrenTeil beigetragen haben alle, aber namentlich nennen möchte ich vor allem Bernd,Michi, Gunnar, Eric und Tom, die besonders unter uns zu leiden hatten.

    Bedanken möchte ich mich ebenfalls bei einigen meiner Kunden, mit denen ichmich ausgiebig über das Buch unterhalten habe und in deren Umgebung der eineoder andere Codeschnipsel seinen Ursprung hat. Ihr wisst hoffentlich, dass ich euchmeine.

    Nicht vergessen möchte ich meine Eltern. Sie haben immerhin viel dazu beige-tragen, dass ich zu dem geworden bin, der ich heute bin. Ohne ihre Unterstützunghätte ich mich nicht dahin entwickeln können, wo ich jetzt stehe. Vielen Dank dafür,dass ihr mir geholfen habt, wo ich es brauchte, ohne mich daran zu hindern, meinenWeg zu gehen.

  • xii Danksagungen

    Ebenso danke ich meinen Freunden aus früherer und heutiger Zeit. Auch sie habenihren Anteil daran, dass ich jetzt in der Lage bin, zu tun, was ich tue. Dankbar binich vielen, aber namentlich erwähnen möchte ich den Hias, Asi und Babsi, die mirgezeigt haben, wie schön es ist, enge Freunde zu haben. Andi danke ich dafür, dasser mir in einer sehr dunklen Zeit beigestanden hat und immer noch mein Freundist. Max dafür, dass er so vieles nachvollziehen konnte. Und Benny »sleepless« dafür,dass er mir bewiesen hat, dass enge Freundschaften auch über das Internet möglichsind. Joe dafür, dass er ein lebendes Beispiel dafür ist, dass man verwandt undbefreundet zugleich sein kann. Pazi dafür, dass sie einem immer das Gefühl gibt,willkommen und geschätzt zu sein, egal, wie lang man sich mal wieder nicht gese-hen hat. Dem Plainer dafür, dass er die ritterlichste Person ist, die ich kenne. Danieldafür, dass er mir gezeigt hat, dass man Gleichgesinnte in den unterschiedlichstenMenschen finden kann. Meinen Schwiegereltern dafür, dass sie mich so offen aufge-nommen haben.

    Danken möchte ich den »Drei ???« für endlose Stunden voller Hörspiele währendZugfahrten und beim Einschlafen, George Lucas für »Star Wars« und Extrema Ratiofür die besten Messer der Welt.

    Natürlich möchte ich auch Lennart dafür danken, dass wir gemeinsam diesesProjekt gestemmt haben. Es war sicher nicht immer leicht mit mir und ohne ihnwäre das Buch wohl nie Realität geworden. Danke dafür und beileibe nicht nurdafür! Unter anderem auch für viele erheiternde und erhellende Gespräche, gemein-same Videoabende und Diskussionen über den Unterschied zwischen Deutsch undÖsterreichisch. Dafür, dass du Kollege und Freund bist.

    Auch unserer Hündin Afra möchte ich danken. Sie hilft mir immer wieder, denKopf bei einem Spaziergang freizubekommen oder mich aufzuheitern, wenn michmal wieder was »anzipft«.

    Zu guter Letzt möchte ich mich bei meiner Frau Ina bedanken. Für mehr, als ichhier aufzählen kann, aber vor allem auch dafür, dass sie meinen Job als Consultantakzeptiert und dabei so oft auf mich verzichtet. Dass sie immer da ist, wenn ichUnterstützung und ein offenes Ohr brauche, und nie gemurrt hat, wenn es wiedermal »ums Buch« ging. Aber auch für die vielen wunderbaren gemeinsamen Jahre,weshalb auch sie maßgeblich daran beteiligt ist, dass ich so ein Projekt überhauptangehen konnte. Vielen, vielen Dank!

    Danke euch allen, dass ihr euch meine endlosen »Ich schreib jetzt mein eigenesBuch!«- und »Ja, es ist eh bald fertig«-Vorträge angehört und ertragen habt. Unddanke auch einigen von euch für die Kommentare, Meinungen und Reviews, die alledieses Buch besser gemacht haben, als es ohne euch geworden wäre.

    Für die zweite Auflage möchte ich noch mal all jenen danken, die unser erstes»Baby« so aufmerksam gelesen und uns unheimlich wertvolles Feedback gegebenhaben. Ich hoffe, wir haben alles erwischt und berücksichtigt. Es ist immer wiederschön, mit Lesern zu reden und zu sehen, wenn es tatsächlich jemandem genützthat.

    Vielen Dank für alles.Thomas Widhalm

  • Danksagungen xiii

    Lennart Betz

    Da hat mir der Thomas nicht viel übrig gelassen. Ich möchte all denen in meiner Fa-milie und meinem Freundeskreis danken, die unter diesem Projekt gelitten haben.

    Ein besonderen Dank an Bernd, Michael und Bodo. An Bernd, der das Vorwortauch zur zweiten Auflage verfasste, Michael Friedrich, der das Kapitel über Da-shing beisteuerte, und Bodo Schulz, der sich mit einem Abschnitt über die von ihmgeschriebene Ruby-Bibliothek beteiligte.

    ServusLennart

  • xv

    Feedback

    Die Qualität jedes Fachbuchs misst sich am Nutzen, den es für seine Leserhat. Wir würden uns freuen, davon zu hören, was Sie als Leser nützlichim Buch fanden und wo wir uns noch verbessern können. So wie sich diebeschriebene Software weiterentwickelt, soll es auch unser Buch tun undhiermit geben wir Ihnen die Chance, die Richtung zu beeinflussen, in die esgeht.

    Für Rückmeldungen zum Buch freuen wir uns über E-Mails [email protected].

  • xvii

    Inhaltsverzeichnis

    I Einführung 1

    1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.1 Es war einmal... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.2 Software-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.3 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.1 Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.2 Sicherheits- und Zugriffskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.3 Icinga 2 und Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    2.4 Icinga Data Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2.5 API einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    2.6 Icinga Web 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3 Erste Schritte auf der Benutzeroberfläche . . . . . . . . . . . . . . . . . . . 37

    3.1 Dashboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    3.2 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    3.3 Detailansicht von Host- und Service-Checks . . . . . . . . . . . . . . . . . . . . . . . 40

    3.4 Monitoring Health . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    3.5 Aktionen auf Mehrfachauswahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    3.6 Benutzereinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    4 Grundkonfiguration von Icinga 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    4.1 Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    4.2 Icinga Template Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    4.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    5 Überwachen mit Icinga 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.1 Kleine Sprachreferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.2 Check Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    5.3 Host und Hostgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    5.4 Service und Servicegroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.5 Makros und deren Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    5.6 Timeperiods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

  • xviii Inhaltsverzeichnis

    5.7 Scheduled Downtimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    5.8 Debugging der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    5.9 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    6 Informationsabfrage mit SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    6.1 Internet Standard Management Framework . . . . . . . . . . . . . . . . . . . . . . . 81

    6.2 Die Management Information Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    6.3 SNMP-Versionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    6.4 Tools zur SNMP-Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    II Betriebssystemüberwachung 91

    7 Der Icinga-Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    7.1 Konfiguration des Masters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    7.2 Zertifikate beglaubigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    7.3 Konfiguration des Icinga-Agenten auf Linux . . . . . . . . . . . . . . . . . . . . . . . 105

    7.4 Konfiguration des Icinga-Agenten auf Windows . . . . . . . . . . . . . . . . . . . . 111

    7.5 Anbindung von Agenten an den Master . . . . . . . . . . . . . . . . . . . . . . . . . . 114

    7.6 Überwachen von Linux mittels Icinga-Agent . . . . . . . . . . . . . . . . . . . . . . . 118

    7.7 Überwachen von Windows mittels Icinga-Agent . . . . . . . . . . . . . . . . . . . . 123

    7.8 Automatisierung der Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    8 Überwachung mittels Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    8.1 Schlüsselpaar und Client-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    8.2 Unix-Überwachen mittels SSH am Beispiel von Solaris . . . . . . . . . . . . . . 134

    9 Überwachung mit NRPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    9.1 Linux-Überwachung per NRPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    9.2 Windows-Überwachung per NRPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    10 SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

    10.1 NET-SNMP-Agent auf Unix-Systemen . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

    10.2 Plugins für SNMP-Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

    III Fortgeschrittene Überwachung 159

    11 Icinga Web 2 einsetzen und anpassen . . . . . . . . . . . . . . . . . . . . . . . . 161

    11.1 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    11.2 Dashboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

    11.3 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

    11.4 Acknowledgements – Bestätigen von Problemen . . . . . . . . . . . . . . . . . . . 173

    11.5 Downtimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

  • Inhaltsverzeichnis xix

    12 Benachrichtigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

    12.1 Das Benachrichtigungssystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    12.2 Flapping-Erkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

    12.3 Abhängigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    12.4 Eskalationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    12.5 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    12.6 Benachrichtigung über Telegram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    13 Verteilte Überwachung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    13.1 Zonen und Endpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    13.2 Installation und Konfiguration eines Satelliten . . . . . . . . . . . . . . . . . . . . . 200

    13.3 Konfiguration auf Zonen aufteilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    13.4 Zertifikatsbeglaubigung in Verteilten Umgebungen . . . . . . . . . . . . . . . . . 207

    13.5 Dezentrale Benachrichtigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

    14 Beispielumgebung aus der Praxis . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

    14.1 Analyse der Ausgangslage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

    14.2 Planung der Monitorumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

    14.3 Implementation der Grundüberwachung . . . . . . . . . . . . . . . . . . . . . . . . . . 213

    15 Applikationen und Dienste überwachen . . . . . . . . . . . . . . . . . . . . . . 231

    15.1 Netzwerkdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    15.2 Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

    15.3 Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

    15.4 SAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

    15.5 Microsoft-Infrastrukturdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

    15.6 Elastic Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

    15.7 VMware vSphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

    15.8 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

    15.9 Datensicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

    15.10 Puppet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

    15.11 Plugins entwickeln und veröffentlichen . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

    15.12 Bewerten von Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

    16 Hochverfügbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

    16.1 Icinga 2 hochverfügbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

    16.2 IDO hochverfügbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

    16.3 Icinga Web 2 hochverfügbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

    16.4 Director hochverfügbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

    16.5 Grapher hochverfügbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

    16.6 Split Brain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

    16.7 Externe Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

  • xx Inhaltsverzeichnis

    IV Integration 383

    17 Erweiterung der Funktionalität von Icinga Web 2 . . . . . . . . . . . . . . 385

    17.1 Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

    17.2 Berechtigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

    17.3 Icinga Web 2 auf der Kommandozeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

    17.4 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

    18 Businessprozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

    18.1 Einen ersten Businessprozess anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

    18.2 Benachrichtigungen einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

    18.3 Bearbeiten von Prozessen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

    18.4 Simulation von Ausfällen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

    18.5 Ein komplexes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

    19 Director . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

    19.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424

    19.2 Deployment der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

    19.3 Hosts und Host-Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    19.4 Services und deren Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

    19.5 Servicesets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

    19.6 Datenfelder und Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

    19.7 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

    19.8 Kombination mit Konfigurationsdateien mittels Fileshipper . . . . . . . . . . 450

    19.9 Automatisierung und Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

    19.10 Benachrichtigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

    19.11 Integration der Agenten-Installation mit Powershell . . . . . . . . . . . . . . . . . 463

    19.12 Monitoring des Director . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

    20 Graphing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

    20.1 Datenbanken für Zeitreihen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

    20.2 PNP4Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

    20.3 Graphite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

    20.4 InfluxDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

    20.5 Grafana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

    20.6 Wachsende Zähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

    21 Icinga 2 REST-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

    21.1 ApiUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538

    21.2 curl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

    21.3 Einfache Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543

    21.4 Komplexe Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

    21.5 Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548

  • Inhaltsverzeichnis xxi

    21.6 Verwalten von Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

    21.7 Abonnieren von Event Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556

    21.8 Browser-Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557

    21.9 Ruby-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

    21.10 Dashboards für Gesamtübersichten mit Dashing . . . . . . . . . . . . . . . . . . . 563

    22 Logmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

    22.1 Elastic Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

    22.2 Icinga 2 Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593

    Anhang 599

    A Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

    A.1 Do it yourself . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

    A.2 Professionelle Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604

    A.3 Vorbereitung ist alles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604

    A.4 Ein Treffen mit Freunden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

    B Ergänzungen zur Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607

    B.1 Check Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607

    B.2 Templates für Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632

    C Goldene Bulle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639

    C.1 Benachrichtigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639

    C.2 Autarkes Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640

    C.3 Überwachung der Monitoring-Infrastruktur . . . . . . . . . . . . . . . . . . . . . . . . 641

    C.4 Aussagekraft der Überwachung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642

    C.5 Passive Checks nur in Kombination mit aktiven Checks . . . . . . . . . . . . . 643

    C.6 Hinterfragen von bestehenden Systemen . . . . . . . . . . . . . . . . . . . . . . . . . . 643

    C.7 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644

    D Das, was du zurücklässt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645

    D.1 Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645

    E Abkürzungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649

    Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

  • Teil I

    Einführung

  • 3

    1 Einleitung

    Mit dem Begriff »Monitoring« werden Systeme bezeichnet, die den Zu-stand von Geräten und Programmen überwachen und beim Abweichen vomgewünschten Zustand Alarmmeldungen verschicken.1

    Ohne Monitoring können die Betreuer von IT-Systemen nur dann rea-gieren, wenn ein Anwender eine Störung meldet oder sie selbst durch sehrzeitaufwendige manuelle Kontrolle oder per Zufall ein Problem feststellen.Beim heute üblichen Zahlenverhältnis zwischen Systemen und Betreuernist eine manuelle Kontrolle nicht mehr zu realisieren und wenn ein Anwen-der ein Problem feststellt, ist es eigentlich schon zu spät, da genau dieseProbleme ja verhindert werden sollen.

    Um diese Problematik zu lösen, werden Monitoring-Systeme benötigt,die versuchen, Schwierigkeiten frühzeitig zu bemerken, damit sie behobenwerden können, bevor sie größeren Schaden anrichten können oder bevorBenutzer davon betroffen sind. Dafür gibt es verschiedene Ansätze:

    n Ermitteln von Ergebnissen einer eigenen Statusprüfung und Logs vonAnwendungen oder Hardware.

    n Ende-zu-Ende-Checks wie das Versenden einer E-Mail und Prüfen, obsie auch ankommt.

    n Simulieren einer Nutzung eines Dienstes wie das Aufrufen einer Web-site.

    n Prüfen von Eckdaten eines Systems wie das Abfragen der Festplatten-auslastung mit Bordmitteln.

    Icinga 2 bietet dabei die Möglichkeit, alle oben genannten Verfahren abzu-decken, spezialisiert sich jedoch auf die letzten beiden Ansätze. Diese Fle-xibilität rührt daher, dass Icinga 2 selbst keine Funktionalität zur direktenÜberwachung enthält, aber sehr gut darin ist, »Plugins«, also ausführba-re Dateien, die ein paar Anforderungen erfüllen, laufen zu lassen und dieAusgabe zu interpretieren. Falls sich also eine Überwachungsmöglichkeitin einer ausführbaren Datei realisieren lässt, kann sie auch in Icinga inte-griert werden.

    1Dies ist keine offizielle Definition, zeigt aber Sinn und Zweck des in diesem Buchbeschriebenen Tools Icinga 2.

  • 4 1 Einleitung

    1.1 Es war einmal...

    Icinga 2 ist ein sehr modernes Monitoring-System, das keinen Code von sei-nen geistigen Vorgängern enthält, aber fast alle bewährten Konzepte wei-terverwendet. Diese Ähnlichkeit erleichtert vor allem Umsteigern die Ar-beit mit Icinga 2 deutlich. Die folgenden Zeilen sollen einen kurzen Über-blick über die bisherige Entwicklung geben.

    1.1.1 Icinga

    Im April 2009 wurde das Icinga-Projekt gegründet, das einen Forkdes Nagios-Monitoring-Systems entwickeln sollte, da viele Community-Mitglieder unglücklich über den Umgang mit eingereichten Patches undden Umgang von Nagios Enterprises mit der Nagios-Community waren.Bei einem Fork wird der aktuelle Stand des Quellcodes eines Programmsvon verschiedenen Entwicklerteams in unterschiedliche Richtungen weiter-entwickelt. Häufig wird dabei das bisherige Team aufgespalten und je einTeil entwickelt vom gleichen Ausgangspunkt aus in verschiedene Richtun-gen weiter. Üblicherweise behält dabei ein Team den Namen des Produktsbei und das andere sucht sich einen neuen. Beim Icinga-Team fiel die Wahlauf »Icinga«, das Zulu-Wort für »Ausschau halten«.

    Der Fork, und damit auch die weiteren Schritte wie die Evolution vonIcinga zu Icinga 2, war insbesondere auch möglich, da einige Firmen be-reit waren, Entwicklern Zeit zu sponsern, um die Entwicklung von Icingavoranzutreiben. Dies geschah meist aus Eigeninteresse, da sie Monitoringauf Nagios-Basis bei sich oder ihren Kunden erfolgreich einsetzten und ei-ne Lösung für die schleppende Entwicklung suchten. Der Fork war nötig,da zuvor zwar entwickelt wurde, die daraus resultierenden Patches jedochnicht in Nagios einflossen. Das Icinga-Team bemüht sich, schneller auf In-put aus der Community zu reagieren, und hat auch genug »Stammmit-glieder«, um die Entwicklung voranzutreiben. Eine dieser Firmen ist dieNETWAYS GmbH2 aus Nürnberg in Deutschland, die einige der Icinga-Kernentwickler angestellt hat, die entweder im Kundenauftrag oder alsDienst an der Community weiter an Icinga, Icinga 2 und anderen Tools ausdiesem Ökosystem arbeiten. Auch die Autoren dieses Buchs haben von derNETWAYS GmbH Zeit gesponsert bekommen, um dieses Projekt zu ver-wirklichen.

    2http://www.netways.de

    http://www.netways.de

  • 1.1 Es war einmal... 5

    1.1.2 Icinga 2

    Um einige sehr tief im Code verwurzelte Einschränkungen aufzulösen, hatsich das Icinga-Team entschlossen, mit dem Code bei null zu beginnen undalles komplett neu zu schreiben. Das Resultat ist das Release von Icinga 2Version 2.0 vom 16. Juni 2014. Darin wurden die bekannten Konzepte inder Bedienung weitergeführt, aber auch einige sehr wichtige Neuerungeneingeführt.

    Diese Neuerungen umfassen unter anderem:

    n eine Domain Specific Language (DSL) zur Konfigurationi,n den integrierten Cluster-Stack, zur Kommunikation von verschiedenen

    Icinga-Instanzen untereinander,n das Verteilen von Teilen der Konfiguration an beliebig viele andere

    Icinga 2 Instanzen,n besseres Ausnutzen der verfügbaren Ressourcen durch Multithreading,n der Einsatz als Agent,n die API, mit der u. a. zu überwachende Objekte zur Laufzeit hinzugefügt

    werden können.

    Die neue regelbasierte Sprache erlaubt eine deutlich flexiblere Konfigura-tion. Viele Objekte, die früher einzeln definiert werden mussten, könnennun automatisch durch Auswerten von Regeln und Funktionen angegebenwerden. Das spart nicht nur sehr viel Tipparbeit, sondern schützt auch vorFehlern, da einmal definierte Regeln natürlich auch für neue Objekte gel-ten.

    Um Demilitarized Zones (DMZs) oder entfernte Netzwerke zu überwa-chen, wurden auch bei den Vorgängern von Icinga 2 schon mehrere Instan-zen verwendet, die miteinander kommunizieren. Allerdings enthielten diesekeinen nativen Weg, mehrere Instanzen miteinander zu verbinden, weshalbverschiedenste Lösungen dafür entwickelt wurden. Diese waren jedoch teil-weise kompliziert zu konfigurieren und oft auch nicht performant genug,um die Zeit zwischen Auftreten einer Störung und der Alarmierung ausrei-chend kurz zu halten. Dieses Verbinden von Instanzen wurde auch genutzt,um die auftretende Last zwischen mehreren Hosts zu verteilen und in Ver-bindung mit Clustertools wie corosync3 und pacemaker4 Hochverfügbar-keit zu erreichen.

    Durch die neue Clusterfunktionalität können nicht nur lastverteilte undhochverfügbare Cluster mit Icinga 2 Bordmitteln erreicht werden, auch un-tergeordnete Icinga 2 Instanzen in anderen Netzsegmenten können Ergeb-

    3http://corosync.github.io/corosync4http://clusterlabs.org/pacemaker

    http://www.netways.dehttp://clusterlabs.org/pacemaker

  • 6 1 Einleitung

    nisse von Checks, die sie ausführen, an zentrale Instanzen weiterschicken.Diese zeigen einen Gesamtüberblick an und alarmieren.

    Über die Clusterverbindung kann auch von zentralen Systemen aus ei-ne Konfiguration an untergeordnete Instanzen ausgebracht werden.

    Die Vorgänger von Icinga 2 liefen als ein einziger Thread und konn-ten so auch nur einen CPU-Kern ausnutzen. Zwar waren die gestartetenPlugins immer schon eigene Threads, dennoch wurde dadurch einer Instal-lation eine Obergrenze an zu überwachenden Systemen gesetzt. Icinga 2ist nun multithreaded und kann die zur Verfügung stehenden Ressourcentatsächlich ausnutzen.

    Durch den geringen Ressourcenverbrauch des Icinga 2 Kerns, die Clus-terverbindung und die Konfigurationsverteilung hat sich eine neue Anwen-dungsmöglichkeit als Agent ergeben. Dabei wird eine Icinga 2 Instanz aufeinem zu überwachenden Host installiert, die nur eben diesen überwacht.Die Ergebnisse leitet sie über die Clusterverbindung an eine zentrale In-stanz weiter, die die Checks aller angeschlossenen Icinga 2 Instanzen sam-melt und eine Übersicht zur Verfügung stellt. Konfiguriert wird sie von derzentralen Instanz aus. Für einen Vergleich aus Anwendersicht bietet dieIcinga 2 Onlinedokumentation5 einen umfassenden Überblick an.

    1.1.3 Namen und Versionen

    Aktuell wird nur noch die Version 2.x weiterentwickelt. Dieses Buch behan-delt ausschließlich den 2.x-Zweig der Entwicklung. Mit dem Versionssprungvon 1.x auf 2.x geht aber auch eine Umbenennung einher, daher heißt dasTool nun tatsächlich »Icinga 2 Version 2.x«.

    Gleiches gilt für das moderne Webinterface Icinga Web 2. Es ist übrigenszu beiden existierenden Icinga-Varianten kompatibel, weshalb man durch-aus Icinga 2 2.8.1 wie auch Icinga 1.13.3 mit Icinga Web 2 2.5.1 betreibenkann.

    Die hier genannten Versionen waren zum Zeitpunkt, als die zweite Auf-lage dieses Buchs entstand, die jeweils aktuellsten.

    1.2 Software-Komponenten

    Ein Monitoring-System auf Basis von Icinga 2 besteht aus mehreren Teil-komponenten, so bildet der Core »Icinga 2« das Grundgerüst. Er regelt alleAbläufe, unter anderem z. B., wann was wie zu überwachen ist.

    Die eigentliche Arbeit der Überwachung wird dann durch sogenanntePlugins erledigt, die vom Core aufgerufen werden und deren Ergebnisse

    5https://www.icinga.com/docs/icinga2/latest/doc/23-migrating-from-icinga-1x/

    https://www.icinga.com/docs/icinga2/latest/doc/23-migrating-from-icinga-1x/

  • 1.3 Grundlagen 7

    dann verarbeitet werden. Plugins werden gesondert angeboten und nichtvom Icinga-Team betreut.

    Die Komponente Icinga Web 2 ist ein in Hypertext Preprocessor (PHP)geschriebenes Framework zur Darstellung der ermittelten Ergebnisse derÜberwachung mit Icinga 2. Als Schnittstelle zwischen Core und dem in ei-nem Webserver laufenden Icinga Web 2 muss eine Datenbank verwendetwerden. Unterstützt werden ausschließlich MariaDB respektive MySQLoder PostgreSQL. Das Beschicken dieser Datenbank ist über ein expliziteinzuschaltendes Core-Feature zu aktivieren.

    n Icinga 2n Plugins, z. B. die Monitoring-Plugins6

    n MariaDB-, MySQL- oder PostgreSQL-Datenbankn Icinga Web 2n Webserver mit PHP, standardmäßig Apache

    Alle Komponenten werden in eigenen Projekten gepflegt und weiterent-wickelt, somit wird auch jede unter einer eigenen Versionierung geführt.Darüber hinaus existieren viele weitere Komponenten, die über das bis hier-her Erwähnte hinausgehen. So existiert mit dem Director eine Integrationin Icinga Web 2 zur grafisch unterstützten Konfiguration oder diverse Pro-jekte, die zeitliche Verläufe von Daten aus anderen Projekten wie Graphiteoder InfluxDB einbinden.

    1.3 Grundlagen

    Icinga 2 ist wie auch sein Vorgänger auf Verfügbarkeitsüberwachung aus-gelegt. Hierbei wird primär mit aktiven Checks gearbeitet. Als ein Checkwird der Test eines Hosts oder Services bezeichnet. Jedes Gerät mit einerIP-Adresse wird als Host-Objekt betrachtet. Ein Service ist immer einemHost zugeordnet, ist also z. B. ein auf einem Host laufender Dienst odereine zu überwachende Hardwarekomponente. Die Logik, wie Tests zu erfol-gen haben, ist in sogenannten Plugins implementiert. Plugins sind externeProgramme, die für jeden aktiven Check aufgerufen werden und über ihrenReturncode den ermittelten Status zurückgeben.

    Plugins können somit auch durch den Benutzer zu Testzwecken aufge-rufen werden. Zu beachten ist, dass dies durch den Benutzer erfolgen sollte,unter dem der Icinga 2 Prozess ausgeführt wird. Auf RedHat-Systemen istdas icinga, auf Debian hingegen historisch bedingt der Benutzer nagios.

    $ sudo -u icinga /usr/lib64/nagios/plugins/check_procs

    PROCS OK: 100 processes | procs=100;;;0;

    6http://www.monitoring-plugins.org

    http://www.monitoring-plugins.org

  • 8 1 Einleitung

    So ermittelt z. B. das Plugin check procs durch einen Aufruf ohne Para-meter die momentan auf dem System lauffähigen Prozesse. Die Ausgabeinformiert über den ermittelten Status und die Anzahl der Prozesse. DerText nach dem senkrechten Strich (Pipe) enthält Metriken, die das Pluginermittelt hat, die sogenannten Performance-Daten. Eine genaue Erläute-rung erfolgt in Kapitel 20 ab Seite 470.

    Plugins sollten auch immer eine Hilfsfunktion bieten, damit ein Anwen-der dessen Funktionsumfang kennenlernen kann.

    $ cd /usr/lib64/nagios/plugins$ sudo -u icinga ./check_procs --helpcheck_procs v2.1.4 (nagios-plugins 2.1.4)

    Copyright (c) 1999 Ethan Galstad

    Copyright (c) 2000-2014 Nagios Plugin Development Team

    Checks all processes and generates WARNING or CRITICAL

    states if the specified metric is outside the requiredthreshold ranges. The metric defaults to number of

    processes. Search filters can be applied to limit the

    processes to check.

    Usage:

    check_procs -w -c [-m metric] [-s state]

    [-p ppid] [-u user] [-r rss] [-z vsz] [-P %cpu]

    [-a argument-array] [-C command] [-k] [-t timeout] [-v]

    Options:

    -h, --helpPrint detailed help screen

    -V, --version

    Print version information

    --extra-opts=[section][@file]

    Read options from an ini file. See

    https://www.nagios-plugins.org/doc/extra-opts.html

    for usage and examples.-w, --warning=RANGE

    Generate warning state if metric is outside this range-c, --critical=RANGE

    Generate critical state if metric is outside this range

    [...]

    Plugins müssen vier Zustände zurückliefern können, OK, WARNING, CRI-TICAL und UNKNOWN. Diese werden als Returncode vom Plugin zurückgegeben. Kann ein Zustand nicht ermittelt werden, weil z. B. das Pluginnicht ausführbar ist oder eine gewisse Laufzeit überschreitet und damit in