Herramientas de usuario

Herramientas del sitio


manuales:nagios:capacitacion:implementacion_tecnica

¡Esta es una revisión vieja del documento!


Implementación Técnica de Nagios

Instalación de Nagios

Dependencias para compilación y puesta en marcha

Sistema OperativoDebian GNU/Linux
CompiladorGNU GCC
Utilidades de comunicación
Notificaciones
MTA
SMS
Interfaz de usuario
(Opcional)
Servidor Web

Dependencias de Software

Para una correcta instalación de Nagios, con todas sus características es necesario tener instalados ciertos paquetes de software en el sistema, la instalación puede variar según la distribución de Linux que elijamos, si los tenemos empaquetados, o si los tenemos que compilar en instalar manualmente.

PaqueteDescripciónSitio web
PerlInterprete para el lenguaje de script Perlhttp://www.perl.org
Net::SNMPModulo de Perl para consultas SNMPhttp://search.cpan.org/dist/Net-SNMP
Crypt::DESModulo de Perl para encripción DES, necesario para consultas SNMPv3http://search.cpan.org/~dparis/Crypt-DES/
Digest::HMACKeyed-Hashing for Message Authenticationhttp://search.cpan.org/dist/Digest-HMAC/
Digest::SHA1Perl interface to the SHA-1 algorithmhttp://search.cpan.org/dist/Digest-SHA1/
RRDToolUtilitario para generación de gráficas de red y además
su módulo de integración con el lenguaje Perl
http://oss.oetiker.ch/rrdtool
ZlibLibrería de compresión utilizada por las utilidades graficashttp://www.gzip.org/zlib/
LibJPEGLibrería para exportación jpghttp://www.ijg.org/
LibPNGLibrería para exportación pnghttp://www.libpng.org/pub/png/
Freetype2Librería para procesamiento de fuenteshttp://www.freetype.org/
GraphvizUtilitario para generación de graficashttp://www.graphviz.org/
XFree86-libsLibrerías gráficas generaleshttp://koala.ilog.fr/lehors/xpm.html
Apache 2Servidor Webhttp://httpd.apache.org/
PHPInterprete de lenguaje de scripthttp://www.php.net
MySQLSistema de base de datoshttp://www.mysql.com
PostfixSMTP para enviar mailhttp://www.postfix.org/
GDLibrería para generación de formatos graficoshttp://www.libgd.org/
NagvisAditivo para la generación de diagramas dinamicoshttp://www.nagvis.org/
PNP4NagiosAditivo para la generación de gráficos estadísticos y reportes visualeshttp://www.pnp4nagios.org/
NDOAgregado para articular Nagios con MySQLhttp://www.nagios.org
PluginsPlugins de chequeo standard de Nagioshttp://www.nagios.org
SNMP PluginsPlugins para la integración de chequeos SNMP de Nagioshttp://nagios.manubulon.com/
NagiosSitio de descarga oficialhttp://www.nagios.org
NagiosQLHerramienta visual de configuración de Nagios via Webhttp://www.nagiosql.org/
DokuwikiHerramienta de documentación colaborativahttp://www.dokuwiki.org/
Syslog-NgLogueo de eventos del sistemahttp://www.balabit.com/network-security/syslog-ng/
SNAREAgente Syslog para clientes Windowshttp://www.intersectalliance.com/projects/index.html
MK LivestatusAditivo para obtener los datos de Nagios
en Vivo via Socket (muy útil para abandonar NDO)
http://mathias-kettner.de/checkmk_livestatus.html
GnokiiAplicación de interfaz para celulares y modems 3G,
para la realización de llamadas y alertas SMS
http://gnokii.org
ThrukInterfaz alternativa para Nagios, con muchas funciones extras,
basado en MK Livestatus
www.thruk.org
Interfacetable_v3tPlugin para detectar y chequear las interfaces de un Routerhttp://www.tontonitch.com/
Check TSMPlugin para hacer chequeos generales en Tivoli TSMhttps://github.com/osklil/nagios-misc
Check IostatEstadisticas y alertas en base a los datos de iostathttp://sysengineers.wordpress.com/2010/05/27/check_iostat-pl-version-0-9-7/
Cliente Oracle
Basic
SQL*Plus
Cliente de Oracle para realizar los chequeoshttp://www.oracle.com/technetwork/database/features/instant-client/
EventdbIntegración de chequeos de Sysloghttps://www.netways.org/projects/eventdb
Highchart for NagiosGráficos de PNP4Nagios en AJAX http://sourceforge.net/projects/highchartfornag/

Tareas

Descarga y compilación

En este apartado nos concentraremos en la descarga y compilación de los diferentes paquetes bajados en formato de código fuente.

Para empezar deberemos descargar el código fuente del software Nagios desde su sitio web, en formato tar.gz

Para ello descomprimiremos el paquete descargado y luego procederemos a compilarlo.

Luego ejecutaremos el script configure, lo que hacer dicho script, es generar el ambiente propicio para poder ejecutar el proceso de compilación, ayudados por medio de la utilidad make.

Ejemplo de salida de ejecución del script configure :

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagios
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  ${prefix}/var/nagios.lock
   Check result directory:  ${prefix}/var/spool/checkresults
           Init directory:  /etc/init.d
  Apache conf.d directory:  /etc/apache2/conf.d
             Mail program:  /bin/mail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):  /usr/sbin/traceroute


Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.

Instalación de Nagios orientada a la distribución

Es útil pensar en utilizar varios paquetes de plugins disponibles en la distribución para poder facilitar el proceso de actualizaciones, igualmente es recomendable los componentes base de Nagios compilarlos y dejar separados los plugins personalizados para poder dejarlos independientes de las actualizaciones que apliquemos a los paquetes de la distribución.

Caso concreto

Sistema OperativoDebian 8.1
Version de Nagios4.1.1

Desinstalar paquetes o cosas innecesarias del paquete base de debian netinst e instalar el compilador GCC, realizar pruebas con el FLAG O3 al momento de la compilación.

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagios
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  ${prefix}/var/nagios.lock
   Check result directory:  ${prefix}/var/spool/checkresults
           Init directory:  /etc/init.d
  Apache conf.d directory:  /etc/httpd/conf.d
             Mail program:  /bin/mail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):  /usr/sbin/traceroute

make install-base

cd ./base && make install
make[1]: Entering directory '/root/nagios-4.1.0rc1/base'
make install-basic
make[2]: Entering directory '/root/nagios-4.1.0rc1/base'
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/bin
/usr/bin/install -c -m 774 -o nagios -g nagios nagios /usr/local/nagios/bin
/usr/bin/install -c -m 774 -o nagios -g nagios nagiostats /usr/local/nagios/bin
make[2]: Leaving directory '/root/nagios-4.1.0rc1/base'
make strip-post-install
make[2]: Entering directory '/root/nagios-4.1.0rc1/base'
/usr/bin/strip /usr/local/nagios/bin/nagios
/usr/bin/strip /usr/local/nagios/bin/nagiostats
make[2]: Leaving directory '/root/nagios-4.1.0rc1/base'
make[1]: Leaving directory '/root/nagios-4.1.0rc1/base'

make install-init

/usr/bin/install -c -m 755 -d -o root -g root /etc/init.d
/usr/bin/install -c -m 755 -o root -g root daemon-init /etc/init.d/nagios

*** Init script installed ***

make install-commandmode

/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw

*** External command directory configured ***

Paquetes debian de plugins a instalar junto con sus dependencias :

  • monitoring-plugins-basic
  • monitoring-plugins-common
  • monitoring-plugins-standard
  • nagios-plugins-contrib
  • nagios-snmp-plugins
  • nagios-nrpe-plugin
  • nagios-plugin-check-multi
  • python-nagiosplugin
  • python3-nagiosplugin
  • libnagios-plugin-perl

Paquetes extra para la administración del sistema :

  • htop
  • bmon
  • tcpdump
  • strace
  • tcptrack
  • ltrace

Paquetes extra para agregados de Nagios :

  • rrdtool,librrds-perl
  • Cliente oracle
    • oracle-instantclient-basic_10.2.0.5-2_amd64.deb
    • oracle-instantclient-sqlplus_10.2.0.5-2_amd64.deb
  • php5-cli
  • php5-curl php5-gd
  • ntpstat
  • ntpdate
  • nmap
  • xmlstarlet
  • libmail-sendmail-perl
  • php5-snmp

Nótese que no se realizó la instalación del servidor Web, lo máximo a dejar en el mismo servidor de Nagios es un MTA para notificaciones, por ejemplo postfix. Ya que el uso de un servidor Web dentro de la misma instalación de Nagios, dependiendo de su tamaño, puede afectar en seria forma a la performance del servidor.

Configuración

Ahora nos referiremos a la configuración de los elementos instalados para su posterior articulación y funcionamiento en conjunto.

Implementación

Para el correcto funcionamiento de Nagios, y asegurar escalabilidad con orden, se debe seguir una estructura de configuración y tener previamente planteados temas como:

  • Definición una estructura de archivos y directorios acorde a la situación, haciéndolo a su vez mas entendible para su posterior administración
  • Configurar Apache para su permitir su acceso via web por HTTP o HTTPS
  • En la mayoría de los equipos a monitorear mientras fuera posible instalar y dejar corriendo los servicios de SNMP
  • Configurar servicio de envío de emails
  • Definir grupos de contactos a los cuales se les enviarían los avisos de notificaciones, dependiendo de que hosts o servicio se trate.
  • Definir grupos de hosts y servicios, al tenerlos agrupados y verlos mas facilmente

A continuación se detalla como llevar a cabo dichos pasos necesarios para su implementación.

En el servidor

Configuraciones necesarias en el servidor de monitoreo.

Nagios

Algunos puntos basicos previos a la instalacion :

  • PATH Esta es la ruta de instalación. Por defecto es /usr/local/nagios
  • Usuario Usuario que va a usar nagios par ejecutarse. Debe crearse con adduser especificarle el PATH de Nagios como su directorio home de inicio, usualmente deberemos llamarlo nagios y debe estar dentro del grupo nagios
  • Grupo Grupo de usuario que va a usar Nagios. Este grupo tendrá permisos sobre todos los ficheros y directorios de Nagios. Por defecto es nagios. Puede crearse con groupadd.
  • URL Nagios utiliza una interfaz web para ejecutarse. Esta URL determina cual va a ser el directorio virtual que debe usar para instalarse. Por defecto /nagios, es decir, las peticiones irán dirigidas a http://host/nagios
Estructura de archivos

Una vez que compilamos e instalamos el paquete Nagios nos termina quedando una nomenclatura de directorios como la siguiente :

  • bin
    • Aqui se almacenan los binarios ejecutables
  • etc
    • Guarda la configuracion de Nagios
  • libexec
    • Se almacenan los plugins que efectuaran los chequeos a monitorear
  • sbin
    • Dentro de este directorio se mantienen los ejecutables CGI de la interfaz web
  • share
    • Organiza el contenido web a mostrar, iconos, html, php etc
  • var
    • Guarda los datos de ejecucion del monitoreo, estado de servicios, hosts, y logs

bin

Dentro de este directorio encontramos los ejecutable principales, como el binario nagios que es el que se ejecuta como proceso en segundo plano, el objeto ndomod.o que es el modulo que se encarga de traducir las estadisticas de nagios en formato de consultas MySQL, y ndo2db que el proceso en segundo plano que se encarga conectarse con la base de datos para posteriormente ejecutar esas consultas.

etc

Este directorio guarda la configuración de Nagios, sus componentes, hosts/servicios a chequear, comandos de ejecucion, contactos de notificación, intervalos de chequeos. Dentro de el hay diferentes subdirectorios y archivos.

libexec

Alli se contienen lo ejecutables de los plugins que efectuan los chequeos, SNMP, SAP, Oracle, SSH, que pueden ser binarios, scripts en Perl, PHP, Shell, Java, etc.

sbin

Aqui se almacenan los ejecutables cgi que se ejecutaran para la visualizacion por web de la consola Nagios.

share

Aqui encontramos el contenido web, imagenes, logos, los aditivos como PNP, Nagvis y los datos que necesitan para funcionar estos.

var

Aqui se guardan los datos internos de Nagios, estadisticas de los chequeos, informacion de ejecucion actual, archivos de sockets, registros de logs, colas de ejecución de chequeos.

Archivos de configuracion nagios/etc

cgi.cfg

  • Definir archivo de configuracion principal de Nagios
    • main_config_file=/usr/local/nagios/etc/nagios.cfg
  • Ruta donde se ubican los archivos a mostrar via web
    • physical_html_path=/usr/local/nagios/share
  • Ruta del url a donde ubicar Nagios desde el navegador
    • url_html_path=/nagios
  • Mostrar o no el icono de ayuda en la interfaz web
    • show_context_help=0
  • Mostrar objetos pendientes de chequeo
    • use_pending_states=1
  • Usar autenticacion para acceder a Nagios
    • use_authentication=1
  • Tener usuario logueado por default (no recomendado, dejar comentado)
    • #default_user_name=guest
  • Usuarios con acceso permitido para ver la informacion de objetos (separados por comas)
    • authorized_for_system_information=nagiosadmin
  • Usuarios con acceso permitido para ver la informacion de configuracion (separados por comas)
    • authorized_for_configuration_information=nagiosadmin
  • Usuarios con acceso permitido ejecucion de comandos nagios (separados por comas)
    • authorized_for_system_commands=nagiosadmin
  • Usuarios permitidos a ver informacion de hosts y servicios (separados por comas)
    • authorized_for_all_services=nagiosadmin
    • authorized_for_all_hosts=nagiosadmin
  • Usuarios permitidos para ejecutar comandos sobre hosts y servicios (separados por comas)
    • authorized_for_all_service_commands=nagiosadmin
    • authorized_for_all_host_commands=nagiosadmin
  • Tasa de refresco para la interfaz web en segundos
    • refresh_rate=90

htpasswd.users

  • Archivo con passwords encriptadas de los usuarios que se autentificaran por HTTP

nagios.cfg

  • Archivo de configuracion principal de Nagios, aqui se especifican los directorios de trabajo y se incluyen los archivos de configuracion extra a utilizar por Nagios
  • Con diversos parametros :
    • log_file se especifica el archivo de log a utilizar por Nagios
    • cfg_file se especifica un archivo de configuracion extra a incluir en la ejecucion de Nagios
    • cfg_dir se especifica un directorio con archivos de configuracion extra a incluir recursivamente en la ejecucion de Nagios
    • log_archive_path path donde se alojaran los archivos de log
    • use_syslog integracion con syslog

ndo2db.cfg

  • Archivo de configuracion del daemon que se encarga de introducir las consultar generadas por el modulo ndomod

ndomod.cfg

  • Modulo de Nagios que se encarga de traducir la informacion de ejecucion de Nagios en consultas MySQL, disponiendolas por medio de un socket

resource.cfg

  • Archivo de configuracion donde se definen macros de ejecucion

objects/

  • Directorio de archivos generales de configuracion

objects/commands.cfg

  • Definicion de comandos de ejecucion por default, con los alias que queremos usar

objects/contacts.cfg

  • Definicion de contactos de notificacion

objects/localhost.cfg

  • Plantilla inicial para el chequeo del host local

objects/printer.cfg

  • Plantilla de ejemplo de chequeo de impresoras por SNMP

objects/switch.cfg

  • Plantilla de ejemplo de chequeo de switch por SNMP

objects/templates.cfg

  • Plantillas generales de host, contactos, y servicios

objects/timeperiods.cfg

  • Plantilla inicial para definir periodos de chequeos, aquí se definen los rangos de tiempo donde son válidos el envío de alertas y las verificaciones de los servicios que están funcionando

objects/windows.cfg

  • Plantilla de ejemplo de chequeo de equipos Windows

services/

  • Aqui vamos a definir los servicios que usaremos en los chequeos. Se define la métrica o el servicio a monitorizar y el host/grupo de hosts sobre el que se ejecuta

var/rw/

  • Alli se encuentra un archivo special de socket que realiza la comunicacion de los comando y ordenes de la interfaz web hacia nagios, como cambiar horarios de chequeo, deshabilitar notificaciones etc.
    • El archivo que alli se encuentra nagios.cmd debe tener permisos de escritura y lectura por el propietario y el grupo de pertenencia nagios:nagcmd (660), nagcmd es un grupo especial en el cual vamos a incluir al usuario que ejecuta el servidor web (ej. en apache sobre Debian www-data), y asi poder enviar ordenes desde la interfaz web CGI. Esta es una característica avanzada de Nagios es que permite vía web la ejecución de ciertas tareas más allá del propio conjunto de CGI’s que vienen de serie, como por ejemplo la

caída o el reinicio del propio Nagios, etcétera. Para poder ejecutar este tipo de comandos es necesario también configurar el sistema de una forma un tanto especial. No hay que olvidar que al configurar Nagios de este modo se está permitiendo desde la web activar o desactivar opciones que en principio sólo estaban disponibles desde la consola del sistema. Para configurar Nagios de esta forma, hay que editar el fichero principal nagios.cfg y añadir (o modificar si ya existen) las siguientes líneas:

check_external_commands=1
command_check_interval=-1
command_file=/usr/local/nagios/var/rw/nagios.cmd

Lo que hará que Nagios active el chequeo para buscar comandos externos, con tanta frecuencia como sea posible por el sistema y buscará los comandos en el archivo nagios.cmd.

En el siguiente gráfico detalla la organización recomendada de la configuración de Nagios.

diagrama_nagios.dia.gz

Si por ejemplo tenemos estos dos casos :

Nagios un país multiples provincias o localidades

  • Buenos Aires
    • Lanús
    • Florencio Varela
    • CABA
    • Olavarria
    • Bahia Blanca
  • Santa Fe
    • Rosario
  • Neuquén
    • Zapala
    • San Martin

En este caso, simplemente deberemos tener templates para hosts y servicios, que se dividan por tipo. Si es un servidor, equipo de red, scada etc.

Nagios múltiples países y multiples provincias o localidades

  • Argentina
    • Buenos Aires
    • Neuquen
    • Tucuman
  • Brasil
    • Rio
    • Cajati
  • Paraguay
    • Ciudad del este
    • Villa hayes
  • Portugal
    • Lisboa

En este caso algo mas complejo, deberemos tener templates para hosts divididos para cada país, templates para servicios divididos para cada país, templates para contactos divididos para cada país.

Siempre debemos utilizar templates para todo, porque cuando debemos hacer un cambio en masa es mucho mas simple y con menos posibilidad a errores.

manuales/nagios/capacitacion/implementacion_tecnica.1445534367.txt.gz · Última modificación: 2015/10/22 17:19 por cayu