SlideShare una empresa de Scribd logo
Using Nagios::Plugins

WRITE PLUGINS FOR NAGIOS
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)
Que es Opsview
 www.opsview.org
 Herramienta de monitorización
 Te ahorra el tener que configurar Nagios
 Usa Nagios, RRDTool, Perl (Catalyst)
PLUGINS…
Ya está hecho?
 www.nagiosplugins.org
 Plugins oficiales

 www.monitoringexchange.org
 Plugins contribuidos

 exchange.nagios.org
 Plugins contribuidos

 Google “xxx nagios”
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
Plugins en 3 pasos
 Setup

 Recoger los datos
 Calcula el estado
Setup
• Nagios::Plugin nos da mucha funcionalidad “gratis”
• Parámetros estándar
• Range Checking
#!/usr/bin/perl
use Nagios::Plugin;
my $np = Nagios::Plugin->new(
'usage' => 'Usage: %s'
);
$np->getopts;

plugin –t (timeout)
plugin –V (version)
plugin --help
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
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|UIDn
filter"
);
$np->add_arg(
spec => „password|l=p',
help => "-p, --password=...n
default => “****"
);
$np->getopts;
if ($np->opts->user) { … }

Login name or UID to

Password. Defaults to ****”,
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”);
$np->nagios_exit(CRITICAL, ‘Open Descriptors $count');
vanilla-sarge:~/opsview_plugs/check_connections# ./check_connections.pl -c 12 -w 10 -u www-data -C sshd
check_connections CRITICAL - Open Descriptors: 408
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
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
Resumen
 Setup

 Recoger los datos
 Calcula el estado
 Nagios::Plugin hace estos
 Tu haces esto
Resumen
 Setup

 Recoger los datos
 Calcula el estado
 Nagios::Plugin hace estos
 Tu haces esto
Más ayudas?
 Nagios::Plugin::DieNicely

 Nagios::Plugin::WWW::Mechanize
 Nagios::Plugin::Differences: In the works
Ahora os toca a vosotros

Jose Luis Martínez
CAPSiDE
joseluis.martinez@capside.com

http://www.pplusdomain.net/

Más contenido relacionado

PPTX
Scott tucker cbs
PPTX
Facts about sea turtles
PDF
PostgreSQL: Un motor Impulsado por una comunidad
PDF
Web Mapping con Django
PDF
Documentación de pruebas del software
PDF
Integración LDAP - OTRS
PDF
PostgreSQL À la Debian
PDF
PostgreSQL À la Debian
Scott tucker cbs
Facts about sea turtles
PostgreSQL: Un motor Impulsado por una comunidad
Web Mapping con Django
Documentación de pruebas del software
Integración LDAP - OTRS
PostgreSQL À la Debian
PostgreSQL À la Debian

Similar a Escribir plugins para Nagios en Perl (20)

PPTX
Ansible administracion simplificada
PDF
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
KEY
Introducción a DJango
PDF
ODP
Big Data: análisis de weblogs
PDF
Documentación de pruebas del software
PPT
Nagios
PDF
Taller de introducción al desarrollo web con Django
PDF
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
ODP
Desarrollando aplicaciones web usando Catalyst y jQuery
PPTX
Portafolio segundo parcial
ODP
Desarrollo de aplicaciones web usando Catalyst y jQuery
PPTX
Automatización GXtest - experiencias de uso
PPTX
POO Y CONFIGURACION API REST FRAMEWORK DJANGO.pptx
PDF
Introducción a prototype javascript
PPTX
Tdd y clean code SG campus
PDF
Instalación y configuración de ldap server en Debian 8.7.1
PPTX
Nagios
PDF
Sysmana 2017 monitorización de logs con el stack elk
PDF
Presentación charla puppet madrid devops 2012
Ansible administracion simplificada
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
Introducción a DJango
Big Data: análisis de weblogs
Documentación de pruebas del software
Nagios
Taller de introducción al desarrollo web con Django
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Desarrollando aplicaciones web usando Catalyst y jQuery
Portafolio segundo parcial
Desarrollo de aplicaciones web usando Catalyst y jQuery
Automatización GXtest - experiencias de uso
POO Y CONFIGURACION API REST FRAMEWORK DJANGO.pptx
Introducción a prototype javascript
Tdd y clean code SG campus
Instalación y configuración de ldap server en Debian 8.7.1
Nagios
Sysmana 2017 monitorización de logs con el stack elk
Presentación charla puppet madrid devops 2012
Publicidad

Más de Jose Luis Martínez (17)

PDF
Being cloudy with perl
PPTX
Modern Perl toolchain (help building microservices)
PPTX
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
PPTX
Paws - Perl AWS SDK Update - November 2015
PPTX
Paws - A Perl AWS SDK
PPTX
Boosting MySQL (for starters)
PPTX
Plenv and carton
PPTX
Building an aws sdk for Perl - Granada Perl Workshop 2014
PPTX
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
PPTX
NRD: Nagios Result Distributor
PPTX
Perl and AWS
PDF
Writing nagios plugins in perl
PPTX
Ficheros y directorios
PPTX
DBIx::Class
PPTX
The modern perl toolchain
PPTX
Introducción a las Expresiones Regulares
Being cloudy with perl
Modern Perl toolchain (help building microservices)
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
Paws - Perl AWS SDK Update - November 2015
Paws - A Perl AWS SDK
Boosting MySQL (for starters)
Plenv and carton
Building an aws sdk for Perl - Granada Perl Workshop 2014
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
NRD: Nagios Result Distributor
Perl and AWS
Writing nagios plugins in perl
Ficheros y directorios
DBIx::Class
The modern perl toolchain
Introducción a las Expresiones Regulares
Publicidad

Último (20)

PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Presentación de Redes de Datos modelo osi
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PDF
Maste clas de estructura metálica y arquitectura
PDF
taller de informática - LEY DE OHM
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
PDF
Estrategia de apoyo tecnología grado 9-3
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
PDF
ACTIVIDAD 2.pdf j
PPTX
Administración se srevidores de apliaciones
PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
Conceptos básicos de programación tecnología.pdf
PDF
SAP Transportation Management para LSP, TM140 Col18
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Presentación de Redes de Datos modelo osi
Las nuevas tecnologías en la salud - enfermería técnica.
Maste clas de estructura metálica y arquitectura
taller de informática - LEY DE OHM
Trabajo colaborativo Grupo #2.docxmmuhhlk
Estrategia de apoyo tecnología grado 9-3
Trabajo colaborativo Grupo #2.docxmkkkkkkl
REDES INFORMATICAS REDES INFORMATICAS.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
ACTIVIDAD 2.pdf j
Administración se srevidores de apliaciones
diagrama de pareto.pdf valerie giraldo diaz
Conceptos básicos de programación tecnología.pdf
SAP Transportation Management para LSP, TM140 Col18

Escribir plugins para Nagios en Perl

  • 2. 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)
  • 3. Que es Opsview  www.opsview.org  Herramienta de monitorización  Te ahorra el tener que configurar Nagios  Usa Nagios, RRDTool, Perl (Catalyst)
  • 5. Ya está hecho?  www.nagiosplugins.org  Plugins oficiales  www.monitoringexchange.org  Plugins contribuidos  exchange.nagios.org  Plugins contribuidos  Google “xxx nagios”
  • 6. 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
  • 7. Plugins en 3 pasos  Setup  Recoger los datos  Calcula el estado
  • 8. Setup • Nagios::Plugin nos da mucha funcionalidad “gratis” • Parámetros estándar • Range Checking #!/usr/bin/perl use Nagios::Plugin; my $np = Nagios::Plugin->new( 'usage' => 'Usage: %s' ); $np->getopts; plugin –t (timeout) plugin –V (version) plugin --help
  • 9. 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
  • 10. 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|UIDn filter" ); $np->add_arg( spec => „password|l=p', help => "-p, --password=...n default => “****" ); $np->getopts; if ($np->opts->user) { … } Login name or UID to Password. Defaults to ****”,
  • 11. 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”);
  • 12. $np->nagios_exit(CRITICAL, ‘Open Descriptors $count'); vanilla-sarge:~/opsview_plugs/check_connections# ./check_connections.pl -c 12 -w 10 -u www-data -C sshd check_connections CRITICAL - Open Descriptors: 408
  • 13. 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
  • 14. 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
  • 15. Resumen  Setup  Recoger los datos  Calcula el estado  Nagios::Plugin hace estos  Tu haces esto
  • 16. Resumen  Setup  Recoger los datos  Calcula el estado  Nagios::Plugin hace estos  Tu haces esto
  • 17. Más ayudas?  Nagios::Plugin::DieNicely  Nagios::Plugin::WWW::Mechanize  Nagios::Plugin::Differences: In the works
  • 18. Ahora os toca a vosotros Jose Luis Martínez CAPSiDE joseluis.martinez@capside.com http://www.pplusdomain.net/