ICINGA – Open Source Monitoring in Web 2.0 Style




  Icinga Development Team

  @ FrOSCon 6

  21.08.2011 Sankt Augustin
Agenda

●
    Einführung
●
    Icinga an sich
●
    Team
●
    Projekt
●
    Icinga-Core
●
    Icinga-Web
●
    Icinga-Reporting
●
    Demo
●
    Roadmap
Einführung

   29 Jahre alt


   Icinga-Member ab dem zweiten Tag


   Webentwicklung mit PHP5, Ajax, HTML5


   Aufgaben
    • Entwicklung Icinga-Web
    • GIT Repositories
    • Demo Systeme
Icinga an sich

 Open Source (GPL v2, v3)
 Monitoring Software
 Fork von Nagios (c) Mai 2009
 Voll kompatibel zu Nagios
    •   Konfiguration
    •   Plugins
    •   Addons
    •   NEBs
   Komponenten Basiert
    • Core (Natives Interface, Datenbank)
    • Reporting (Jasper)
    • Icinga-Web
Icinga an sich ...
Icinga Team




              ?
Icinga Team - Locations
Das Icinga Projekt
Projekt: Struktur und Kommunikation



  feedback.icinga.org


  www.icinga.org        dev.icinga.org     wiki.icinga.org     docs.icinga.org


                   Mailinglisten: icinga-users, icinga-devel


                          Icinga-Web

   Icinga-Core           Icinga-Mobile          Reporting        Icinga-Docs


                    translate.icinga.org
Icinga an sich: Toolset



Icinga-Core                          Icinga-Web

●
  C basierter Quellcode              ●
                                       PHP5, Agavi MVC
●
  Native CGIs                        ●
                                       Sencha ExtJS
●
  MySQL, PostgreSQL, Oracle          ●
                                       Doctrine ORM
                              GIT
                               GIT                            GIT
                                                               GIT


                                     Icinga-Doc
Icinga-Reporting
                                     ●
                                       Docbook XML
●
  JasperServer                       ●
                                       Deutsch und Englisch
●
  Tomcat                             ●
                                       Verschiedene Formate
                              GIT
                               GIT                            GIT
                                                               GIT
Icinga-Core

                      Check Ausführung:
                      SSH, NSCA, NRPE
        Icinga-Core


         IDOMOD

                      Check Ergebnisse:
         IDO2DB
                           Passiv




           IDO

    ●
      MySQL
    ●
      Postgre
    ●
      Oracle
Icinga-Core: Features

   Performance und Bugfixes

   Weiterentwicklung des nativen Webinterfaces

   Exportmöglichkeiten (CSV, JSON)

   Multi Commands

   DB Schnittstelle für MySQL, Postgre und Oracle

   Escalation Conditions

   Dauerhafte und aktuelle Statusübersicht

   Öffentliche und laufende Entwicklung
Icinga-Core: Ausblick

   Integration SLA Daten
     •   Sammeln von SLA Daten in der Datenbank
     •   Durchgängiger Zeitstrahl mit statusrelevanten Unterbrechungen
     •   Dadurch anpassbar auf Verträge und Interpretation

   CoreAPI
     •   Saubere Trennung von Core- und Schnittstellenfunktionen
     •   Interne Datenorganisation anhand von Structs

   ZeroMQ Implementierung
     •   Interne und Externe Kommunikation über Messagebus
     •   Systeme koppelbar
     •   Datenaustausch mit Addons durch Abonnement-Prinzip
     •   Klare Trennung vom Core (Addons haben keinen direkten Einfluss mehr auf den Core)
NagiosBP   EventDB           PNP
Icinga-Web: Architektur



                                          Heatmap        LConf
 Icinga-Core 1




                    Icinga-Core 1              Icinga-Web


                                               Doctrine API
                                                REST API
           IDO

    ●
      MySQL
    ●
      PostgreSQL
    ●
      Oracle                                   Icinga-Mobile
Icinga-Web: Features

   Mehrbereichsauthentifizierung
     •   LDAP
     •   Basic AUTH
     •   Apache

   Mandantenfähig
     •   Fein-granulare Berechtigungen
     •   Abhängig von Hostgroups, Servicegroups, …
     •   Standard Icinga Berechtigungsmodell


   Portalbasiert
     •   Cronks (Widgets)
     •   Persistente Sichten
     •   Sichten speicherbar
     •   Dynamische Grids

   Erweiterbar in Form von Modulen

   Integrierter Reporting Cronk

   Mehrsprachigkeit (28 Sprachen)
Icinga-Web: HTTP Schnittstelle

   Freie Auswahl aller Felder der integrierten Icinga-Web API
   Geschachtelte Abfragen (Condition 1 AND (Condition 2
    OR (Condition 3 AND Condition 4))..etc.)
   Sortierung, Limitierung und Gruppierung
   Ausgabe in XML oder JSON
   Kommandos via GET/PUT
   Berechtigungen von Benutzer übernommen
Icinga-Web: HTTP Schnittstelle - Beispiel

    http://localhost/icinga-web/modules/web/api/service/filter[AND(HOST_CURRENT_STATE|=|
    0;OR(SERVICE_CURRENT_STATE|=|1;SERVICE_CURRENT_STATE|=|2))]/ columns(SERVICE_NAME|HOST_NAME|
    SERVICE_CURRENT_STATE|HOST_NAME|HOST_CURRENT_STATE|
    HOSTGROUP_NAME)/order(SERVICE_CURRENT_STATE;DESC)/countColumn=SERVICE_ID/authkey=APITEST123456/
    xml




<results>
   <result>
       <column name="SERVICE_ID">295</column>
       <column name="SERVICE_OBJECT_ID">139</column>
       <column name="SERVICE_IS_ACTIVE">1</column>
       <column name="SERVICE_INSTANCE_ID">1</column>
       <column name="SERVICE_NAME">MailQ</column>
       <column name="SERVICE_DISPLAY_NAME">MailQ</column>
       <column name="SERVICE_OUTPUT">Error occured:error=1:0:0</column>
       <column name="SERVICE_PERFDATA"></column>
   </result>
   <result>
       <column name="SERVICE_ID">311</column>
       <column name="SERVICE_OBJECT_ID">155</column>
       <column name="SERVICE_IS_ACTIVE">1</column>
       <column name="SERVICE_INSTANCE_ID">1</column>
       <column name="SERVICE_NAME">POP3</column>
       <column name="SERVICE_DISPLAY_NAME">POP3</column>
       <column name="SERVICE_OUTPUT">Verbindungsaufbau abgelehnt</column>
       <column name="SERVICE_PERFDATA"></column>
   </result>
   <total>2</total>
</results>
Icinga-Web: Addons

   Contribution folder

    • Integration für PNP4Nagios
    • Business-Process-View and -Editor

   EventDB Cronk für SNMP und Logfiles

   LConf

   Heatmap

   Generische IFrames

    • Nahtlose Integration jeder Web Applikation
Reporting

   Standard Reporting verfügbar:

    • http://sourceforge.net/projects/icinga/

    • https://git.icinga.org/?p=icinga-reports.git

   Jasper Reporting Server basierend

   Installation des Paketes

    • ./js-import.sh --input-zip icinga_report_package.zip

   Nahtlose Integration in Icinga-Web
Live Demo




            Demo
Roadmap

   Feste Releasezyklen

   Gemeinsame Roadmaps

    • 1.5 - 24.08.2011 - Architektur

    • 1.6 - 09.11.2011 - UI

   Bugfix Releases 1.X.X
Questions and Answers




                  Q&A

Icinga 2011 at FrOSCon 6

  • 1.
    ICINGA – OpenSource Monitoring in Web 2.0 Style Icinga Development Team @ FrOSCon 6 21.08.2011 Sankt Augustin
  • 2.
    Agenda ● Einführung ● Icinga an sich ● Team ● Projekt ● Icinga-Core ● Icinga-Web ● Icinga-Reporting ● Demo ● Roadmap
  • 3.
    Einführung  29 Jahre alt  Icinga-Member ab dem zweiten Tag  Webentwicklung mit PHP5, Ajax, HTML5  Aufgaben • Entwicklung Icinga-Web • GIT Repositories • Demo Systeme
  • 4.
    Icinga an sich Open Source (GPL v2, v3)  Monitoring Software  Fork von Nagios (c) Mai 2009  Voll kompatibel zu Nagios • Konfiguration • Plugins • Addons • NEBs  Komponenten Basiert • Core (Natives Interface, Datenbank) • Reporting (Jasper) • Icinga-Web
  • 5.
  • 6.
  • 7.
    Icinga Team -Locations
  • 8.
  • 9.
    Projekt: Struktur undKommunikation feedback.icinga.org www.icinga.org dev.icinga.org wiki.icinga.org docs.icinga.org Mailinglisten: icinga-users, icinga-devel Icinga-Web Icinga-Core Icinga-Mobile Reporting Icinga-Docs translate.icinga.org
  • 10.
    Icinga an sich:Toolset Icinga-Core Icinga-Web ● C basierter Quellcode ● PHP5, Agavi MVC ● Native CGIs ● Sencha ExtJS ● MySQL, PostgreSQL, Oracle ● Doctrine ORM GIT GIT GIT GIT Icinga-Doc Icinga-Reporting ● Docbook XML ● JasperServer ● Deutsch und Englisch ● Tomcat ● Verschiedene Formate GIT GIT GIT GIT
  • 11.
    Icinga-Core Check Ausführung: SSH, NSCA, NRPE Icinga-Core IDOMOD Check Ergebnisse: IDO2DB Passiv IDO ● MySQL ● Postgre ● Oracle
  • 12.
    Icinga-Core: Features  Performance und Bugfixes  Weiterentwicklung des nativen Webinterfaces  Exportmöglichkeiten (CSV, JSON)  Multi Commands  DB Schnittstelle für MySQL, Postgre und Oracle  Escalation Conditions  Dauerhafte und aktuelle Statusübersicht  Öffentliche und laufende Entwicklung
  • 13.
    Icinga-Core: Ausblick  Integration SLA Daten • Sammeln von SLA Daten in der Datenbank • Durchgängiger Zeitstrahl mit statusrelevanten Unterbrechungen • Dadurch anpassbar auf Verträge und Interpretation  CoreAPI • Saubere Trennung von Core- und Schnittstellenfunktionen • Interne Datenorganisation anhand von Structs  ZeroMQ Implementierung • Interne und Externe Kommunikation über Messagebus • Systeme koppelbar • Datenaustausch mit Addons durch Abonnement-Prinzip • Klare Trennung vom Core (Addons haben keinen direkten Einfluss mehr auf den Core)
  • 14.
    NagiosBP EventDB PNP Icinga-Web: Architektur Heatmap LConf Icinga-Core 1 Icinga-Core 1 Icinga-Web Doctrine API REST API IDO ● MySQL ● PostgreSQL ● Oracle Icinga-Mobile
  • 15.
    Icinga-Web: Features  Mehrbereichsauthentifizierung • LDAP • Basic AUTH • Apache  Mandantenfähig • Fein-granulare Berechtigungen • Abhängig von Hostgroups, Servicegroups, … • Standard Icinga Berechtigungsmodell  Portalbasiert • Cronks (Widgets) • Persistente Sichten • Sichten speicherbar • Dynamische Grids  Erweiterbar in Form von Modulen  Integrierter Reporting Cronk  Mehrsprachigkeit (28 Sprachen)
  • 16.
    Icinga-Web: HTTP Schnittstelle  Freie Auswahl aller Felder der integrierten Icinga-Web API  Geschachtelte Abfragen (Condition 1 AND (Condition 2 OR (Condition 3 AND Condition 4))..etc.)  Sortierung, Limitierung und Gruppierung  Ausgabe in XML oder JSON  Kommandos via GET/PUT  Berechtigungen von Benutzer übernommen
  • 17.
    Icinga-Web: HTTP Schnittstelle- Beispiel http://localhost/icinga-web/modules/web/api/service/filter[AND(HOST_CURRENT_STATE|=| 0;OR(SERVICE_CURRENT_STATE|=|1;SERVICE_CURRENT_STATE|=|2))]/ columns(SERVICE_NAME|HOST_NAME| SERVICE_CURRENT_STATE|HOST_NAME|HOST_CURRENT_STATE| HOSTGROUP_NAME)/order(SERVICE_CURRENT_STATE;DESC)/countColumn=SERVICE_ID/authkey=APITEST123456/ xml <results> <result> <column name="SERVICE_ID">295</column> <column name="SERVICE_OBJECT_ID">139</column> <column name="SERVICE_IS_ACTIVE">1</column> <column name="SERVICE_INSTANCE_ID">1</column> <column name="SERVICE_NAME">MailQ</column> <column name="SERVICE_DISPLAY_NAME">MailQ</column> <column name="SERVICE_OUTPUT">Error occured:error=1:0:0</column> <column name="SERVICE_PERFDATA"></column> </result> <result> <column name="SERVICE_ID">311</column> <column name="SERVICE_OBJECT_ID">155</column> <column name="SERVICE_IS_ACTIVE">1</column> <column name="SERVICE_INSTANCE_ID">1</column> <column name="SERVICE_NAME">POP3</column> <column name="SERVICE_DISPLAY_NAME">POP3</column> <column name="SERVICE_OUTPUT">Verbindungsaufbau abgelehnt</column> <column name="SERVICE_PERFDATA"></column> </result> <total>2</total> </results>
  • 18.
    Icinga-Web: Addons  Contribution folder • Integration für PNP4Nagios • Business-Process-View and -Editor  EventDB Cronk für SNMP und Logfiles  LConf  Heatmap  Generische IFrames • Nahtlose Integration jeder Web Applikation
  • 19.
    Reporting  Standard Reporting verfügbar: • http://sourceforge.net/projects/icinga/ • https://git.icinga.org/?p=icinga-reports.git  Jasper Reporting Server basierend  Installation des Paketes • ./js-import.sh --input-zip icinga_report_package.zip  Nahtlose Integration in Icinga-Web
  • 20.
  • 21.
    Roadmap  Feste Releasezyklen  Gemeinsame Roadmaps • 1.5 - 24.08.2011 - Architektur • 1.6 - 09.11.2011 - UI  Bugfix Releases 1.X.X
  • 22.