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
Próxima revisiónAmbos lados, revisión siguiente
manuales:nagios:capacitacion:implementacion_tecnica [2015/10/22 17:19] cayumanuales:nagios:capacitacion:implementacion_tecnica [2017/04/05 15:14] – [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 87: Línea 94:
 ==== Caso concreto ==== ==== Caso concreto ====
 ^Sistema Operativo|Debian 8.1| ^Sistema Operativo|Debian 8.1|
-^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 352: Línea 336:
 **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 447:
  
 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.txt · Última modificación: 2017/07/21 15:54 por cayu