
PARTE IV
|_8. Monitorización en Nagios
|_ _8.1. Configuración de los chequeos de Nagios al localhost
|_ _8.2. Configuración de los chequeos de Nagios a hosts Linux
|_ _8.3. Configuración de los chequeos de Nagios a los Hypervisors
|_ _8.4. Configuración de los chequeos de Nagios a dispositivos de red
|_ _8.5. Configuración de los chequeos de Nagios a hosts Windows
|_ _8.6. Mostrando los resultados de los chequeos
8. Monitorización en Nagios
En este apartado se definirán las plantillas de configuración necesarias para monitorizar nuestra red. Ellas son las siguientes:
• localhost.cfg: Plantilla de configuración para monitorizar los servicios del propio servidor Nagios.
• hypervisor.cfg: Plantilla de configuración para monitorizar los servicios de las plataformas de virtualización.
• linux.cfg: Plantilla de configuración para monitorizar los servicios de los hosts Linux.
• windows.cfg: Plantilla de configuración para monitorizar los servicios de los hosts Windows.
• netdev.cfg: Plantilla de configuración para monitorizar los servicios de los dispositivos de red.
También crearemos cuatro una serie de grupos de monitorización:
• nagios-servers: Agrupa a todos los servidores nagios de nuestra red.
• hypervisors: Agrupa a nuestra infraestructura de virtualización.
• network-devices: Agrupa a los dispositivos de red.
• linux-servers: Agrupa a los servidores Linux (no necesariamente localhost ni los host hypervisors ni dispositivos de red, que también pueden ser host Linux).
• windows-servers: Agrupa a los servidores Windows.
• admins-stations: Agrupa a las estaciones de trabajo de los administradores, que se encuentran en Windows.
#===========================================================
NOTA:
Si vamos al fichero «/etc/nagios/objects/templates.cfg» veremos cinco plantillas predefinidas para los hosts:
• generic-host: Plantilla genérica que usan el resto de plantillas.
• linux-server: Plantilla para servidores Linux. Es la que se usa por defecto para Nagios (localhost).
• windows-server: Plantilla para servidores Windows.
• generic-printer: Plantilla para monitorizar impresoras.
• generic-switch: Plantilla para monitorizar switches.
Todas las plantillas son bastante similares, con algunas pequeñas modificaciones. De todos modos, intentaremos explicar brevemente algunas de las directivas más interesantes. Pero antes
dejaremos claro que muchas de estas directivas simplemente tienen como valor un “1” o un “0”. Si está en “1” es que esta activada, si está en “0” desactivada. Las directivas que no se usan estarán desactivadas, pero algunas otras tienen valores por defecto, para conocer mejor esto lo mejor es mirar la documentación de Nagios. Así mismo, como ya comentamos, una plantilla puede tener un valor para una directiva, pero cuando otra plantilla o host usa esa plantilla puede sobrescribir la directiva con un valor distinto.
Una vez aclarado esto veamos algunas de las distintas directivas:
• name: Nombre utilizado para la directiva.
• notifications_enabled: Si esta activada enviará notificaciones al o los contactos definidos.
• flap_detection_enabled: Habilita o no la detección de “flapping”. Ahora veremos brevemente qué es.
• notification_period: Especifica el nombre del “time period” en el que se permite el envío de notificaciones.
• Register: Se usa únicamente con las plantillas y su valor debe ser “0”.
Antes de seguir avanzando, sería oportuno realizar una explicación rápida de algunas cosas.
• Las notificaciones son mensajes de alertas enviados a un contacto cuando sucede algo. Por ejemplo, si un host se apaga o falla un servicio, es posible configurar que se envíe una notificación a
uno o más contactos vía email, sms, mensajería instantánea etc…
• El flapping es un estado especial que tienen los hosts y los servicios. Básicamente podemos decir que esto ocurre cuando su estado cambia muchas veces en poco tiempo. Por ejemplo, cuando lo
reiniciamos varias veces en poco tiempo. Una de las ventajas de esto es que cuando sucede no se envían notificaciones. Imagina lo molesto que es recibir muchas notificaciones en poco tiempo por
un equipo que estamos reiniciando.
• Los time periods se definen en el fichero “timeperiods.cfg” y pueden ser usados para definir cuando queremos que se monitorice un equipo, o cuando queremos que se envíen notificaciones.
#======================================================
En “nagios-debian9”:
Definiendo el host «linux.cfg»:
1 | nano /etc/nagios/nagios.cfg |
Debajo de la sección “OBJECT CONFIGURATION FILE(S)” añadimos la referencia a los que serán nuestros ficheros de configuración:
1 2 3 4 5 6 7 8 9 10 11 | # Definitions for monitoring a Linux machine cfg_file=/etc/nagios/objects/linux.cfg # Definitions for monitoring the virtualization plattfomr host cfg_file=/etc/nagios/objects/hypervisor.cfg # Definitions for monitoring a Linux machine cfg_file=/etc/nagios/objects/linux.cfg # Definitions for monitoring the network devices cfg_file=/etc/nagios/objects/netdev.cfg |
Aprovechamos para editar el directorio de los logs de nagios, por el siguiente:
1 | log_file=/var/log/nagios.log |
Hacemos una salva del fichero «/etc/nagios/objects/localhost.cfg»:
1 | cp /etc/nagios/objects/localhost.cfg /etc/nagios/objects/localhost.cfg.save |
8.1. Configuración de los chequeos de Nagios al localhost
En “nagios-debian9”:
Editamos el fichero de configuración del localhost (nagios-debian9):
1 | nano /etc/nagios/objects/localhost.cfg |
Borramos todo y agregamos lo siguiente (adaptando a su red):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | ############################################################################### ############################################################################### # # HOST DEFINITION # ############################################################################### ############################################################################### define host{ use linux-server host_name nagios-debian9 alias Nagios address 127.0.0.1 icon_image_alt GNU/Linux icon_image nagios-logo.png vrml_image nagios-logo.png statusmap_image nagios-logo.png } ############################################################################### ############################################################################### # # HOST GROUP DEFINITION # ############################################################################### ############################################################################### define hostgroup{ hostgroup_name nagios-servers ; The name of the hostgroup alias Nagios Servers ; Long name of the group members nagios-debian9 ; Comma separated list of hosts that belong to this group } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS FOR LOCALHOST (NAGIOS) # ############################################################################### ############################################################################### ####################### # SERVICIOS GENERICOS # ####################### # Define a service to check the swap usage the local machine. # Critical if less than 10% of swap is free, warning if less than 20% is free define service{ use generic-service ; Name of service template to use host_name nagios-debian9 service_description Swap Usage check_command check_local_swap!20!10 } # Define a service to check SSH on the local machine. # Disable notifications for this service by default, as not all users may have SSH enabled. define service{ use generic-service ; Name of service template to use host_name nagios-debian9 service_description SSH check_command check_ssh notifications_enabled 0 } # Define a service to check the disk space of the root partition # on the local machine. Warning if < 20% free, critical if # < 10% free space on partition. define service{ use generic-service ; Name of service template to use host_name nagios-debian9 service_description Root Partition check_command check_local_disk!20%!10%!/ } # Define a service to check the number of currently logged in # users on the local machine. Warning if > 2 users, critical # if > 5 users. define service{ use generic-service ; Name of service template to use host_name nagios-debian9 service_description Current Users check_command check_local_users!2!5 } # Define a service to check the number of currently running procs # on the local machine. Warning if > 250 processes, critical if # > 400 users. define service{ use generic-service ; Name of service template to use host_name nagios-debian9 service_description Total Processes check_command check_local_procs!250!400!RSZDT } # Define a service to check the load on the local machine. define service{ use generic-service ; Name of service template to use host_name nagios-debian9 service_description Current Load check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 } ######################### # SERVICIOS ESPECIFICOS # ######################### # Define a service to check HTTP on the local machine. # Disable notifications for this service by default, as not all users may have HTTP enabled. define service{ use generic-service ; Name of service template to use host_name nagios-debian9 service_description HTTP check_command check_http notifications_enabled 0 } # Define un servicio para obtener la descripcion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name nagios-debian9 service_description System Description check_command check_snmp!127.0.0.1!sysDescr.0!3!SHA!authPriv!AES!nagios!nagioskey!nagioskey } # Define un servicio para obtener la localizacion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name nagios-debian9 service_description Location check_command check_snmp!127.0.0.1!sysLocation.0!3!SHA!authPriv!AES!nagios!nagioskey!nagioskey } # Define un servicio para obtener la informacion de contacto del administrador del dispositivo define service { use generic-service ; Inherit values from a template host_name nagios-debian9 service_description Contact check_command check_snmp!127.0.0.1!sysContact.0!3!SHA!authPriv!AES!nagios!nagioskey!nagioskey } # Define un servicio para obtener la descripcion de las interfaces de red define service { use generic-service ; Inherit values from a template host_name nagios-debian9 service_description Description eth0 check_command check_snmp!127.0.0.1!ifDescr.2!3!SHA!authPriv!AES!nagios!nagioskey!nagioskey } # Define un servicio para obtener el estado operacional de las interfaces de red #ifOperStatus da valor "1" si la interfaz esta "IP" #ifOperStatus da valor "2" si la interfaz esta "DOWN" #Con estos datos podemos crear una alerta cuando este "DOWN" la interfaz #Critical: si > 1 (-c :1, significa que todo lo que sea 1 o menor, no sera critico) define service { use generic-service ; Inherit values from a template host_name nagios-debian9 service_description Link Status eth0 check_command check_snmp!127.0.0.1!ifOperStatus.2!3!SHA!authPriv!AES!nagios!nagioskey!nagioskey -c :1 } # Define un servicio para obtener la velocidad de las interfaces de red define service { use generic-service ; Inherit values from a template host_name nagios-debian9 service_description Speed eth0 check_command check_snmp!127.0.0.1!ifSpeed.2!3!SHA!authPriv!AES!nagios!nagioskey!nagioskey } |
Reiniciamos el servicio de nagios:
1 | systemctl restart nagios.service |
8.2. Configuración de los chequeos de Nagios a hosts Linux
Editaremos el fichero “linux.cfg”, para adecuarlo a nuestros hosts Linux. Lo haremos con la posibilidad de que nrpe envíe comandos con argumentos, sin ser necesariamente el propio localhost (nagios), el host Linux a chequear. En este ejemplo, se tendrán en cuenta las siguientes consideraciones:
• El host FW1 (fw1-debian9) debe tener configurado múltiples servidores ovpnN. Si no se tiene esta estructura, entonces FW1 deberá enrutar el tráfico de la subred de gestión con el resto de la red. Ya no se tendría el principio de una gestión segura (por cifrado de la VPN) y aislada (por no ser enrutable). A continuación, se muestran las interfaces de FW1:
• Nagios tendrá la siguiente configuración de red (adapte a su entorno):
• Nagios monitorizará servicios de los hosts Linux sin comandos NRPE para: localhost (nagios).
• Nagios monitorizará servicios de los hosts Linux mediante comandos NRPE con argumentos y chequeos directos para: pve1-debian9, fw1-debian9, “hostmaster-pc” y el resto de host Linux y Windows que se vayan agregando con el tiempo.
• Nagios monitorizará el SNMP de los dispositivos de interconexión de red, mediante comandos NRPE con argumentos y chequeos indirectos para: fw2-vyos1.2.0-rc8, fw3-vyos1.2.0-rc8, a través de “fw1-debian9”. Esto se debe a que, los dispositivos de red generalmente son dispositivos físicos que no tienen implementado un cliente OpenVPN (necesario para la comunicación de agente-gestor de la red propuesta en este tutorial).
• También monitorizará su propia información SNMP, así como la de los hosts que esté monitorizando (no necesariamente dispositivos de red).
• La información SNMP aportará los siguientes datos:
o sysDescr: Descripción del sistema.
o sysLocation: Localización del servidor o dispositivo de red.
o sysContact: Contacto del administrador.
o ifDescr: Descripción de la interfaz de red.
o ifOperStatus: Estado operacional de la interfaz de red.
o ifSpeed: velocidad de la interfaz de red.
En “nagios-debian9”:
Comenzamos a configurar la monitorización a realizar por nagios:
1 | nano /etc/nagios/objects/linux.cfg |
Borramos todo y agregamos lo siguiente (adaptando a su red):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 | ############################################################################### ############################################################################### # # HOST DEFINITION # ############################################################################### ############################################################################### define host{ use linux-server host_name netprofana-debian9 alias Netdata+Prometheus+Grafana address 192.168.100.5 icon_image_alt GNU/Linux icon_image linux40.png vrml_image linux40.png statusmap_image linux40.gd2 } define host{ use linux-server host_name ftp2-debian9 alias FTP DMZ address 192.168.20.81 icon_image_alt GNU/Linux icon_image linux40.png vrml_image linux40.png statusmap_image linux40.gd2 } ############################################################################### ############################################################################### # # HOST GROUP DEFINITION # ############################################################################### ############################################################################### define hostgroup{ hostgroup_name linux-servers ; The name of the hostgroup alias Linux Servers ; Long name of the group members netprofana-debian9,ftp2-debian9 ; Comma separated list of hosts that belong to this group } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS FOR HOSTGROUPS # ############################################################################### ############################################################################### # Define un servicio para chequear el uso de la swap en el host. # Warning: si es < 20% de swap libre # Critical: si es < 10% de swap libre define service{ use generic-service,graphed-service hostgroup_name linux-servers service_description Swap Usage check_command check_nrpe!check_swap!-a 20 10 } # Define un servicio para chequear si esta habilitado o no el SSH. # Critical: si no esta habilitado define service{ use generic-service hostgroup_name linux-servers service_description SSH check_command check_nrpe!check_ssh!-a 127.0.0.1 } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS FOR LINUX HOSTS # ############################################################################### ############################################################################### ############################################################################### # netprofana-debian9 ############################################################################### ####################### # SERVICIOS GENERICOS # ####################### # Define un servicio para chequear el espacio en disco de la particion # root del host. # Warning: cuando queden 1024MB de espacio libre # Critical: cuando queden 512MB de espacio libre define service{ use generic-service,graphed-service host_name netprofana-debian9 service_description Root Partition check_command check_nrpe!check_disk!-a 1024 512 / } # Define un servicio para chequear el numero de usuarios logueados en el # sistema del host. # Warning: si es > 2 # Critical: si es > 5 define service{ use generic-service,graphed-service host_name netprofana-debian9 service_description Current Users check_command check_nrpe!check_users!-a 1 5 } # Define un servicio para chequear el numero de procesos actuales # que corren en el sistema. # Warning: si el total es > 200 # Critical: si el total es > 400 define service{ use generic-service,graphed-service host_name netprofana-debian9 service_description Total Processes check_command check_nrpe!check_procs!-a 500 800 } # Define un servicio para chequear el average de la carga del sistema, # por nucleo. # Warning: si el average es > 5.0,4.0,3.0 # Critical: si el average es > 10.0,6.0,4.0 define service{ use generic-service,graphed-service host_name netprofana-debian9 service_description Current Load check_command check_nrpe!check_load!-a 5.0,4.0,3.0 10.0,6.0,4.0 } ######################### # SERVICIOS ESPECIFICOS # ######################### # Define un servicio para obtener la descripcion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name netprofana-debian9 service_description System Description check_command check_nrpe!check_snmp!-a 192.168.100.5 sysDescr.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la localizacion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name netprofana-debian9 service_description Location check_command check_nrpe!check_snmp!-a 192.168.100.5 sysLocation.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la informacion de contacto del administrador del dispositivo define service { use generic-service ; Inherit values from a template host_name netprofana-debian9 service_description Contact check_command check_nrpe!check_snmp!-a 192.168.100.5 sysContact.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la descripcion de las interfaces de red define service { use generic-service ; Inherit values from a template host_name netprofana-debian9 service_description Description eth0 check_command check_nrpe!check_snmp!-a 192.168.100.5 ifDescr.2 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener el estado operacional de las interfaces de red #ifOperStatus da valor "1" si la interfaz esta "IP" #ifOperStatus da valor "2" si la interfaz esta "DOWN" #Con estos datos podemos crear una alerta cuando este "DOWN" la interfaz #Critical: si > 1 (-c :1, significa que todo lo que sea 1 o menor, no sera critico) define service { use generic-service ; Inherit values from a template host_name netprofana-debian9 service_description Link Status eth0 check_command check_nrpe!check_snmp_ifOperStatus!-a 192.168.100.5 ifOperStatus.2 3 MD5 authPriv AES nagios nagioskey nagioskey :1 } # Define un servicio para obtener la velocidad de las interfaces de red define service { use generic-service ; Inherit values from a template host_name netprofana-debian9 service_description Speed eth0 check_command check_nrpe!check_snmp!-a 192.168.100.5 ifSpeed.2 3 SHA authPriv AES nagios nagioskey nagioskey } ############################################################################### # ftp2-debian9 ############################################################################### ####################### # SERVICIOS GENERICOS # ####################### # Define un servicio para chequear el espacio en disco de la particion # root del host. # Warning: cuando queden 1024MB de espacio libre # Critical: cuando queden 512MB de espacio libre define service{ use generic-service,graphed-service host_name ftp2-debian9 service_description Root Partition check_command check_nrpe!check_disk!-a 1024 512 / } # Define un servicio para chequear el numero de usuarios logueados en el # sistema del host. # Warning: si es > 2 # Critical: si es > 5 define service{ use generic-service,graphed-service host_name ftp2-debian9 service_description Current Users check_command check_nrpe!check_users!-a 1 5 } # Define un servicio para chequear el numero de procesos actuales # que corren en el sistema. # Warning: si el total es > 200 # Critical: si el total es > 400 define service{ use generic-service,graphed-service host_name ftp2-debian9 service_description Total Processes check_command check_nrpe!check_procs!-a 500 800 } # Define un servicio para chequear el average de la carga del sistema, # por nucleo. # Warning: si el average es > 5.0,4.0,3.0 # Critical: si el average es > 10.0,6.0,4.0 define service{ use generic-service,graphed-service host_name ftp2-debian9 service_description Current Load check_command check_nrpe!check_load!-a 5.0,4.0,3.0 10.0,6.0,4.0 } ######################### # SERVICIOS ESPECIFICOS # ######################### # Chequeo directo de Nagios a nas1-omv4.1.22 # # Define un servicio para obtener la descripcion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name ftp2-debian9 service_description System Description check_command check_nrpe!check_snmp!-a 192.168.20.81 sysDescr.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la localizacion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name ftp2-debian9 service_description Location check_command check_nrpe!check_snmp!-a 192.168.20.81 sysLocation.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la informacion de contacto del administrador del dispositivo define service { use generic-service ; Inherit values from a template host_name ftp2-debian9 service_description Contact check_command check_nrpe!check_snmp!-a 192.168.20.81 sysContact.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la descripcion de las interfaces de red define service { use generic-service ; Inherit values from a template host_name ftp2-debian9 service_description Description eth0 check_command check_nrpe!check_snmp!-a 192.168.20.81 ifDescr.2 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener el estado operacional de las interfaces de red #ifOperStatus da valor "1" si la interfaz esta "IP" #ifOperStatus da valor "2" si la interfaz esta "DOWN" #Con estos datos podemos crear una alerta cuando este "DOWN" la interfaz #Critical: si > 1 (-c :1, significa que todo lo que sea 1 o menor, no sera critico) define service { use generic-service ; Inherit values from a template host_name ftp2-debian9 service_description Link Status eth0 check_command check_nrpe!check_snmp_ifOperStatus!-a 192.168.20.81 ifOperStatus.2 3 MD5 authPriv AES nagios nagioskey nagioskey :1 } # Define un servicio para obtener la velocidad de las interfaces de red define service { use generic-service ; Inherit values from a template host_name ftp2-debian9 service_description Speed eth0 check_command check_nrpe!check_snmp!-a 192.168.20.81 ifSpeed.2 3 SHA authPriv AES nagios nagioskey nagioskey } |
Reiniciamos el servicio de nagios:
1 | systemctl restart nagios.service |
8.3. Configuración de los chequeos de Nagios a los Hypervisors
En “nagios-debian9”:
Los hypervisors de nuestra red son Proxmox VE 5.4-3, sobre S.O. Debian 9, por lo que se pueden considerar como host Linux también. Lo separamos de los demás hosts porque pudieran ser ESXi u otra plataforma de virtualización.
Comenzamos a configurar la monitorización a realizar por nagios:
1 | nano /etc/nagios/objects/hypervisor.cfg |
Borramos todo y agregamos lo siguiente (adaptando a su red):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | ############################################################################### ############################################################################### # # HOST DEFINITION # ############################################################################### ############################################################################### define host{ use linux-server host_name pve1-proxmox5.4-3 alias Proxmox VE 5.4-3 address 192.168.100.2 icon_image_alt GNU/Linux icon_image pve-logo.png vrml_image pve-logo.png statusmap_image pve-logo.png } ############################################################################### ############################################################################### # # HOST GROUP DEFINITION # ############################################################################### ############################################################################### define hostgroup{ hostgroup_name hypervisors ; The name of the hostgroup alias Hypervisors ; Long name of the group members pve1-proxmox5.4-3 ; Comma separated list of hosts that belong to this group } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS FOR HOSTGROUPS # ############################################################################### ############################################################################### # Define un servicio para chequear el uso de la swap en el host. # Warning: si es < 20% de swap libre # Critical: si es < 10% de swap libre define service{ use generic-service hostgroup_name hypervisors service_description Swap Usage check_command check_nrpe!check_swap!-a 20 10 } # Define un servicio para chequear si esta habilitado o no el SSH. # Critical: si no esta habilitado define service{ use generic-service hostgroup_name hypervisors service_description SSH check_command check_nrpe!check_ssh!-a 127.0.0.1 } # Define un servicio que muestre el tiempo que lleva encendido el servidor define service{ use local-service ; Name of service template to use hostgroup_name hypervisors service_description Uptime check_command check_nrpe!check_uptime } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS FOR HYPERVISORS HOSTS # ############################################################################### ############################################################################### ############################################################################### # pve1-debian9 ############################################################################### ####################### # SERVICIOS GENERICOS # ####################### # Define un servicio para chequear el espacio en disco de la particion # root del host. # Warning: cuando queden 1024MB de espacio libre # Critical: cuando queden 512MB de espacio libre define service{ use generic-service host_name pve1-proxmox5.4-3 service_description Root Partition check_command check_nrpe!check_disk!-a 1024 512 / } # Define un servicio para chequear el numero de usuarios logueados en el # sistema del host. # Warning: si es > 2 # Critical: si es > 5 define service{ use generic-service host_name pve1-proxmox5.4-3 service_description Current Users check_command check_nrpe!check_users!-a 1 5 } # Define un servicio para chequear el numero de procesos actuales # que corren en el sistema. # Warning: si el total es > 200 # Critical: si el total es > 400 define service{ use generic-service host_name pve1-proxmox5.4-3 service_description Total Processes check_command check_nrpe!check_procs!-a 500 800 } # Define un servicio para chequear el average de la carga del sistema, # por nucleo. # Warning: si el average es > 5.0,4.0,3.0 # Critical: si el average es > 10.0,6.0,4.0 define service{ use generic-service host_name pve1-proxmox5.4-3 service_description Current Load check_command check_nrpe!check_load!-a 5.0,4.0,3.0 10.0,6.0,4.0 } ######################### # SERVICIOS ESPECIFICOS # ######################### # Chequeo directo de Nagios a pve1-debian9 # # Define un servicio para obtener la descripcion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name pve1-proxmox5.4-3 service_description System Description check_command check_nrpe!check_snmp!-a 192.168.100.2 sysDescr.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la localizacion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name pve1-proxmox5.4-3 service_description Location check_command check_nrpe!check_snmp!-a 192.168.100.2 sysLocation.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la informacion de contacto del administrador del dispositivo define service { use generic-service ; Inherit values from a template host_name pve1-proxmox5.4-3 service_description Contact check_command check_nrpe!check_snmp!-a 192.168.100.2 sysContact.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la descripcion de las interfaces de red define service { use generic-service ; Inherit values from a template host_name pve1-proxmox5.4-3 service_description Description eth0 check_command check_nrpe!check_snmp!-a 192.168.100.2 ifDescr.2 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener el estado operacional de las interfaces de red #ifOperStatus da valor "1" si la interfaz esta "IP" #ifOperStatus da valor "2" si la interfaz esta "DOWN" #Con estos datos podemos crear una alerta cuando este "DOWN" la interfaz #Critical: si > 1 (-c :1, significa que todo lo que sea 1 o menor, no sera critico) define service { use generic-service ; Inherit values from a template host_name pve1-proxmox5.4-3 service_description Link Status eth0 check_command check_nrpe!check_snmp_ifOperStatus!-a 192.168.100.2 ifOperStatus.2 3 SHA authPriv AES nagios nagioskey nagioskey :1 } # Define un servicio para obtener la velocidad de las interfaces de red define service { use generic-service ; Inherit values from a template host_name pve1-proxmox5.4-3 service_description Speed eth0 check_command check_nrpe!check_snmp!-a 192.168.100.2 ifSpeed.2 3 SHA authPriv AES nagios nagioskey nagioskey } |
Reiniciamos el servicio de nagios:
1 | systemctl restart nagios.service |
8.4. Configuración de los chequeos de Nagios a dispositivos de red
En “nagios-debian9”:
Los dispositivos de red que se tendrán en nuestra red son VNFs basadas en VyOS, herederos del antiguo sistema de networking de Vyatta. Usar este sistema no es obligado, ustedes pueden emplear cualquiera. Esto es sólo un ejemplo.
Podrán notar, que los tres hosts a ser monitoreados por nagios en esta plantilla, respondne a la misma dirección IP, del host “fw1-debian9”. Esto se debe a que nagios sabe cómo alcanzar la IP de “fw1-debian9”, pero no la de los dispositivos de red, porque nagios está en una subred no enrutable (características propias de la infraestructura del ejemplo), por lo que se debe hacer uso de chequeos indirectos con nrpe, a través de “fw1-debian9”.
Comenzamos a configurar la monitorización a realizar por nagios:
1 | nano /etc/nagios/objects/linux.cfg |
Borramos todo y agregamos lo siguiente (adaptando a su red):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 | ############################################################################### ############################################################################### # # HOST DEFINITION # ############################################################################### ############################################################################### define host{ use generic-switch host_name fw1-debian9 alias FW1 address 192.168.100.1 icon_image_alt Firewall icon_image fw.png vrml_image fw.png statusmap_image fw.png } define host{ use generic-switch host_name fw2-vyos1.2.0-rc8 alias FW2 address 192.168.100.1 icon_image_alt Firewall icon_image fw.png vrml_image fw.png statusmap_image fw.png } define host{ use generic-switch host_name fw3-vyos1.2.0-rc8 alias FW3 address 192.168.100.1 icon_image_alt Firewall icon_image fw.png vrml_image fw.png statusmap_image fw.png } ############################################################################### ############################################################################### # # HOST GROUP DEFINITION # ############################################################################### ############################################################################### define hostgroup{ hostgroup_name network-devices ; The name of the hostgroup alias Netwok Devices ; Long name of the group members fw1-debian9,fw2-vyos1.2.0-rc8,fw3-vyos1.2.0-rc8 ; Comma separated list of hosts that belong to this group } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS FOR LINUX HOSTS # ############################################################################### ############################################################################### ############################################################################### # fw1-debian9 ############################################################################### ####################### # SERVICIOS GENERICOS # ####################### # Define un servicio para chequear el uso de la swap en el host. # Warning: si es < 20% de swap libre # Critical: si es < 10% de swap libre define service{ use generic-service host_name fw1-debian9 service_description Swap Usage check_command check_nrpe!check_swap!-a 20 10 } # Define un servicio para chequear si esta habilitado o no el SSH. # Critical: si no esta habilitado define service{ use generic-service host_name fw1-debian9 service_description SSH check_command check_nrpe!check_ssh!-a 127.0.0.1 } # Define un servicio para chequear el espacio en disco de la particion # root del host. # Warning: cuando queden 1024MB de espacio libre # Critical: cuando queden 512MB de espacio libre define service{ use generic-service host_name fw1-debian9 service_description Root Partition check_command check_nrpe!check_disk!-a 1024 512 / } # Define un servicio para chequear el numero de usuarios logueados en el # sistema del host. # Warning: si es > 2 # Critical: si es > 5 define service{ use generic-service host_name fw1-debian9 service_description Current Users check_command check_nrpe!check_users!-a 1 5 } # Define un servicio para chequear el numero de procesos actuales # que corren en el sistema. # Warning: si el total es > 200 # Critical: si el total es > 400 define service{ use generic-service host_name fw1-debian9 service_description Total Processes check_command check_nrpe!check_procs!-a 200 400 } # Define un servicio para chequear el average de la carga del sistema, # por nucleo. # Warning: si el average es > 5.0,4.0,3.0 # Critical: si el average es > 10.0,6.0,4.0 define service{ use generic-service host_name fw1-debian9 service_description Current Load check_command check_nrpe!check_load!-a 5.0,4.0,3.0 10.0,6.0,4.0 } ######################### # SERVICIOS ESPECIFICOS # ######################### # Define un servicio para obtener la descripcion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description System Description check_command check_nrpe!check_snmp!-a 127.0.0.1 sysDescr.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la localizacion del dispositivo de red define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Location check_command check_nrpe!check_snmp!-a 127.0.0.1 sysLocation.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la informacion de contacto del administrador del dispositivo define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Contact check_command check_nrpe!check_snmp!-a 127.0.0.1 sysContact.0 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener la descripcion de las interfaces de red define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Description eth0 check_command check_nrpe!check_snmp!-a 127.0.0.1 ifDescr.2 3 SHA authPriv AES nagios nagioskey nagioskey } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Description eth1 check_command check_nrpe!check_snmp!-a 127.0.0.1 ifDescr.3 3 SHA authPriv AES nagios nagioskey nagioskey } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Description eth2 check_command check_nrpe!check_snmp!-a 127.0.0.1 ifDescr.4 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener el estado operacional de las interfaces de red #ifOperStatus da valor "1" si la interfaz esta "IP" #ifOperStatus da valor "2" si la interfaz esta "DOWN" #Con estos datos podemos crear una alerta cuando este "DOWN" la interfaz #Critical: si > 1 (-c :1, significa que todo lo que sea 1 o menor, no sera critico) define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Link Status eth0 check_command check_nrpe!check_snmp_ifOperStatus!-a 127.0.0.1 ifOperStatus.2 3 SHA authPriv AES nagios nagioskey nagioskey :1 } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Link Status eth1 check_command check_nrpe!check_snmp_ifOperStatus!-a 127.0.0.1 ifOperStatus.3 3 SHA authPriv AES nagios nagioskey nagioskey :1 } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Link Status eth2 check_command check_nrpe!check_snmp_ifOperStatus!-a 127.0.0.1 ifOperStatus.4 3 SHA authPriv AES nagios nagioskey nagioskey :1 } # Define un servicio para obtener la velocidad de las interfaces de red define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Speed eth0 check_command check_nrpe!check_snmp!-a 127.0.0.1 ifSpeed.2 3 SHA authPriv AES nagios nagioskey nagioskey } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Speed eth1 check_command check_nrpe!check_snmp!-a 127.0.0.1 ifSpeed.3 3 SHA authPriv AES nagios nagioskey nagioskey } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description Speed eth2 check_command check_nrpe!check_snmp!-a 127.0.0.1 ifSpeed.4 3 SHA authPriv AES nagios nagioskey nagioskey } # Define un servicio para obtener el consumo de ancho de banda en la interfaz de red: #Warning: si el consumo llega a 80% #Critical: si el consumo llega a 90% define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description BW eth0 check_command check_nrpe!check_iftraffic64.pl! -a 127.0.0.1 172.16.12.2 m -B 1000 1000 1000 80 90 3 nagios nagioskey nagioskey SHA AES } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description BW eth1 check_command check_nrpe!check_iftraffic64.pl! -a 127.0.0.1 192.168.100.1 m -B 1000 1000 1000 80 90 3 nagios nagioskey nagioskey SHA AES } define service { use generic-service ; Inherit values from a template host_name fw1-debian9 service_description BW eth2 check_command check_nrpe!check_iftraffic64.pl! -a 127.0.0.1 192.168.2.1 m -B 1000 1000 1000 80 90 3 nagios nagioskey nagioskey SHA AES } ############################################################################### # fw2-vyos1.2.0-rc8 ############################################################################### # Define un servicio para chequear si esta habilitado o no el SSH. # Critical: si no esta habilitado define service{ use generic-service host_name & |