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 | ||
| manuales:nagios:capacitacion:implementacion_tecnica [2015/10/22 17:19] – cayu | manuales: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 : | ||
| < | < | ||
| + | ./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 157: | Línea 141: | ||
| * python-nagiosplugin | * python-nagiosplugin | ||
| * python3-nagiosplugin | * python3-nagiosplugin | ||
| - | * libnagios-plugin-perl | + | * libnagios-plugin-perl |
| 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$=/ | ||
| + | |||
| + | # 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.1445534367.txt.gz · Última modificación: 2015/10/22 17:19 por cayu
