NAGIOS Portal Julian Hein NETWAYS GmbH
Ausgangssituation
Schwächen des Nagios Webinterfaces 1. Statusmap in großen Netzen kaum verwendbar 2. Keine richtige Managementansicht 3. Erscheinungsbild kaum anpassbar 4. Wenig Integrationsmöglichkeiten für weitere Informationen Bsp.: Dokumentation, Wiki, Ticketsystem Nur mit Notes-URL oder Action-URL verlinkbar 5. Binäre Berechtigungen (Zugriff ja/nein)
Weitere Schwächen der Architektur Nagios Daten nur schlecht in andere Systeme integrierbar Keine richtige Trennung von Checkserver und Webinterface Skalierbarkeit & Performance Trennung aus Sicherheitsgründen Actions (External Commands) gehen immer an lokalen Server
Ziel Alternatives Webinterface BESSER: ITSM Portalsystem
Inhaltstypen ITSM Portal DBs Graphische Elemente Nagios Grapher NagVis Karten Anzeige von Datenbanken NDO: Aktueller Nagios Status NDO: Nagios Alert History NDO: Nagios Notification History Tickets aus Ticketsystemen Inventardatenbanken Nagios Server Kommunikation Actions absenden
Allgemeine Anforderungen Beliebiges Design durch Templatesystem Flexibles Berechtigungssystem (User, Gruppen, Inhalte) Interne oder Externe Authentifizierung (bsp.: ADS, NDS, LDAP, usw.) Einfache Erweiterbarkeit Strikte Trennung vom Nagios Core Einfacher Aufbau & trotzdem höchst flexibel
TYPO3 WCMS
Was ist TYPO3? Open Source Content Management System in PHP Sehr aktive und gut organisierte Community Komplett browserbasiert Trennung von Layout und Inhalt mit Templates Generierung von Menüstrukturen Eigene Programmiersprache TYPOScript Kickstart Wizard für Erweiterungsprogrammierung
Integration in Portalsystem Beliebiges Design durch Templatesystem Flexibles Berechtigungssystem (User, Gruppen, Inhalte) Interne oder Externe Authentifizierung (bsp.: ADS, NDS, LDAP, usw.) Einfache Erweiterbarkeit Strikte Trennung vom Nagios Core Einfacher Aufbau & trotzdem höchst flexibel + Erweiterbarkeit durch Extension Repository
TYPO3 Extension Extensions erweitern TYPO3 um zusätzliche Funktionalitäten Online Repository mit 1712 Extensions Installation 10 Minuten und 3 Klicks Beispiele vorhandener Extensions Newsverwaltung und RSS Feeds Blogs & Kalender Ticketsystem KnowledgeBase & Wiki Forum Bilder, Dokumente Volltextsuche
1. Datenbanken ITSM Portal Integration DBs Nagios Server
Was soll alles eingebunden werden Nagios Current Status aus NDO Nagios Alert History aus NDO Nagios Notification History aus NDO Trouble Tickets (bsp. HP ServiceDesk oder Request Tracker) Inventardatenbanken Beliebige andere SQL Datenbanken
Architektur TYPO3 Display Plugin Scheme Abstraction Layer (View) Template Template Template Database Abstraction Layer (ADOdb) NDO DB RT DB SQL DB Nagios Server
ADOdb Database Abstraction Layer Database Abstraction Layer für PHP Zugriff möglich auf MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS-SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP & ODBC TYPO3 Display Plugin Scheme Abstraction Layer (View) Template Template Template Schnellste Open Source DBAL Database Abstraction Layer (ADOdb) Sehr viele Enterprise Features Sehr gut getestet NDO DB RT DB SQL DB BSD Lizenz
Scheme Abstraction Layer (View) Abstraktion der Datenbankstruktur vor der Anwendung Templates definieren, wie die unterschiedlichen Tabellen aggregiert werden. TYPO3 Display Plugin Scheme Abstraction Layer (View) Template Template Template Erzeugen einer einfachen Liste Alle Objekte Alle verfügbaren Spalten Database Abstraction Layer (ADOdb) NDO DB RT DB SQL DB
Schema der NDO Datenbank
Vereinfachung der Struktur zu einer Liste Ndo_services Ndo_servicechecks service_id instance_id config_type service_object_id check_command_object_id check_command_args eventhandler_command_object_id eventhandler_command_args notification_timeperiod_object_id check_timeperiod_object_id failure_prediction_options check_interval retry_interval max_check_attempts parallelize_check notification_interval notify_on_warning notify_on_unknown notify_on_critical notify_on_recovery notify_on_flapping stalk_on_ok stalk_on_warning stalk_on_unknown stalk_on_critical... Ndo_servicdependencies Serviecdependency_id Instance_id Config_type Service_object_id Dependent_service_object_id Dependency_type Inherits_parent Fail_on_ok Fail_on_warning Fail_on_unknown Fail_on_critical Ndo_objects Object_id Instance_id Objecttype_id Name1 Name2 Is_active Servicecheck_id Instance_id Service_object_id Check_type Current_check_attempt Max_check_attempts State State_type Start_time Start_time_usec End_time End_time_usec Command_object_id... Ndo_servicestatus servicestatus_id instance_id service_object_id status_update_time output perfdata current_state has_been_checked should_be_scheduled current_check_attempt max_check_attempts last_check next_check check_type last_state_change last_hard_state_change last_hard_state last_time_ok last_time_warning last_time_unknown last_time_critical state_type... View Host Service Status LastCheck Duration Attempt Pluginoutput
TYPO3 DB Plugin Anzeige der Daten im Webfrontend Definition der Ansicht Spalten Definition der Links und Icon TYPO3 Display Plugin Scheme Abstraction Layer (View) Template Template Template Voreingestellten Filter im Backend Weitere Filterfunktionen im Frontend Database Abstraction Layer (ADOdb) NDO DB RT DB SQL DB
Ansicht Nagios Status im Frontend
Ansicht Nagios Log im Frontend
Ansicht Tickets im Frontend
Ansicht Ticket Details im Frontend
Zugriff auf Datenbank
Definition Spalten und Zeilen
Pagebrowser <pagebrowser enabled="true"> <option name="displayrows">10</option> <option name="start">0</option> </pagebrowser>
Gruppierungen <assort enabled="true"> <field index="0">host</field> </assort>
Beispiele für die verfügbaren Felder <field name="icons"> <field name="host"> <field name="status"> <field name="servicename"> <field name="pluginoutput"> <field name="duration"> <field name="lastcheck"> <field name="attempt"> <field name="actions"> <field name="grapher"> <field name="logs">
Beispielhafte Felddefinitionen im Detail <field name="host"> <label>host</label> <dbmapobject>ndo_objects_host.name1</dbmapobject> <display enabled="true" /> <filter enabled="true" type="input" /> <order enabled="true" default="true" order="asc" /> </field> <field name="status"> <label>status</label> <dbmapobject>ndo_servicestatus.current_state</dbmapobject> <display enabled="true" func="display_int2status" /> <filter enabled="true" type="status_select" /> <order enabled="true" /> </field>
Beispielhafter Filter im Detail <!-- predefined filter --> <field name="hostgroup"> <label>hostgroup</label> <dbmapobject>ndo_objects_hostgroup.name1</dbmapobject> <display enabled="false" /> <filter enabled="true" type="input" value="gruppenname" /> <order enabled="false" /> </field>
Templates zum leichteren Editieren
Verwaltung der Rechte im Backend
2. Grafiken ITSM Portal Integration DBs Nagios Server
Architektur Proxy Service als TYPO3 Extension Abruf von externem Content Anpassung von Links, Pfaden & Forms RegEx gesteuerte Manipulation des Quelltextes Einbettung
NagVis im Frontend
NagiosGrapher im Frontend
Konfiguration Backend I
Konfiguration Backend II plugin.tx_netsproxy_pi1 { template = FILE template.file = EXT:net_sproxy/template/tx_netsproxy_pi1.html filters = netways.html.regex, netways.html.addbreaks, netways.html.rewrite regex = REGEX regex { 10.pattern = @\<form.*?\>(.*?)\<\/form\>@smui 10.replace = 20.pattern = @\<form.*?\> \<\/form\>@smui 20.replace = } } 30.pattern = @\<input.*?\/?\> \<select.*?\>.*?\<\/select\>@smui 30.replace = [ field disabled ]
3. Actions ITSM Portal Actions DBs Nagios Server
Aufruf Actions im Frontend
Absenden der Actions im Frontend
Kommunikationswege Unterschiedliche Kommunikationskanäle Kommunikation mit unterschiedlichen Servern
Administration im Backend
Status Alle vorgestellten Funktionen sind implementiert Wenig Tests mit unterschiedlichen Bedingungen Code ist GPL Veröffentlichung bei NagiosExchange geplant Dokumentation ist sehr knapp Hohe Komplexität => Supportaufwand
Fragen?