why favour icinga over nagios @ froscon 2015
TRANSCRIPT
![Page 1: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/1.jpg)
www.icinga.org
Why favour Icinga over Nagios
2015-08-22
![Page 2: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/2.jpg)
Markus Frosch
• Consultant @NETWAYS• Icinga Team since 2012• Organisation of Icinga 2• Debian developer
@lazyfrosch
![Page 3: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/3.jpg)
THE ICINGA PROJECT
![Page 4: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/4.jpg)
Open Source Enterprise Monitoring
Icinga is a scalable and extensible monitoring system which checks the availability of your resources, notifiesusers of outages and provides extensive BI data.
![Page 5: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/5.jpg)
You?
![Page 6: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/6.jpg)
• originally forked from Nagios in 2009• focus on improvements and scalability• independent version Icinga 2 since 2014•web interfaces and addons
![Page 7: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/7.jpg)
Icinga Core
Nagios based C-sourceMySQL, PostgreSQL, Oracle
Icinga Core
Nagios based C-sourceMySQL, PostgreSQL, Oracle
Icinga Quality, Testing and Community Support
Website and Open Source Ticketing System
Icinga Quality, Testing and Community Support
Website and Open Source Ticketing System
3rd Party Tools3rd Party ToolsIcinga Webbased on PHP using ExtJS, Agavi MVCIcinga Webbased on PHP using ExtJS, Agavi MVC
IDOUTILSIDOUTILS
Icinga Web 2Based on PHP / responsive designIcinga Web 2Based on PHP / responsive design
Icinga 2
C++-based sourcewith multiple components
Icinga 2
C++-based sourcewith multiple components
IDOIDO LivestatusLivestatus ClusterCluster APIAPI ……
![Page 8: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/8.jpg)
ICINGA 2 INTRODUCTION
![Page 9: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/9.jpg)
• monitors everything• in a regular interval• preferring active checks• gathering status• collect performance data / metrics
![Page 10: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/10.jpg)
• notifies using any channel• detects dependencies• handles events in configured way
![Page 11: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/11.jpg)
• forwards logs to Logstash and Graylog• passes performance data to Graphite,
OpenTSDB or InfluxDB• integrate with other tools?
![Page 12: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/12.jpg)
Icinga 2
• release 2.3.8 (2015-07-20)•new code base on C++ and Boost• similar ideas to Nagios• Puppet, Chef and Ansible integration•Packages and Vagrant Box available
![Page 13: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/13.jpg)
WHY NAGIOS™ IS GOOD?
![Page 14: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/14.jpg)
Nagios™ is good, because:
✔ monitoring things is very easy✔ very simple software stack ✔ no complex external dependencies
![Page 15: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/15.jpg)
Nagios™ is good, because:
✔ active checks are powerful✔ gathering performance data✔ huge community✔ thousands of Plugins
![Page 16: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/16.jpg)
OK, BUT WHY ICINGA THEN?
![Page 17: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/17.jpg)
Nagios™ does not scale
✗ it's just a single loop✗ limitations using external interfaces✗ large installations are difficult
![Page 18: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/18.jpg)
Icinga 2 on the other hand
✔ provides a multithreaded engine✔ distributes load in cluster automatically✔ is able to monitor thousands of devices
every few seconds
![Page 19: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/19.jpg)
MODULES
![Page 20: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/20.jpg)
Modules in Nagios™?
# tar xzvf mk-livestatus-1.2.4.tar.gz# cd mk-livestatus-1.2.4 # ./configure --prefix=/usr/local/icinga
--exec-prefix=/usr/local/icinga# make# cp src/livestatus.o /usr/local/icinga/bin
define module { module_name mklivestatus path /usr/local/icinga/bin/livestatus.o module_type neb args /usr/local/icinga/var/rw/live }
![Page 21: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/21.jpg)
CheckerChecker
NotifyNotify
API(soon)API(soon)
CompatCompat ClusterCluster
IDOIDO GELFGELF
GraphiteGraphite
PerfdataPerfdata
OpenTSDBOpenTSDB
LivestatusLivestatus
![Page 22: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/22.jpg)
# icinga2 feature enable livestatus# icinga2 feature enable ido-mysql
# vim /etc/icinga2/features- available/ido-mysql.conf
![Page 23: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/23.jpg)
DEMO
![Page 24: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/24.jpg)
CLUSTERING
![Page 25: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/25.jpg)
How about high available Nagios™?
✗ there is no integrated failover mechanism✗ configuration is not distributed✗ no shared monitoring information
![Page 26: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/26.jpg)
What Icinga 2 provides you
✔ zones for multitenancy environments✔ support for logic splits in the config✔ availability and scaling zones✔ automatic redistribution of checks✔ master / satellite / agent
![Page 27: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/27.jpg)
centra
l
datace
nter
centra
l
datace
nter
CheckerChecker ConfigConfig
LivestatusLive
status
CheckerChecker
DatabaseDatabase
IDOIDO
IDOIDO
remotelocation
CheckerChecker
![Page 28: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/28.jpg)
Nagios™ and security
✗ NSCA works, but not in a good way✗ NRPE has a couple of security issues✗ You can make it secure … by hand
![Page 29: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/29.jpg)
Icinga 2 clustering is PKI TLS only
✔ bidirectional connections✔ helps you setting up a CA✔ replication of events and status
![Page 30: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/30.jpg)
DEMO
![Page 31: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/31.jpg)
CONFIGURATION
![Page 32: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/32.jpg)
Nagios™ config tricks are weird…
define service{host_name linux1,linux2,linux3,...,linux9service_description ssh-checkother service directives ...}
![Page 33: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/33.jpg)
Nagios™ can only do lists
define hostgroup{hostgroup_name linux-serversalias Linux Serversmembers linux1,linux2,linux3}
![Page 34: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/34.jpg)
Icinga 2 brings logic
apply Service "ssh" {import "generic-service”
check_command = "ssh” assign where host.address && host.vars.os == "Linux” ignore where host.vars.test == true}
![Page 35: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/35.jpg)
Icinga 2 wants to unterstand you
object HostGroup "mysql-server" {display_name = "MySQL Server"
assign where match("*mysql*", host.name) assign where host.vars.role == "mysql-server" ignore where host.vars.environment != "production"}
![Page 36: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/36.jpg)
Imagine a host you manage
object Host "shop1.nbg.de.bratwurst.de" { import "generic-host" address = "192.0.2.123"
vars = { environment = "production" role = "webserver" location = "nbg1" application = "bratwurstshop" team = "appsupport" }}
![Page 37: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/37.jpg)
Maybe add templates
template Host "webserver-default" { import "generic-host" vars = { environment = "production" role = "webserver" }}object Host "shop1.nbg.de.bratwurst.de" { import "webserver-default" address = "192.0.2.123"
vars.location = "nbg1" [...]}
![Page 38: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/38.jpg)
Now add some services
apply Service "http" { import "generic-service" check_command = "http" assign where host.role == "webserver"}
apply Service "https" { import "generic-service" check_command = "http" vars.http_ssl = true assign where host.role == "webserver"}
![Page 39: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/39.jpg)
Get notified
apply Notification "host-prod-oncall" to Host { import "mail-host-notification" user_groups = [ "datacenter-oncall" ] timeperiod = "non-workhours" assign where host.environment == "production"}
apply Notification "appsupport-prod-oncall" to Service { import "mail-service-notification" user_groups = [ "appsupport-oncall" ] timeperiod = "non-workhours" assign where host.team == "appsupport" \ && host.environment == "production"}
![Page 40: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/40.jpg)
Define dependencies
apply Dependency "host-in-nbg1" to Host { parent_host_name = "router.nbg1.bratwurst.de"
disable_checks = true disable_notifications = true
assign where host.location == "nbg1" && \ host.role != "router"}
![Page 41: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/41.jpg)
Safe and powerful commands
object CheckCommand "fancy-vendor-check" { import "plugin-check-command"
command = [ PluginDir + "/check_vendor_foo" ]
arguments = { "-H" = "$host.name$" "-C" = "$snmp_community$" "-m" = "$vendor_mode$" "-w" = "$vendor_warning$" "-c" = "$vendor_critical$" } vars.snmp_community = "public"}
![Page 42: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/42.jpg)
Easy to use
apply Service "fancy-vendor test" { import "generic-service"
check_command = "fancy-vendor-check"
vars.snmp_community = "isthissecure" vars.vendor_mode = "proprietary-magic" vars.vendor_warning = "80" vars.vendor_warning = "90"
assign where host.type = "fancy-vendor-node"}
![Page 43: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/43.jpg)
Using commands
● safe against shell injections● clean interface, easy to write● just set a var in service or host● check our ITL template library
![Page 44: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/44.jpg)
ONE MORE THING...
![Page 45: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/45.jpg)
Icinga 2 is enhanceable
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 } }}
}
![Page 46: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/46.jpg)
WHAT YOU SEE IS WHAT YOU GET
![Page 47: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/47.jpg)
Nagios CGI
![Page 48: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/48.jpg)
Icinga Classic
![Page 49: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/49.jpg)
Icinga Web 1
![Page 50: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/50.jpg)
✗ limitations in current Icinga interfaces✗ parsing the status.dat is not fast✗ executing commands is tedious✗ really hard to extend and integrate✗ no unified interface so far
![Page 51: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/51.jpg)
Icingaweb 2
• easy to extend and embed•multiple authentication providers• reads from IDO database • responsive
release soonTM
![Page 52: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/52.jpg)
Web 2MySQL /PostgreSQL
MySQL /PostgreSQL2
or Icinga 1
The simplest setup
set up within a few minutes...
![Page 53: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/53.jpg)
Web 2
MonitoringMonitoring DocsDocs
BPBP GraphiteGraphite PNPPNP
![Page 54: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/54.jpg)
Demo
![Page 55: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/55.jpg)
![Page 56: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/56.jpg)
CONCLUSION
![Page 57: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/57.jpg)
Where to start?
•Go to docs.icinga.org• Try our Vagrant VMs•Use Icinga 2 packages•Rethink you configuration• Install Icinga Web 2 and play with it•Give us feedback
#icinga
![Page 58: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/58.jpg)
You?
![Page 59: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/59.jpg)
Berlin 2016
March 1st
Berlin 2016
March 1st
Portland 2015
October 10th
Portland 2015
October 10th
Icinga Camp community meetups
![Page 60: Why favour Icinga over Nagios @ FrOSCon 2015](https://reader031.vdocuments.us/reader031/viewer/2022030305/587249531a28ab852f8b53f7/html5/thumbnails/60.jpg)
THANK YOU!www.icinga.org
exchange.icinga.org
docs.icinga.org
dev.icinga.org
git.icinga.org
@icinga
/icinga
+icinga