manuales:nagios:capacitacion:implementacion_tecnica
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaÚltima revisiónAmbos lados, revisión siguiente | ||
manuales:nagios:capacitacion:implementacion_tecnica [2015/10/22 17:19] – cayu | manuales:nagios:capacitacion:implementacion_tecnica [2017/07/21 15:52] – [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 : | ||
< | < | ||
+ | ./configure --enable-corewindow --enable-event-broker | ||
+ | ... | ||
+ | Creating sample config files in sample-config/ | ||
+ | |||
+ | |||
+ | *** Configuration summary for nagios 4.3.1 02-23-2017 ***: | ||
+ | |||
| | ||
| | ||
Línea 68: | Línea 75: | ||
Check result directory: | Check result directory: | ||
Init directory: | Init directory: | ||
- | Apache conf.d directory: | + | Apache conf.d directory: |
Mail program: | Mail program: | ||
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, | Es útil pensar en utilizar varios paquetes de plugins disponibles en la distribución para poder facilitar el proceso de actualizaciones, | ||
==== Caso concreto ==== | ==== Caso concreto ==== | ||
- | ^Sistema Operativo|Debian | + | ^Sistema Operativo|Debian |
- | ^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. | ||
- | < | ||
- | | ||
- | | ||
- | Nagios executable: | ||
- | Nagios user/ | ||
- | | ||
- | Event Broker: | ||
- | Install ${prefix}: | ||
- | Install ${includedir}: | ||
- | Lock file: ${prefix}/ | ||
- | Check result directory: | ||
- | Init directory: | ||
- | Apache conf.d directory: | ||
- | Mail program: | ||
- | Host OS: linux-gnu | ||
- | IOBroker Method: | ||
- | |||
- | Web Interface Options: | ||
- | | ||
- | HTML URL: http:// | ||
- | CGI URL: http:// | ||
- | | ||
- | </ | ||
make install-base | make install-base | ||
< | < | ||
cd ./base && make install | cd ./base && make install | ||
- | make[1]: Entering directory '/ | + | make[1]: Entering directory '/ |
make install-basic | make install-basic | ||
- | make[2]: Entering directory '/ | + | make[2]: Entering directory '/ |
/ | / | ||
/ | / | ||
/ | / | ||
- | make[2]: Leaving directory '/ | + | make[2]: Leaving directory '/ |
make strip-post-install | make strip-post-install | ||
- | make[2]: Entering directory '/ | + | make[2]: Entering directory '/ |
/ | / | ||
/ | / | ||
- | make[2]: Leaving directory '/ | + | make[2]: Leaving directory '/ |
- | make[1]: Leaving directory '/ | + | make[1]: Leaving directory '/ |
</ | </ | ||
make install-init | make install-init | ||
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$=/ | ||
+ | |||
+ | # Sets $USER2$ to be the path to the manual compiled plugins | ||
+ | $USER2$=/ | ||
+ | |||
+ | # Comunidad SNMP V1 | ||
+ | $USER3$=comunidad | ||
+ | # Usuario y Password SNMP V3 | ||
+ | $USER5$=nagios | ||
+ | $USER6$=ClaveDESNMP | ||
+ | </ | ||
**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 | ||
+ | |||
+ | < | ||
+ | # Directorio con la configuración de grupos de Hosts de los Servidores | ||
+ | cfg_dir=/ | ||
+ | # Directorio con la configuración de grupos de servicios de los Servidores | ||
+ | cfg_dir=/ | ||
+ | # Directorio con la configuración de contactos | ||
+ | cfg_dir=/ | ||
+ | # Directorio con la configuración de grupos de contacto | ||
+ | cfg_dir=/ | ||
+ | # Directorio con la configuración de servicios | ||
+ | cfg_dir=/ | ||
+ | # Directorio con la configuración de los comandos | ||
+ | cfg_dir=/ | ||
+ | # Directorio con la configuración de los equipos a monitorear | ||
+ | cfg_dir=/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Con la directiva cfg_dir el indicamos Nagios que tome como configuración los archivos con extencion " | ||
+ | |||
+ | |||
+ | ==== 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 // | ||
+ | Ejemplo de una entrada de grupo de servicios: | ||
+ | |||
+ | < | ||
+ | define servicegroup{ | ||
+ | servicegroup_name | ||
+ | alias Lotus Reponse Services | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | define servicegroup{ | ||
+ | servicegroup_name | ||
+ | alias | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Se deberá crear el archivo {nagios-dir}/ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Agregando Servicios ==== | ||
+ | |||
+ | A continuacion se muestra una tipica entrada de configuración de un servicio | ||
+ | |||
+ | < | ||
+ | define service { | ||
+ | use | ||
+ | host_name | ||
+ | hostgroup_name | ||
+ | service_description | ||
+ | servicegroups | ||
+ | is_volatile | ||
+ | check_period | ||
+ | max_check_attempts | ||
+ | normal_check_interval | ||
+ | retry_check_interval | ||
+ | contact_groups | ||
+ | notification_interval | ||
+ | notification_period | ||
+ | notification_options | ||
+ | check_command | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | define service { | ||
+ | use | ||
+ | host_name | ||
+ | hostgroup_name | ||
+ | service_description | ||
+ | servicegroups | ||
+ | is_volatile | ||
+ | check_period | ||
+ | max_check_attempts | ||
+ | normal_check_interval | ||
+ | retry_check_interval | ||
+ | contact_groups | ||
+ | max_check_attempts | ||
+ | notification_interval | ||
+ | notification_period | ||
+ | notification_options | ||
+ | check_command | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **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}/ | ||
+ | |||
+ | |||
+ | |||
+ | === 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: | ||
+ | |||
+ | < | ||
+ | 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 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | 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} | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **host_name** | ||
+ | |||
+ | Nombre del o los host dentro de los cuales se ejecuta el servicio dependiente | ||
+ | |||
+ | |||
+ | **service_description** | ||
+ | |||
+ | Descripcion del servicio dependiente, | ||
+ | |||
+ | |||
+ | **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, | ||
+ | |||
+ | |||
+ | |||
+ | === Informacion extendida de servicio === | ||
+ | |||
+ | En algunos casos podemos agregar un link informativo u externo haciendo referencia al servicio en ejecution | ||
+ | |||
+ | |||
+ | < | ||
+ | define serviceextinfo{ | ||
+ | host_name linux2 | ||
+ | service_description Carga del sistema Linux | ||
+ | notes Carga sistema | ||
+ | notes_url http:// | ||
+ | icon_image carga.png | ||
+ | icon_image_alt Alertas de carga | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | 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} | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **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" | ||
+ | |||
+ | |||
+ | **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 | ||
+ | |||
+ | < | ||
+ | define hostgroup { | ||
+ | hostgroup_name | ||
+ | alias | ||
+ | members | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | define hostgroup { | ||
+ | hostgroup_name | ||
+ | alias | ||
+ | members | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **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}/ | ||
+ | |||
+ | ==== Agregando Hosts ==== | ||
+ | |||
+ | Para configurar un host con o sin SNMP previamente instalado y configurado como lo indicado anteriormente, | ||
+ | |||
+ | |||
+ | Un tipico archivos hosts.cfg | ||
+ | |||
+ | < | ||
+ | define host{ | ||
+ | use | ||
+ | host_name | ||
+ | hostgroup_name | ||
+ | alias SAP SERVER | ||
+ | address | ||
+ | parents | ||
+ | contact_groups | ||
+ | max_check_attempts | ||
+ | notification_interval | ||
+ | notification_period | ||
+ | notification_options | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | define host{ | ||
+ | use | ||
+ | host_name | ||
+ | hostgroup_name | ||
+ | alias | ||
+ | address | ||
+ | parents | ||
+ | contact_groups | ||
+ | max_check_attempts | ||
+ | notification_interval | ||
+ | notification_period | ||
+ | notification_options | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **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/ | ||
+ | |||
+ | === 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 | ||
+ | |||
+ | < | ||
+ | define hostextinfo{ | ||
+ | host_name | ||
+ | notes | ||
+ | icon_image | ||
+ | icon_image_alt | ||
+ | vrml_image | ||
+ | statusmap_image oracle.gd2 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | define hostextinfo{ | ||
+ | host_name | ||
+ | notes | ||
+ | icon_image | ||
+ | icon_image_alt | ||
+ | vrml_image | ||
+ | statusmap_image {logo para ver en el mapa 2D} | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **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/ | ||
+ | |||
+ | Para convertir una imagen png comun a un icono gd2 (necesario para la generacion del grafico de statusmap 2D) debemos ejecutar el siguiente comando: | ||
+ | |||
+ | < | ||
+ | pngtogd2 mi-icono.png mi-icono.gd2 | ||
+ | </ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | < | ||
+ | | ||
+ | host_name | ||
+ | dependent_host_name | ||
+ | notification_failure_criteria | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | | ||
+ | host_name | ||
+ | dependent_host_name | ||
+ | notification_failure_criteria | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **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// | ||
+ | < | ||
+ | define timeperiod{ | ||
+ | timeperiod_name 24x7 | ||
+ | alias 24 Hours A Day, 7 Days A Week | ||
+ | sunday | ||
+ | monday | ||
+ | tuesday | ||
+ | wednesday | ||
+ | thursday | ||
+ | friday | ||
+ | saturday | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | //Chequeos en las horas laborales lunes a viernes de 9 a 17// | ||
+ | < | ||
+ | define timeperiod{ | ||
+ | timeperiod_name workhours | ||
+ | alias | ||
+ | monday | ||
+ | tuesday | ||
+ | wednesday | ||
+ | thursday | ||
+ | friday | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | //Chequeos sin tiempos, o sea no chequea en ningún momento// | ||
+ | < | ||
+ | # ' | ||
+ | define timeperiod{ | ||
+ | timeperiod_name none | ||
+ | alias No Time Is A Good Time | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | //En ciertos dias feriados excluir el chequeo servicios, ej Navidad, Año nuevo etc// | ||
+ | < | ||
+ | define timeperiod{ | ||
+ | name us-holidays | ||
+ | timeperiod_name | ||
+ | alias U.S. Holidays | ||
+ | january 1 | ||
+ | monday -1 may | ||
+ | july 4 00: | ||
+ | monday 1 september | ||
+ | thursday -1 november | ||
+ | december 25 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | //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// | ||
+ | < | ||
+ | define timeperiod{ | ||
+ | timeperiod_name 24x7_sans_holidays | ||
+ | alias 24x7 Sans Holidays | ||
+ | use | ||
+ | sunday | ||
+ | monday | ||
+ | tuesday | ||
+ | wednesday | ||
+ | thursday | ||
+ | friday | ||
+ | saturday | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | //Otra manera de evitar tiempos de chequeo es con la directiva exclude// | ||
+ | |||
+ | // Como ejemplo podemos definir 3 timeperiods// | ||
+ | |||
+ | < | ||
+ | define timeperiod{ | ||
+ | name weekdays | ||
+ | timeperiod_name | ||
+ | monday | ||
+ | tuesday | ||
+ | wednesday | ||
+ | thursday | ||
+ | friday | ||
+ | } | ||
+ | define timeperiod{ | ||
+ | name weekends | ||
+ | timeperiod_name | ||
+ | saturday | ||
+ | sunday | ||
+ | } | ||
+ | define timeperiod{ | ||
+ | name holidays | ||
+ | timeperiod_name | ||
+ | january 1 | ||
+ | 2008-03-23 | ||
+ | 2009-04-12 | ||
+ | monday -1 may | ||
+ | july 4 00: | ||
+ | monday 1 september | ||
+ | thursday 4 november | ||
+ | december 25 | ||
+ | december 31 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | //Ahora definimos un timeperiod llamadas por ejemplo, incluya los dias de la semana, pero excluya los dias festivos// | ||
+ | |||
+ | < | ||
+ | define timeperiod{ | ||
+ | timeperiod_name llamadas | ||
+ | use weekdays ; | ||
+ | exclude holidays ; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | // | ||
+ | |||
+ | < | ||
+ | define timeperiod{ | ||
+ | timeperiod_name john-oncall | ||
+ | 2007-08-01 / 2 00: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | //En la entrada del contacto deberemos especificarle los timeperiods para hosts y servicios// | ||
+ | < | ||
+ | define contact{ | ||
+ | contact_name john | ||
+ | ... | ||
+ | host_notification_period john-oncall | ||
+ | service_notification_period john-oncall | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 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 | ||
+ | |||
+ | < | ||
+ | define command{ | ||
+ | command_name check_snmp_mem | ||
+ | command_line $USER1$/ | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | define command{ | ||
+ | command_name {nombre del comando} | ||
+ | command_line {datos de ejecucion} | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **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$** | ||
+ | |||
+ | **$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}/ | ||
+ | |||
+ | |||
+ | |||
+ | ==== 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, | ||
+ | |||
+ | |||
+ | A continuación podemos ver una configuración típica de un grupo de contactos | ||
+ | |||
+ | < | ||
+ | | ||
+ | contactgroup_name | ||
+ | alias | ||
+ | members | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | | ||
+ | contactgroup_name | ||
+ | alias | ||
+ | members | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **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}/ | ||
+ | |||
+ | |||
+ | === 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 | ||
+ | |||
+ | |||
+ | < | ||
+ | | ||
+ | contact_name | ||
+ | alias Administrador Nagios | ||
+ | contactgroups | ||
+ | service_notification_period | ||
+ | host_notification_period | ||
+ | service_notification_options | ||
+ | host_notification_options | ||
+ | service_notification_commands | ||
+ | host_notification_commands | ||
+ | email root@localhost | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | | ||
+ | contact_name | ||
+ | alias {descripcion del contacto} | ||
+ | contactgroups | ||
+ | service_notification_period | ||
+ | host_notification_period | ||
+ | service_notification_options | ||
+ | host_notification_options | ||
+ | service_notification_commands | ||
+ | host_notification_commands | ||
+ | email {direccion de email del contacto} | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **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}/ | ||
manuales/nagios/capacitacion/implementacion_tecnica.txt · Última modificación: 2017/07/21 15:54 por cayu