State of Icinga - Linux Stammtisch München
-
Upload
icinga -
Category
Technology
-
view
5.666 -
download
0
Transcript of State of Icinga - Linux Stammtisch München
WWW.ICINGA.ORG
Linux Stammtisch Munich
27/01/2015 State of Icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
Me
• Bernd Erk
• Working @NETWAYS
• Icinga responsibilities
– Project management
– Community
• In the Icinga game since 2009
• @gethash
ABOUT US
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
About us - People
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
About us - Teams
Team Core
Team Web
Team Packages & Tools
Team Community
Team Q&A & Docs
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
About us - Activity
30 Day Summary
• Commits: 400
• Contributers: 14
12 Month Summary
• Commits: 7012
• Contributers: 83
THE COMMUNITY
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
The Community - Users
You?
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
The Community - Icinga Camp San Francisco
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
The Community - Icinga Camps 2015
Barcelona 2015
February 27th
Antwerp 2015
April 13rd
Kuala Lumpur 2015
April 24th
Portland 2015
October 10th
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
The Community - Icinga Exchange
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
The Community - Icinga Exchange - GitHub
ICINGA 1
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
Icinga 1 - Changes
• Core
– Usability and security fixes
– Various IDO fixes for enhanced performance
• ClassicUI
– Improved downtime and comments view
– Enhanced filters for modified by attributes
– Support for compressed logfiles
• Icinga Web 1
– Rewritten session handling
– Updated ExtJS framework
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
Icinga 1 - Overview
• 36 releases until today
• We’ll keep it in maintenance!
ICINGA 2 - INTRODUCTION
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
Icinga 2 - Overview
• Based on C++ and Boost
– Supports all major *NIX and Windows platforms
• Included cluster stack
• Powerful CLI
• Supports multiple backends
– MySQL
– PostgreSQL
• Livestatus support included
• Packages and Vagrant Box available now!
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
Icinga 2 - CLI - Overview
# icinga2
icinga2 - The Icinga 2 network monitoring daemon (version: v2.2)
Usage:icinga2 <command> [<arguments>]
Supported commands:* daemon (starts Icinga 2)* feature …* node …* object list (lists all objects)* pki …* repository …* variable get (gets a variable)* variable list (lists all variables)
Global options:-h [ --help ] show this help message-V [ --version ] show version information--color use VT100 color codes even when stdout is not a
terminal-D [ --define ] arg define a constant-l [ --library ] arg load a library-I [ --include ] arg add include search directory-x [ --log-level ] arg specify the log level for the console log
Command options:
Report bugs at <https://dev.icinga.org/>Icinga home page: <http://www.icinga.org/>
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Checker
Statusdat
Gelf
Perfdata Graphite
IDO
Compat
Livestatus
Icinga 2 - Architecture
#icinga
ICINGA 2 - CONFIGURATION
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Configuration
• Different config format
– there is a conversion script!
– but you won’t miss the old config!
• It is really time for change
• Could be that you hate it now, but you’ll love it later!
• See it in action!
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Assign a service to multiple hosts in the old world
define service{
host_name linux1,linux2,linux3,...,linux9
service_description ssh-check
other service directives ...
}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Assign a service to multiple hosts in the new world
apply Service "ssh" {
import "generic-service"
check_command = "ssh“
assign where host.address && host.vars.os == "Linux“
}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Assign to Hostgroup in the old world
define hostgroup{
hostgroup_name linux-servers
alias Linux Servers
members linux1,linux2,linux3
}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Assign to Hostgroup in the new world
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)
}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Assign to Hostgroup in the extended new world
object Host “mysql-server1" {
address = "10.0.0.1“
check_command = "hostalive“
vars.test_server = true
}
object Host “mysql-server2" {
address = "10.0.0.1“
check_command = "hostalive“
}
object HostGroup "mysql-server" {
display_name = "MySQL Server"
assign where match("*mysql*", host.name)
ignore where host.vars.test_server
ignore where match("*internal", host.name)
}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 – Some cool new things
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Working with arrays
object Host "localhost" {check_command = "hostalive“address = "127.0.0.1"
vars.http_vhosts["http"] = {http_uri = "/“
}
vars.http_vhosts["Icinga Web 2"] = {http_uri = "/icingaweb“
}}
apply Service for (http_vhost => config in host.vars.http_vhosts) {check_command = "http“vars += config
assign where host.vars.http_vhosts}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Working with conditionals
object Host "localhost" {
check_command = "hostalive“
address = "127.0.0.1"
vars.http_vhosts["icinga.org"] = {
http_address = "icinga.org"
interval = 1m
}
vars.http_vhosts["dev.icinga.org"] = {
http_address = "dev.icinga.org"
}
}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Working with conditionals
apply Service "vhost " for (vhost => config in host.vars.http_vhosts) {
host_name = "localhost“
check_command = "http"
if (config.interval) {
check_interval = config.interval
} else {
check_interval = 5m
}
assign where host.vars.http_vhosts
}
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Demo
Icinga 2 - Config
#icinga
ICINGA 2 - CLUSTER
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
CA Zones API
Icinga 2 - Cluster Overview
Cluster
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Cluster Architecture
• API communication using SSL
• Bidirectional connections supported
• Zone support for logic splits in the configuration
• Hash-based load distribution
• “binlog” like retention for monitoring events and messages
• Distributed components throughout the cluster
• Automatic redistribution
• Integrated health check
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Cluster Distribution
Checker
Perfdata IDO
IDO
Checker
Graphite
Livestatus Checker
Statusdat
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Cluster Zones
Checker
Perfdata IDO
IDO
Checker
Graphite
Livestatus Checker
Statusdat
Host Host
Host
Checker
Perfdata IDO
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Master setup - State
#icinga
ICINGA 2 – REMOTE MONITORING
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Remote nodes
• Challenges in remote monitoring
– Configuration format
– Different software stack and libraries
– Various platforms
– Deployment and configuration
– Used resources
– Insecure
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 – Core resources
0
100
200
300
400
500
600
700
800
0
500
1000
1500
2000
2500
3000
30.000 Services
CPU-Cycles Memory
Megabyte
Cycle
s in m
illio
ns
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga 2 - Remote nodes
Checker
Perfdata IDO
Host
Checker
Perfdata IDO
Host Host
IDO
Checker
Graphite
#icinga
ICINGA WEB 2
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga Web 2 - Introduction
• Lightweight like Icinga classic and flexible like Icinga Web
• Easy to extend and embed into other projects
• Support for multiple authentication providers
– Internal DB
– LDAP
• Support for multiple backends
– Database
– Livestatus
• Supports Icinga 1.x and Icinga 2.x
• Responsive layout
• FAST!
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Backends Authentication Installer
Framework / Icinga PHP LibraryWeb 2
Icinga Web 2 - Foundation
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Web 2
Monitoring Docs
Icinga Web 2 - Modules
BP Graphite PNP
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Icinga Web 2 - Installer
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Demo
#osmc
Icinga Web 2 - Demo
CONCLUSION
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Conclusion
• Download Icinga 2
– Use the packages
– Play with Vagrant and VirtualBox
– You can download the sources but we prefer the packages
• Rethink you configuration
– You can use the migration, but it is time for a change
• Install Icinga Web 2 and play with it
• Give us feedback
– dev.icinga.org
– IRC
#icinga
VISION
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
You want to Graphite or InfluxDB?
Vision - Graphite
#icinga
icinga2 feature enable graphite
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
You want to use Graylog or Logstash?
Vision – Logstash or Graylog
#icinga
icinga2 feature enable gelf
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
You want to use Livestatus?
Vision – Livestatus
#icinga
icinga2 feature enable livestatusLivestatus
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
Vision
• No enterprise edition
• Enterprise integration
#icinga
DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG
#icinga
Questions & Answers
Web www.icinga.org
Git git.icinga.org
Development dev.icinga.org
Wiki wiki.icinga.org
Support support.icinga.org
Twitter twitter.com/icinga
Facebook facebook.com/icinga Get support
Get involved
Get heard