Archives For Icinga

ingraph logo inGraph 1.0.2 releasedDie neue stabile Version 1.0.2 unseres Graphing-Tools kann ab sofort unter www.netways.org heruntergeladen werden.

Folgende wichtige Fehlerbehungen sind im Release enthalten:

  • Stark verbesserte Performance mit PostgreSQL.
  • Behebt Kompatibilitätsprobleme mit SQLAlchemy Versionen größer 0.8.
  • Behebt Probleme mit fehlerhaften Performancedaten.
  • Aktiviert logging nach /var/log/ingraph, konfigurierbar mit –with-log-dir-Switch.

Ausführlichere Informationen zu den behobenen Problemen sind unter www.netways.org zu finden. Dokumentation zum Projekt befindet sich im Wiki.

27.thumbnail inGraph 1.0.2 released

Autor: Eric Lippmann

Eric kam während seines ersten Lehrjahres zu NETWAYS und hat seine Ausbildung bereits 2011 sehr erfolgreich abgeschlossen. Seit Beginn arbeitet er in der Softwareentwicklung und dort an den unterschiedlichen NETWAYS Open Source Lösungen, insbesondere inGraph und im Icinga Team an Icinga Web. Darüber hinaus zeichnet er sich für viele Kundenentwicklungen in der Finanz- und Automobilbranche verantwortlich.

LConf Logo 300x109 Besser spät als nie ...Ja, es ist schon fast zu spät für einen Blogpost vor dem wohlverdienten Wochenende, aber Icinga 1.9 als Core Release Manager steht an, sowie auch Icinga2 vorankommen muss. Aber es gibt da noch ein Tool, was sich aktiv in der Entwicklung befindet – LConf.

Nicht zu verwechseln mit LConf für Icinga Web, dem schönen Web Interface mit komfortablen Features wie Drag&Drop. LConf ist ja eigentlich für einen grossen Kunden entwickelt worden, und erfreut sich seither wachsender Beliebtheit (was wohl auch daran liegt, dass man damit schöne Icinga Distributed Setups bauen kann, aber dazu später mehr).

Es gibt nun schon eine Weile das Release 1.3.0rc und neben den schon angesprochenen Performance Verbesserungen (und Templates in die Vererbung miteinbeziehen zu können) gibts noch einige Veränderungen, Fixes und Features die seither eingeflossen sind:

  • der Export der Konfiguration aus dem LDAP Baum kann nun (optional) durch Child Prozesse parallelisiert und damit beschleunigt werden. Der Defaultwert sind 2 Prozesse um den Monitoringserver nicht allzusehr zu stressen. Soll heissen, wenn man 24 Cores zur Verfügung hat, und LConf Export 12 Childs erlaubt, lässt sich ein 13000 Service Export auch mal ums 2,5fache verringern. Das ist also insbesondere in grossen Umgebungen interessant, und bringt neben der verminderten Anzahl an LDAP Abfragen im Vergleich zu 1.2 einen erheblichen Geschwindigkeitsvorteil.
  • beim Export lassen sich benutzerdefinierte Scripts ausführen. Dies wird zB dazu verwendet, um für jeden Host/Service eine Custom Variable mit der LDAP DN zu setzen, um dann später vom Service im Icinga Monitoring direkt in die LConf Baum Konfiguration zu springen. Diese Idee kann man aber noch weiterspinnen und eigene Custom Variablen und andere Attribute exportieren. Sinn macht das insbesondere für verteilte Umgebungen, wo man beispielsweise anhand von Servicenamensmustern dann Standortmuster erkennt und diese als Customvariable abspeichert. Neben der Scripts die die Slave Konfiguration beinflussen, gibt es jetzt auch eine mid-master.pl die lediglich die Master Konfiguration manipuliert (zB dort alle Checks als passiv setzt, o.ä.)
  • LConfSlaveSync als Checkresultsammler kann nun übrigens auch direkt das Icinga Checkresult Spooldir schreiben, um blockiert somit nicht die External Command Pipe. Die Option directIO ist auch in Zukunft so gesetzt.
  • Custom Variablen können nun verwendet werden, um dynamische Objektnamen zu generieren. Also beispielsweise wird die Service Custom Variable “_PORT 1337″ aus “http_$_SERVICEPORT$” den sprechenden Namen “http_1337″ erzeugen. Was man da dank Vererbung im LDAP Baum dann alles anstellen kann….
  • der gewisse Mehrwert, den Software haben muss – Pakete die einfaches Installieren/Upgraden erlauben. Dementsprechend haben wir in schon in Kundenprojekten Pakete für LConf gebaut (und tun das auch (auf Anfrage) für all unsere Addons), und gleichzeitig auch notwendige Änderungen an der LConf Struktur vorgenommen. So sind etwa alle Scripts in bin/ installiert, während die Perl Module in lib/ ihren Platz finden, var/ und tmp/ dienen dem Export als Ablage und in etc/ findet sich die Konfiguration wieder. Die meisten Optionen sind nun via configure Parameter einstellbar – ich halte das ähnlich wie bei meinen Icinga RPMs – wenns mich nervt, bau ichs passend Upstream richtig. Das heisst also nun folgerichtig – auch LConf Pakete sind in Vorbereitung (auch LConf für Icinga Web ist entsprechend angepasst worden). 
  • Alle bisherigen Änderungen sind in doc/UPGRADING dokumentiert. Das betrifft auch Änderungen im Vergleich zur 1.3.0 RC.  alle Tester bitte vor der Installation konsultieren. Achja, wir unterwerfen uns gitflow, weswegen der brandaktuelle Entwicklungszweig auch immer im GIT Branch next (als Snapshot) zu finden ist icon smile Besser spät als nie ...

Die alles umfassende Frage – wann kommts denn nun? Nun, bald. Ob Juni realistisch ist, wage ich mal zu bezweifeln, aber die Hoffnung stirbt ja bekanntlich zuletzt. Feedback und Tester sind natürtlich jederzeit willkommen, um den Entwicklungsprozess zu beschleunigen! icon wink Besser spät als nie ...

Für all jene die bis jetzt durchgehalten haben, noch ein kleines Anschauungsbeispiel wie man LConf in verteilten Umgebungen ebenso implementieren kann.

Folgendes Beispiel erkennt anhand des Musters “denu” dass die deutsche Location “Nuernberg” als Customvariable zu setzen ist, sofern der Hostname darauf passt. Um später auch die Services danach zu filtern, wird diese Customvariable direkt im Anschluss auch an diese vererbt. Das Script wird als mid.pl im Order custom/ abgelegt (kann via configure –with-export-script-dir angepasst werden).

sub CustomMid {
    my $changes = {
        'denu' => {
            '_LOCATION' => 'Nuernberg'
        }
    };
    my $CLIENTS = shift;
    foreach my $client (keys %{$CLIENTS}) {
        foreach my $hostChange (keys %{$changes}) {
            if ($CLIENTS->{$client}->{cn} =~ /$hostChange/) {
                foreach my $cv (keys %{$changes->{$hostChange}}) {
                    $CLIENTS->{$client}->{lconfhostcustomvar}->{$cv} = $changes->{$hostChange}->{$cv};
                }
            }
        }
        foreach my $cv (keys %{$CLIENTS->{$client}->{lconfhostcustomvar}}) {
            foreach my $service (keys %{$CLIENTS->{$client}->{SERVICES}}) {
                $CLIENTS->{$client}->{SERVICES}->{$service}->{lconfservicecustomvar}->{$cv} = $CLIENTS->{$client}->{lconfhostcustomvar}->{$cv};
            }
        }
    }
}

Diese Custom Variable könnte man nun als Auswahlkriterium sehen, dass auf dem Icinga Slave in Nürnberg all diese Host und Service Checks durchgeführt werden sollen (natürlich könnte man das auch via LCONF->EXPORT->MODIFY lösen, aber dieser Ansatz hier erlaubt freiere Baumstrukturen, die ich lieber mag icon wink Besser spät als nie ... ). Hier gibts lediglich ein Problem – LConfSlaveExport kann die Konfiguration nicht anhand von Attributsmustern für die Slaves aufsplitten. Also haben wir uns etwas neues überlegt – LConfSlaveExportRules übernimmt an dieser Stelle.

Folgende Konfiguration in etc/config.pm stellt sicher, dass alle Services mit dem Muster Nürnberg nur an den Slave Satelliten “satelite1.icinga” exportiert werden. Neben den obligatorischen Einstellungen ‘rules’ und ‘targets’ kann man mittels ‘settings’ auch beinflussen, ob Parents und/oder Dependencies auf diesem Slave zum Tragen kommen sollen. Die Erfahrung hat gezeigt, dass zerschnittene Slavekonfiguration nicht für derartige Dinge taugt, und die Logik nur am Monitoring Master sinnvoll einzusetzen ist.

$cfg->{slaveexportrules} = {
   'rules' => {
       'service-rule1' => {
           'object' => 'lconfservice',
           'attribute' => 'lconfservicecustomvar',
           'pattern' => 'Nuernberg'
       },
},
   'targets' => {
       'satelite1.icinga' => {
           'targetDir' => '/etc/icinga/lconf',
           'rulemap' => 'service-rule1'
       },
   },
   'settings' => {
       'slaveexportparents' => 0,
       'slaveexportdependencies' => 0,
   },
};

Der Aufruf in LConfDeploy.sh könnte dann etwa so aussehen (anstatt der Verteilung durch LConfSlaveExport)

(cd $LCONFBINPATH ; $SUDOCOMMAND /usr/bin/LConfSlaveExportRules.pl -v )

Achja, die Custom Variablen kann man in Icinga Web übrigens auch für erweiterte Filter und ebenso Berechtigungen verwenden. Aber dazu ein andermal mehr.

Wie man LConf insbesondere in komplexen verteilten Umgebungen sinnvoll einsetzt, darüber wissen unsere Spezialisten im Consulting bestens Bescheid. Aber auch Schulungen mit dem optimalen Wissenstransfer sind hier nicht zu verachten, denn viele Dinge die LConf kann, zeigt und lernt man am besten persönlich icon smile Besser spät als nie ...

69.thumbnail Besser spät als nie ...

Autor: Michael Friedrich

Michael ist Icinga-Core-Developer und im Rahmen des Icinga-Projekts schon viele Jahre mit NETWAYS in Kontakt. Im Dezember 2012 hat er das schöne Wien verlassen und ist nun bei uns in den Bereichen Development und Consulting im Einsatz. Durch seine unglaubliche Aktivität im Monitoring-Portal und auf diversen Mailinglisten ist Michael in den vergangenen Jahren für ca. 20% des österreichischen Webtraffics verantwortlich.

This entry is part 10 of 10 in the series NSClient++

Da der letzte Teil der Serie NSClient++ schon etwas länger her ist und ich diese Woche größtenteils mit diesem kleinen Stück Software verbracht habe, möchte ich heute mal aktuelle Erfahrungen und Verbesserungen kund tun.

magical WMI module

Bei der Überwachung von Windows Maschinen hat man, wie schon mal hier im Blog geschrieben, die Auswahl zwischen dem sogenannten “agentenlosen Monitoring”, wie WMI oder SNMP oder man benutzt einen Tool wie den NSClient++. Oft liegt die Sache aber nicht so klar auf der Hand und man entscheidet sich im Nachhinein, dass man, obwohl man im Prinzip auf den Agenten setzt, doch noch WMI Abfragen machen möchte. – Und da der Agent ja schon mal drauf ist möchte man diesen auch benutzen.
NSClient++ bietet hierfür das CheckWMI Modul und hat seit Version 0.4 mächtig dazugelernt.
Mit dem folgenden Command kann man auf der CLI z.B. die vorhandenen WMI namespaces abfragen.

C:\Program Files\NSClient++> nscp.exe WMI --list-all-ns -n root
 
# Hilfe: 
C:\Program Files\NSClient++> nscp.exe WMI -- --help

Was vorher im Prinzip auch schon funktionieren sollte, es jedoch leider nicht tat, ist diese nicht Standard-Namespaces über check_nrpe abzufragen. Als Beispiel eine Abfrage auf ClusterRessourcen in einem Windows Failover-Cluster.

# check_nrpe -H <RemoteHost> -c checkwmi -a namespace=root/MSCluster "Query=Select * from MSCluster_NodeToActiveResource"

Real-Time Eventlog-/Logfilemonitoring

Eine weitere Neuerung seit 0.4 ist das Realtime Monitoring. Man kann logfiles und eventlog aktiv auf Änderungen Überwachen. NSClient++ nutzt hierfür den notify-Mechanismus des Kernels und bekommt einen Write so innerhalb von Null,Nix mit.

Als Targets können ein NSCA oder ein File sowie der neue NSClient-SimpleCache dienen.

Michael Medin hat die Einrichtung in seinem Blog gut beschrieben daher verzichte ich hier mal auf eine genaue Beschreibung.

Security Security

NSClient kann jetzt auch SSL mit CA und allem drum und dran. Allerdings hat Michael auch hierzu schon was viel besseres geschrieben, so dass es nicht nötig ist das hier nochmal abzuschreiben.

38.thumbnail Serie NSClient++ – Teil 10: Neues vom NSClient++

Autor: Christoph Niemann

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinander gesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Unsere EventDB gehört ja mittlerweile bei vielen Monitoringsystemen zur Grundausstattung sobald Syslog oder SNMP Traps ins Spiel kommen. Oft kam hier die Frage: “Kann ich damit auch gleiche Events zusammenfassen und automatisch Acknowledgen sobald ein passendes Clear Event kommt?”. Bisher musste ich immer beschämt sagen, dass wir so etwas geplant, aber noch nicht umgesetzt haben.

Ab heute ändert sich das – der EDBC ist in der ersten Beta da. Und mit ihm wird nicht ‘nur’ oben genanntes Szenario abgedeckt, sondern ein sehr mächtiges Werkzeug bereitgestellt um Nachrichten und Traps in ein Monitoringsystem einzubinden.

Die Hauptfeatures, die der EDBC derzeit bietet:

  • Empfangen von Ereignissen via Pipe, SNMP Handler und/oder Mail
  • Persistieren von Ereignissen in die EventDB, ggf. Vorfiltern der Ereignisse nach beliebigen Merkmalen (u.a. Netzwersegmente, OIDs, Teilstrings)
  • Erkennen logisch gleichartiger Events anhand von Feldwerten, Netzwerksegmenten, Teilstrings (via Regexp Gruppen), etc.
  • Zusammenfassen logisch gleichartiger Events
  • Erkennen von Clear Events und ggf. Acknowledgen aller zugehörigen Problemevents in der EventDB
  • Senden von Icinga/Nagios Kommandos bei bestimmten Events (…auch abhängig davon ob es ein neues Problem, ein bereits bekanntes Problem oder ein Clear event ist)
  • Einfache Erweiterbarkeit mit rudimentären Python Kenntnissen

Continue Reading…

31.thumbnail Release: EDBC 0.1.0beta & EventDB 2.0.5beta

Autor: Jannis Mosshammer

Nachdem Jannis als Softwareentwickler in Vollzeit bei NETWAYS angefangen hat, studiert er aktuell Informatik und arbeitet weiter als Werkstudent bei uns. Er ist erstklassiger Gitarrist und vermutlich mit Santana in 23 Generation verwandt. Hauptsächlich arbeitet er bei uns an Icinga Web, LConf oder der EventDB.

Seit nun mehr als drei Wochen bin ich Mitarbeiter bei NETWAYS. Ich will mich auf diesem Wege offiziell bei all denen vorstellen, denen ich nicht jeden Tag im Büro begegne. Mein Name ist Blerim Sheqa und wie der ein oder andere hier schon bemerkt, bin ich nicht gebürtiger Franke.

Bevor ich zu NETWAYS kam, war ich in einem kleinen Softwareunternehmen hier in der Region tätig und habe mich dort um alle anfallenden systemadministratorischen Aufgaben gekümmert, vor allem aber war Nagios ein großes Thema für mich. Meine Hauptaufgabe hier wird darin bestehen, das “Managed Services“-Team besonders im Bereich Icinga zu unterstützen. In den ersten Wochen konnte ich bereits viel über die Unterschiede zu Nagios und die Erweiterungsmöglichkeiten erfahren.

Wie viele andere vor mir, habe auch ich die Erfahrung machen dürfen, wie gerne bei NETWAYS gegessen und genascht wird icon smile Hallo, ich bin der Neue Das Highlight bisher bot allerdings die OSDC mit anschließendem Puppetcamp. Zum ersten Mal konnte ich diesen Events beiwohnen und alles sogar aus Sicht des Veranstalters erleben. Die vielen interessanten Vorträge haben mich gleichermaßen überwältigt und auch motiviert. Ich freue mich nun auf interessante Projekte bei denen ich mitwirken darf.

74.thumbnail Hallo, ich bin der Neue

Autor: Blerim Sheqa

Blerim ist seit 2013 bei NETWAYS. Nachdem er seine Ausbildung zum Fachinformatiker abgeschlossen hat, hat er in einem kleinen Softwareunternehmen gearbeitet. Jetzt ist er als Systems Engineer bei uns und kümmert sich vor allem um alles was mit Icinga zu tun hat.

Page 1 of 281234...10...>>