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
Mailing-Lists
Icinga-API Icinga-Core Icinga-Web Icinga-Docu
www.icinga.org dev.icinga.org docs.icinga.org demo.icinga.org
translate. icinga.org
feedback.icinga.org
Tools and Platform
Icinga Quality, Testing and Community Support
website and open source ticketing system
Icinga- API
based on PHP
Icinga-Core
C based source MySQL
PostgreSQL Oracle
Icinga-Web
based on PHP using Sencha,
Agavi MVC
Icinga-Doc
based on Docbook in english and
german
GIT GIT GIT GIT
Icinga-Reports
based on Jasper -
Reporting
GIT
Single node architecture - today
Icinga-API
Icinga-Core
IDMOD and IDO2DB
Icinga-Web
ExtJS / Agavi
IDO
• MySQL • PostgreSQL
• Oracle
Multi node architecture - today
Icinga-API
Icinga-Core
IDMOD and IDO2DB
IDO
• MySQL • PostgreSQL
• Oracle
Icinga-Web
ExtJS / Agavi
Icinga-Slave
Icinga-Slave
• NSCA • SSH • OTHERS
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-Core
• MySQL
• PostgreSQL • Oracle
Icinga-Web
ExtJS / Agavi
CORE-API
Icinga-API
Icinga-Web and DB-API
ExtJS / Agavi
Future architecture – Core API
Icinga-Core
CORE-API
� XML - RPC • XML based remote procedure call
• firewall awareness
• de facto standard
� bidirectional connection initiation
� checkresult reaper replacement
Future architecture - ABA
Icinga-Core
CORE-API
ABA-Worker
ABA-Worker
- external configuration - various schedulers - zoning and monitoring
XML-RPC
ABA-Dispatcher
- ABA switch in config
ABA-Worker
- load indicator - health status
HTTP/HTTPS
ABA: From A -> B -> A ABA: Zulu for distribute
Future architecture - Advantages
Icinga-Core
CORE-API
ABA-Worker
XML-RPC
ABA-Dispatcher
ABA-Worker
Icinga-Core
CORE-API
- 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
Top Related