icinga 2011 at chemnitzer linuxtage
DESCRIPTION
Icinga Team presenting current development.TRANSCRIPT
Icinga – Open Source Monitoring
Icinga Development Team
@ Chemnitzer Linux-Tage 2011
19.03.2011 - Chemnitz
Agenda
Introduction
Icinga Team
Project Structure & Communication
Tools and Platform
Current Architecture
HTTP Interface
Future Architecture
Addons for Icinga
Live-Demo
Roadmap
Questions & Answers
Introduction
33 years old
Icinga-Member from day one
Background in Database Infrastructure andService Oriented Architecture
Responsibilities• Organization
• Architecture
Introduction into the project
Icinga Team
Icinga Team - Locations
Project Structure & Communication
Mailing-Lists
Icinga-APIIcinga-Core Icinga-Web Icinga-Docs
www.icinga.org dev.icinga.org docs.icinga.org wiki.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 sourceMySQL
PostgreSQLOracle
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
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
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>
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 this year (1.5)
Live Demo
Demo
Roadmap
unified roadmap
• 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
Questions and Answers
Q & A