www.icinga.org
Why favour Icinga over Nagios
rootconf - Bengaluru - 16th May 2015
• Bernd Erk
• Icinga Co-Founder
• Project organizer
• @gethash
Thank You
THE ICINGA PROJECT
Quick Poll
Open Source Enterprise Monitoring
Icinga is a scalable and extensible monitoring system
which checks the availability of your resources, notifies
users of outages and provides extensive BI data.
• Originally forked from Nagios in 2009
• Independent version Icinga 2 since 2014
You?
Icinga Web 2
Icinga 2
Icinga
Icinga Quality, Testing and Community Support
Icinga.org, dev.icinga.org, social media channels
Icinga Reports Icinga Doc
3rd Party Tools
Icinga Web
Icinga Classic (CGI)
ICINGA 2 - INTRODUCTION
• Monitors everything
• Gathering status
• Collect performance data
• Notifies using any channel
• Considers dependencies
• Handles events
• Checks and forwards logs
• Deals with performance data
• Provides SLA data
• Based on C++ and Boost
• Supports MySQL and PostgreSQL
• Includes a extensive template library
• Version 2.3.4 is out since April
• Puppet, Chef and Ansible support
• Packages and Vagrant Box available
WHY NAGIOS™ IS GOOD?
• Monitoring things is easy
• Simple software stack
• No complex dependencies
• Active checks are powerful
• Huge community
• “Millions” of Plugins
OK, BUT WHY ICINGA THEN?
NAGIOS DOES NOT SCALE
• It is just a single loop
• Limitations using interfaces
• Icinga 2 is multithreaded
• Load is distributed automatically
• Monitors in a second interval
ADDING MODULES IS HARD
# tar -zxvf ndoutils-2.0.0.tar.gz
# cd ndoutils-2.0.0/
# ./configure CFLAGS=-fPIC
# make
# make install
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/bin
/usr/bin/install -c -m 755 -o nagios -g nagios ndo2db-4x /usr/local/nagios/bin/ndo2db
/usr/bin/install -c -m 755 -o nagios -g nagios ndomod-4x.o
/usr/local/nagios/bin/ndomod.o
/usr/bin/install -c -m 774 -o nagios -g nagios file2sock /usr/local/nagios/bin
/usr/bin/install -c -m 774 -o nagios -g nagios log2ndo /usr/local/nagios/bin
/usr/bin/install -c -m 774 -o nagios -g nagios sockdebug /usr/local/nagios/bin
Checker
Notify
Gelf
Perfdata Graphite
IDO
Compat
Livestatus
• We have a powerful CLI
• Adding new features is easy
• It is simple and could be sophisticated
# icinga2 feature enable ido-mysql
NO CLUSTERING AND DISTRIBUTION
• No integrated failover
• Configuration is not distributed
• No shared monitoring information
• Availability and scaling zones
• Automatic redistribution of checks
• Zones for multitenancy environments
High Availability
Checker
Notify
Gelf
Perfdata Graphite
IDO
Compat
Livestatus
Checker
Notify
Gelf
Perfdata Graphite
IDO
Compat
Livestatus
Checker
Notify
Perfdata
Gelf IDO
Graphite
Compat
Livestatus
Distributed Features
Zone A
Zoning
Zone B
Advanced Zoning
Zone CZone A Zone B
SECURITY IS A MESS
• NSCA works, but not in a good way
• NRPE has a couple of security issues
• You can make it secure … by hand
• Bidirectional communication using SSL
• “binlog” like retention for events
• Distributed features
Graphite
Notify
Gelf
Perfdata Checker
IDO
Compat
Livestatus
Checker CheckerChecker Checker
CONFIGURATION LIMITS
define service {
host_name linux1,linux2,linux3,...,linux9
service_description ssh-check
}
apply Service "ssh" {
import "generic-service”
check_command = "ssh”
assign where host.address && host.vars.os == "Linux”
}
apply Service "ssh" {
import "generic-service”
check_command = "ssh”
assign where host.address && host.vars.os == "Linux”
ignore where host.vars.test == true
}
define hostgroup {
hostgroup_name linux-servers
alias Linux Servers
members linux1,linux2,linux3
}
object Host “mysql-server1" {
address = "10.0.0.1“
check_command = "hostalive“
}
object HostGroup "mysql-server" {
display_name = "MySQL Server“
assign where match("*mysql*", host.name)
}
ONE MORE THING …
object Service ”webservice" {
import "generic-service”
check_command = ”load”
host_name = “a really great server”
vars.load_wload1 = {{
if (get_time_period(“9to5”).is_inside) {
return 40
} else {
return 60
}
}}
}
• A new config format
• It is really time for change
• You will love it!
WHAT YOU SEE IS WHAT YOU
GET
HOPEFULLY NOT!
• Parsing status.dat is not really cool
• Executing commands is hard
• Very inflexible architecture
• Limitations in current Icinga interfaces
• Really hard to extend and integrate
• No unified interface so far
• Easy to extend and embed
• Multiple authentication providers
• Support for db and livestatus
• Responsive
Web 2
Monitoring Docs
BP Graphite PNP
Demo
THE COMMUNITY
You?
Icinga Camp - Portland 2015
October 10th
Icinga Camp - Kuala Lumpur 2015
June 9th
Training in India
http://olindata.com/training/upcoming
CONCLUSION
Our vision of integration
• Download Icinga 2
• Rethink you configuration
• Install Icinga Web 2 and play with it
• Give us feedback
THANK YOU!
www.icinga.org
dev.icinga.org
git.icinga.org
@icinga
/icinga
+icinga

Why favour Icinga over Nagios - Rootconf 2015