Seite wählen

NETWAYS Blog

Blacklists prüfen mit check_rbl

The_Blacklist_logo.svgBlacklists sind prinzipiell nichts schlechtes. Sie helfen zu verhindern, dass ein Unternehmen oder eine Privatperson mit Spam oder ähnlichem Übel gestört werden oder vielleicht sogar Schaden davon tragen.
Gelegentlich kommt es jedoch vor, dass ein Unternehmen oder eine Privatperson auf einer Blacklist landen, obwohl sie keine negativen Absichten verfolgen. Ein Grund hierfür kann zum Beispiel das Versenden von Newslettern sein, wodurch ein erhöhtes Mailaufkommen von bestimmten Systemen verzeichnet wird und Mails als „Spam“ markiert werde. Als Folge dessen wird für die versendenden Server ein Eintrag auf einer Blacklist angelegt. Der Nachteil für den Betroffenen ist, dass er keine Benachrichtigung bekommt, mit dem Hinweis, auf einer Blacklist markiert worden zu sein.
Wir bei NETWAYS wollen aber kontrollieren, ob unsere Server oder die von unseren Kunden bei gewissen Systemen einen Eintrag besitzen und können dies auch überprüfen. Eine sehr elegante Möglichkeit wird hierfür mit dem check_rbl gegeben. Dieser Check durchforstet gegebene Blacklists von Servern nach einem gefragten Server.
Ein kleines Beispiel wird die Funktionsweise aufzeigen:
check_rbl -t 60 -H netways.de \
-s cbl.abuseat.org \
-s dnsbl.cyberlogic.net \
-s bl.deadbeef.com \

So würde der Check überprüfen, ob Einträge für den Host „netways.de“ auf den Servern, die mit dem „-s“ Parametern übergeben wurden, vohanden sind und ein „warning“ beziehungsweise „critical“ auslösen. Eine weitere gute Erläuterung der Funktionsweise dieses Checks findet man auf GitHub oder auf dem Icinga-exchange.

Perl-Plugins standardisieren

Im Icinga- bzw. Nagios-Umfeld wird für Plugins gerne Perl eingesetzt. Das Monitoring Plugins Projekt stellt mit dem Monitoring Perl-Modul eine standardisierte Schnittstelle zur Verfügung mit der sich schnell und einfach eigene Plugins programmieren lassen, die den Richtlinien für Plugins entsprechen.
Auszüge aus einem Plugin zum Abfragen des Status eines Apache-Webservers soll den generellen Aufbau verdeutlichen. Das komplette Skript ist auf Github veröffentlicht.

$plugin = Monitoring::Plugin->new;

Zuerst instantiert man neues Objekt und bereitet mit der Methode Getopt->new die Verarbeitung von Optionen vor.

$options = Monitoring::Plugin::Getopt->new(
  usage   => 'Usage: %s [OPTIONS]',
  version => $VERSION,
  url     => 'https://github.com/lbetz/nagios-plugins',
  blurb   => 'Check apache server status',
);

Optionen mit beschreibenden Text für den Aufruf des Plugins werden dem Objekt mit der Methode arg hinzugefügt. Mit spec wird die Variable festgelegt in der, der Wert der Option abgelegt wird. Die Variable lautet hier hostname. Nach der Pipe folgt die Option für das Plugin, hier ein H. Die Zuweisung des Buchstabens s bedeutet, dass hier ein String übergeben wird.

$options->arg(
  spec     => 'hostname|H=s',
  help     => 'hostname or ip address to check',
  required => 1,
);

Weitere Typen sind i für einen Integer oder das als Suffix angehängte + für einen Schalter. Mit -s wird also gesteuert, dass die Anfrage via HTTPS zu erfolgen hat. getopts erledigt dann die Übernahme der Optionen in Variablen.

$options->arg(
  spec     => 'port|p=i',
  help     => 'port, default 80 (http) or 443 (https)',
  required => 0,
);
$options->arg(
  spec     => 'ssl|s+',
  help     => 'use https instead of http',
  required => 0,
);
$options->getopts();

Ausgehend davon, dass auch die üblichen Optionen für Schwellwerte implementiert sind, kann ein Threshold-Objekt erzeugt werden. Dieses wird später für die Status-Ermittlung herangezogen.

$threshold = Monitoring::Plugin::Threshold->set_thresholds(
  warning  => $warning,
  critical => $critical,
);

Die aus den Optionen ermittelten Variablen lassen sich nun für den HTTP-Request benutzen.

$request = HTTP::Request->new(GET => 'http://'.$options->hostname.'/server-status/?auto');

Nachfolgend ist der HTTP-Response auszuwerten. Hier ist in $OpenSlots die Anzahl der noch zur freien Verfügung stehen Slots abgelegt.

$plugin->add_perfdata(
  label => 'OpenSlots',
  value => $OpenSlots,
  uom   => q{},
  threshold => $threshold,
);

Performance-Daten lassen sich mit der Methode add_perfdata dem Pluginoutput hinzufügen, hier OpenSlots=n. Abschließend wird in Abhängigkeit der Schwellwerte der Return Code berechnet und das Plugin mittels exit beendet.

$plugin->nagios_exit($threshold->get_status($OpenSlots), 'some plugin output');
Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

Jobs Jobs Jobs…

Team
…und damit meine ich nicht Steve! Wer diesen schlechten Spruch kapiert hat, sollte sich direkt mit einer E-Mail an jobs@netways.de bewerben 😉
Aber mal zum ernst der Sache: In diesem Blog wird viel zu selten drauf aufmerksam gemacht, das wir quasi durchgehend neue Kollegen suchen. Egal ob San Francisco, Zürich, Brüssel oder einfach Deutschlands Großstädte, als reisebegeisterter Consultant kommt man hier ganz schön rum. Solltet ihr Lust aufs Reisen und ein wenig Icinga, Puppet oder Logstash haben könnt ihr euch sehr gerne als Linux Consultant (m/w) oder Puppet Consultant (m/w) bewerben. Sollte euch die Wahl schwer fallen, könnt ihr unsere Kunden selbstverständlich auch mit allen Themen beglücken.
 
Als kleiner Anreiz: Aktuell haben wir für 2016 noch Consulting-Termine in Atlanta und Peking zu vergeben. Wenn euer Knowledge passt und ihr schnell genug eure Bewerbung schreibt, könnt ihr gerne dort hin fliegen 🙂
In diesem Sinne: Bewerben! Bewerben! Bewerben!

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker und renoviert, baut und bastelt als Heimwerker an allem was er finden kann.

OSMC 2015: Der Countdown läuft – nur noch 84 Tage

Oliver Jan mit seinem Vortrag „Time to say goodbye to your Nagios based setup“.

OSMC? Was soll das denn sein und wer sind die netten Menschen in diesen Videos? Die Open Source Monitoring Conference (kurz: OSMC) ist die internationale Plattform für alle an Open Source Monitoring Lösungen Interessierten, speziell Nagios und Icinga. Jedes Jahr gibt es hier die Möglichkeit sein Wissen über freie Monitoringsysteme zu erweitern und sich mit anderen Anwendern auszutauschen. Die Konferenz richtet sich besonders an IT-Verantwortliche aus den Bereichen System- und Netzwerkadministration, Entwicklung und IT-Management. Und die netten Menschen, die Ihr in unseren Videos zur OSMC seht, gehören dazu. 2015 wird die OSMC zum 10. Mal in Nürnberg stattfinden.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

check_smartvalues Release … YEAH!!!

Endlich bin ich dazu gekommen, den schon im Post vom letzten Sommer angekündigten Check für S.M.A.R.T. -Werte zu veröffentlichen.
Ich hatte es ja schon angedroht, nun mache ich es wahr. 😉
Wir haben diesen Check nun schon ein gutes Jahr im Betrieb und er liefert seine Daten von daher kann ich ihn nur wärmstens empfehlen.
Bilder gibt es dieses Mal auch zu sehen, lasst sie am besten einfach mal auf euch wirken.
Wenn der Eine oder Andere von euch noch weitere tolle Ideen/Vorschläge hat, dann lasst es uns wissen. Wir lieben Monitoring, von daher stehen die Chancen recht gut, dass wir noch mehr umsetzen wollen.
Ich schrieb ja auch schon, dass die freundlichen Kollegen der Thomas Krenn AG auch ein Plugin für das Ermitteln der S.M.A.R.T. -Werte gebaut haben, dieses erfüllt im Wesentlichen auch die gleichen Aufgaben. Ich wollte das Ganze aber doch noch ein wenig toppen.
Hier ein paar Beispiele wie es aufzurufen ist:

# cd /path/to/check/smartvalues
# ./check_smartvalues -db check_smartvalues.db.json -c check_smartvalues.db.json -s -d 'megaraid,22 /dev/sda'
OK: [ 22 OK ] - [ 0 WARNING ] - [ 0 CRITICAL ] - [ 0 UNKNOWN ] in 0.163578987121582ms ( for details pls take a look in longoutput )
OK: on LSI MegaRAID - [ DeviceID 22 ] - #5 - Reallocated_Sector_Ct is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #9 - Power_On_Hours is [ 100 ] - [ w: 200, c: 300 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #12 - Power_Cycle_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #170 - Available_Reserved_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #171 - Program_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #172 - Erase_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #174 - Unexpected_Power_Loss is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #183 - Runtime_Bad_Block is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #184 - End-to-End_Error is [ 100 / 090 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #187 - Reported_Uncorrect is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #190 - Airflow_Temperature_Cel is [ 31 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #192 - Power-Off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #199 - UDMA_CRC_Error_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #225 - Host_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #226 - Timed_Workload_Media_Wear is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #227 - Timed_Workload_Host_Read/Write _Ratio is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #228 - Power-off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #232 - Available_Reservd_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #233 - Media_Wearout_Indicator is [ 043 ] - [ w: 35, c: 25 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #241 - Total_LBAs_Written is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #242 - Total_LBAs_Read is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #249 - Total_NAND_Writes is [ 100 ]

oder mit mehr als nur einer Platte …

# ./check_smartvalues -db check_smartvalues.db.json -c check_smartvalues.db.json -s -d 'megaraid,22 /dev/sda' -d 'megaraid,21 /dev/sda'
OK: [ 44 OK ] - [ 0 WARNING ] - [ 0 CRITICAL ] - [ 0 UNKNOWN ] in 0.18438987121582ms ( for details pls take a look in longoutput )
OK: on LSI MegaRAID - [ DeviceID 22 ] - #5 - Reallocated_Sector_Ct is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #9 - Power_On_Hours is [ 100 ] - [ w: 200, c: 300 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #12 - Power_Cycle_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #170 - Available_Reserved_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #171 - Program_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #172 - Erase_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #174 - Unexpected_Power_Loss is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #183 - Runtime_Bad_Block is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #184 - End-to-End_Error is [ 100 / 090 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #187 - Reported_Uncorrect is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #190 - Airflow_Temperature_Cel is [ 31 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #192 - Power-Off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #199 - UDMA_CRC_Error_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #225 - Host_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #226 - Timed_Workload_Media_Wear is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #227 - Timed_Workload_Host_Read/Write _Ratio is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #228 - Power-off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #232 - Available_Reservd_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #233 - Media_Wearout_Indicator is [ 043 ] - [ w: 35, c: 25 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #241 - Total_LBAs_Written is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #242 - Total_LBAs_Read is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #249 - Total_NAND_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #5 - Reallocated_Sector_Ct is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #9 - Power_On_Hours is [ 100 ] - [ w: 200, c: 300 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #12 - Power_Cycle_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #170 - Available_Reserved_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #171 - Program_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #172 - Erase_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #174 - Unexpected_Power_Loss is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #183 - Runtime_Bad_Block is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #184 - End-to-End_Error is [ 100 / 090 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #187 - Reported_Uncorrect is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #190 - Airflow_Temperature_Cel is [ 32 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #192 - Power-Off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #199 - UDMA_CRC_Error_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #225 - Host_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #226 - Timed_Workload_Media_Wear is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #227 - Timed_Workload_Host_Read/Write _Ratio is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #228 - Power-off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #232 - Available_Reservd_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #233 - Media_Wearout_Indicator is [ 041 ] - [ w: 35, c: 25 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #241 - Total_LBAs_Written is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #242 - Total_LBAs_Read is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #249 - Total_NAND_Writes is [ 100 ]

und hier das Ergebnis im neuen Icinga Web 2 …
sdd22-smart-values
 
Nützliche Links: