Definiendo servicios
En este paso definiremos qué parámetros vamos a monitorear. Para mantener un orden, mantendremos los servicios en diferentes archivos según sistema operativo.
Abrimos el archivo que nombramos como linux-services.cfg:
A continuación, incluimos en dicho archivo la configuración del equipo y servicios a monitorear:
###############################################################################
#
# DEFINICIÓN DE SERVICIOS - LINUX
#
###############################################################################
# Define el servicio ping
define service {
use generic-service ; Plantilla a utilizar
hostgroup_name linux-hosts ; Nombre del grupo de hosts
service_description Ping ; Descripción del servicio
check_command check_ping!100.0,20%!500.0,60% ; Definición del comando
}
# Define el servicio de chequeo de disco
define service {
use generic-service
hostgroup_name linux-hosts
service_description Estado del disco
check_command check_local_disk!20%!10%!/
}
# Define el servicio de monitoreo de cantidad de usuarios logueados
# Se disparan las siguientes alertas, según cantidad de usuarios:
# - Warning si hay más de 20 usuarios
# - Critical si hay más de 50 usuarios
define service {
use generic-service
hostgroup_name linux-hosts
service_description Usuarios logueados
check_command check_local_users!20!50
}
# Define el servicio que verifica el número de procesos actualmente activos.
# Se disparan las siguientes alertas:
# - Warning si hay más de 250 procesos
# - Critical si hay más de 400 procesos
define service {
use generic-service
hostgroup_name linux-hosts
service_description Procesos
check_command check_local_procs!250!400!RSZDT
}
# Define el servicio de chequeo de carga del procesador
define service {
use generic-service
hostgroup_name linux-hosts
service_description Carga del CPU
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}
# Define el servicio de chequeo de memoria swap.
# Se disparan las alertas:
# - Warning, si menos del 20% de memoria swap está libre
# - Critical si menos del 10% de memoria swap está libre
define service {
use generic-service
hostgroup_name linux-hosts
service_description Uso de Swap
check_command check_local_swap!20%!10%
}
# Define el servicio de chequeo de estado de SSH
# Notificaciones deshabilitadas por defecto.
define service {
use generic-service
hostgroup_name linux-hosts
service_description Estado de SSH
check_command check_ssh
notifications_enabled 0
}
Abrimos el archivo windows-services.cfg:
E incluimos en dicho archivo la configuración del equipo y servicios a monitorear:
###############################################################################
#
# DEFINICIÓN DE SERVICIOS - WINDOWS
#
###############################################################################
# Crear un servicio para monitorear la versión de NSClient++ instalada
define service {
use generic-service ; Plantilla a utilizar
hostgroup_name windows-hosts ; Nombre del grupo de hosts
service_description Versión de NSClient++ ; Descripción del servicio
check_command check_nt!CLIENTVERSION ; Definición del comando
}
# Crear un servicio para monitorear el uptime del server
define service {
use generic-service
hostgroup_name windows-hosts
service_description Uptime
check_command check_nt!UPTIME
}
# Crear un servicio para monitorear la carga del CPU
define service {
use generic-service
hostgroup_name windows-hosts
service_description Carga del CPU
check_command check_nt!CPULOAD!-l 5,80,90
}
# Crear un servicio para monitorear el uso de RAM
define service {
use generic-service
hostgroup_name windows-hosts
service_description Uso de RAM
check_command check_nt!MEMUSE!-w 80 -c 90
}
# Crear un servicio para monitorear el uso del disco C:\
define service {
use generic-service
hostgroup_name windows-hosts
service_description Estado del disco C
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
# Crear un servicio para monitorear el servicio Workstation
define service {
use generic-service
hostgroup_name windows-hosts
service_description Servicio Workstation
check_command check_nt!SERVICESTATE!-d SHOWALL -l Workstation
}
# Crear un servicio para monitorear el proceso Explorer.exe
define service {
use generic-service
hostgroup_name windows-hosts
service_description Proceso Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}
Por último, tendremos que verificar la configuración y reiniciar el servidor Nagios para guardar los cambios que hayamos introducido.
Servicios para hosts o para grupos de hosts
Los servicios que vamos a monitorear se pueden configurar para:
Un equipo en particular, mediante la directiva host_name:
define service {
use generic-service
host_name my-windows-host
service_description Estado del disco C
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
Un grupo de equipos empleando la directiva hostgroup_name:
Agregando servicios y procesos a monitorear en MS Windows¶
Es posible agregar servicios y procesos que deseemos monitorear en una máquina con SO Microsoft Windows
Para agregar otros servicios de Windows a monitorear (para determinar, por ejemplo, si el servicio se está ejecutando o no) la Consola de Servicios de Windows, abriendo el diálogo Ejecutar, al cual se accede pulsando las teclas WIN + R. En dicho cuadro de diálogo, escribimos services.msc

Luego, seleccionamos el servicio a monitorear. Por ejemplo, el Cliente DHCP. Hacemos clic derecho sobre el mismo y seleccionamos Propiedades del menú contextual

Tendremos que copiar el nombre del servicio tal cual, es decir, respetando las mayúsculas y minúsculas. En este caso, Dhcp.

Por último, tendremos que definir el monitoreo del mismo en el archivo servicios.cfg, donde sólo tendremos que escribir el nombre del servicio tal cual, modificando la última palabra de la última línea. Por ejemplo, para el servicio Dhcp:
# Verificando funcionamiento del Cliente DHCP
define service{
use generic-service
hostgroup_name windows-hosts
service_description Servicio: Cliente DHCP
check_command check_nt!SERVICESTATE!-d SHOWALL -l Dhcp
}
Listando servicios empleando CLI
Podemos listar los servicios del sistema operativo, desde CLI, sea a través de cmd o PowerShell. En cualquier caso, abrimos el diálogo "Ejecutar" presionando las teclas WIN + R y colocamos en dicho espacio cmd ó powershell, según corresponda.
Una vez abierta la terminal, ejecutamos el siguiente comando para obtener los servicios:
- En cmd:
sc queryex type=service state=all - En PowerShell:
get-service
Podemos obtener el nombre de los procesos que se encuentran corriendo en Windows accediendo al "Administrador de Tareas de Windows":
- Presionando la combinación de teclas CTRL + SHIFT + ESC
- Abriendo la ventana "Ejecutar" presionando las teclas WIN + R y escribiendo
taskmgr.
Una vez identificado el nombre del proceso a monitorear, tendremos que explicitarlo en la última línea de un bloque define service, dentro del archivo servicios.cfg. Por ejemplo, para el proceso powershell.exe:
# Verificando proceso PowerShell
define service {
use generic-service
host_name my-windows-host
service_description Windows PowerShell
check_command check_nt!PROCSTATE!-d SHOWALL -l powershell.exe
}
Listando procesos empleando CLI
Podemos listar los procesos del sistema operativo, desde CLI, sea a través de cmd o PowerShell. En cualquier caso, abrimos el diálogo "Ejecutar" presionando las teclas WIN + R y colocamos en dicho espacio cmd ó powershell, según corresponda.
Una vez abierta la terminal, ejecutamos el siguiente comando para obtener los procesos:
- En cmd:
tasklist - En PowerShell:
get-process