Monitorización de Sistemas Operativos en red¶
La monitorización permite observar y gestionar el rendimiento y la disponibilidad de sistemas operativos en red. Ayuda a identificar problemas en tiempo real y a optimizar recursos, previniendo caídas y mejorando la seguridad.
Componentes Clave para Monitorizar¶
- CPU y Memoria: Se observa el uso de CPU y memoria para detectar cuellos de botella o sobrecargas.
- Almacenamiento: El espacio en disco y el rendimiento del sistema de archivos son cruciales, ya que una falta de espacio puede causar fallos.
- Red: Incluye el monitoreo de tráfico, latencia, y paquetes para identificar anomalías como picos inusuales o congestión.
- Servicios y Procesos: Verificar el estado y consumo de recursos de los servicios críticos (bases de datos, servidores web) y procesos específicos.
Herramientas de Monitorización¶
La monitorización de un sistema operativo en red requiere herramientas que permitan una visión completa de su estado, rendimiento y disponibilidad. Estas herramientas se dividen en integradas y centralizadas (Nagios, Prometheus,...). En nuestro caso nos vamos a centrar en las integradas.
Los sistemas operativos en red, especialmente los basados en Unix y Linux, incluyen diversas herramientas de línea de comandos que proporcionan información en tiempo real sobre el uso de recursos. Estas herramientas son ideales para la resolución de problemas rápida y el monitoreo puntual. Entre ellas se destacan comandos y el servicio Syslog.
A continuación se enumeran los comandos más destacados:
- top: Muestra una lista en tiempo real de los procesos en ejecución, incluyendo su uso de CPU, memoria y tiempo de ejecución. Es útil para identificar procesos que consumen muchos recursos y ver la carga general del sistema.
- htop Similar a top, pero con una interfaz visual más amigable y opciones de navegación avanzadas. Permite ver en detalle el uso de cada núcleo de CPU, la memoria y la carga del sistema en gráficos, facilitando la detección de procesos que afectan el rendimiento.
- vmstat: Muestra estadísticas sobre el uso de memoria virtual, intercambio (swap), CPU, y operaciones de entrada/salida. Es útil para identificar cuellos de botella en el uso de memoria y disco, proporcionando una visión general del rendimiento del sistema.
- iostat: Proporciona estadísticas de entrada/salida de discos y particiones. Muestra datos sobre las tasas de lectura/escritura y el tiempo de espera de los dispositivos de almacenamiento, lo que ayuda a detectar problemas de rendimiento en los discos.
- netstat: Muestra información sobre las conexiones de red activas, estadísticas de las interfaces de red y datos sobre el uso de protocolos. Es útil para monitorear la actividad de red y detectar conexiones no deseadas o problemas de red.
- ping: Permite verificar la conectividad con otros dispositivos de red enviando paquetes ICMP. Mide el tiempo de respuesta y la estabilidad de la conexión, ayudando a diagnosticar problemas de latencia o falta de conectividad.
- traceroute: Muestra la ruta que siguen los paquetes hasta un destino, indicando cada salto por el que pasa y el tiempo que tarda en llegar a cada uno. Es útil para identificar puntos de congestión o fallos en la red.
- dmesg: Muestra los mensajes del kernel, incluyendo información sobre la detección de hardware, el estado de los controladores y posibles errores. Es especialmente útil para detectar problemas de bajo nivel como fallos de hardware o errores en dispositivos de red.
Entrar en detalle en cada una de ellos extendería demasiado el apartado, por lo tanto se muestran algunos ejemplos de uso de los comandos más utilizados por los administradores de sistemas.
top¶
top es interactivo, lo que significa que puedes usar varias teclas para modificar la visualización de la información mientras el comando está en ejecución:
-
M: Ordena los procesos por uso de memoria, para identificar qué proceso está consumiendo más recursos de RAM.
-
P: Ordena los procesos por uso de CPU, útil para detectar qué procesos están utilizando más el CPU.
-
T: Ordena por tiempo total de CPU utilizado, para ver cuáles procesos han consumido más recursos a lo largo del tiempo.
-
k: Permite "matar" un proceso específico, solicitando el número de PID. Esto es útil para detener procesos problemáticos que están causando sobrecarga.
-
r: Cambia la prioridad (nice) de un proceso, permitiendo ajustar qué procesos tienen preferencia de ejecución.
-
q: Salir de top.
Escenario de Ejemplo de top¶
Imagina que eres el administrador de un servidor web Linux y has recibido quejas de que el servidor está lento. Te conectas al servidor y ejecutas top para diagnosticar el problema.
top
-
Al ejecutarlo, verás en tiempo real la carga del sistema, el uso de CPU, memoria y los procesos en ejecución.
-
Interpretación de los Datos del Encabezado
-
Load Average: Supongamos que ves Load average: 3.24, 3.50, 3.10. Esto significa que, en promedio, ha habido más de 3 procesos listos para ejecutarse en los últimos 1, 5 y 15 minutos. Si el servidor tiene solo 2 núcleos, este valor indica que el sistema está sobrecargado, ya que hay más procesos listos que núcleos disponibles.
-
Memoria: En la sección de memoria, observas que casi toda la memoria física está en uso y hay un uso significativo de memoria de intercambio (swap). Esto sugiere que el sistema está quedándose sin memoria física y está utilizando el swap, lo cual ralentiza el rendimiento.
-
-
Identificación de Procesos con Alto Consumo de CPU y Memoria
-
Ordenas los procesos por CPU pulsando la tecla P. En la lista, notas que un proceso llamado httpd (el servicio del servidor web) está consumiendo alrededor del 80% del CPU.
-
Luego, ordenas los procesos por memoria pulsando la tecla M y observas que el mismo proceso httpdtambién consume una gran cantidad de memoria, cerca del 50%.
-
-
Acciones para Mejorar el Rendimiento
-
Decides reducir la carga del sistema eliminando algunos procesos de httpd que no son críticos. Para esto, pulsas k y escribes el PID del proceso httpd que más recursos consume, terminando dicho proceso para liberar CPU y memoria.
-
Además, si no es urgente, puedes ajustar su prioridad con r para darle menos prioridad y que otros procesos críticos no se vean afectados.
-
-
Tras ajustar los procesos, sigues observando el Load Average y los porcentajes de CPU y memoria. Si ves que estos valores empiezan a bajar, el sistema debería comenzar a responder mejor.
-
Cuando terminas de monitorear, presionas q para salir del comando top.
iostat¶
Permite ver el uso del dispositivo para encontrar la estadística del disco. iostat muestra la transferencia de datos actual por segundo, el número total de bloques leídos y escritos en el disco y un bloque promedio por segundo.
iostat -d 1 5
-
Se pueden observar más detalles con los siguientes modificadores:
- tps -> Transferencia por segundo
- Blk_read / s -> Cantidad total de datos leídos en bloques por segundo.
- Blk_wrtn / s -> Cantidad total de datos escritos en bloques por segundo.
- Blk_read -> Lectura total del bloque.
- Blk_wrtn _ -> Bloque total escrito.
-
Ejemplo de uso para ver estadísticas de E/S más extendidas del disco.
iostat -x 1 5
dmesg¶
dmesg (diagnostic message, mensajes de diagnóstico) es una instrucción presente en los sistemas operativos Unix que lista el buffer de mensajes del núcleo. Este búfer contiene una gran variedad de mensajes importantes generados durante el arranque del sistema, como la detección del hardware, asignación de controladores (drivers) y durante la depuración de aplicaciones. Características:
- En realidad es una visualización del fichero
/var/log/dmesg
. - Dmesg puede ser muy útil para solucionar problemas o simplemente tratando de obtener información sobre el hardware en un sistema.
- La salida del fichero es demasiado grande, por eso suele utilizarse con tuberías para filtrar la información que necesitamos, algunos ejemplos serían:
dmesg | less
dmesg> boot_messages
dmesg | grep -i usb
dmesg | grep -i TTY
dmesg | grep -i dma
La salida de dmesg se mantiene en el archivo de registro /var/log/dmesg
, y puede por lo tanto también ser vista fácilmente por leer ese archivo con un editor de texto , como por ejemplo vi
o gedit
, o con un comando como cat
, por ejemplo:
cat /var/log/dmesg | tail -f
Tip
Además de estos comandos integrados es importante conocer la herramienta de recolección de errores utilizada en los sistemas Unix y Linux Syslog.
Syslog¶
Syslog es un sistema de logs que se encarga principalmente de la administración de logs, los cuales son generados por eventos del sistema, sus programas o por el Kernel. Características:
- El envió de mensajes Syslog fue usado inicialmente en sistemas basados en UNIX para registrar eventos de aplicaciones, sistema operativo o red.
- Es común ahora encontrar equipos de redes que pueden generar y enviar mensajes Syslog a equipos configurados con un demonio que los reciba y existen incluso implementaciones para sistemas Windows.
- En la mayoría de distribuciones linux, se puede encontrar el demonio syslogd que se encarga de leer y enviar mensajes a la consola del sistema, ficheros de log y a otras máquinas y/o otros usuarios. Para esto se guían por un fichero de configuración que indican que mensajes y a dónde enviarlos. Este es
syslog.conf
.
Syslog.conf¶
Este archivo de configuración de logs contiene líneas con dos campos, separados por tabuladores o espacios:
-
Selector: Especifica que mensajes tratar teniendo en cuenta el tipo de mensaje y la prioridad. Los selectores se escriben como un nombre de función, un punto y un nivel, sin ningún espacio entre ellos. Estos no son sensibles a las mayúsculas/minúsculas.
-
La función puede ser una de estas: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, syslog, user, uucp y local0 hasta local7.
- El nivel indica la gravedad del mensaje a tratar y puede ser: emerg, alert, crit, err,warning, notice and debug
- Acción: Qué se va a hacer con ese mensaje. Cuando syslogd recibe un mensaje que encaja con la función y es del nivel de gravedad indicado, realiza la función que se indica en el campo de acción.
- Acciones:
- Un nombre de fichero con dirección absoluta. En cuyo caso los mensajes irán a este fichero.
- Una tubería con nombre .Su nombre comenzará por el carácter “
|
”.Este es un tipo de fichero especial, que puede ser tratado por determinados programas, por ejemplo, para depuración. - Un nombre de equipo. Para esto ponemos el nombre del equipo comenzando por “@”.En este caso, el mensaje se enviará al syslog del equipo que se nombró.
- Una lista de usuarios separados por comas. Se envía el mensaje a estos usuarios.
- Un asterisco. En este caso , se envía el mensaje a todos los usuarios que tengan una sesión abierta en el sistema.
- Ejemplo Syslog.conf Ubuntu:
A configuration file might appear as follows:
# Log all kernel messages, authentication messages of
# level notice or higher and anything of level err or
# higher to the console.
# Don't log private authentication messages!
*.err;kern.*;auth.notice;authpriv.none /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* /var/log/maillog
# Everybody gets emergency messages, plus log them on another
# machine.
*.emerg *
*.emerg @arpa.berkeley.edu
# Root and Eric get alert and higher messages.
*.alert root,eric
# Save mail and news errors of level err and higher in a
# special file.
uucp,news.crit /var/log/spoolerr
Documentación syslog.conf
log SAMBA¶
Samba mantiene sus propios archivos de registro internos en el sistema, que generalmente se encuentran en la carpeta /var/log/samba
. Estos registros pueden ser útiles para depurar problemas específicos de Samba, además de los registros que se envían a syslog si se ha configurado, opción que se detalla en el siguiente subapartado. A continuación se explican los principales archivos de log internos de Samba y cómo usarlos:
- Archivos de Log Principales:
/var/log/samba/log.smbd
: Este archivo registra los eventos generados por el demonio principal de Samba (smbd), que gestiona las conexiones de los clientes al sistema de archivos compartidos.
Aquí encontrarás información sobre:
- Conexiones de clientes y desconexiones.
- Errores de autenticación o acceso.
- Problemas de acceso a recursos compartidos.
-
/var/log/samba/log.nmbd
: Este archivo registra los eventos relacionados con el demonio NetBIOS (nmbd) de Samba, que se encarga de las tareas de resolución de nombres NetBIOS en la red. Es útil para detectar problemas de descubrimiento de red y nombres de host. -
/var/log/samba/log.winbindd
: Este log almacena información sobre el servicio Winbind (winbindd), que permite la integración de Samba con sistemas de autenticación basados en Active Directory o dominios Windows. Aquí se pueden ver eventos relacionados con el mapeo de usuarios y grupos, y la autenticación basada en dominios.
- Archivos de Log por Cliente
Samba también genera archivos de log específicos para cada cliente que se conecta. Estos archivos tienen el siguiente formato:
/var/log/samba/log.[nombre_cliente]
: Este archivo almacena los registros generados por un cliente específico, identificado por su nombre de host o dirección IP. Por ejemplo, si un cliente se llama PC-Cliente, el archivo sería /var/log/samba/log.PC-Cliente.
Tip
Estos logs por cliente son útiles para realizar un diagnóstico detallado de problemas de conexión y autenticación para clientes específicos.
- Nivel de Registro (Log Level) El detalle de la información registrada en estos archivos depende del parámetro log level configurado en el archivo smb.conf. Los valores de log level permiten controlar la cantidad de información que Samba registra:
[global]
log level = 1
log level 0 #Registra solo errores críticos (recomendado para producción).
log level 1 #Registra errores y advertencias.
log level 2 #Incluye información sobre las conexiones de los usuarios.
log level 3 #o superior: Aporta detalles más completos, como operaciones de archivo y directorio,
#y es útil para la depuración avanzada.
Warning
Cuanto más alto sea el nivel de log, más espacio en disco se usará, y puede afectar el rendimiento si el nivel es muy alto en sistemas de producción.
- Visualización y Análisis de los Logs Internos de Samba
Para visualizar estos logs, puedes usar herramientas como tail, less, o grep para filtrar eventos específicos. Algunos comandos útiles son:
- Ver los últimos eventos en el log principal de smbd:
tail -f /var/log/samba/log.smbd
- Buscar errores de autenticación en el log:
-Revisar el log de un cliente específico:
grep "authentication" /var/log/samba/log.smbd
less /var/log/samba/log.[nombre_cliente]
Syslog SAMBA¶
La monitorización del servicio Samba con syslog es una práctica común para registrar y analizar la actividad y los problemas de este servicio en sistemas operativos basados en Linux. Samba utiliza syslog para registrar eventos y errores, lo que permite realizar un seguimiento de su rendimiento y detectar problemas en su configuración o en las conexiones de red.
Aquí tienes una guía sobre cómo usar syslog para monitorizar el servicio de Samba:
1. Configuración de Samba para syslog¶
Samba, por defecto, tiene un sistema de registro interno, pero también se puede configurar para enviar sus mensajes a syslog, el sistema centralizado de registros en Linux. En el archivo de configuración de Samba (smb.conf), se pueden especificar diferentes niveles de registro y decidir si enviar los mensajes a syslog.
Configuración básica en smb.conf
- Se edita el fichero de configuración de Samba.
sudo nano /etc/samba/smb.conf
[global]
syslog = 1
log level = 3
NOTA
syslog: Configura si los mensajes se envían a syslog. Los valores típicos son: 0: No envía mensajes a syslog. 1: Envía mensajes básicos y errores a syslog. 2: Envía mensajes más detallados (incluyendo advertencias) a syslog.
NOTA
log level: Controla el nivel de detalle de los registros de Samba. Los valores van de 0 (solo errores graves) hasta 10 (depuración muy detallada). Un valor de 3 es un buen equilibrio para obtener información útil sin demasiados detalles.
- Para aplicar los cambios se debe reiniciar el servicio.
sudo systemctl restart smbd
2. Ver los Registros de Samba en syslog¶
Una vez configurado, Samba enviará sus mensajes a syslog, donde pueden ser gestionados por rsyslog o systemd-journald (dependiendo del sistema de registros que esté utilizando el sistema operativo).
Para ver los registros de Samba en tiempo real, puedes usar los siguientes comandos:
-
comando que muestra los mensajes recientes de syslog y filtra las líneas que contienen smbd, que es el proceso principal del servicio Samba.
tail -f /var/log/syslog | grep smbd
-
Si tu sistema utiliza systemd para la gestión de registros (como es el caso), este comando muestra solo los registros asociados al servicio smbd en tiempo real.
journalctl -u smbd -f
3. Tipos de Eventos que Puede Registrar Samba¶
Samba genera diferentes tipos de eventos que pueden ser útiles para la monitorización:
-
Conexiones de clientes: Samba registra cuándo un cliente se conecta o desconecta, lo cual es útil para auditar accesos y detectar posibles intrusiones.
-
Errores de autenticación: Los intentos de acceso fallidos (debido a contraseñas incorrectas, por ejemplo) se registran en syslog, lo que ayuda a identificar intentos de acceso no autorizados.
-
Problemas de rendimiento: Con niveles de log más altos, Samba registra detalles sobre transferencias de archivos, lo cual puede ayudar a diagnosticar problemas de velocidad o interrupciones en la red.
-
Acciones sobre archivos: Si se habilita un nivel de log alto, Samba puede registrar acciones específicas en archivos, como apertura, modificación, y cierre, para un análisis detallado.
4. Ejemplo de Análisis de Registros de Samba¶
Suponiendo que tienes un problema de conexión donde un usuario no puede acceder a los recursos compartidos de Samba. Con los registros en syslog, podrías buscar las entradas relevantes:
grep "authentication for user" /var/log/syslog `
Este comando busca problemas de autenticación relacionados con un usuario específico, ayudando a identificar si el problema es debido a credenciales incorrectas o a un problema de configuración en Samba.
5. Automatización y Alertas¶
Para monitorizar Samba de forma más proactiva, puedes configurar syslog o rsyslog para enviar alertas por correo electrónico o ejecutar un script cuando se detecten errores graves. Esto se hace configurando reglas en /etc/rsyslog.conf para que ciertos eventos generen notificaciones automáticas.
Tip
Está última opción es opcional para el nivel del módulo que nos encontramos.