SlideShare a Scribd company logo
Icinga – Open Source Monitoring




Icinga Development Team

@ Nagios(Icinga  ) Workshop 2010

31.05.2010 - Nuremberg
Agenda

  The  Icinga Project
  Project Structure
  Tools and Plattform
  Icinga Development Team
  History
  Project Status Update
  Live-Demo
  Roadmap
  Questions & Answers
The Project Structure




• Biweekly Mumble session
• Team Mailinglist for communication
• Ticketing und project-management (dev.icinga.org)




          Icinga Quality, Testing and Community Support




                  Icinga-    Icinga-     Icinga-      Icinga-
  Icinga-API
                   Core       Web         Docu        Report
Tools and Platform



          Icinga Quality, Testing and Community Support

                website and open source ticketing system


  Icinga-API    Icinga-Core Icinga-Web      Icinga-Doc     Icinga-Rep

   based on      based on       based on     based on       based on
     PHP         existing C    PHP using    Docbook in       Jasper
                  source      ExtJS Agavi   english and     Reporting
                  MySQL         MVC and       german
                PostgreSQL     Icinga-API
                  Oracle


          GIT           GIT           GIT           GIT            GIT
The Icinga Development Team

    Core Team                    Docu Team
      •  Michael Friedrich          •  Lara Berdelsmann
      •  Hiren Patel                •  Wolfgang Nieder
      •  Christoph Maser          Quality and Testing
      •  Alexander Wirth            •  Matthias Flacke
      •  Massimo Forni              •  many others
    API Team                     Organisation
      •  Jannis Mosshammer          •  Bernd Erk
      •  Marius Hein              Marketing and Support
    Web Team                       •  Karolina Hein
      •  Marius Hein                •  Scott Evans
      •  Jannis Mosshammer          •  Amanda Mailer
      •  Michael Lübben
Annual History

    Release of 8 Icinga Versions (currently 1.0.1 core)
    near to 500 downloads a week on sourceforge

    near to 3.000 downloads of icinga-web on sourceforge
    near to 13.000 downloads of icinga-core on sourceforge
    near to 850 followers on twitter

    passed Nagios runtime performance and stability

    multilanguage support for webinterface
    popular webcasts on YouTube
Project Status Update - Doc

    create various formats based on a single technical base
    layout is independent from content
    generate various formats like HTML, XHTML, PDF,
     PostScript, RTF, MANPAGES using XSLT, XSL-FO
    use different stylesheets
  modularity     using includes
  two  languages (en, de) available now on
     docs.icinga.org and more to come (es)
    PDF and MANPAGES will be available soon
Project Status Update – Core

    Applied a huge set of patches from mailinglist
    Applied service escalation patch
    Maintaining Debian, RedHat and SLES Packages
    Extended IDOUTILS Housekeeping in external thread
    30% - 35% Performance increase using IDO2DB compared
     to NDO2DB
    Added stable support for more RDBMs
     •  MySQL
     •  PostgreSQL
     •  Oracle
    checkout the changelog for more information
Project Status Update – docs.icinga.org
Project Status Update – API

    no dependencies to other libraries or frameworks

    opportunity to be free from complex data schemas

    available interfaces

         output: database (PHP-PDO)

         input: pipe, ssh

    support multiple satellites
Project Status Update – API Example I – Connect Icinga




$apiFile	
  =	
  'icinga-­‐api/IcingaApi.php';	
  
$idoConfig	
  =	
  array	
  (	
  
            	
  'type'      	
       	
  =>	
  'mysql',	
  
            	
  'host'      	
       	
  =>	
  'database_master',	
  
            	
  'database'  	
       	
  =>	
  'icinga_db',	
  
            	
  'user'      	
       	
  =>	
  'icinga_user',	
  
            	
  'password'  	
       	
  =>	
  'very_secret',	
  
            	
  'table_prefix'       	
  =>	
  'icinga_',	
  
);
Project Status Update – API Example II – Search Data

require_once($apiFile);	
  

$api	
  =	
  IcingaApi::getConnection(IcingaApi::CONNECTION_IDO,	
  $idoConfig);	
  

$apiRes	
  =	
  $api-­‐>createSearch()	
  
            	
  -­‐>setSearchTarget(IcingaApi::TARGET_SERVICE)	
  
            	
  -­‐>setResultColumns(array(	
  
            	
             	
  'SERVICE_NAME',	
         	
    	
  	
  
            	
             	
  'SERVICE_OUTPUT',	
  	
  
            	
             	
  'SERVICE_PERFDATA',	
  	
  
            	
             	
  'SERVICE_CURRENT_STATE'	
  
            	
  ))	
  
            	
  -­‐>setSearchFilter(array(	
  
            	
             	
  array('CONTACTGROUP_NAME',	
  '%',	
  IcingaApi::MATCH_LIKE),	
  
            	
             	
  array('HOST_NAME',	
  'localhost')	
  
	
          	
  ))	
  
            	
  -­‐>setSearchGroup('SERVICE_NAME')	
  
            	
  -­‐>setSearchOrder(array('SERVICE_NAME'))	
  
            	
  -­‐>fetch();
Project Status Update – API Example III – Send Data

$config	
  =	
  array	
  (	
  
            	
  'ssh_bin'	
           	
  =>	
  '/usr/bin/ssh',	
  
            	
  'ssh_user'     	
     	
  =>	
  'icinga',	
  
            	
  'ssh_host'	
          	
  =>	
  'monitoring_server',	
  
            	
  'ssh_port'     	
     	
  =>	
  22,	
  
            	
  'ssh_timeout'         	
  =>	
  20,	
  
            	
  'ssh_pipe'     	
     	
  =>	
  '/usr/local/icinga/var/rw/icinga.cmd'	
  
);	
  

$cmd	
  =	
  IcingaApi::getCommandObject();	
  

$cmd-­‐>setCommand('SCHEDULE_SVC_CHECK')	
  
           	
  -­‐>setTarget(IcingaApi::COMMAND_INSTANCE,	
  '1')	
  
           	
  -­‐>setTarget(IcingaApi::COMMAND_HOST,	
  'linux-­‐www-­‐20')	
  
           	
  -­‐>setTarget(IcingaApi::COMMAND_SERVICE,	
  'apache-­‐procs')	
  
           	
  -­‐>setTarget(IcingaApi::COMMAND_CHECKTIME,	
  '1251449262');	
  

$cmdDisp	
  =	
  IcingaApi::getCommandDispatcher();	
  

$cmdDisp-­‐>setInterface(IcingaApi::COMMAND_SSH,	
  $config)	
  
           	
  -­‐>setCommand(array($cmd))	
  
           	
  -­‐>send();
Project Status Update – Web architecture



                Icinga-Web
                Your Addon
            ExtJS / Agavi / Appkit



                 Icinga-API




                    IDODB
                                           Icinga-Core
                   • MySQL
                • PostgreSQL               IDMOD and
                    • Oracle                 IDO2DB
Project Status Update – Web Features

    persistent user settings
    multiple authentication adapters
    easily extendable using custom cronks and modules
    create custom views on all monitoring items
    state of the art web 2.0 interface
    multilanguage support
    frontend layer for individual cronks
    flexible module loader based on phing available
    Cronk and Module skeletons available for download
translate.icinga.org
Project Status Update – Reporting

    multiformat reporting based on JasperReports
    standalone Tomcat application using external db-
     connection
    easily extendable and reusable
    webinterface integration with scheduler
    external report styles
    report templates still available
     •  host activity
     •  service activity
     •  host availability
     •  host- and service top10
     •  host- and hostgroup overview
Project Status Update – Reporting architecture




              Apache Tomcat


              Reporting-WAR




                    IDODB
                                                 Icinga-Core
                   • MySQL
                • PostgreSQL                     IDMOD and
                    • Oracle                       IDO2DB
Project Status Update – Reporting Challenges

    service level agreement reporting using idoutils
      •  service level needs to be defined
      •  monitoring on service level using business process addon
    initial state problem
    states outside given date ranges
    performance
    and ...
Project Status Update – Reporting SQL Challenges

select sum(state_duration),
  state
from (
  (select timestampdiff(second, if (state2.state_time < $P{p_date_start}, $P{p_date_start}, state2.state_time), if (state1.state_time > $P{p_date_end}
  and state2.state_time                    > $P{p_date_start}, $P{p_date_end}, state1.state_time)) as state_duration,
    state2.state,
    state2.output
  from icinga_statehistory as state1,
    icinga_statehistory as state2
  where state2.statehistory_id =
    (select statehistory_id                                                     union all
  from icinga_statehistory as sstart                                             (select if(
  where sstart.statehistory_id < state1.statehistory_id                            (select idc.statehistory_id
  and sstart.state_type       =1                                                   from icinga_statehistory as idc
  and sstart.instance_id      =1                                                   where idc.state_type = 1
  and sstart.object_id       = $P{p_host_object_id}                                and idc.instance_id = 1
  order by sstart.state_time desc limit 0,1                                        and idc.object_id = $P{p_host_object_id}
  )                                                                                and idc.state_time > $P{p_date_end} limit 0,1
and state1.statehistory_id IN                                                      )            is null, timestampdiff(second, state3.state_time, $P{p_date_end}), 0)
  (select statehistory_id                                                                            as state_duration,
  from (                                                                           state3.state,
    (select ida.statehistory_id                                                    state3.output
    from icinga_statehistory as ida                                              from icinga_statehistory as state3
    where ida.state_type = 1                                                     where state3.state_type = 1
    and ida.instance_id = 1                                                      and state3.instance_id = 1
    and ida.object_id = $P{p_host_object_id}                                     and state3.object_id = $P{p_host_object_id}
    and ida.state_time between $P{p_date_start} AND $P{p_date_end}               and state3.state_time between $P{p_date_start} AND $P{p_date_end}
    )                                                                            order by state3.statehistory_id desc limit 0,1
union                                                                            )) as send
    (select idb.statehistory_id                                                 group by state
    from icinga_statehistory as idb
    where idb.state_type = 1
    and idb.instance_id = 1
    and idb.object_id = $P{p_host_object_id}
    and idb.state_time > $P{p_date_end} limit 0,1
    )) as ids
  )
)
Reporting Screens
Live Demo




            Demo
Project Compatibility

    downward compatible to Nagios®
     •  configuration

     •  plugins

     •  addons

    compatible database schemas

    checkout our webcast for differences between
     Nagios® and Icinga
Roadmap



  Core-Roadmap                Web-Roadmap


•    30. June 1.0.2          •  30. June 1.0.2
•    18. August 1.0.3        •  18. August 1.0.3




                unified stable release
                  06. October 2010
Project Status Update – feedback.icinga.org
Questions and Answers




                  Q&A

More Related Content

PDF
Icinga 2 and puppet: automate monitoring
PPTX
Icinga2 - Upcoming API for Icinga2
PDF
What is new in icinga2
PDF
Icinga 2 API @ Icinga Camp Portland at Puppetlabs
PDF
Why favor Icinga over Nagios @ DebConf15
PDF
ChatOps with Icinga and StackStorm
PDF
Why favour Icinga over Nagios @ FrOSCon 2015
PPTX
Icinga 2 at Icinga Camp San Francisco
Icinga 2 and puppet: automate monitoring
Icinga2 - Upcoming API for Icinga2
What is new in icinga2
Icinga 2 API @ Icinga Camp Portland at Puppetlabs
Why favor Icinga over Nagios @ DebConf15
ChatOps with Icinga and StackStorm
Why favour Icinga over Nagios @ FrOSCon 2015
Icinga 2 at Icinga Camp San Francisco

What's hot (20)

PDF
Toshaan Bharvani – Icinga2 and Ansible, how to manage and migrate
PDF
Icinga @OSMC 2013
PDF
Icinga Web 2 is more - Module magic at Icinga Camp San Francisco
PPTX
Icinga lsm 2015 copy
PPTX
Why favour Icinga over Nagios - Rootconf 2015
PDF
Icinga 2010 at OSMC
PDF
State of Development - Icinga Meetup Linz August 2019
PDF
Icinga 2011 at Chemnitzer Linuxtage
PDF
Icinga2 Hacking Session 2014-10-10
PPTX
Monitoring Open Source Databases with Icinga
PPTX
Icinga Camp Barcelona - Current State of Icinga
PPTX
Icinga Camp Barcelona - Icinga
PDF
Icinga 2 and Puppet - Automate Monitoring
PDF
Icinga @GUUG 2013
PPTX
Open Source Monitoring with Icinga at Fossasia 2015
PPTX
Icinga2 - Apify them all
PPTX
Current State of Icinga - FlossUK 2014
PPTX
Icinga Camp Antwerp - Current State of Icinga
PDF
Icinga 1, Icinga 2 @ FrOSCon 2014
PDF
Icinga 2011 at Nagios Workshop
Toshaan Bharvani – Icinga2 and Ansible, how to manage and migrate
Icinga @OSMC 2013
Icinga Web 2 is more - Module magic at Icinga Camp San Francisco
Icinga lsm 2015 copy
Why favour Icinga over Nagios - Rootconf 2015
Icinga 2010 at OSMC
State of Development - Icinga Meetup Linz August 2019
Icinga 2011 at Chemnitzer Linuxtage
Icinga2 Hacking Session 2014-10-10
Monitoring Open Source Databases with Icinga
Icinga Camp Barcelona - Current State of Icinga
Icinga Camp Barcelona - Icinga
Icinga 2 and Puppet - Automate Monitoring
Icinga @GUUG 2013
Open Source Monitoring with Icinga at Fossasia 2015
Icinga2 - Apify them all
Current State of Icinga - FlossUK 2014
Icinga Camp Antwerp - Current State of Icinga
Icinga 1, Icinga 2 @ FrOSCon 2014
Icinga 2011 at Nagios Workshop
Ad

Viewers also liked (16)

PDF
Icinga 2011 at FrOSCon 6
PDF
Icinga 2011 at OSMC
PDF
Icinga 2010 at CeBIT
PDF
Icinga 2012 at Monitoring Workshop
PPTX
Introduction into Icinga Web 2
PPTX
IcingaCamp Portland 2015 - Welcome
PDF
Icinga Web 2 at Icinga Camp San Francisco
PDF
Icinga Camp Barcelona - Icinga Web 2
PPTX
Icinga at Flossuk 2015 in York
PDF
Icinga Web 2 at Icinga Camp Antwerp
PPTX
Welcome Icinga Camp San Francisco 2014
PPTX
Loadays 2015 - Enterprise Monitoring with Icinga
PPTX
Icinga @ OSMC 2014
PPTX
Icinga Camp Antwerp - Icinga2 Cluster
PPTX
Cebit 2015 icinga
PDF
Icinga2 at PuppetLabs
Icinga 2011 at FrOSCon 6
Icinga 2011 at OSMC
Icinga 2010 at CeBIT
Icinga 2012 at Monitoring Workshop
Introduction into Icinga Web 2
IcingaCamp Portland 2015 - Welcome
Icinga Web 2 at Icinga Camp San Francisco
Icinga Camp Barcelona - Icinga Web 2
Icinga at Flossuk 2015 in York
Icinga Web 2 at Icinga Camp Antwerp
Welcome Icinga Camp San Francisco 2014
Loadays 2015 - Enterprise Monitoring with Icinga
Icinga @ OSMC 2014
Icinga Camp Antwerp - Icinga2 Cluster
Cebit 2015 icinga
Icinga2 at PuppetLabs
Ad

Similar to Icinga 2010 at Nagios Workshop (20)

PDF
Icinga 2009 at OSMC
PDF
OSMC 2009 | Icinga by Icinga Team
PDF
Icinga 2012 Development at 6th TF-NOC Meeting
PPTX
ICINGA (Monitoring Basics & Reporting)
PDF
OSMC 2015 | Current State of Icinga by Icinga Team
PDF
Icinga 2 @ SIG-NOC Meeting
PPTX
Introduction into Icinga
PDF
Icinga @CLT 2013
PPTX
State of Icinga - Linux Stammtisch München
PPTX
Afpified Monitoring with Icinga2
PDF
OSMC 2010 | Monitoring mit Icinga by Icinga Team
PDF
OSMC 2013 | Current State of Icinga by Icinga Team
PDF
Monitoring with Icinga @ SF Bay Area LSPE meetup
PPTX
Icinga Camp Kuala Lumpur 2015 Opening By Eric Lippmann
PPT
Icinga, evolution from Nagios clone to Standing on it's own
PDF
OSMC 2011 | Neues von Icinga by Icinga Team
PPTX
Osbizconference 2015 Icinga 2 by Eric Lippmann
PDF
Icinga at OSMC 2012
PPTX
Icinga Camp Antwerp - Icinga2 Configuration
PDF
OSMC 2018 | Current State of Icinga by Bernd Erk
Icinga 2009 at OSMC
OSMC 2009 | Icinga by Icinga Team
Icinga 2012 Development at 6th TF-NOC Meeting
ICINGA (Monitoring Basics & Reporting)
OSMC 2015 | Current State of Icinga by Icinga Team
Icinga 2 @ SIG-NOC Meeting
Introduction into Icinga
Icinga @CLT 2013
State of Icinga - Linux Stammtisch München
Afpified Monitoring with Icinga2
OSMC 2010 | Monitoring mit Icinga by Icinga Team
OSMC 2013 | Current State of Icinga by Icinga Team
Monitoring with Icinga @ SF Bay Area LSPE meetup
Icinga Camp Kuala Lumpur 2015 Opening By Eric Lippmann
Icinga, evolution from Nagios clone to Standing on it's own
OSMC 2011 | Neues von Icinga by Icinga Team
Osbizconference 2015 Icinga 2 by Eric Lippmann
Icinga at OSMC 2012
Icinga Camp Antwerp - Icinga2 Configuration
OSMC 2018 | Current State of Icinga by Bernd Erk

More from Icinga (20)

PDF
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
PDF
Extending Icinga Web with Modules: powerful, smart and easily created - Icing...
PDF
Infrastructure Monitoring for Cloud Native Enterprises - Icinga Camp Milan 2023
PDF
Incident management: Best industry practices your team should know - Icinga C...
PDF
Monitoring Cooling Units in a pharmaceutical GxP regulated environment - Icin...
PDF
SNMP Monitoring at scale - Icinga Camp Milan 2023
PPTX
Monitoring Kubernetes with Icinga - Icinga Camp Milan 2023
PPTX
Current State of Icinga - Icinga Camp Milan 2023
PDF
Efficient IT operations using monitoring systems and standardized tools - Ici...
PPTX
Tornado Complex Event Processing Framework for Icinga - Icinga Camp Zurich 2019
PDF
Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019
PDF
Moving from Icinga 1 to Icinga 2 + Director - Icinga Camp Zurich 2019
PDF
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
PDF
Current State of Icinga - Icinga Camp Zurich 2019
PDF
NetEye 4 based on Icinga 2 - Icinga Camp Milan 2019
PDF
Integrating Icinga 2 and ntopng - Icinga Camp Milan 2019
PDF
DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...
PPTX
Current State of Icinga - Icinga Camp Milan 2019
PPTX
Best of Icinga Modules - Icinga Camp Milan 2019
PPTX
hallenges of Monitoring Big Infrastructure - Icinga Camp Milan 2019
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Extending Icinga Web with Modules: powerful, smart and easily created - Icing...
Infrastructure Monitoring for Cloud Native Enterprises - Icinga Camp Milan 2023
Incident management: Best industry practices your team should know - Icinga C...
Monitoring Cooling Units in a pharmaceutical GxP regulated environment - Icin...
SNMP Monitoring at scale - Icinga Camp Milan 2023
Monitoring Kubernetes with Icinga - Icinga Camp Milan 2023
Current State of Icinga - Icinga Camp Milan 2023
Efficient IT operations using monitoring systems and standardized tools - Ici...
Tornado Complex Event Processing Framework for Icinga - Icinga Camp Zurich 2019
Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019
Moving from Icinga 1 to Icinga 2 + Director - Icinga Camp Zurich 2019
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Current State of Icinga - Icinga Camp Zurich 2019
NetEye 4 based on Icinga 2 - Icinga Camp Milan 2019
Integrating Icinga 2 and ntopng - Icinga Camp Milan 2019
DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...
Current State of Icinga - Icinga Camp Milan 2019
Best of Icinga Modules - Icinga Camp Milan 2019
hallenges of Monitoring Big Infrastructure - Icinga Camp Milan 2019

Icinga 2010 at Nagios Workshop

  • 1. Icinga – Open Source Monitoring Icinga Development Team @ Nagios(Icinga  ) Workshop 2010 31.05.2010 - Nuremberg
  • 2. Agenda   The Icinga Project   Project Structure   Tools and Plattform   Icinga Development Team   History   Project Status Update   Live-Demo   Roadmap   Questions & Answers
  • 3. The Project Structure • Biweekly Mumble session • Team Mailinglist for communication • Ticketing und project-management (dev.icinga.org) Icinga Quality, Testing and Community Support Icinga- Icinga- Icinga- Icinga- Icinga-API Core Web Docu Report
  • 4. Tools and Platform Icinga Quality, Testing and Community Support website and open source ticketing system Icinga-API Icinga-Core Icinga-Web Icinga-Doc Icinga-Rep based on based on based on based on based on PHP existing C PHP using Docbook in Jasper source ExtJS Agavi english and Reporting MySQL MVC and german PostgreSQL Icinga-API Oracle GIT GIT GIT GIT GIT
  • 5. The Icinga Development Team   Core Team   Docu Team •  Michael Friedrich •  Lara Berdelsmann •  Hiren Patel •  Wolfgang Nieder •  Christoph Maser   Quality and Testing •  Alexander Wirth •  Matthias Flacke •  Massimo Forni •  many others   API Team   Organisation •  Jannis Mosshammer •  Bernd Erk •  Marius Hein   Marketing and Support   Web Team •  Karolina Hein •  Marius Hein •  Scott Evans •  Jannis Mosshammer •  Amanda Mailer •  Michael Lübben
  • 6. Annual History   Release of 8 Icinga Versions (currently 1.0.1 core)   near to 500 downloads a week on sourceforge   near to 3.000 downloads of icinga-web on sourceforge   near to 13.000 downloads of icinga-core on sourceforge   near to 850 followers on twitter   passed Nagios runtime performance and stability   multilanguage support for webinterface   popular webcasts on YouTube
  • 7. Project Status Update - Doc   create various formats based on a single technical base   layout is independent from content   generate various formats like HTML, XHTML, PDF, PostScript, RTF, MANPAGES using XSLT, XSL-FO   use different stylesheets   modularity using includes   two languages (en, de) available now on docs.icinga.org and more to come (es)   PDF and MANPAGES will be available soon
  • 8. Project Status Update – Core   Applied a huge set of patches from mailinglist   Applied service escalation patch   Maintaining Debian, RedHat and SLES Packages   Extended IDOUTILS Housekeeping in external thread   30% - 35% Performance increase using IDO2DB compared to NDO2DB   Added stable support for more RDBMs •  MySQL •  PostgreSQL •  Oracle   checkout the changelog for more information
  • 9. Project Status Update – docs.icinga.org
  • 10. Project Status Update – API   no dependencies to other libraries or frameworks   opportunity to be free from complex data schemas   available interfaces   output: database (PHP-PDO)   input: pipe, ssh   support multiple satellites
  • 11. Project Status Update – API Example I – Connect Icinga $apiFile  =  'icinga-­‐api/IcingaApi.php';   $idoConfig  =  array  (    'type'    =>  'mysql',    'host'    =>  'database_master',    'database'    =>  'icinga_db',    'user'    =>  'icinga_user',    'password'    =>  'very_secret',    'table_prefix'  =>  'icinga_',   );
  • 12. Project Status Update – API Example II – Search Data require_once($apiFile);   $api  =  IcingaApi::getConnection(IcingaApi::CONNECTION_IDO,  $idoConfig);   $apiRes  =  $api-­‐>createSearch()    -­‐>setSearchTarget(IcingaApi::TARGET_SERVICE)    -­‐>setResultColumns(array(      'SERVICE_NAME',            'SERVICE_OUTPUT',        'SERVICE_PERFDATA',        'SERVICE_CURRENT_STATE'    ))    -­‐>setSearchFilter(array(      array('CONTACTGROUP_NAME',  '%',  IcingaApi::MATCH_LIKE),      array('HOST_NAME',  'localhost')      ))    -­‐>setSearchGroup('SERVICE_NAME')    -­‐>setSearchOrder(array('SERVICE_NAME'))    -­‐>fetch();
  • 13. Project Status Update – API Example III – Send Data $config  =  array  (    'ssh_bin'    =>  '/usr/bin/ssh',    'ssh_user'    =>  'icinga',    'ssh_host'    =>  'monitoring_server',    'ssh_port'    =>  22,    'ssh_timeout'  =>  20,    'ssh_pipe'    =>  '/usr/local/icinga/var/rw/icinga.cmd'   );   $cmd  =  IcingaApi::getCommandObject();   $cmd-­‐>setCommand('SCHEDULE_SVC_CHECK')    -­‐>setTarget(IcingaApi::COMMAND_INSTANCE,  '1')    -­‐>setTarget(IcingaApi::COMMAND_HOST,  'linux-­‐www-­‐20')    -­‐>setTarget(IcingaApi::COMMAND_SERVICE,  'apache-­‐procs')    -­‐>setTarget(IcingaApi::COMMAND_CHECKTIME,  '1251449262');   $cmdDisp  =  IcingaApi::getCommandDispatcher();   $cmdDisp-­‐>setInterface(IcingaApi::COMMAND_SSH,  $config)    -­‐>setCommand(array($cmd))    -­‐>send();
  • 14. Project Status Update – Web architecture Icinga-Web Your Addon ExtJS / Agavi / Appkit Icinga-API IDODB Icinga-Core • MySQL • PostgreSQL IDMOD and • Oracle IDO2DB
  • 15. Project Status Update – Web Features   persistent user settings   multiple authentication adapters   easily extendable using custom cronks and modules   create custom views on all monitoring items   state of the art web 2.0 interface   multilanguage support   frontend layer for individual cronks   flexible module loader based on phing available   Cronk and Module skeletons available for download
  • 17. Project Status Update – Reporting   multiformat reporting based on JasperReports   standalone Tomcat application using external db- connection   easily extendable and reusable   webinterface integration with scheduler   external report styles   report templates still available •  host activity •  service activity •  host availability •  host- and service top10 •  host- and hostgroup overview
  • 18. Project Status Update – Reporting architecture Apache Tomcat Reporting-WAR IDODB Icinga-Core • MySQL • PostgreSQL IDMOD and • Oracle IDO2DB
  • 19. Project Status Update – Reporting Challenges   service level agreement reporting using idoutils •  service level needs to be defined •  monitoring on service level using business process addon   initial state problem   states outside given date ranges   performance   and ...
  • 20. Project Status Update – Reporting SQL Challenges select sum(state_duration), state from ( (select timestampdiff(second, if (state2.state_time < $P{p_date_start}, $P{p_date_start}, state2.state_time), if (state1.state_time > $P{p_date_end} and state2.state_time > $P{p_date_start}, $P{p_date_end}, state1.state_time)) as state_duration, state2.state, state2.output from icinga_statehistory as state1, icinga_statehistory as state2 where state2.statehistory_id = (select statehistory_id union all from icinga_statehistory as sstart (select if( where sstart.statehistory_id < state1.statehistory_id (select idc.statehistory_id and sstart.state_type =1 from icinga_statehistory as idc and sstart.instance_id =1 where idc.state_type = 1 and sstart.object_id = $P{p_host_object_id} and idc.instance_id = 1 order by sstart.state_time desc limit 0,1 and idc.object_id = $P{p_host_object_id} ) and idc.state_time > $P{p_date_end} limit 0,1 and state1.statehistory_id IN ) is null, timestampdiff(second, state3.state_time, $P{p_date_end}), 0) (select statehistory_id as state_duration, from ( state3.state, (select ida.statehistory_id state3.output from icinga_statehistory as ida from icinga_statehistory as state3 where ida.state_type = 1 where state3.state_type = 1 and ida.instance_id = 1 and state3.instance_id = 1 and ida.object_id = $P{p_host_object_id} and state3.object_id = $P{p_host_object_id} and ida.state_time between $P{p_date_start} AND $P{p_date_end} and state3.state_time between $P{p_date_start} AND $P{p_date_end} ) order by state3.statehistory_id desc limit 0,1 union )) as send (select idb.statehistory_id group by state from icinga_statehistory as idb where idb.state_type = 1 and idb.instance_id = 1 and idb.object_id = $P{p_host_object_id} and idb.state_time > $P{p_date_end} limit 0,1 )) as ids ) )
  • 22. Live Demo Demo
  • 23. Project Compatibility   downward compatible to Nagios® •  configuration •  plugins •  addons   compatible database schemas   checkout our webcast for differences between Nagios® and Icinga
  • 24. Roadmap   Core-Roadmap   Web-Roadmap •  30. June 1.0.2 •  30. June 1.0.2 •  18. August 1.0.3 •  18. August 1.0.3 unified stable release 06. October 2010
  • 25. Project Status Update – feedback.icinga.org