Icinga Open Source Monitoring Icinga Development Team @ Open Source Monitoring Conference 06.10.2010 - Nuremberg
Agenda Icinga Team Project Structure & Communication Tools and Platform Current Architecture HTTP Interface Future Architecture Addons for Icinga Live-Demo Roadmap Questions & Answers
Icinga Team
Icinga Team - Locations
Project Structure & Communication feedback.icinga.org www.icinga.org dev.icinga.org docs.icinga.org demo.icinga.org Mailing-Lists Icinga-Core Icinga-API Icinga-Web Icinga-Docu translate. icinga.org
Tools and Platform Icinga Quality, Testing and Community Support website and open source ticketing system Icinga- Core Icinga- API Icinga- Web Icinga- Doc Icinga- Reports C based source MySQL PostgreSQL Oracle based on PHP based on PHP using Sencha, Agavi MVC based on Docbook in english and german based on Jasper - Reporting GIT GIT GIT GIT GIT
Single node architecture - today Icinga-Web ExtJS / Agavi Icinga-API IDO MySQL PostgreSQL Oracle Icinga-Core IDMOD and IDO2DB
Multi node architecture - today Icinga-Web ExtJS / Agavi Icinga- Slave Icinga- Slave Icinga-API NSCA SSH OTHERS IDO MySQL PostgreSQL Oracle Icinga-Core IDMOD and IDO2DB
HTTP Interface request almost all Icinga database fields that are supported by Icinga-API (which covers almost all fields) filter via nested AND and OR groups (Condition 1 AND (Condition 2 OR (Condition 3 AND Condition 4))..etc.) add Order, Limit, Group By get data via XML or JSON sending commands via PUT
HTTP Interface - Example!http://localhost/icinga-web/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>
Major problems in distributed and large environments loadbalancing check slave availability dynamic check distribution specific checks must be forwarded to specific instances commands are not distributed there is only a workaround for the new web available transport-layer of check results and commands ssh-quickfix solution for distributed commands NSCA is buggy like hell and should be replaced an abstract interface to the core-elements is needed
Problems with existing implementations config split and distribution difficult management prone to error DNX (distributed nagios executor) single point of failure architecture not able to handle specific network zones mod_gearman looks good so far, but very new network protocol merlin based on NEB-Interface
NEB disadvantages NEB-Development is limited to C/C++ Coders it is not possible to change a NEB at runtime NEB s must reside on the same server in the worst-case scenario a NEB could crash the Icinga process changes to the Icinga-Core can break a NEB
Future architecture Icinga-Web and DB-API ExtJS / Agavi ExtJS / Agavi Icinga-API MySQL PostgreSQL Oracle CORE-API Icinga-Core
Future architecture Core API XML - RPC XML based remote procedure call firewall awareness de facto standard bidirectional connection initiation checkresult reaper replacement CORE-API Icinga-Core
Future architecture - ABA ABA: From A -> B -> A ABA: Zulu for distribute Icinga-Core CORE-API - ABA switch in config XML-RPC ABA-Dispatcher - external configuration - various schedulers - zoning and monitoring HTTP/HTTPS ABA- Worker - load indicator - health status ABA- Worker ABA- Worker
Future architecture - Advantages Icinga-Core CORE-API Icinga-Core CORE-API XML-RPC ABA-Dispatcher ABA- Worker ABA- Worker - caching - self learning scheduler - single ABA failback
Future architecture - ABA Roadmap we will implement the architecture step by step the classic way is still working we have a loosely coupled transport and executing process flexibility external processes give us the possibility to check the Icinga infrastructure availability different protocols can be used and an individual distribution solution could be implemented
Addons contribute folder integration for PNP4Nagios Business-Process-View and -Editor EventDB Cronk for SNMP and logfile integration LConf Heatmap
Reporting base reporting based on Jasper is finished reporting package is downloadable on http://sourceforge.net/projects/icinga/ https://git.icinga.org/?p=icinga-reports.git the only thing you need is a JasperServer single line installation available./js-import.sh --input-zip icinga_report_package.zip Icinga web integration is planned for next year
Live Demo Demo
Roadmap unified roadmap 1.2 - today - stable release 1.3-16.02.2011 - unstable Release 1.4-11.05.2011 - stable Release 1.5-17.08.2011 - unstable Release 1.6-09.11.2011 - stable Release bugfix releases 1.X.X
One more thing completed
Mobile Demo mobile.demo.icinga.org
Questions and Answers Q & A