SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
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/

Contenu connexe

Similaire à Escribir plugins para Nagios en Perl

Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada bcoca
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del softwareLina Vega
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]RootedCON
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
 
Portafolio segundo parcial
Portafolio segundo parcialPortafolio segundo parcial
Portafolio segundo parcialHugo Arechiga
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Automatización GXtest - experiencias de uso
Automatización GXtest - experiencias de usoAutomatización GXtest - experiencias de uso
Automatización GXtest - experiencias de usoAbstracta
 
Introducción a prototype javascript
Introducción a prototype javascriptIntroducción a prototype javascript
Introducción a prototype javascriptaitorgr
 
Tdd y clean code SG campus
Tdd y clean code SG campusTdd y clean code SG campus
Tdd y clean code SG campusSoftware Guru
 
Instalación y configuración de ldap server en Debian 8.7.1
Instalación y configuración de ldap server en Debian 8.7.1Instalación y configuración de ldap server en Debian 8.7.1
Instalación y configuración de ldap server en Debian 8.7.1Diego Montiel
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elkJosé Ignacio Álvarez Ruiz
 
Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012Jorge Moratilla Porras
 

Similaire à Escribir plugins para Nagios en Perl (20)

Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Snortpracticas 2006
Snortpracticas 2006Snortpracticas 2006
Snortpracticas 2006
 
Big Data: análisis de weblogs
Big Data: análisis de weblogsBig Data: análisis de weblogs
Big Data: análisis de weblogs
 
Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del software
 
Nagios
NagiosNagios
Nagios
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Portafolio segundo parcial
Portafolio segundo parcialPortafolio segundo parcial
Portafolio segundo parcial
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Automatización GXtest - experiencias de uso
Automatización GXtest - experiencias de usoAutomatización GXtest - experiencias de uso
Automatización GXtest - experiencias de uso
 
Introducción a prototype javascript
Introducción a prototype javascriptIntroducción a prototype javascript
Introducción a prototype javascript
 
Tdd y clean code SG campus
Tdd y clean code SG campusTdd y clean code SG campus
Tdd y clean code SG campus
 
Instalación y configuración de ldap server en Debian 8.7.1
Instalación y configuración de ldap server en Debian 8.7.1Instalación y configuración de ldap server en Debian 8.7.1
Instalación y configuración de ldap server en Debian 8.7.1
 
Nagios
NagiosNagios
Nagios
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
 
Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012Presentación charla puppet madrid devops 2012
Presentación charla puppet madrid devops 2012
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 

Plus de Jose Luis Martínez

Plus de Jose Luis Martínez (17)

Being cloudy with perl
Being cloudy with perlBeing cloudy with perl
Being cloudy with perl
 
Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)
 
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
MooseX::Datamodel - Barcelona Perl Workshop Lightning talkMooseX::Datamodel - Barcelona Perl Workshop Lightning talk
MooseX::Datamodel - Barcelona Perl Workshop Lightning talk
 
Paws - Perl AWS SDK Update - November 2015
Paws - Perl AWS SDK Update - November 2015Paws - Perl AWS SDK Update - November 2015
Paws - Perl AWS SDK Update - November 2015
 
Paws - A Perl AWS SDK
Paws - A Perl AWS SDKPaws - A Perl AWS SDK
Paws - A Perl AWS SDK
 
Boosting MySQL (for starters)
Boosting MySQL (for starters)Boosting MySQL (for starters)
Boosting MySQL (for starters)
 
Plenv and carton
Plenv and cartonPlenv and carton
Plenv and carton
 
Building an aws sdk for Perl - Granada Perl Workshop 2014
Building an aws sdk for Perl - Granada Perl Workshop 2014Building an aws sdk for Perl - Granada Perl Workshop 2014
Building an aws sdk for Perl - Granada Perl Workshop 2014
 
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech TalksWriting plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
 
NRD: Nagios Result Distributor
NRD: Nagios Result DistributorNRD: Nagios Result Distributor
NRD: Nagios Result Distributor
 
Perl and AWS
Perl and AWSPerl and AWS
Perl and AWS
 
Writing nagios plugins in perl
Writing nagios plugins in perlWriting nagios plugins in perl
Writing nagios plugins in perl
 
Ficheros y directorios
Ficheros y directoriosFicheros y directorios
Ficheros y directorios
 
DBIx::Class
DBIx::ClassDBIx::Class
DBIx::Class
 
DBI
DBIDBI
DBI
 
The modern perl toolchain
The modern perl toolchainThe modern perl toolchain
The modern perl toolchain
 
Introducción a las Expresiones Regulares
Introducción a las Expresiones RegularesIntroducción a las Expresiones Regulares
Introducción a las Expresiones Regulares
 

Dernier

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 

Dernier (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 

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/