Icinga 2 ist eine vollständige Neuentwicklung der beliebten Open Source Monitoring Lösung Icinga, welche ebenfalls vollständig als Open Source Software erhältlich ist. Ziel dieses Webinares war es, einen Überblick über die Konfigurationsunterschiede zu vermitteln und Wege aufzuzeigen, wie eine Migration aussehen kann.
Webinare
Archiv Link: https://www.netways.de/webinare/archiv/icinga_webinare/icinga_2_migration_von_nagios_oder_icinga_1x_leicht_gemacht/
Aktuell: https://www.netways.de/webinare/webinare_aktuell/
NETWAYS
Konferenzen: https://www.netways.de/events_schulungen/home/
Schulungen: https://www.netways.de/events_schulungen/schulungen/home/
Shop: https://shop.netways.de/
Blog: http://blog.netways.de/
Social Media
YouTube: https://www.youtube.com/channel/UC8nIBEFmjzXjXeJV_hkkeIQ
Facebook: https://www.facebook.com/netways
Google+: https://plus.google.com/+netways/
Twitter: https://twitter.com/netways
Puppet: Windows Configuration Management (Webinar vom 12.12.2014)
Icinga 2: Migration von Nagios oder Icinga 1.x leicht gemacht (Webinar 02.09.2014)
1. www.netways.de // blog.netways.de // @netways
We love Open Source
WEBINAR | 02.09.2014
ICINGA 2: MIGRATION VON
NAGIOS / ICINGA 1.X LEICHT GEMACHT
MICHAEL FRIEDRICH | CHRISTIAN STEIN | NETWAYS GMBH
2. www.netways.de // blog.netways.de // @netways
We love Open Source
VORSTELLUNG MITARBEITER
■ Christian Stein
Account Manager
Bei NETWAYS seit 2012
■ Michael Friedrich
Application Developer
Bei NETWAYS seit 2012
Im Icinga Team seit Mai 2009
Icinga Core & Icinga 2 Developer
3. www.netways.de // blog.netways.de // @netways
We love Open Source
AGENDA
■ Vorstellung NETWAYS
■ Was ist Icinga 2
■ Unterschiede zu Nagios und Icinga 1.x
■ Migration
■ Live Demo
■ Icinga 2 Webinare
■ Zusammenfassung
■ Fragen und Antworten
5. www.netways.de // blog.netways.de // @netways
We love Open Source
VORSTELLUNG NETWAYS
■ Firmengründung 1995
■ Open Source seit 1997
■ Aktuell 40 Mitarbeiter
■ Spezialisierung in den Bereichen
Open Source Systems Management
und Open Source Datacenter
6. www.netways.de // blog.netways.de // @netways
We love Open Source
NETWAYS KOMPETENZEN
■ Monitoring
■ Graphing
■ Logmanagement
■ Konfigurationsmanagement
■ Reporting
■ Private Cloud
■ Backup
■ Projektmanagement
■ Consulting
■ Hosting
■ Managed Services
■ Development
■ Support
■ Betrieb
■ Schulungen
■ Konferenzen
■ Monitoring Hardware
9. www.netways.de // blog.netways.de // @netways
We love Open Source
■ Open Source Backup Conference
• 22. – 23. September 2014 in Köln
• Best Practices für das Backup
■ Puppet Camp
• 16. Oktober 2014 in Düsseldorf
• 110 Teilnehmer (April 2013)
• Vorträge und Workshops
NETWAYS KONFERENZEN
10. www.netways.de // blog.netways.de // @netways
We love Open Source
■ Open Source Monitoring Conference
• 18. – 20. November 2014 in Nürnberg
• 250 Teilnehmer (2013)
• Monitoring Best Practices
■ OpenNebula Conference
• 02. – 04. Dezember 2014 in Berlin
• 100 Teilnehmer (2013)
• Cloud Virtualisierung
NETWAYS KONFERENZEN
11. www.netways.de // blog.netways.de // @netways
We love Open Source
NETWAYS COMMUNITY
www.netways.org
■ NETWAYS Addons
■ NETWAYS Plugins
www.icinga.org
■ Development
■ Hosting
www.monitoringexchange.org
■ Icinga / Nagios Addons und Plugins
■ > 2000 Projekte
16. www.netways.de // blog.netways.de // @netways
We love Open Source
UNSERE LEISTUNGEN IM ÜBERBLICK
■ Konzeptionierung und Planung
■ Workshops & Consulting zur Implementierung vor Ort
■ Betrieb
Komplette Monitoringsysteme
Satellitensysteme
■ Entwicklungsleistungen
Plugins
Systemintegration
■ Schulungen
Standardisierte Schulungsmodule
Individuell vor Ort
■ Support
Standardverträge
Individuelle Supportkonzepte
■ Konferenzen
18. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2.X: ALLGEMEINES
■ Stabile Version: 2.1.0 (29.8.2014)
■ Linux-Server Daemon
■ Läuft auf allen aktuellen Distributionen
■ Datenbankunterstützung: MySQL und PostgreSQL
Quelle: www.icinga.org
19. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2 FEATURES
■ Vollständig Featurebasiert
Checker, Notifications
Compat (Status Files, Perfdata, Command Pipe)
Graphite
DB IDO
Livestatus Schnittstelle
Cluster
■ Direkte Anbindung von Graphite
■ Einfach skalierbar über zusätzliche Nodes
■ Automatisches Load-Balancing von Checks und Notifications
■ SSL-Verschlüsselung zwischen allen Icinga 2 Instanzen
■ Nagios/Icinga Check-Plugins 100% kompatibel
20. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2.X CLUSTER
■ Cluster mit Replikation, Konfigurations-Sync & Hochverfügbarkeit
■ Sichere Kommunikation zwischen den Instanzen (SSL x509)
■ Lastverteilung von Checks und Notifizierungen
Quelle: www.icinga.org
21. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2.X VERTEILTES MONITORING
■ Zonenmodell für eine verteilte Überwachung
■ Replikation nur zwischen den einzelnen Zonen und der Masterzone
Quelle: www.icinga.org
23. www.netways.de // blog.netways.de // @netways
We love Open Source
UNTERSCHIEDE ICINGA 2 ZU ICINGA 1.X / NAGIOS
■ Pakete für gängige Distributionen vom Icinga Projekt
■ Dynamische Konfigurationsregelsprache mit Apply/Assign
Service-Host-Relationen basierend auf Attributen
Einfache Notifizierungsregeln und Abhängigkeitsdefinitionen für
Agenten, etc
Konditionale Check Command Argumente
Icinga Template Library und Plugin Check Commands
■ Embedded Gesundheitschecks mit Performancedaten (icingastats)
■ Livestatus Protokoll nativ als Feature (kein Addon)
■ Cluster Feature ersetzt mod_gearman und andere Verteilungsaddons
■ Wiederkehrende Ausfallszeiten („Recurring Downtimes“)
■ Keine Limitierung von Checkoutput, Command Pipe Slots, etc
24. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2: KOMPATIBILITÄT
■ Plugins: 100% (neue Check Command Konfiguration erforderlich)
■ Konfiguration
Ausführliche Tipps & Tricks für manuelle Migration
Migrationsscript & LConf kompatibler Export
Empfehlung: Erlernen der neuen Konfigurationssprache!
vim/nano Syntax Highlighting
■ Datenbankschema der IDO Version 1.11.7
■ Livestatus Protokoll mit Unixsocket (zus. TCP)
■ Status.dat/objects.cache/icinga.log
■ Performancedaten
■ Externe Command Pipe
■ Checkresult Spool Reader (z.B. LConfSlaveSync)
25. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2: MIGRATION
■ Vorbereitung
Inventur der bestehenden Umgebung
Wie wird die Konfiguration erstellt (händisch, generiert, etc)
■ Entscheidung notwendig
„magische“ Migration durch Scripts und Tools
Neu-Aufbau anhand der neuen Möglichkeiten mit Icinga 2 Regeln
■ Best Practice
Hosts und Hostgruppen mit Services
Notifizierungsregeln anhand bestehender Kontakte und Typen
Abhängigkeiten überarbeiten
Commands und Argumente neu „erfinden“
26. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2 MIGRATION: TEMPLATES
define host {
name db-server
check_interval 5
retry_interval 3
check_command hostalive
register 0
}
define service {
name db-service
check_interval 3
retry_interval 1
register 0
}
template Host "db-server" {
check_interval = 5m
retry_interval = 3m
check_command = "hostalive"
}
template Service "db-service" {
check_interval = 3m
retry_interval = 1m
}
27. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2 MIGRATION: GRUPPEN
define hostgroup {
hostgroup_name mysql-server
display_name MySQL Server
members *mysql*, WTF, !WTF, !*internal
}
define host {
host_name mysql-db1
use db-server,mysql-server
address 192.168.70.10
}
define host {
host_name customer-db7
use db-server,mysql-server
address 192.168.71.30
_PROD_MYSQL_DB db-customer-xy
}
object HostGroup "mysql-server" {
display_name = "MySQL Server"
assign where match("*mysql*", host.name)
assign where match("db-*", host.vars.prod_mysql_db)
ignore where host.vars.test_server == true
ignore where match("*internal", host.name)
}
object Host "mysql-db1" {
import "db-server"
import "mysql-server"
address = "192.168.70.10"
}
object Host "customer-db7" {
import "db-server"
import "mysql-server"
address = "192.168.71.30"
vars.prod_mysql_db = "db-customer-xy"
}
28. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 1.X VS 2.X: HOST, GRUPPEN UND SERVICES
define host {
host_name mysql-db1
use db-server,mysql-server
address 192.168.70.10
}
define host {
host_name customer-db7
use db-server,mysql-server
address 192.168.71.30
_PROD_MYSQL_DB db-customer-xy
}
define service {
service_description mysql-health
use mysql-service
check_command mysql
; nur hostgroup möglich
hostgroup_name mysql-server
}
object Host "mysql-db1" {
import "db-server"
import "mysql-server"
address = "192.168.70.10"
}
object Host "customer-db7" {
import "db-server"
import "mysql-server"
address = "192.168.71.30"
vars.prod_mysql_db = "db-customer-xy„
//vars.no_health_check = true
}
apply Service "mysql-health" {
import "mysql-service"
check_command = "mysql"
assign where match(“192.168.7*”, host.address)
assign where "mysql-server" in host.groups
ignore where host.vars.no_health_check == true
}
29. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2 MIGRATION: NOTIFIZIERUNGEN 1/2
define contact {
contact_name testconfig-user
use generic-user
alias Icinga Test User
service_notification_options c,f,s,u
email icinga@localhost
service_notification_commands notify-service-by-mail
host_notification_commands notify-host-by-mail
}
define contactgroup {
contactgroup_name cg_admin
members testconfig-user
}
define service {
use generic-service
host_name my-server
service_description my-ping
check_command my-ping-check!100.0,20%!500.0,60%
notification_options c,w
notification_interval 10
notification_period 8x5
contact_groups cg_admin
}
define host{
define host{
use linux-server-template
host_name my-server
address 192.168.1.10
notification_options d
notification_interval 120
notification_period 8x5
contact_groups cg_admin
}
30. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2 MIGRATION: NOTIFIZIERUNGEN 2/2
object User "testconfig-user" {
import "generic-user"
display_name = "Icinga Test User"
states = [ Critical, Unknown, Ok ]
types = [ Problem, Recovery, DowntimeStart, DowntimeEnd,
DowntimeRemoved, FlappingStart, FlappingEnd]
email = "icinga@localhost"
}
object UserGroup "cg_admin" {
assign where user.name == "testconfig-user"
}
object Host "my-server" {
import "linux-server-template"
address = "192.168.1.10"
}
object Service "my-ping" {
import "generic-service"
check_command = "my-ping-check"
vars.ping_wrta = 100
vars.ping_wpl = 20
vars.ping_crta = 500
vars.ping_cpl = 60
}
apply Notification "service-by-mail" to Service {
command = "notify-service-by-mail"
interval = 10m
period = "8x5"
types = [ Problem, Recovery, Up ]
states = [ Warning, Critical ]
user_groups = [ "cg_admin" ]
assign where host.name == "my-server" && service.name ==
"my-ping"
}
apply Notification "host-by-mail" to Host {
command = "notify-host-by-mail"
interval = 120m
period = "8x5"
types = [ Problem, Recovery ]
states = [ Down, Up ]
user_groups = [ "cg_admin" ]
assign where host.name == "my-server"
}
31. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2 MIGRATION: ABHÄNGIGKEITEN
define service {
service_description nrpe-health
use generic-service
check_command nrpe
hostgroup_name nrpe-servers ;keine CV möglich
}
define service {
service_description nrpe-disk
use generic-service
check_command nrpe_1arg!check_disk
hostgroup_name nrpe-servers ;keine CV möglich
}
define host {
use generic-host
address 192.168.1.5
_AGENT nrpe
}
define dependency {
hostgroup_name nrpe-servers ; nur mit Zusätz-Dummy-Hostgruppe
service_description nrpe-health ; parent
dependent_hostgroup_name nrpe-servers
dependent_service_description disk, ….
execution_failure_criteria w,u.c
notification_failure_criteria w,u.c
}
apply Service "nrpe-health" {
import "generic-service"
check_command = "nrpe"
assign where host.vars.agent == "nrpe"
}
apply Service "nrpe-disk" {
import "generic-service"
check_command = "nrpe"
vars.nrpe_command = "check_disk"
assign where host.vars.agent == "nrpe"
}
object Host "nrpe-server" {
import "generic-host"
address = "192.168.1.5"
vars.agent = "nrpe"
}
apply Dependency "disable-nrpe-checks" to Service {
parent_service_name = "nrpe-health"
states = [ OK ]
disable_checks = true
disable_notifications = true
assign where service.check_command == "nrpe"
assign where host.vars.agent == "nrpe"
ignore where service.name == "nrpe-health"
}
34. www.netways.de // blog.netways.de // @netways
We love Open Source
ICINGA 2: KOMMENDE WEBINARE
■ Icinga 2: Integration von Graphite
25. September 2014 - 10:30 Uhr
Markus Frosch und Christian Stein
■ Icinga 2: Integrierte Hochverfügbarkeit
07. Oktober 2014 – 14:00 Uhr
Michael Friedrich und Christian Stein