Herramientas de usuario

Herramientas del sitio


manuales:nagios:capacitacion:implementacion_tecnica

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
manuales:nagios:capacitacion:implementacion_tecnica [2015/10/22 17:19] cayumanuales:nagios:capacitacion:implementacion_tecnica [2017/07/21 15:54] (actual) – [Caso concreto] cayu
Línea 57: Línea 57:
 Ejemplo de salida de ejecución del script configure : Ejemplo de salida de ejecución del script configure :
 <code> <code>
 +./configure --enable-corewindow --enable-event-broker
 +...
 +Creating sample config files in sample-config/ ...
 +
 +
 +*** Configuration summary for nagios 4.3.1 02-23-2017 ***:
 +
  General Options:  General Options:
  -------------------------  -------------------------
Línea 68: Línea 75:
    Check result directory:  ${prefix}/var/spool/checkresults    Check result directory:  ${prefix}/var/spool/checkresults
            Init directory:  /etc/init.d            Init directory:  /etc/init.d
-  Apache conf.d directory:  /etc/apache2/conf.d+  Apache conf.d directory:  /etc/httpd/conf.d
              Mail program:  /bin/mail              Mail program:  /bin/mail
                   Host OS:  linux-gnu                   Host OS:  linux-gnu
Línea 86: Línea 93:
 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. 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 ==== ==== Caso concreto ====
-^Sistema Operativo|Debian 8.1+^Sistema Operativo|Debian 9
-^Version de Nagios|4.1.1|+^Version de Nagios|4.3.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. 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.
  
-<code> 
- 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 
-</code> 
 make install-base make install-base
 <code> <code>
 cd ./base && make install cd ./base && make install
-make[1]: Entering directory '/root/nagios-4.1.0rc1/base'+make[1]: Entering directory '/root/nagios-4.3.1/base'
 make install-basic make install-basic
-make[2]: Entering directory '/root/nagios-4.1.0rc1/base'+make[2]: Entering directory '/root/nagios-4.3.1/base'
 /usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/bin /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 nagios /usr/local/nagios/bin
 /usr/bin/install -c -m 774 -o nagios -g nagios nagiostats /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[2]: Leaving directory '/root/nagios-4.3.1/base'
 make strip-post-install make strip-post-install
-make[2]: Entering directory '/root/nagios-4.1.0rc1/base'+make[2]: Entering directory '/root/nagios-4.3.1/base'
 /usr/bin/strip /usr/local/nagios/bin/nagios /usr/bin/strip /usr/local/nagios/bin/nagios
 /usr/bin/strip /usr/local/nagios/bin/nagiostats /usr/bin/strip /usr/local/nagios/bin/nagiostats
-make[2]: Leaving directory '/root/nagios-4.1.0rc1/base' +make[2]: Leaving directory '/root/nagios-4.3.1/base' 
-make[1]: Leaving directory '/root/nagios-4.1.0rc1/base'+make[1]: Leaving directory '/root/nagios-4.3.1/base'
 </code> </code>
 make install-init make install-init
Línea 157: Línea 141:
   * python-nagiosplugin   * python-nagiosplugin
   * python3-nagiosplugin   * python3-nagiosplugin
-  * libnagios-plugin-perl +  * libnagios-plugin-perl (si Debian < 9)
  
 Paquetes extra para la administración del sistema : Paquetes extra para la administración del sistema :
Línea 174: Línea 158:
     * oracle-instantclient-basic_10.2.0.5-2_amd64.deb     * oracle-instantclient-basic_10.2.0.5-2_amd64.deb
     * oracle-instantclient-sqlplus_10.2.0.5-2_amd64.deb          * oracle-instantclient-sqlplus_10.2.0.5-2_amd64.deb     
-  * php5-cli +  * php7.0-cli 
-  * php5-curl php5-gd+  * php7.0-curl 
 +  * php7.0-gd
   * ntpstat   * ntpstat
   * ntpdate   * ntpdate
Línea 181: Línea 166:
   * xmlstarlet   * xmlstarlet
   * libmail-sendmail-perl   * libmail-sendmail-perl
-  * php5-snmp+  * php7.0-snmp
  
  
Línea 352: Línea 337:
 **resource.cfg** **resource.cfg**
   * Archivo de configuracion donde se definen macros de ejecucion   * Archivo de configuracion donde se definen macros de ejecucion
 +Ejemplo de configuración teniendo en cuenta el ambiente mixto con plugins de paquetes Debian y compilados manualmente :
 +<code bash>
 +# Sets $USER1$ to be the path to the Debian plugins
 +$USER1$=/usr/lib/nagios/plugins
 +
 +# Sets $USER2$ to be the path to the manual compiled plugins
 +$USER2$=/usr/local/nagios/libexec
 +
 +# Comunidad SNMP V1
 +$USER3$=comunidad
 +# Usuario y Password SNMP V3
 +$USER5$=nagios
 +$USER6$=ClaveDESNMP
 +</code>
  
 **objects/** **objects/**
Línea 449: Línea 448:
  
 Siempre debemos utilizar templates para todo, porque cuando debemos hacer un cambio en masa es mucho mas simple y con menos posibilidad a errores. Siempre debemos utilizar templates para todo, porque cuando debemos hacer un cambio en masa es mucho mas simple y con menos posibilidad a errores.
 +
 +
 +==== En el Monitoreo ====
 +
 +
 +
 +===== Creando directivas =====
 +
 +Debemos crear algunas entradas de configuración para especificar donde encontramos los servicios, grupos, contactos etc, las mismas debemos incluirlas en nuestro archivo de configuración nagios.cfg
 +
 +<code>
 +# Directorio con la configuración de grupos de Hosts de los Servidores
 +cfg_dir=/usr/local/nagios/etc/hostgroups
 +# Directorio con la configuración de grupos de servicios de los Servidores
 +cfg_dir=/usr/local/nagios/etc/servicegroup
 +# Directorio con la configuración de contactos
 +cfg_dir=/usr/local/nagios/etc/contacts
 +# Directorio con la configuración de grupos de contacto
 +cfg_dir=/usr/local/nagios/etc/contactgroups
 +# Directorio con la configuración de servicios
 +cfg_dir=/usr/local/nagios/etc/services
 +# Directorio con la configuración de los comandos
 +cfg_dir=/usr/local/nagios/etc/commands
 +# Directorio con la configuración de los equipos a monitorear
 +cfg_dir=/usr/local/nagios/etc/servers
 +</code>
 +
 +
 +Con  la directiva cfg_dir el indicamos Nagios que tome como configuración los archivos con extencion "cfg" encontrados en tal directorio.
 +
 +
 +==== Agregando Grupos de Servicios ====
 +
 +Los grupos de servicio se utilizan para denotar un variedad de servicios sobre otros, debemos tener asignado aunque sea un servicio a ese grupo por que si no de lo contrario el Nagios mostrara un error al arranque, para eso lo asignamos en la propiedad //servicegroups// de un servicio en particular.
 +Ejemplo de una entrada de grupo de servicios:
 +
 +<code>
 +define servicegroup{
 +        servicegroup_name       lotus_response
 +        alias                   Lotus Reponse Services
 +        }
 +</code>
 +
 +<code>
 +define servicegroup{
 +        servicegroup_name       {nombre corto del grupo de servicio}
 +        alias                   {alias descriptivo completo del grupo}
 +        }
 +</code>
 +
 +Se deberá crear el archivo {nagios-dir}/etc/servicegroup/{nombregrupodeservicios.cfg} con las entradas correspondientes anteriormente explicadas.
 +
 +
 +
 +
 +
 +
 +==== Agregando Servicios ====
 +
 +A continuacion se muestra una tipica entrada de configuración de un servicio
 +
 +<code>
 +define service {
 +        use                             windows
 +        host_name                       srv1,srv2
 +        hostgroup_name                  servidores-windows
 +        service_description             Verification disco F:
 +        servicegroups                   storage
 +        is_volatile                     0
 +        check_period                    24x7
 +        max_check_attempts              3
 +        normal_check_interval           5
 +        retry_check_interval            1
 +        contact_groups                  windows
 +        notification_interval           240
 +        notification_period             24x7
 +        notification_options            c,r
 +        check_command                   check_snmp_storage!^F!60!90!-C public!-r
 +}
 +</code>
 +
 +<code>
 +define service {
 +        use                             {template de servicio a utilizar}
 +        host_name                       {hosts que ejecutan dicho servicio}
 +        hostgroup_name                  {grupos de host que ejecutan ese servicio}
 +        service_description             {descripcion del servicio}
 +        servicegroups                   {grupo al cual pertenece}
 +        is_volatile                     {si el servicio es volatil}
 +        check_period                    {periodo de tiempo para el chequeo}
 +        max_check_attempts              {maximo de intentos de chequeo}
 +        normal_check_interval           {intervalo de tiempo a programar los chequeos}
 +        retry_check_interval            {intervalo de tiempo para un re-chequeo}
 +        contact_groups                  {grupo de contacto};
 +        max_check_attempts              {maxima cantidad de chequeos}
 +        notification_interval           {intervalo de tiempo entre notificaciones}
 +        notification_period             {priodo de tiempo de notificaciones}
 +        notification_options            {cuando enviar notificaciones}
 +        check_command                   {comando de chequeo con sus argumentos}
 +}
 +</code>
 +
 +
 +**use**
 +
 +Template de servicio a utilizar
 +
 +
 +**host_name**
 +
 +Nombre del o los host a los cuales esta asignado dicho servicio
 +
 +
 +**hostgroup_name**
 +
 +Nombre del grupo de host en los cuales esta asignado dicho servicio, es útil para cuando se vuelve tedioso poner uno por uno los nombres de los hosts a los cuales se asigna el servicio
 +
 +
 +**service_description**
 +
 +Alias descriptivo del nombre del servicio
 +
 +
 +**contact_groups**
 +
 +Grupos de contacto a los que enviar las notificaciones
 +
 +
 +**max_check_attempts**
 +
 +Maxima cantidad de chequeos a efectuar por Nagios, antes de enviar un OK como resultado
 +
 +
 +**normal_check_interval**
 +
 +Intervalo de tiempo antes de programar un nuevo chequeo del servicio
 +
 +
 +**retry_check_interval**
 +
 +Intervalo de tiempo antes de realizar un re-chequeo del servicio
 +
 +
 +**notification_interval**
 +
 +Esta directiva se utiliza para definir el número de las “unidades del tiempo” para esperar antes de re-notificar a un contacto que este servidor todavía está abajo o inalcanzable. A menos que se haya cambiado la directiva interval_length del valor prefijado de 60, este número significará minutos. Si este valor se establece a 0, Nagios re-no notificará contactos sobre los problemas para este host - solamente una notificación del problema será enviada.
 +
 +
 +**notification_period**
 +
 +Periodo de tiempo en el cualse envia notificacion y notificacion
 +
 +
 +
 +**notification_options**
 +
 +Esta directiva indica a Nagios en que momentos debe enviar notificaciones de estado
 +
 +  * d = DOWN cuando el host esta caido
 +
 +  * u = UNREACHABLE cuando el host no es visible o es inalcanzable
 +
 +  * r = RECOVERY (OK) cuando el host se recupero
 +
 +  * f = FLAPPING cuando es de estado cambiante
 +
 +  * n = NONE no enviar notificaciones
 +
 +
 +**check_command**
 +
 +Comando para efectuar el chequeo de dicho servicio
 +
 +
 +//Se deberá crear el archivo {nagios-dir}/etc/services/{nombreservicio.cfg} con las entradas correspondientes anteriormente explicadas.//
 +
 +
 +
 +=== Dependencia del estado del servicio por el estado de otro servicio ===
 +
 +En caso en los cuales el estado de un servicio dependa de la disponibilidad o el estado de otro, se pueden definir dependencias. Una entrada a modo ejemplo puede ser:
 +
 +<code>
 +define servicedependency{
 + host_name Host A
 + service_description Service A
 + dependent_host_name Host B
 + dependent_service_description Service D
 + execution_failure_criteria u
 + notification_failure_criteria n
 + }
 +</code>
 +
 +<code>
 +define servicedependency{
 + host_name {host donde se ejecuta el servicio dependiente}
 + service_description {servicio dependiente}
 + dependent_host_name {host donde se ejecuta el servicio del cual se depende}
 + dependent_service_description {servicio del cual se depende}
 + execution_failure_criteria {criterio para establecer el estado}
 + notification_failure_criteria {notificar segun x estado}
 + }
 +</code>
 +
 +
 +**host_name**
 +
 +Nombre del o los host dentro de los cuales se ejecuta el servicio dependiente
 +
 +
 +**service_description**
 +
 +Descripcion del servicio dependiente, debe ser igual a la entrada que aparece en la configuracion del servicio.
 +
 +
 +**dependent_host_name**
 +
 +Host donde se esta ejecutando el servicio del cual se depende
 +
 +
 +**dependent_service_description**
 +
 +Nombre descriptivo que corresponde al servicio del cual se depende, debe ser igual al de su configuracion de servicio
 +
 +
 +**execution_failure_criteria**
 +
 +Criterios para definir el estado del servicio
 +
 +
 +**notification_failure_criteria**
 +
 +En base a que estado realizar las notificaciones, si esta caido, si esta ok o no realizar notificaciones
 +
 +
 +
 +=== Informacion extendida de servicio ===
 +
 +En algunos casos podemos agregar un link informativo u externo haciendo referencia al servicio en ejecution
 +
 +
 +<code>
 +define serviceextinfo{
 + host_name linux2
 + service_description Carga del sistema Linux
 + notes Carga sistema
 + notes_url http://localhost/cargalinux.pl?host=linux2&service=Carga+Sistema
 + icon_image carga.png 
 + icon_image_alt Alertas de carga
 + }
 +</code>
 +
 +
 +<code>
 +define serviceextinfo{
 + host_name {nombre del host}
 + service_description {nombre descriptivo del servicio}
 + notes {nota descriptiva sobre la informacion extra}
 + notes_url {url donde se encuentra la informacion extra}
 + icon_image {imagen de icono}
 + icon_image_alt {texto alternativo de la imagen}
 + }
 +</code>
 +
 +**host_name**
 +
 +Host donde se ejecuta dicho servicio
 +
 +
 +**service_description**
 +
 +Nombre descriptivo del servicio al cual corresponde la informacion extra
 +
 +
 +**notes**
 +
 +Descripcion sobre "que es" o "a que corresponde" la información extra a mostrar
 +
 +
 +**notes_url**
 +
 +Url donde encontrar la informacion extra
 +
 +
 +**icon_image**
 +
 +Icono a referenciar el link de la información extra
 +
 +
 +**icon_image_alt**
 +
 +Texto alternativo del icono
 +
 +==== Agregando Grupos de Hosts ====
 +
 +Los host en nagios de puede agrupar mediante grupos y asi tener un listado aparte que los diferencia de los demas. por ejemplo tener por un lado los servidores SAP con Oracle y por otro los servidores Lotus, o Linux y Windows por separado etc.
 +
 +Un archivo tipo de grupos de host se presenta a continuacion
 +
 +<code>
 +define hostgroup {
 +    hostgroup_name                      florencio_varela
 +    alias                               Equipos de Florencio Varela
 +    members                             varela01,router-flv-1,srvfvl001
 +}
 +</code>
 +
 +
 +
 +<code>
 +define hostgroup {
 +    hostgroup_name                      {nombre del grupo}
 +    alias                               {alias descriptivo}
 +    members                             {host miembros}
 +}
 +</code>
 +
 +
 +**hostgroup_name**
 +
 +Nombre del grupo de hosts
 +
 +
 +**alias**
 +
 +Alias descriptivo del grupo
 +
 +
 +**members**
 +
 +Host que son miembros del grupo, debemos ingresar el host_name de cada uno separado por comas "," 
 +
 +//Se deberá crear el archivo {nagios-dir}/etc/hostgroups/{nombregrupodehosts.cfg} con las entradas correspondientes anteriormente explicadas.//
 +
 +==== Agregando Hosts ====
 +
 +Para configurar un host con o sin SNMP previamente instalado y configurado como lo indicado anteriormente, para su posterior monitoreo. Se debe crear una entrada en la configuracion de Nagios.
 +
 +
 +Un tipico archivos hosts.cfg
 +
 +<code>
 +  define host{
 +        use                             servidores
 +        host_name                       servidorsap2
 +        hostgroup_name                  servidores-linux
 +        alias                           SAP SERVER
 +        address                         192.168.10.84
 +        parents                         buenos_aires
 +        contact_groups                  linux;
 +        max_check_attempts              10
 +        notification_interval           120
 +        notification_period             24x7
 +        notification_options            d,u,r
 +    }
 +</code>
 +
 +<code>
 +  define host{
 +        use                             {template-host}
 +        host_name                       {nombre-host}
 +        hostgroup_name                  {grupos al que pertenece este host}
 +        alias                           {alias-descriptivo}
 +        address                         {ip}
 +        parents                         {host del que depende}   
 +        contact_groups                  {grupo de contacto};
 +        max_check_attempts              {maxima cantidad de chequeos}
 +        notification_interval           {intervalo de tiempo entre notificaciones}
 +        notification_period             {priodo de tiempo de notificaciones}
 +        notification_options            {cuando enviar notificaciones}
 +    }
 +</code>
 +
 +**use**
 +
 +Template de host a utilizar
 +
 +
 +**host_name**
 +
 +Nombre del host
 +
 +**hostgroup_name**
 +
 +Grupos a los que pertenece este host
 +
 +
 +**address**
 +
 +Direccion IP del host
 +
 +
 +**parents**
 +
 +Host del que depende y que esta delante suyo, por ejemplo puede ser un router o un equipo que le brinde la conectividad etc, y en el mapa se dibujara como dependiente de ese nodo
 +
 +
 +**contact_groups**
 +
 +Grupos de contacto a los que enviar las notificaciones
 +
 +
 +**max_check_attempts**
 +
 +Maxima cantidad de chequeos a efectuar por Nagios, antes de enviar un OK como resultado
 +
 +
 +**notification_interval**
 +
 +Esta directiva se utiliza para definir el número de las “unidades del tiempo” para esperar antes de re-notificar a un contacto que este servidor todavía está abajo o inalcanzable. A menos que se haya cambiado la directiva interval_length del valor prefijado de 60, este número significará minutos. Si este valor se establece a 0, Nagios re-no notificará contactos sobre los problemas para este host - solamente una notificación del problema será enviada.
 +
 +
 +
 +**notification_period**
 +
 +Periodo de tiempo en el cualse envia notificacion y notificacion
 +
 +
 +
 +**notification_options**
 +
 +Esta directiva indica a Nagios en que momentos debe enviar notificaciones de estado
 +
 +  * d = DOWN cuando el host esta caido
 +
 +  * u = UNREACHABLE cuando el host no es visible o es inalcanzable
 +
 +  * r = RECOVERY (OK) cuando el host se recupero
 +
 +  * f = FLAPPING cuando es de estado cambiante
 +
 +  * n = NONE no enviar notificaciones
 +
 +//Se deberá crear el un subdirectorio correspondiente al nombre del host y segun corresponda ubicarlo en el directorio servers/{linux-windows-lotus} o routers y deentro crear un archivo hosts.cfg con la configuración anteriormente explicada, //
 +
 +=== Informacion extendida de host ===
 +
 +La informacion extendida de host se utiliza para el look and feel de los host dentro de los mapas de estado, ya sea tanto el 2D como el 3D
 +
 +<code>
 +  define hostextinfo{
 +        host_name       linuxoracle
 +        notes           Servidor Oracle de uniface
 +        icon_image      oracle.png
 +        icon_image_alt  Oracle
 +        vrml_image      oracle.png
 +        statusmap_image oracle.gd2
 +    }
 +</code>
 +
 +<code>
 +  define hostextinfo{
 +        host_name       {nombre de host}
 +        notes           {descripcion para el host}
 +        icon_image      {logo para ver en la interfaz web}
 +        icon_image_alt  {texto para el logo}
 +        vrml_image      {logo para ver en el mapa 3D}
 +        statusmap_image {logo para ver en el mapa 2D}
 +    }
 +</code>
 +
 +**host_name**
 +
 +Nombre del host al cual corresponde la información dada
 +
 +
 +**notes**
 +
 +Pequeña nota descriptiva de la informacion del host a presentar en los mapas de estado
 +
 +
 +**icon_image**
 +
 +Icono a visualizar en el entorno html de la consola Nagios
 +
 +
 +**icon_image_alt**
 +
 +Texto alternativo para mostrar al logo
 +
 +
 +**vrml_image**
 +
 +Icono a visualizar en el mapa 3D
 +
 +
 +**statusmap_image**
 +
 +Icono a visualizar en el mapa 2D
 +
 +
 +
 +
 +//Se deberá crear en el archivo hostextinfo.cfg dentro subdirectorio correspondiente al host con las entradas de configuración anteriormente explicadas.
 +Lo iconos se encuentran dentro del directorio {nagiosdir}share/images/logos/ tanto en su version png como gd//
 +
 +Para convertir una imagen png comun a un icono gd2 (necesario para la generacion del grafico de statusmap 2D) debemos ejecutar el siguiente comando:
 +
 +<code>
 +pngtogd2 mi-icono.png mi-icono.gd2  1  1
 +</code>
 +
 +El primer parametro es mi ya existente imagen png, el segundo parametro es el nombre de archivo de salida en formato gd2, el parametro 1 se refiere a que la cree en formato raw (crudo), y el segudo parametro es para que lo cree sin compresion, todo esto se realiza dentro del directorio logos anteriormente explciado.
 +
 +
 +=== Dependencia del estado de host por el estado de otro host ===
 +
 +En casos donde hay host donde su estado depende del estado de otro host, es posible especificar dependencias. Aqui vemos una entrada tipica 
 +
 +<code>
 + define hostdependency{
 +        host_name                               linuxsap2
 +        dependent_host_name                     linuxoracle
 +        notification_failure_criteria           d
 +    }
 +</code>
 +
 +
 +<code>
 + define hostdependency{
 +        host_name                               {nombre del host a referise}
 +        dependent_host_name                     {nombre del host del cual depende}
 +        notification_failure_criteria           {opciones de notificacion}
 +    }
 +</code>
 +
 +
 +**host_name**
 +
 +Nombre del host al cual corresponde la información dada
 +
 +
 +**dependent_host_name**
 +
 +Nombre del host del cual depende
 +
 +
 +**notification_failure_criteria**
 +
 +Opciones de notificacion en caso de cada estado
 +
 +
 +
 +
 +//Se deberá crear en el archivo hostdependency.cfg dentro subdirectorio correspondiente al host con las entradas de configuración anteriormente explicadas.//
 +
 +
 +
 +
 +
 +
 +==== Definiendo tiempos de chequeo ====
 +
 +
 +Dentro de Nagios se pueden establecer definiciones para controlar cuando diversos aspectos de la lógica de vigilancia y alerta sobre elementos monitoreador por ejemplo que tal servicio o host se chequee en ciertos intervalos de tiempo, por ejemplo si un host no debe ser chequeado los domingos o un servicio debe ser chequeado solo de lunes a viernes de 08:00 HS a 18:00 HS etc
 +
 +
 +A su ves las definiciones Timeperod pueden contener varios tipos de directivas, entre los días de semana, días del mes, y las fechas. El orden de precedencia de los distintos tipos de directivas (en orden descendente) es el siguiente:
 +
 +    * Fecha del calendario (2008-01-01)
 +    * Mes específico fecha (1 de enero)
 +    * Mes día genéricos (Día 15)
 +    * Compensar los días de la semana de mes específico (2 º martes de diciembre)
 +    * Compensar los días de la semana (3 º lunes)
 +    * Normal del día de la semana (martes) 
 +
 +Ejemplos de las diferentes directivas timeperiod que podemos implementar :
 +
 +
 +
 +//Chequeos las 24 horas los 7 dias de la semana//
 +<code>
 +define timeperiod{
 +        timeperiod_name 24x7
 +        alias           24 Hours A Day, 7 Days A Week
 +        sunday          00:00-24:00
 +        monday          00:00-24:00
 +        tuesday         00:00-24:00
 +        wednesday       00:00-24:00
 +        thursday        00:00-24:00
 +        friday          00:00-24:00
 +        saturday        00:00-24:00
 +        }
 +</code>
 +
 +
 +//Chequeos en las horas laborales lunes a viernes de 9 a 17//
 +<code>
 +define timeperiod{
 +        timeperiod_name workhours
 +        alias           Normal Work Hours
 +        monday          09:00-17:00
 +        tuesday         09:00-17:00
 +        wednesday       09:00-17:00
 +        thursday        09:00-17:00
 +        friday          09:00-17:00
 +        }
 +</code>
 +
 +//Chequeos sin tiempos, o sea no chequea en ningún momento//
 +<code>
 +# 'none' timeperiod definition
 +define timeperiod{
 +        timeperiod_name none
 +        alias           No Time Is A Good Time
 +        }
 +</code>
 +
 +//En ciertos dias feriados excluir el chequeo servicios, ej Navidad, Año nuevo etc//
 +<code>
 +define timeperiod{
 +        name                    us-holidays
 +        timeperiod_name         us-holidays
 +        alias                   U.S. Holidays
 +        january 1               00:00-00:00     ; New Years
 +        monday -1 may           00:00-00:00     ; Memorial Day (last Monday in May)
 +        july 4                  00:00-00:00     ; Independence Day
 +        monday 1 september      00:00-00:00     ; Labor Day (first Monday in September)
 +        thursday -1 november    00:00-00:00     ; Thanksgiving (last Thursday in November)
 +        december 25             00:00-00:00     ; Christmas
 +        }
 +</code>
 +
 +//Definimos un periodo de tiempo que chequee las 24 horas del dia los 7 dias de la semana, pero que incluya las excepciones anteriormente mostradas//
 +<code>
 +define timeperiod{
 +        timeperiod_name 24x7_sans_holidays
 +        alias           24x7 Sans Holidays
 +        use             us-holidays             ; Agregar excepciones
 +        sunday          00:00-24:00
 +        monday          00:00-24:00
 +        tuesday         00:00-24:00
 +        wednesday       00:00-24:00
 +        thursday        00:00-24:00
 +        friday          00:00-24:00
 +        saturday        00:00-24:00
 +        }
 +</code>
 +
 +
 +//Otra manera de evitar tiempos de chequeo es con la directiva exclude//
 +
 +// Como ejemplo podemos definir 3 timeperiods//
 +
 +<code>
 +define timeperiod{
 +        name                    weekdays
 +        timeperiod_name         weekdays
 +        monday                  00:00-24:00
 +        tuesday                 00:00-24:00
 +        wednesday               00:00-24:00
 +        thursday                00:00-24:00
 +        friday                  00:00-24:00
 +        }
 +define timeperiod{
 +        name                    weekends
 +        timeperiod_name         weekends
 +        saturday                00:00-24:00
 +        sunday                  00:00-24:00
 + }
 +define timeperiod{
 +        name                    holidays
 +        timeperiod_name         holidays
 +        january 1               00:00-24:00 ; New Year's Day
 +        2008-03-23              00:00-24:00 ; Easter (2008)
 +        2009-04-12              00:00-24:00 ; Easter (2009)
 +        monday -1 may           00:00-24:00 ; Memorial Day (Last Monday in May)
 +        july 4                  00:00-24:00 ; Independence Day
 +        monday 1 september      00:00-24:00 ; Labor Day (1st Monday in September)
 +        thursday 4 november     00:00-24:00 ; Thanksgiving (4th Thursday in November)
 +        december 25             00:00-24:00 ; Christmas
 +        december 31             17:00-24:00 ; New Year's Eve (5pm onwards)
 + }
 +</code>
 +
 +//Ahora definimos un timeperiod llamadas por ejemplo, incluya los dias de la semana, pero excluya los dias festivos//
 +
 +<code>
 +define timeperiod{
 + timeperiod_name llamadas
 + use weekdays ; Include weekdays
 + exclude holidays ; Exclude holiday dates/times defined elsewhere
 + }
 +</code>
 +
 +//Alternando dias, o sea desde el primero de agosto de 2007 cada dos dias notificar, si en vez de / 2 ponemos / 14 lo realizara cada 14 dias//
 +
 +<code>
 +define timeperiod{
 + timeperiod_name john-oncall
 + 2007-08-01 / 2 00:00-24:00 ; Every two days, starting August 1st, 2007
 + }
 +</code>
 +
 +
 +//En la entrada del contacto deberemos especificarle los timeperiods para hosts y servicios//
 +<code>
 +define contact{
 + contact_name john
 + ...
 + host_notification_period john-oncall
 + service_notification_period john-oncall
 + }
 +</code>
 +
 +==== Agregando Comandos ====
 +
 +En Nagios los encargados de recabar los datos del monitoreo, de mostrar alertas, de todas las tareas, son los comandos.
 +
 +Los mismos se dividen en comandos de performance y en comandos de chequeo, los primeros son utilizados para algunos casos en particular.
 +
 +Los comandos de chequeo no traen datos de los equipos a monitorear, como consumo de CPU, Memoria, Disco, procesos corriendo, puertos abiertos etc, es decir todos los datos necesarios de la monitoria.
 +
 +Los comandos de performance se utilizan cuando hay que guardar ciertos datos o enviarlos a algún host externo etc, con información de algún servicio.
 +
 +Una entrada en un archivo de configuración de comandos puede ser como la siguiente
 +
 +<code>
 +define command{
 +        command_name check_snmp_mem
 +        command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
 +        }
 +</code>
 +
 +<code>
 +define command{
 +        command_name {nombre del comando}
 +        command_line {datos de  ejecucion}
 +        }
 +</code>
 +
 +
 +**command_name**
 +
 +El nombre que el comando tendra para nuestra configuración personal de  Nagios
 +
 +
 +**command_line**
 +
 +Modo del cual Nagios ejecutara el comando en cuestión, con su ruta física y argumentos
 +Lo que vemos en entre signos $ son variables internas de nagios, llamadas macros, las mas comunes son: 
 +
 +**$USER1$**       : Contiene datos del path de ejecución de los plugins de Nagios
 +
 +**$HOSTADDRESS$** : Tiene la IP de hosts desde el cual se esta corriendo el servicio
 +
 +**$ARG1$ $ARG2$ $ARG3$ $ARG4$** : Son los números en orden de argumentos que recibe el comando a ejecutar
 +
 +
 +Podemos definir nuestros propios macros seteando variables en el archivo resource.cfg
 +
 +
 +//Se deberán agregar al archivo {nagios-dir}/etc/commands.cfg las entradas correspondientes anteriormente explicadas.//
 +
 +
 +
 +==== Manejadores de Eventos - Event Handler ====
 +Cuando hablamos de **event handler** o **manejador de eventos**, nos referimos a funciones que responden a eventos que se producen, como pueden ser un cambio de estado.
 +
 +==== Configuración de alertas ====
 +
 +=== Agregando Grupos de contacto ===
 +
 +Para que el Nagios envíe notificaciones sobre el estado de los servicios es necesario definir grupos a los cuales enviárselas, y dentro de ellos estarán los miembros a cuales enviarlos
 +
 +
 +A continuación podemos ver una configuración típica de un grupo de contactos
 +
 +<code>
 +   define contactgroup{
 +        contactgroup_name               admin
 +        alias                           Administrators
 +        members                         admin-sap,admin-windows
 +    }
 +</code>
 +
 +<code>
 +   define contactgroup{
 +        contactgroup_name               {nombre del grupo contacto}
 +        alias                           {descripcion}
 +        members                         {miembros del grupo}
 +    }
 +</code>
 +
 +
 +**contactgroup_name**
 +
 +Nombre que se le asignara al grupo de contacto
 +
 +
 +**alias**
 +
 +Descripción corta para identificar al grupo
 +
 +
 +**members**
 +
 +
 +Miembros del grupo separados por comas
 +
 +
 +
 +//Se deberá crear el archivo {nagios-dir}/etc/contactgroups/{nombregrupodecontacto.cfg} con las entradas correspondientes anteriormente explicadas.//
 +
 +
 +=== Agregando Contactos ===
 +
 +Para recibir las notificaciones de Nagios es necesario generar contactos que estén incluidos en diferentes grupos de contactos, una configuración simple para un contacto se ve como la siguiente entrada
 +
 +
 +<code>
 +   define contact{
 +        contact_name                   admin
 +        alias                          Administrador Nagios
 +        contactgroups                  admin
 +        service_notification_period    24x7
 +        host_notification_period       24x7
 +        service_notification_options   w,u,c,r
 +        host_notification_options      d,u,r
 +        service_notification_commands  notify-by-email
 +        host_notification_commands     host-notify-by-email
 +        email                          root@localhost
 +    }
 +</code>
 +
 +<code>
 +   define contact{
 +        contact_name                   {nombre del contacto}
 +        alias                          {descripcion del contacto}
 +        contactgroups                  {grupo de contactos al cual pertenece}
 +        service_notification_period    {priodo de tiempo de notificaciones de servicios}
 +        host_notification_period       {priodo de tiempo de notificaciones de hosts}
 +        service_notification_options   {opciones de notificacion por servicio}
 +        host_notification_options      {opciones de notificacion por host}
 +        service_notification_commands  {comando de notificacion a utilizar por servicio}
 +        host_notification_commands     {comando de notificacion a utilizar por host}
 +        email                          {direccion de email del contacto}
 +    }
 +</code>
 +
 +
 +**contact_name**
 +
 +Nombre literal a asignarle al contacto
 +
 +
 +**alias**
 +
 +Alias descriptivo del contacto, ej Administrador de Routers
 +
 +
 +**contactgroups**
 +
 +Grupos de contactos a los cuales pertenece
 +
 +
 +**service_notification_period**
 +
 +Periodo de tiempo en el cual recibir notificaciones sobre el estado de los servicios
 +
 +
 +**host_notification_period**
 +
 +Periodo de tiempo en el cual recibir notificaciones sobre el estado de los hosts
 +
 +
 +**service_notification_options**
 +
 +Opciones de cuando realizar una notificación sobre el estado de un servicio
 +
 +
 +**host_notification_options**
 +
 +Opciones de cuando realizar una notificación sobre el estado de un host
 +
 +
 +**service_notification_commands**
 +
 +Comando para realizar la notificación del estado del servicio, podemos definir múltiples comandos
 +
 +
 +**host_notification_commands**
 +
 +Comando para realizar la notificacion del estado del host, podemos definir múltiples comandos
 +
 +
 +**email**
 +
 +Email perteneciente al contacto en el cual recibira las notificaciones por email. Para que esto funcione se debe tener correctamente configurado el mail delivery local.
 +
 +
 +
 +//Se deberá crear el archivo {nagios-dir}/etc/contacts/{nombredecontacto.cfg} con las entradas correspondientes anteriormente explicadas.//
  
manuales/nagios/capacitacion/implementacion_tecnica.1445534367.txt.gz · Última modificación: 2015/10/22 17:19 por cayu