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