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:14] – [Instalación de Nagios manual] 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 |
| Nótese que no se realizó la instalación del servidor Web, lo máximo a dejar en el mismo servidor de Nagios es un **MTA** para notificaciones, | Nótese que no se realizó la instalación del servidor Web, lo máximo a dejar en el mismo servidor de Nagios es un **MTA** para notificaciones, | ||
| + | |||
| + | |||
| + | ===== Configuración ===== | ||
| + | |||
| + | Ahora nos referiremos a la configuración de los elementos instalados para su posterior // | ||
| + | |||
| + | |||
| + | ==== Implementación ==== | ||
| + | |||
| + | Para el correcto funcionamiento de Nagios, y asegurar escalabilidad con orden, se debe seguir una estructura de configuración y tener previamente planteados temas como: | ||
| + | |||
| + | |||
| + | * Definición una estructura de archivos y directorios acorde a la situación, haciéndolo a su vez mas entendible para su posterior administración | ||
| + | * Configurar Apache para su permitir su acceso via web por HTTP o HTTPS | ||
| + | * En la mayoría de los equipos a monitorear mientras fuera posible instalar y dejar corriendo los servicios de SNMP | ||
| + | * Configurar servicio de envío de emails | ||
| + | * Definir grupos de contactos a los cuales se les enviarían los avisos de notificaciones, | ||
| + | * Definir grupos de hosts y servicios, al tenerlos agrupados y verlos mas facilmente | ||
| + | |||
| + | |||
| + | //A continuación se detalla como llevar a cabo dichos pasos necesarios para su implementación.// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== En el servidor ==== | ||
| + | |||
| + | Configuraciones necesarias en el servidor de monitoreo. | ||
| + | |||
| + | ==== Nagios ==== | ||
| + | |||
| + | Algunos puntos basicos previos a la instalacion : | ||
| + | |||
| + | |||
| + | * **PATH** Esta es la ruta de instalación. Por defecto es / | ||
| + | * **Usuario** Usuario que va a usar nagios par ejecutarse. Debe crearse con adduser especificarle el PATH de Nagios como //su directorio home de inicio//, usualmente deberemos llamarlo nagios y debe estar dentro del grupo nagios | ||
| + | * **Grupo** Grupo de usuario que va a usar Nagios. Este grupo tendrá permisos sobre todos los ficheros y directorios de Nagios. Por defecto es nagios. Puede crearse con groupadd. | ||
| + | * **URL** Nagios utiliza una interfaz web para ejecutarse. Esta URL determina cual va a ser el directorio virtual que debe usar para instalarse. Por defecto /nagios, es decir, las peticiones irán dirigidas a http:// | ||
| + | |||
| + | |||
| + | |||
| + | == Estructura de archivos == | ||
| + | |||
| + | |||
| + | Una vez que compilamos e instalamos el paquete Nagios nos termina quedando una nomenclatura de directorios como la siguiente : | ||
| + | |||
| + | |||
| + | * **bin** | ||
| + | * //Aqui se almacenan los binarios ejecutables// | ||
| + | |||
| + | * **etc** | ||
| + | * //Guarda la configuracion de Nagios// | ||
| + | |||
| + | * **libexec** | ||
| + | * //Se almacenan los plugins que efectuaran los chequeos a monitorear// | ||
| + | |||
| + | * **sbin** | ||
| + | * //Dentro de este directorio se mantienen los ejecutables CGI de la interfaz web// | ||
| + | |||
| + | * **share** | ||
| + | * //Organiza el contenido web a mostrar, iconos, html, php etc// | ||
| + | |||
| + | * **var** | ||
| + | * //Guarda los datos de ejecucion del monitoreo, estado de servicios, hosts, y logs// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | **bin** | ||
| + | |||
| + | Dentro de este directorio encontramos los ejecutable principales, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | **etc** | ||
| + | |||
| + | Este directorio guarda la configuración de Nagios, sus componentes, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | **libexec** | ||
| + | |||
| + | Alli se contienen lo ejecutables de los plugins que efectuan los chequeos, SNMP, SAP, Oracle, SSH, que pueden ser binarios, scripts en Perl, PHP, Shell, Java, etc. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | **sbin** | ||
| + | |||
| + | Aqui se almacenan los ejecutables cgi que se ejecutaran para la visualizacion por web de la consola Nagios. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | **share** | ||
| + | |||
| + | Aqui encontramos el contenido web, imagenes, logos, los aditivos como PNP, Nagvis y los datos que necesitan para funcionar estos. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | **var** | ||
| + | |||
| + | Aqui se guardan los datos internos de Nagios, estadisticas de los chequeos, informacion de ejecucion actual, archivos de sockets, registros de logs, colas de ejecución de chequeos. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Archivos de configuracion nagios/etc === | ||
| + | |||
| + | |||
| + | **cgi.cfg** | ||
| + | |||
| + | * //Definir archivo de configuracion principal de Nagios// | ||
| + | * main_config_file=/ | ||
| + | * //Ruta donde se ubican los archivos a mostrar via web// | ||
| + | * physical_html_path=/ | ||
| + | * //Ruta del url a donde ubicar Nagios desde el navegador// | ||
| + | * url_html_path=/ | ||
| + | * //Mostrar o no el icono de ayuda en la interfaz web// | ||
| + | * show_context_help=0 | ||
| + | * //Mostrar objetos pendientes de chequeo// | ||
| + | * use_pending_states=1 | ||
| + | * //Usar autenticacion para acceder a Nagios// | ||
| + | * use_authentication=1 | ||
| + | * //Tener usuario logueado por default (no recomendado, | ||
| + | * # | ||
| + | * //Usuarios con acceso permitido para ver la informacion de objetos (separados por comas)// | ||
| + | * authorized_for_system_information=nagiosadmin | ||
| + | * //Usuarios con acceso permitido para ver la informacion de configuracion (separados por comas)// | ||
| + | * authorized_for_configuration_information=nagiosadmin | ||
| + | * //Usuarios con acceso permitido ejecucion de comandos nagios (separados por comas)// | ||
| + | * authorized_for_system_commands=nagiosadmin | ||
| + | * //Usuarios permitidos a ver informacion de hosts y servicios (separados por comas)// | ||
| + | * authorized_for_all_services=nagiosadmin | ||
| + | * authorized_for_all_hosts=nagiosadmin | ||
| + | * //Usuarios permitidos para ejecutar comandos sobre hosts y servicios (separados por comas)// | ||
| + | * authorized_for_all_service_commands=nagiosadmin | ||
| + | * authorized_for_all_host_commands=nagiosadmin | ||
| + | * //Tasa de refresco para la interfaz web en segundos// | ||
| + | * refresh_rate=90 | ||
| + | |||
| + | |||
| + | **htpasswd.users** | ||
| + | |||
| + | * Archivo con passwords encriptadas de los usuarios que se autentificaran por HTTP | ||
| + | |||
| + | **nagios.cfg** | ||
| + | |||
| + | * Archivo de configuracion principal de Nagios, aqui se especifican los directorios de trabajo y se incluyen los archivos de configuracion extra a utilizar por Nagios | ||
| + | * Con diversos parametros : | ||
| + | * **log_file** se especifica el archivo de log a utilizar por Nagios | ||
| + | * **cfg_file** se especifica un archivo de configuracion extra a incluir en la ejecucion de Nagios | ||
| + | * **cfg_dir** | ||
| + | * **log_archive_path** path donde se alojaran los archivos de log | ||
| + | * **use_syslog** integracion con syslog | ||
| + | |||
| + | **ndo2db.cfg** | ||
| + | * Archivo de configuracion del daemon que se encarga de introducir las consultar generadas por el modulo ndomod | ||
| + | |||
| + | **ndomod.cfg** | ||
| + | * Modulo de Nagios que se encarga de traducir la informacion de ejecucion de Nagios en consultas MySQL, disponiendolas por medio de un socket | ||
| + | |||
| + | **resource.cfg** | ||
| + | * Archivo de configuracion donde se definen macros de ejecucion | ||
| + | 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/ | ||
| + | * Directorio de archivos generales de configuracion | ||
| + | |||
| + | **objects/ | ||
| + | * Definicion de comandos de ejecucion por default, con los alias que queremos usar | ||
| + | |||
| + | **objects/ | ||
| + | * Definicion de contactos de notificacion | ||
| + | |||
| + | **objects/ | ||
| + | * Plantilla inicial para el chequeo del host local | ||
| + | |||
| + | **objects/ | ||
| + | * Plantilla de ejemplo de chequeo de impresoras por SNMP | ||
| + | |||
| + | **objects/ | ||
| + | * Plantilla de ejemplo de chequeo de switch por SNMP | ||
| + | |||
| + | **objects/ | ||
| + | * Plantillas generales de host, contactos, y servicios | ||
| + | |||
| + | **objects/ | ||
| + | * Plantilla inicial para definir periodos de chequeos, aquí se definen los rangos de tiempo donde son válidos el envío de alertas y las verificaciones de los servicios que están funcionando | ||
| + | |||
| + | **objects/ | ||
| + | * Plantilla de ejemplo de chequeo de equipos Windows | ||
| + | |||
| + | **services/ | ||
| + | * Aqui vamos a definir los servicios que usaremos en los chequeos. Se define la métrica o el servicio a monitorizar y el host/grupo de hosts sobre el que se ejecuta | ||
| + | |||
| + | **var/rw/** | ||
| + | * Alli se encuentra un archivo special de socket que realiza la comunicacion de los comando y ordenes de la interfaz web hacia nagios, como cambiar horarios de chequeo, deshabilitar notificaciones etc. | ||
| + | * El archivo que alli se encuentra // | ||
| + | caída o el reinicio del propio Nagios, etcétera. Para poder ejecutar este tipo de comandos es | ||
| + | necesario también configurar el sistema de una forma un tanto especial. No hay que olvidar que | ||
| + | al configurar Nagios de este modo se está permitiendo desde la web activar o desactivar opciones que en principio sólo estaban disponibles desde la consola del sistema. Para configurar Nagios de esta forma, hay que | ||
| + | editar el fichero principal // | ||
| + | < | ||
| + | check_external_commands=1 | ||
| + | command_check_interval=-1 | ||
| + | command_file=/ | ||
| + | </ | ||
| + | Lo que hará que Nagios active el chequeo para buscar comandos externos, con tanta | ||
| + | frecuencia como sea posible por el sistema y buscará los comandos en el archivo // | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | En el siguiente gráfico detalla la organización recomendada de la configuración de Nagios. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | Si por ejemplo tenemos estos dos casos : | ||
| + | |||
| + | |||
| + | **Nagios un país multiples provincias o localidades** | ||
| + | |||
| + | |||
| + | * **Buenos Aires** | ||
| + | * Lanús | ||
| + | * Florencio Varela | ||
| + | * CABA | ||
| + | * Olavarria | ||
| + | * Bahia Blanca | ||
| + | * **Santa Fe** | ||
| + | * Rosario | ||
| + | * **Neuquén** | ||
| + | * Zapala | ||
| + | * San Martin | ||
| + | |||
| + | En este caso, simplemente deberemos tener templates para hosts y servicios, que se dividan por tipo. Si es un servidor, equipo de red, scada etc. | ||
| + | |||
| + | **Nagios múltiples países y multiples provincias o localidades** | ||
| + | |||
| + | * **Argentina** | ||
| + | * Buenos Aires | ||
| + | * Neuquen | ||
| + | * Tucuman | ||
| + | * **Brasil** | ||
| + | * Rio | ||
| + | * Cajati | ||
| + | * **Paraguay** | ||
| + | * Ciudad del este | ||
| + | * Villa hayes | ||
| + | * **Portugal** | ||
| + | * Lisboa | ||
| + | |||
| + | En este caso algo mas complejo, deberemos tener templates para hosts divididos para cada país, templates para servicios divididos para cada país, templates para contactos divididos para cada país. | ||
| + | |||
| + | |||
| + | Siempre debemos utilizar templates para todo, porque cuando debemos hacer un cambio en masa es mucho mas simple y con menos posibilidad a errores. | ||
| + | |||
| + | |||
| + | ==== 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.1445534098.txt.gz · Última modificación: 2015/10/22 17:14 por cayu
