Müller Unternehmenspräsentation

Werbung
Monitoring mit Icinga und Nagios
Müller Ltd.&Co.KG
Ulm
Müller Ltd. & Co.KG
@jensschanz
Beruflich
•
Teamleiter 2nd-Level-Support Filial- und Linuxsysteme
•
Linux- / Unix-Admin seit 1999
•
Nagios-Nutzer seit 2002
•
Icinga-Nutzer seit 2010
•
OpenSource-Verfechter
•
Maintainer und Projektleiter
Privat
Müller Ltd. & Co.KG
•
Baby 0.5
•
Kleinkind 2.3
•
Mail: [email protected]
•
Twitter: @jensschanz
•
Blog: http://blog.jensschanz.de
Vorstellung
Vorstellung
Müller Ltd. & Co.KG
Müller auf einen Blick
Firmenname
Müller Ltd. & Co. KG
Firmensitz
89081 Ulm-Jungingen
Geschäftsführer
Erwin Müller,
Elke Menold,
Mitarbeiter
rund 24.000
Auszubildende
derzeit 600
Gesamtzahl Filialen derzeit 602 (D: 475 / CH: 38 /
Ö: 29 / Spanien: 9 /
Slowenien: 10 / Ungarn: 31 /
Kroatien: 10)
Abteilungen /
Fachmärkte
Drogerie (ca. 50.000 Artikel)
Parfümerie (ca. 23.000)
Schreibwaren (ca. 18.000)
Spielwaren (ca. 20.000)
Multi-Media (ca. 40.000)
Haushalt+Ambiente (ca. 10.000)
OTC (ca. 1000 Artikel)
Handarbeit (ca. 2.000)
Strümpfe (ca. 6.000)
Sortimentsvielfalt ca. 170.000 Artikel
Auszeichnungen
1998 »Goldener Zuckerhut«
durch die Lebensmittelzeitung
Filialgröße
400 bis über 4.000 m²
2004 »Echo« in Kategorie bester
Handelspartner
Lagerfläche
161.900 m², davon
7.000 m² Hochregallager
2006 Erwin Müller erhält den
Gründerpreis BadenWürttemberg
Fuhrpark
58 LKW, 280 PKW plus
45 Speditionsfahrzeuge
2008/2009 LIMA Germany
Awards Auszeichnung als bester
Handelspartner
2009 Zertifizierung für seniorenfreundlichen Service vom
Seniorenrat Ulm
Stand: Oktober 2010
Müller Ltd. & Co.KG
2010 LARA Games Award Auszeichnung als bester Handelspartner im Bereich Games
Müller IT im Überblick
Müller Ltd. & Co.KG
Müller IT (Zentrale Ulm) im Detail
3 Rechenzentren
•
400 Linux Server
(davon 300 virtuelle Server)
•
120 Windows Server
•
350 Router und Switches
•
650 Filial-Router
Müller Ltd. & Co.KG
Müller IT (Filiale) im Detail
650 Filialen
•
1600 Workstations
•
3200 Kassensysteme
•
850 Drucker
•
1600 Netzwerkkomponenten
•
1300 Zeiterfassungsterminals
•
450 EC-Terminals (IP)
Müller Ltd. & Co.KG
Historie
2002
- Projektbeginn. Entscheidung FÜR Nagios
2003
- Proof of Concept in 5 Filialen
2004
- Rollout Nagios 1.2 in ca. 350 Filialen inkl. NDSUtils 1.0
2008
- Umstellung von Nagios 1.2 auf Nagios 3 mit NDOUtils als DB-Backend
- NagiosLite
2009
- 600. Filiale mit Nagios überwacht
2011
- Migration auf Icinga
Müller Ltd. & Co.KG
Anforderung
„WIR müssen merken, wenn etwas nicht funktioniert - NICHT der Kunde!“
●
Zeitnahes Monitoring aller Komponenten
●
Verfügbarkeitsauswertung einzelner Komponenten
●
Erkennung fehlerhafter Komponenten die mehrfach Störungen aufweisen
●
Dokumentation von Störungen (z.B. Störungen und Tickets für Service-Firmen)
●
Monitoring bei Software-Auslieferungen
Müller Ltd. & Co.KG
WTF?
Müller Ltd. & Co.KG
Umsetzung
Manage Infrastructures NOT servers
●
Klassifizierung Systeme in Klassen (Workstations, Kassen, Switches, etc.)
●
Entscheidung FÜR Nagios und gegen HP Openview, BMC Patrol, etc.
●
●
Open Source, Quellcode, Flexibilität, Skalier- und Erweiterbarkeit, große Community
Jede Filiale ist eine eigene, selbständige Nagios-Instanz
●
Einfache Administration, Pufferung von Daten bei Offline-Fall (DSL-Anbindung)
●
Skalierbarkeit, Schonung von Bandbreite
●
Replikation der Daten von der Filiale in die Zentrale über ndoutils
●
Zentrale ndoutils-Datenbank für alle Instanzen für Auswertungen und Überwachung
●
Eigenes Frontend für Fachabteilungen, Operations-Center, etc.
Müller Ltd. & Co.KG
Umsetzung
Umsetzung
Infrastruktur
Icinga / Nagios
NagVis
Business Process Addon
ndoutils / idoutils
Müller Ltd. & Co.KG
Infrastruktur Filiale (Nagios)
Monitoring Center
re
ad
er
NDOUtils-App-Server
MySQL-Multi-Master
2
writer
reader1
● reader2
●
●
ndoutils
writer
ROLE(s)
writer
reader1
MySQL
Replikation
MySQL1
ndoutils
instance_id=101
Filiale 2
Nagios
Workstation
Müller Ltd. & Co.KG
MySQL2
ndoutils
instance_id=102
Filiale 1
Kasse
Nagios
Kasse
Workstation
Kasse
ROLE(s)
reader2
Kasse
Infrastruktur Zentrale (Icinga)
Icinga Mobile
Icinga
Icinga Web
Jasper Reports
DMZ
reader2
reader2
writer
reader2
writer
reader1
● reader2
●
●
MySQL-Multi-Master
ROLE(s)
writer
reader1
MySQL1
Müller Ltd. & Co.KG
MySQL
Replikation
ROLE(s)
reader2
MySQL2
Icinga (Performance-Optimierung)
http://docs.icinga.org/latest/de/tuning.html
●
●
●
●
2. Benutzen Sie "Verbesserungen für große Installationen" (large installation tweaks)
icinga.cfg → use_large_installation_tweaks=1
3. Optimieren Sie Host-Prüfbefehle
1x Ping und 10 Re-Checks, anstelle 10 Pings
16. Optimieren Sie die Hardware für maximale Leistung
2x Intel QuadCore mit HT, 32 GB RAM, 4x 146GB FP RAID10
17. Benutzen Sie eine RAM-Disk für temporäre Daten
icinga.cfg → status_file=/usr/local/icinga/tmpfs/status.dat
icinga.cfg → object_cache_file=/usr/local/icinga/tmpfs/objects.cache
root@spaceballs ~ $ mount ­t tmpfs ­o size=1024m none /usr/local/icinga/tmpfs/
Müller Ltd. & Co.KG
NagVis
●
Dokumentation
●
Visuelles Monitoring für Management, Fachabteilung, User Help Desk, etc.
Müller Ltd. & Co.KG
Business Process Monitoring
●
Reduzierung Alarme für Benachrichtigungen (E-Mail, SMS, Tickets)
●
Reduzierung auf die für den Prozess notwendigen Checks (z.B. kein check_ntp)
●
Transparenz für Fachabteilung, User Help Desk
●
Schnelle Lokalisierung von Problemen
Müller Ltd. & Co.KG
Business Process Monitoring
●
Abhängigkeitsanalyse
●
Fehlersimulation
Müller Ltd. & Co.KG
Jasper-Reports
Befindet sich gerade im Aufbau
●
Auswertungen IT-Leitung, Fachabteilungen
●
SLA-Management gegenüber Kunden (Filialen) / Wartungsfirma gegenüber uns
●
Auswertungen für Support-Teams
●
z.B. „Was war heute Nacht los?“
Müller Ltd. & Co.KG
Idoutils-DB (Umsetzung)
Probleme
●
Daten-Overkill
●
Schwierig die richtigen Broker-Einstellungen zu finden
●
Permanente Kommunikation
●
Umfangreiche Dokumentation, schwer verständlich geschrieben
●
Source Code sehr schwer zu „lesen“
Müller Ltd. & Co.KG
Idoutils-DB (ZLIB-Kompression + Burst-Mode)
diff -U 3 -H -E -d -r -- ndoutils-1.4b7/include/config.h.in ndoutils-1.4b7-tre/include/config.h.in
--- ndoutils-1.4b7/include/config.h.in 2007-10-31 19:17:05.000000000 +0100
+++ ndoutils-1.4b7-tre/include/config.h.in 2008-11-24 16:34:25.000000000 +0100
@@ -268,4 +268,11 @@
#include <libpq-fe.h>
#endif
+#undef USE_ZLIB
+#undef HAVE_ZLIB
+#ifdef USE_ZLIB
+#define HAVE_ZLIB 1
+#include <zlib.h>
+#endif
...
@@ -176,6 +163,10 @@
case 't':
if(!strcmp(optarg,"tcp"))
socket_type=NDO_SINK_TCPSOCKET;
+#ifdef HAVE_ZLIB
+
else if (!strcmp(optarg,"tcpzip"))
+
socket_type=NDO_SINK_TCPSOCKETZIP;
+#endif
else if(!strcmp(optarg,"unix"))
socket_type=NDO_SINK_UNIXSOCKET;
else
Müller Ltd. & Co.KG
Idoutils-DB (Performance-Optimierung Schema)
●
BLACKHOLE-Engine verwenden
ALTER TABLE nagios_commands ENGINE=BLACKHOLE;
→ ndoutils-DB „austricksen“ und nur das
speichern, was benötigt wird
●
INNODB-Engine komprimieren
ALTER TABLE nagios_servicechecks ENGINE=ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
→ reduziert die Größe der DB um 2/3 (CPU!)
Müller Ltd. & Co.KG
Idoutils-DB (Performance-Optimierung MySQL - Server)
[mysqld]
...
table_cache = 8192
thread_cache = 5000
max_connections = 2000
wait_timeout = 60
interactive_timeout = 60
concurrent_insert = 2
...
tmp_table_size=256M
max_heap_table_size=256M
...
Müller Ltd. & Co.KG
# the number of open tables for all threads
# avoid aborted connections
# each ndoutils instance opens up to 3 connections
# close idle connections
# close idle connections
# for some small myisam tables
# avoid temp tables on disk
# avoid temp tables on disk
Idoutils-DB (Performance-Optimierung MySQL - InnoDB)
# InnoDB total Configuration
innodb_lock_wait_timeout
innodb_thread_concurrency
…
innodb_log_files_in_group
innodb_log_file_size
innodb_log_buffer_size
innodb_flush_log_at_trx_commit
...
innodb_adaptive_hash_index
innodb_commit_concurrency
innodb_file_format
innodb_file_per_table
innodb_rollback_on_timeout
innodb_flush_method
Müller Ltd. & Co.KG
= 10
=0
# Time to wait before rollback transactions
=6
= 512M
= 64M
=0
# use 6 logfiles to avoid interruptions while checkpointing
= OFF
=0
= Barracuda
# speed up access to data not stored in memory
# use as much threads as possible
# large enough to buffer high load of inserts
# large enough to handle large reports
# write log one per second to disk – not safe, but fast
# commit as often as possible
# enable compression of innodb tables
# generate one data file per table
# what to do on timeout?
= O_DIRECT
# use directio and bypass filesystem cache
Müller Monitoring Center
Müller Monitoring Center
Müller Ltd. & Co.KG
Monitoring Center (Overview)
Müller Ltd. & Co.KG
Monitoring Center (Process Monitoring)
Müller Ltd. & Co.KG
Monitoring Center (Filialeauswahl)
Müller Ltd. & Co.KG
Monitoring Center (Downtime Monitoring)
Müller Ltd. & Co.KG
NDS-Tools
NDS-Tools
Müller Ltd. & Co.KG
NDS-Tools
Keep it simple – automatize it
●
●
●
NDSClient
NagiosDataStorage-Client
NDSServer
NagiosDataStorage-Server
CNE
CreateNewEnvironment
Müller Ltd. & Co.KG
NDS-Tools (Funktionsweise)
check_nrpe
Icinga-Server
Client
icinga
nrpe
read
read
z.B. hosts.cfg
nds
…
obsess_over_host 1
check_freshness 1
freshness_threshold 0
event_handler_enabled 1
low_flap_threshold 0
...
write
nrpe.cfg
…
command[check_load]=
command[check_disk_root]=
…
read (SQL)
write (SQL)
read
cne(.pl)
Müller Ltd. & Co.KG
trigger
ndsserver(.pl)
XML
ndsclient(.pl)
NDSClient (Nagios Data Storage - Client)
NDSClient
●
PERL-Skript
●
Unterstützt Linux, HP-UX, AIX, Windows (als VBS-Skript)
●
Liest für Nagios / Icinga relevante Systemdaten aus
●
IP-Adresse / Subnetz / Gateway
●
/etc/nrpe.conf und /etc/nrpe.conf.d/*.conf
●
Contact / Contactgroup / Hostgroup aus /opt/ndsclient/etc/ndsclient.conf
●
„Müller“-spezifische Datei /etc/sys.conf (Root-Server, Systemtyp, Filialnummer)
●
Generiert XML und schickt es per Socket an den „ndsserver“
Müller Ltd. & Co.KG
NDSServer (Nagios Data Storage - Server)
NDSServer
●
PERL-Skript (Daemon-Mode)
●
Liest XML-Stream des „ndsclient“
●
Generiert Objekt-Konfiguration in der nds-Datenbank
●
Generiert Abhängigkeiten
●
Parents
●
Contacts / Contactgroups
●
Host- / Servicegroups
Triggert CNE für neue Konfiguration
●
Müller Ltd. & Co.KG
CNE (CreateNewEnvironment)
CNE
●
●
PERL-Skript
Liest nds-Datenbank aus und generiert Konfgurationsdateien für Nagios / Icinga
●
Müller Ltd. & Co.KG
„Korrigiert“ über SQL-Hooks die nds-Datenbank
●
Host- und Servicegroups zusammenbauen
●
Attribute anpassen (z.B. check_interval und recheck_interval)
●
Contactgroups erweitern, korrigieren
●
Everythings is possible … because of SQL
Tipps
Müller Ltd. & Co.KG
Herausforderungen im Admin-Bereich
●
●
Organisation „Informations-Overkill“
●
Abhängigkeiten erkennen und definieren
●
Eigentliches Problem lokalisieren
●
Business-Process-Monitoring nutzen
●
NagVis nutzen
Bearbeitungszeit (Services im Status Flapping)
●
●
●
Schwellwerte anpassen
„Richtiges Downtime-Monitoring“
●
Keine Acknowledges setzen … (Gefahr: Fire and forget)
●
Laut @dnsmichi auf Twitter für Icinga 1.6 verbessert
Applikationen richtig monitoren
Müller Ltd. & Co.KG
„Richtiges“ Monitoring von Applikationen
●
Typisches Monitoring-Szenario
check_mysql -u root -p toor -h host1
check_mysql
check_http -H host2 -u /applikation/
DB-Server
check_http
APP-Server
Applikations-Update
●
app2db.cfg
app2db.cfg
…
username=old
password=old123
…
Applikation
root:toor
old:old123
Müller Ltd. & Co.KG
…
username=new
password=new123
…
„Richtiges“ Monitoring von Applikationen
Ergebnis
●
check_mysql → OK
●
check_http → OK
●
Applikation → DB-Benutzer nicht angelegt = Applikation KAPUTT = Kunde unzufrieden
Lösung
●
Wrapper-Skripte bauen
#!/bin/sh
# check_application2database
USER=`cat app2db.cfg | grep username | awk ­F= '{ print $2 }'`
PASSWORD=`cat app2db.cfg | grep password | awk ­F= '{ print $2 }'`
HOST=`cat app2db.cfg | grep hostname | awk ­F= '{ print $2 }'`
/usr/local/nagios/libexec/check_mysql ­u $USER ­p $PASSWORD ­h $HOST
Müller Ltd. & Co.KG
Status quo (Zentrale)
Icinga / Nagios (Stand 28.11.2011)
●
Migrationsbeginn 07.2011 / Migrationsende 01.2012
●
1700 Hosts + 10600 Services = 1 Instanz
●
1 APP-Server (Icinga, Icinga-Web → 2 Intel QuadCore, 40GB RAM, 4x 146GB Disk)
●
2 DB-Server (MySQL-Multi-Master → 2 Intel QuadCore, 32GB RAM, 4x 146GB Disk)
Müller Ltd. & Co.KG
Status quo (Filialen )
Nagios (Stand 28.11.2011)
●
650 Nagios-Instanzen
●
9327 Hosts
●
121107 Servicechecks
●
1 APP-Server (ndotuils → 1x Intel DualCore, 4GB RAM, 2x 146GB Disk (OpenVZ))
●
2 DB-Server (MySQL-Multi-Master → 2x Intel QuadCore, 32GB RAM, 4x 146GB Disk (OpenVZ))
Müller Ltd. & Co.KG
Der Dank geht an …
… all diejenigen, die keine Mühe und keinen Aufwand
für den Erfolg freier Software scheuen. DANKE!
Zlib-Patch für ndoutils (by Tilo Renz, tagwork <one>)
–
Müller Ltd. & Co.KG
http://jensschanz.de/data/zlibpatch.diff.gz
Herunterladen