Cómo monitorear el uso del sistema, las interrupciones y la solución de problemas de los servidores de Linux - Parte 9

Cómo monitorear el uso del sistema, las interrupciones y la solución de problemas de los servidores de Linux - Parte 9

Aunque Linux es muy confiable, los administradores de sistemas sabios deberían encontrar una manera de vigilar el comportamiento y la utilización del sistema en todo momento. Asegurar un tiempo de actividad tan cerca de 100% como sea posible y la disponibilidad de recursos son necesidades críticas en muchos entornos. Examinar el estado pasado y actual del sistema nos permitirá prever y probablemente evitar posibles problemas.

Ingeniero certificado de la Fundación Linux - Parte 9

Presentación del programa de certificación de la Fundación Linux

En este artículo presentaremos una lista de algunas herramientas que están disponibles en la mayoría de las distribuciones ascendentes para verificar el estado del sistema, analizar interrupciones y solucionar problemas continuos. Específicamente, de la miríada de datos disponibles, nos centraremos en la CPU, el espacio de almacenamiento y la utilización de la memoria, la gestión básica de procesos y el análisis de registro.

Utilización del espacio de almacenamiento

Hay 2 comandos bien conocidos en Linux que se utilizan para inspeccionar el uso del espacio de almacenamiento: df y du.

El primero, df (que significa libre de disco), generalmente se usa para informar el uso general del espacio en el disco por el sistema de archivos.

Ejemplo 1: Informe del uso del espacio en disco en bytes y formato legible por humanos

Sin opciones, df informa el uso del espacio en disco en bytes. Con el -H marcar mostrará la misma información usando MB o GB en su lugar. Tenga en cuenta que este informe también incluye el tamaño total de cada sistema de archivos (en bloques de 1 K), los espacios gratuitos y disponibles, y el punto de montaje de cada dispositivo de almacenamiento.

# DF # DF -H 
Utilización del espacio en disco

Eso es ciertamente bueno, pero hay otra limitación que puede hacer que un sistema de archivos sea inutilizable, y que se está quedando sin inodos. Todos los archivos en un sistema de archivos se asignan a un inodo que contiene sus metadatos.

Ejemplo 2: Inspeccionar el uso de inodo por sistema de archivos en formato legible por humanos con
# df -hti 

Puede ver la cantidad de inodos usados ​​y disponibles:

Uso del disco de inodo

De acuerdo con la imagen de arriba, hay 146 inodos usados ​​(1%) in /home, lo que significa que aún puede crear archivos 226k en ese sistema de archivos.

Ejemplo 3: Encontrar y / o eliminar archivos y directorios vacíos

Tenga en cuenta que puede quedarse sin espacio de almacenamiento mucho antes de quedarse sin inodos y viceversa. Por esa razón, debe monitorear no solo la utilización del espacio de almacenamiento sino también el número de inodos utilizados por el sistema de archivos.

Use los siguientes comandos para encontrar archivos o directorios vacíos (que ocupan 0b) que están utilizando inodos sin una razón:

# Find /Home -Type F -Epty # Find /Home -Type D -Epty 

Además, puedes agregar el -borrar Indicando al final de cada comando si también desea eliminar esos archivos y directorios vacíos:

# Find /Home -Type F -Epty - -Delete # Find /Home -Type F -Epty 
Buscar y eliminar archivos vacíos en Linux

El procedimiento anterior eliminó 4 archivos. Vamos a ver nuevamente el número de nodos usados ​​/ disponibles nuevamente en / Inicio:

# df -hti | Grep HOME 
Verifique el uso de inode de Linux

Como puede ver, hay 142 inodos usados ​​ahora (4 menos que antes).

Ejemplo 4: Examinar el uso del disco por directorio

Si el uso de un determinado sistema de archivos está por encima de un porcentaje predefinido, puede usar du (Abajo del uso del disco) para averiguar cuáles son los archivos que ocupan la mayor cantidad de espacio.

El ejemplo se da para /var, que, como puede ver en la primera imagen de arriba, se usa en su 67%.

# du -sch /var /* 
Verifique el uso del espacio en disco por directorio

Nota: Que puede cambiar a cualquiera de los subdirectorios anteriores para averiguar exactamente qué hay en ellos y cuánto ocupa cada elemento. Luego puede usar esa información para eliminar algunos archivos si no es necesario o extender el tamaño del volumen lógico si es necesario.

Leer también

  1. 12 comandos útiles de "DF" para verificar el espacio en disco
  2. 10 comandos útiles de "DU" para encontrar el uso del disco de archivos y directorios

Memoria y utilización de CPU

La herramienta clásica en Linux que se utiliza para realizar una verificación general de la utilización de CPU / memoria y la gestión de procesos es el mejor comando. Además, TOP muestra una vista en tiempo real de un sistema en ejecución. Hay otras herramientas que podrían usarse para el mismo propósito, como HTOP, pero me he decidido por la parte superior porque está instalado fuera de la caja en cualquier distribución de Linux.

Ejemplo 5: Mostrar un estado en vivo de su sistema con la parte superior

Para iniciar la parte superior, simplemente escriba el siguiente comando en su línea de comando y presione Enter.

# arriba 

Examinemos una salida superior típica:

Enumere todos los procesos en ejecución en Linux

En las filas 1 a 5 se muestra la siguiente información:

1. La hora actual (8:41:32 pm) y el tiempo de actividad (7 horas y 41 minutos). Solo un usuario inicia sesión en el sistema, y ​​el promedio de carga durante los últimos 1, 5 y 15 minutos, respectivamente. 0.00, 0.01 y 0.05 indican que durante esos intervalos de tiempo, el sistema estuvo inactivo durante el 0% del tiempo (0.00: No hay procesos esperando la CPU), luego se sobrecargó en un 1% (0.01: un promedio de 0.01 Los procesos estaban esperando la CPU) y el 5% (0.05). Si es menos de 0 y cuanto menor es el número (0.65, por ejemplo), el sistema estuvo inactivo durante un 35% durante los últimos 1, 5 o 15 minutos, dependiendo de dónde 0.65 aparece.

2. Actualmente hay 121 procesos en ejecución (puede ver la lista completa en 6). Solo 1 de ellos se está ejecutando (arriba en este caso, como puede ver en la columna %CPU) y los 120 restantes esperan en segundo plano, pero están "durmiendo" y permanecerá en ese estado hasta que los llamemos. Cómo? Puede verificar esto abriendo un mensaje MySQL y ejecutar un par de consultas. Notarás cómo aumenta el número de procesos de ejecución.

Alternativamente, puede abrir un navegador web y navegar a cualquier página que esté atendida por Apache y obtendrá el mismo resultado. Por supuesto, estos ejemplos suponen que ambos servicios están instalados en su servidor.

3. EE. UU. (Tiempo de ejecución de procesos de usuario con prioridad no modificada), SY (tiempo en ejecución de procesos de núcleo), Ni (procesos de usuario de tiempo en ejecución con prioridad modificada), WA (tiempo que espera la finalización de E/S), HI (tiempo de servicio de hardware de servicio dedicado), SI (Tiempo dedicado al servicio de software), ST (tiempo robado de la VM actual por el hipervisor, solo en entornos virtualizados).

4. Uso de la memoria física.

5. Swap Space Usage.

Ejemplo 6: Inspeccionar el uso de la memoria física

Para inspeccionar la memoria RAM y el uso de intercambio, también puede usar gratis dominio.

# gratis 
Verifique el uso de la memoria de Linux

Por supuesto que también puedes usar el -metro (MB) o -gramo (GB) cambia para mostrar la misma información en forma legible por humanos:

# gratis -m 
Ver el uso de la memoria de Linux

De cualquier manera, debe ser consciente del hecho de que el kernel se reserva tanta memoria como sea posible y la pone a disposición de los procesos cuando lo solicitan. Particularmente, el "-/+ buffers/caché"La línea muestra los valores reales después de que se tenga en cuenta este caché de E/S.

En otras palabras, la cantidad de memoria utilizada por los procesos y la cantidad disponible para otros procesos (en este caso, 232 MB usado y 270 MB Disponible, respectivamente). Cuando los procesos necesitan esta memoria, el núcleo disminuirá automáticamente el tamaño del caché de E/S.

Leer también: 10 comando útil "gratuito" para verificar el uso de la memoria de Linux

Analizar más de cerca los procesos

En un momento dado, hay muchos procesos que se ejecutan en nuestro sistema Linux. Hay dos herramientas que usaremos para monitorear de cerca los procesos: PD y pstree.

Ejemplo 7: Mostrar toda la lista de procesos en su sistema con PS (formato estándar completo)

Utilizando el -mi y -F opciones combinadas en una (-EF) Puede enumerar todos los procesos que se ejecutan actualmente en su sistema. Puede imponer esta salida a otras herramientas, como grep (Como se explica en la Parte 1 de la serie LFCS) para reducir la salida a los procesos deseados:

# PS -EF | Grep -i calamar | Grep -V Grep 
Monitoreo de procesos en Linux

La lista de procesos anterior muestra la siguiente información:

propietario del proceso, PID, PID principal (el proceso principal), utilización del procesador, tiempo cuando se inició el comando, tty (el ? indica que es un demonio), el tiempo de CPU acumulado y el comando asociado con el proceso.

Ejemplo 8: Personalización y clasificación de la salida de PS

Sin embargo, tal vez no necesite toda esa información, y le gustaría mostrar al propietario del proceso, el comando que lo inició, su PID y PPID, y el porcentaje de memoria que está utilizando actualmente, en ese orden, y ordene por Uso de memoria en orden descendente (tenga en cuenta que PS por defecto está ordenado por PID).

# PS -EO Usuario, Comm, PID, PPID,%MEM --sort -%MEM 

Donde el signo menos frente al %mem indica la clasificación en orden descendente.

Monitorear el uso de la memoria del proceso de Linux

Si por alguna razón un proceso comienza a tomar demasiados recursos del sistema y es probable que ponga en peligro la funcionalidad general del sistema, querrá detener o pausar su ejecución que pasa una de las siguientes señales que usa el programa Kill. Otras razones por las que consideraría hacer esto es cuando ha comenzado un proceso en primer plano, pero desea detenerlo y reanudar en segundo plano.

Nombre de señal Número de señal Descripción
 Siglo 15  Mata el proceso con gracia.
 Firme 2  Esta es la señal que se envía cuando presionamos Ctrl + C. Su objetivo es interrumpir el proceso, pero el proceso puede ignorarlo.
 Sigkill 9  Esta señal también interrumpe el proceso, pero lo hace incondicionalmente (use con cuidado!) Dado que un proceso no puede ignorarlo.
 Suspiro 1  Abreviatura de "Hang Up", esto indica a Daemons que vuelva a leer su archivo de configuración sin detener el proceso.
 Sigtstp 20  PAUSE Ejecución y espera listo para continuar. Esta es la señal que se envía cuando escribimos la combinación de teclas Ctrl + Z.
 Signo 19  El proceso se detiene y no recibe más atención de los ciclos de la CPU hasta que se reinicie.
 Sigcont 18  Esta señal le dice al proceso que reanude la ejecución después de haber recibido SIGTSTP o SIGSTOP. Esta es la señal que envía el shell cuando usamos los comandos FG o BG.
Ejemplo 9: Pausa de la ejecución de un proceso en ejecución y reanudándolo en segundo plano

Cuando la ejecución normal de un determinado proceso implica que no se enviará ninguna salida a la pantalla mientras se ejecuta, es posible que desee iniciarlo en segundo plano (agregando un ampersand al final del comando).

nombre del proceso & 

o,
Una vez que haya comenzado a funcionar en primer plano, pause y envíelo al fondo con

CTRL + Z 
# Kill -18 Pid 
Proceso de matar en Linux
Ejemplo 10: matar por la fuerza un proceso "se volvió salvaje"

Tenga en cuenta que cada distribución proporciona herramientas para detener / iniciar / reiniciar / recargar los servicios comunes, como servicio en sistemas basados ​​en sysv o systemctl en sistemas basados ​​en Systemd.

Si un proceso no responde a esas utilidades, puede matarlo por la fuerza enviándolo la señal Sigkill.

# PS -EF | Grep Apache # Kill -9 3821 
Mata con fuerza el proceso de Linux

Entonces ... lo que pasó / esta pasando?

Cuando ha habido algún tipo de interrupción en el sistema (ya sea un corte de energía, una falla de hardware, una interrupción planificada o no planificada de un proceso, o cualquier anormalidad), los inicios de sesión /var/log son sus mejores amigos para determinar qué sucedió o qué podría estar causando los problemas que enfrenta.

# cd /var /log 
Ver registros de Linux

Algunos de los artículos en /var/log son archivos de texto regulares, otros son directorios y otros son archivos comprimidos de registros rotados (históricos). Querrá verificarlos con el error de la palabra en su nombre, pero inspeccionar el resto también puede ser útil.

Ejemplo 11: Examinar los registros de errores en los procesos

Imagine este escenario. Sus clientes LAN no pueden imprimir en impresoras de red. El primer paso para solucionar esta situación es /var/log/tazas directorio y ver lo que hay allí.

Puedes usar el cola comando para mostrar las últimas 10 líneas del archivo ERROR_LOG, o cola -f error_log Para una vista en tiempo real del registro.

# cd/var/log/tazs # ls # tail error_log 
Monitorear archivos de registro en tiempo real

La captura de pantalla anterior proporciona información útil para comprender qué podría estar causando su problema. Tenga en cuenta que seguir los pasos o corregir el mal funcionamiento del proceso aún puede no resolver el problema general, pero si se usa desde el principio para verificar los registros cada vez que surge un problema (ya sea local o una red) usted) Definitivamente estaré en el camino correcto.

Ejemplo 12: Examinar los registros para fallas de hardware

Aunque las fallas de hardware pueden ser difíciles de solucionar, debe verificar el dmesg y registros de mensajes y GREP para palabras relacionadas con una parte de hardware que se presume defectuosa.

La imagen a continuación se toma de /var/log/mensajes Después de buscar el error de la palabra usando el siguiente comando:

# menos/var/log/mensajes | Error de GREP -I 

Podemos ver que tenemos un problema con dos dispositivos de almacenamiento: /dev/sdb y /dev/sdc, que a su vez causa un problema con la matriz de redadas.

Solución de problemas de problemas de Linux

Conclusión

En este artículo, hemos explorado algunas de las herramientas que pueden ayudarlo a estar al tanto del estado general de su sistema. Además, debe asegurarse de que su sistema operativo y sus paquetes instalados se actualicen a sus últimas versiones estables. Y nunca, nunca, olvídate de verificar los registros! Luego se dirigirá en la dirección correcta para encontrar la solución definitiva a cualquier problema.

Siéntase libre de dejar sus comentarios, sugerencias o preguntas, si tiene alguna, utilizando el formulario a continuación.

Convertirse en ingeniero certificado de Linux