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