escribir plugins para nagios en perl
DESCRIPTION
Como escribir Plugins de Nagios en Perl gracias a Nagios::PluginTRANSCRIPT
![Page 1: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/1.jpg)
WRITE PLUGINS FOR NAGIOS
Using Nagios::Plugins
![Page 2: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/2.jpg)
Que es Nagios
Programa de montorización
Que no sabe monitorizar nada
Los plugins son los que saben monitorizar
Plugins Deciden el estado de un servicio (OK, CRITICAL…)
Interfaz simple
Exit code
1ª linea de salida
Performance data (perfdata)
![Page 3: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/3.jpg)
Que es Opsview
www.opsview.org
Herramienta de monitorización
Te ahorra el tener que configurar Nagios
Usa Nagios, RRDTool, Perl (Catalyst)
![Page 4: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/4.jpg)
PLUGINS…
![Page 5: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/5.jpg)
Ya está hecho?
www.nagiosplugins.org
Plugins oficiales
www.monitoringexchange.org
Plugins contribuidos
exchange.nagios.org
Plugins contribuidos
Google “xxx nagios”
![Page 6: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/6.jpg)
Primero de todo…
Que queremos monitorizar?
Numero de procesos de un servidor
Tiempo de respuesta de una web
Temperatura de una sala
Valor de unas acciones
![Page 7: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/7.jpg)
Plugins en 3 pasos
Setup
Recoger los datos
Calcula el estado
![Page 8: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/8.jpg)
Setup
#!/usr/bin/perl
use Nagios::Plugin;
my $np = Nagios::Plugin->new(
'usage' => 'Usage: %s'
);
$np->getopts;
• Nagios::Plugin nos da mucha funcionalidad “gratis”
• Parámetros estándar
• Range Checking
plugin –t (timeout)
plugin –V (version)
plugin --help
![Page 9: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/9.jpg)
Setup (II)
usage ("Usage: %s --foo --bar")
version <- Version number
url <- Help and Version
blurb <- Help description
license <- Help
extra <- Help
plugin <- overrides autodetected plugin name
![Page 10: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/10.jpg)
GetOpt magic
$np->add_arg(
spec => 'warning|w=s',
help => "-w, --warning=INTEGER",
required => 1
);
$np->add_arg(
spec => 'user|u=s',
help => "-u, --user=LOGINNAME|UID\n Login name or UID tofilter"
);
$np->add_arg(
spec => „password|l=p',
help => "-p, --password=...\n Password. Defaults to ****”,
default => “****"
);
$np->getopts;
if ($np->opts->user) { … }
![Page 11: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/11.jpg)
Outputting status
$np->nagios_exit(CRITICAL, “Too many connections”);
$np->nagios_exit(OK, “OK”);
$np->nagios_exit(WARNING, “Too few connections”);
$np->nagios_exit(UNKNOWN, “Bad options”);
![Page 12: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/12.jpg)
vanilla-sarge:~/opsview_plugs/check_connections# ./check_connections.pl -c 12 -w 10 -u www-data -C sshd
check_connections CRITICAL - Open Descriptors: 408
$np->nagios_exit(CRITICAL, ‘Open Descriptors $count');
![Page 13: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/13.jpg)
Range detection
$code = $np->check_threshold(
check => $value,
warning => $warning_threshold,
critical => $critical_threshold, );
$np->nagios_exit( $code, "Threshold check failed" ) if $code != OK;
http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT
![Page 14: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/14.jpg)
Performance Data
$np->add_perfdata(
label => "size",
value => $value,
uom => "kB",
warning => $warning,
critical => $critical
);
UOM (unit of measurement) is one of: no unit specified - assume a number (int or float) of things (eg, users, processes, load averages) s - seconds (also us, ms) % - percentage B - bytes (also KB, MB, TB) c - a continous counter (such as bytes transmitted on an interface)
http://search.cpan.org/~tonvoon/Nagios-Plugin-0.24/lib/Nagios/Plugin/Performance.pm
http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN203
![Page 15: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/15.jpg)
Resumen
Setup
Recoger los datos
Calcula el estado
Nagios::Plugin hace estos
Tu haces esto
![Page 16: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/16.jpg)
Resumen
Setup
Recoger los datos
Calcula el estado
Nagios::Plugin hace estos
Tu haces esto
![Page 17: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/17.jpg)
Más ayudas?
Nagios::Plugin::DieNicely
Nagios::Plugin::WWW::Mechanize
Nagios::Plugin::Differences: In the works
![Page 18: Escribir plugins para Nagios en Perl](https://reader033.vdocuments.us/reader033/viewer/2022042817/559ca62d1a28abb40d8b47cc/html5/thumbnails/18.jpg)
Jose Luis Martínez
CAPSiDE
http://www.pplusdomain.net/
Ahora os toca a vosotros