check_mk - Nagios ganz einfach von admin - 15.05.2011 http://devel.itsolution2.de/wordpress/?p=125 Mit check_mk wird das Monitoring mit nagios zum Kinderspiel. Durch eine einfache Konfigurationsdatei steuert man ein Konfigurationswerkzeug, dass dann nahezu alleine die Konfiguration für nagios erstellt. Die Konfiguration von check_mk erfolgt in der Datei main.mk. Ein sehr umfassendes Beispiel dazu: # -*- encoding: utf-8; py-indent-offset: 4 -*- # Liste der zu Prüfenden Geräte (PC, Server, Switch, Router...) # Entweder nur 'name' oder mit Tag: 'name win' all_hosts = [ 'server win nodhcp', 'lancom1721 lcos', # Prüfung auf neue Checks all X Minuten inventory_check_interval = 120 # Verhindern von unnötigen Fehlmeldungen durch Anpassungen der Dienste extra_service_conf["max_check_attempts" = [ ("3", ALL_HOSTS, "PING"), ("2", ALL_HOSTS, "Check_MK"), # IP Adressen von Geräten ohne DNS A Eintrag ipaddresses = { "server" : "192.168.7.2", "lancom1721" : "192.168.7.1", # SNMP Communities snmp_communities = [ # Bei Lancom Routern ist eine SNMP Abfrage nur mit dem Passwort als C ommunity moeglich ( "LANCOMPASSWORT", [ "lcos", ALL_HOSTS ), # Welche Geräte hängen von einander ab parents = [ # Alle haengen vom Router ab ( "lancom1721", ALL_HOSTS ), page 1 / 8
# Ignorienen von checks #ignored_checks = [ # (["check_mk-win_dhcp_pools.stats", ["nodhcp", ALL_HOSTS), # # Hostgruppen define_hostgroups = True host_groups = [ ( "SERVER", [ 'win', ALL_HOSTS ), # Dienstgruppen define_servicegroups = True service_groups = [ ( 'Dateisysteme_Win', [ 'win', ALL_HOSTS, [ "fs_" ), ( "ExchangeDienste", [ 'win', ALL_HOSTS, ["service_msexchange" ), ( "SwyxDienste", [ 'win', ALL_HOSTS, ["service_ippbx" ), ( "SwyxFaxDienste", [ 'win', ALL_HOSTS, ["service_ippbxfax", "!serv ice_ippbx" ), # Alias extra_host_conf["alias" = [ ( "lancom1721", [ "Lancom 1721 Router" ), # Bilder extra_host_conf["icon_image" = [ ( "base/win40.png", ["win", ALL_HOSTS ), ( "base/lancom-lcos.png", ["lcos", ALL_HOSTS ), ( "base/switch40.png", ["switch", ALL_HOSTS ), ( "base/hpux.png", ["ilo", ALL_HOSTS ), ( "base/hp-printer40.png", ["printer", ALL_HOSTS ), extra_host_conf["icon_image_alt" = [ ( "Windows", ["win", ALL_HOSTS ), ( "LCOS", ["lcos", ALL_HOSTS ), ( "Switch", ["switch", ALL_HOSTS ), ( "HP ILO", ["ilo", ALL_HOSTS ), ( "HP Drucker", ["printer", ALL_HOSTS ), page 2 / 8
extra_host_conf["vrml_image" = [ ( "base/win40.png", ["win", ALL_HOSTS ), ( "base/lancom-lcos.png", ["lcos", ALL_HOSTS ), ( "base/switch40.png", ["switch", ALL_HOSTS ), ( "base/hpux.png", ["ilo", ALL_HOSTS ), ( "base/hp-printer40.png", ["printer", ALL_HOSTS ), extra_host_conf["statusmap_image" = [ ( "base/win40.png", ["win", ALL_HOSTS ), ( "base/lancom-lcos.png", ["lcos", ALL_HOSTS ), ( "base/switch40.png", ["switch", ALL_HOSTS ), ( "base/hpux.png", ["ilo", ALL_HOSTS ), ( "base/hp-printer40.png", ["printer", ALL_HOSTS ), # Arbeitsspeicher Level memory_win_default_levels = { "memory" : (95, 98.0), # alert at 80%/90% usage "pagefile" : (512, 256), # alert, if less then 2/1 GB free # Dateisystem Level # Vorsicht - je nach check_mk Version anders! filesystem_default_levels["levels" = (95, 98) # Anpassungen an Checks #check_parameters = [ # Dateisystem Fuellstand Warnung 95%, Fehler 98% beim Tag win # ( (95, 98), [ "win", ALL_HOSTS, [ "fs_" ), # Alle anderen Warnung 95%, Fehler 97% # ( (95, 97), ALL_HOSTS, [ "fs_" ), # # Anpassungen am Log logwatch_patterns = { 'System': [ ( 'I', 'PlugPlayManager Beim Senden der Benachrichtigung der Zielger.*' ), ( 'I', 'TermServDevices.*' ), ( 'I', '.*Der Drucker.*' ), ( 'I', '.*schen des Druckers.*' ), ( 'I', 'Der Redirectordienst konnte den Verbindungstyp nicht erkenne n.' ), ( 'I', 'W3SVC Bei einem Prozess.* Anwendungspool "DefaultAppPool" h page 3 / 8
at.* des Herunterfahrens ein Zeitlimit.*' ),, 'Application': [ ( 'I', 'Windows_Server_Update_Services Clientcomputer installieren U pdates mit einer Fehlerrate von mehr als.*' ),, 'Security': [ ( 'I', '.*nnimann OC Anmeldetyp: 3.*' ), ( 'I', '.*192.168.70.116.*' ), # Ignorieren von Diensten ignored_services = [ # Kein DHCP bei Tag nodhcp (["nodhcp", ALL_HOSTS, "DHCP Stats"), Man kann Windows Dienste überwachen - dafür muss man check_mk nur mitteilen, welche Dienste interessant sind. Hierfür ist die Konfigurationsanweisung inverntory_services. Um diese einfach mit Leben zu füllen kann man sich wie folgt die Dienste auf einem Windows Rechner ausgeben lassen (HOSTNAME bitte durch den Gerätenamen ersetzen): check_mk -d HOSTNAME grep running awk '{print $1' Für Tippfaule auch komplett: echo -e "inventory_services = [\n"; check_mk -d HOSTNAME grep runnin g awk '{printf "\t\"%s,\"\n",$1'; echo -e "\n" In der main.mk werden diese dann wie folgt eingetragen - und nur aktivierte Dienste werden auch geprüft: inventory_services = [ 'Browser', 'Dfs', 'Dhcp', 'RpcSs', 'Schedule' page 4 / 8
Wenn man die Konfiguration fertig hat, lässt man check_mk die Geräte inventarisieren, erzeugt die nagios Konfiguration und lädt nagios neu mit den Befehlen: check_mk -I check_mk -O Nachtrag: Für die ganz eiligen - mit diesem Skript erzeugt man eine Liste aller Dienste der in check_mk eingetragenen Geräte: #!/bin/sh echo "Sammeln von Windows Dienst Namen aus check_mk Hosts..." rm -f dienste.mk rm -f dienste_temp # Alle check_mk Hosts durchgehen for host in `check_mk --list-hosts`; do echo "Durchsuche Host=${host" check_mk -d $host grep running awk '{printf "\t\"%s\",\n", $1' >> dienste_temp done # Sortieren und Duplikate entfernen echo "inventory_services = [" >> dienste.mk cat dienste_temp sort uniq >> dienste.mk echo "" >> dienste.mk rm -f dienste_temp >> dienste.mk cat dienste.mk # Liste der zu Prüfenden Geräte (PC, Server, Switch, Router...) # Entweder nur 'name' oder mit Tag: 'name win' all_hosts = [ 'server win nodhcp', 'lancom1721 lcos', # Pruefung auf neue Checks all X Sekunden inventory_check_interval = 120# Verhindern von unnoetigen Fehlmeldungen durch Anpassungen der Services extra_service_conf["max_check_attempts" = [ ("3", ALL_HOSTS, "PING"), ("2", ALL_HOSTS, "Check_MK"), page 5 / 8
# IP Adressen von Geräten ohne DNS A Eintrag ipaddresses = { "server" : "192.168.7.2", "lancom1721" : "192.168.7.1", # SNMP Communities snmp_communities = [ # Bei Lancom Routern ist eine SNMP Abfrage nur mit dem Passwort als Community moeglich ( "LANCOMPASSWORT", [ "lcos", ALL_HOSTS ), # Welche Geräte haengen von einander ab parents = [ # Alle haengen vom Router ab ( "lancom1721", ALL_HOSTS ), # Ignorienen von checks #ignored_checks = [ # (["check_mk-win_dhcp_pools.stats", ["nodhcp", ALL_HOSTS), # # Create all needed host groups define_hostgroups = True host_groups = [ ( "SERVER", [ 'win', ALL_HOSTS ), # Alias extra_host_conf["alias" = [ ( "lancom1721", [ "Lancom 1721 Router" ), # Bilder extra_host_conf["icon_image" = [ ( "base/win40.png", ["win", ALL_HOSTS ), ( "base/lancom-lcos.png", ["lcos", ALL_HOSTS ), ( "base/switch40.png", ["switch", ALL_HOSTS ), ( "base/hpux.png", ["ilo", ALL_HOSTS ), ( "base/hp-printer40.png", ["printer", ALL_HOSTS ), page 6 / 8
extra_host_conf["icon_image_alt" = [ ( "Windows", ["win", ALL_HOSTS ), ( "LCOS", ["lcos", ALL_HOSTS ), ( "Switch", ["switch", ALL_HOSTS ), ( "HP ILO", ["ilo", ALL_HOSTS ), ( "HP Drucker", ["printer", ALL_HOSTS ), extra_host_conf["vrml_image" = [ ( "base/win40.png", ["win", ALL_HOSTS ), ( "base/lancom-lcos.png", ["lcos", ALL_HOSTS ), ( "base/switch40.png", ["switch", ALL_HOSTS ), ( "base/hpux.png", ["ilo", ALL_HOSTS ), ( "base/hp-printer40.png", ["printer", ALL_HOSTS ), extra_host_conf["statusmap_image" = [ ( "base/win40.png", ["win", ALL_HOSTS ), ( "base/lancom-lcos.png", ["lcos", ALL_HOSTS ), ( "base/switch40.png", ["switch", ALL_HOSTS ), ( "base/hpux.png", ["ilo", ALL_HOSTS ), ( "base/hp-printer40.png", ["printer", ALL_HOSTS ), # Anpassungen an Checks check_parameters = [ # Dateisystem Fuellstand Warnung 95%, Fehler 98% beim Tag win ( (95, 98), [ "win", ALL_HOSTS, [ "fs_" ), # Alle anderen Warnung 95%, Fehler 97% ( (95, 97), ALL_HOSTS, [ "fs_" ), # Anpassungen am Log logwatch_patterns = { 'System': [ ( 'I', 'PlugPlayManager Beim Senden der Benachrichtigung der Zielger.*' ), ( 'I', 'TermServDevices.*' ), ( 'I', '.*Der Drucker.*' ), ( 'I', '.*schen des Druckers.*' ), ( 'I', 'Der Redirectordienst konnte den Verbindungstyp nicht erkennen.' ), ( 'I', 'W3SVC Bei einem Prozess.* Anwendungspool "DefaultAppPool" hat.* des Herunterfahrens ein Zeitlimit.*' ),, 'Application': [ ( 'I', 'Windows_Server_Update_Services Clientcomputer installieren Updates mit einer Fehlerrate von mehr als.*' ), page 7 / 8
Powered by TCPDF (www.tcpdf.org) check_mk - Nagios ganz einfach - 15.05.2011, 'Security': [ ( 'I', '.*nnimann OC Anmeldetyp: 3.*' ), ( 'I', '.*192.168.70.116.*' ), # Ignorieren von Diensten ignored_services = [ # Kein DHCP bei Tag nodhcp (["nodhcp", ALL_HOSTS, "DHCP Stats"), Nachtrag zu SSH: Eine gute Anleitung zur Verwendung von check_mk mit SSH: https://ostlogd.spenneberg.net/wordpress/?p=726 page 8 / 8