Parece que el curso esta teniendo éxito, así que hoy vamos a continuar con sistemas para monitorear nuestro Linux, haciendo uso de herramientas web y comandos para entender como podemos analizar a donde se van los consumos de recursos.
Contenido: instalación y uso de Ntopng, instalando los repositorios y uso de Webmin y finalmente vamos a conocer en detalle el comando TOP.
1- Ntopng
Es una herramienta de monitoreo de red gratuita, de código abierto y muy útil que se puede utilizar para analizar el tráfico de red en tiempo real. Es una versión de alto rendimiento, de bajos recursos y viene a ser la evolución de ntop, basado en libpcap. Es multiplataforma así que se puede correr en Unix, MacOSX y Windows. ntopng monitorea e informa sobre varios protocolos, incluidos TCP, UDP, ICMP, DLC, IPX, ARP, Netbios, Decnet y muchos más.
Características
- Geolocalización de direcciones IP.
- Muestra el tráfico de red y los hosts con IPv4 / IPv6.
- Analiza el tráfico y lo clasifica según la fuente / destino.
- Almacenar estadísticas de tráfico en formato RRD.
- Informar y ordenar el uso del protocolo IP por tipo de protocolo.
Paso 1- Instalar Ntopng
Por defecto, Ntopng no está disponible en el repositorio de Debian 10. Pero los vamos a agregar manualmente. Primeramente los descargamos e instalamos.
wget http://apt.ntop.org/buster/all/apt-ntop.deb dpkg -i apt-ntop.deb
Una vez que se agrega el repositorio, actualizamos e instale Ntopng con apt:
apt update apt install pfring-dkms nprobe ntopng n2disk cento -y
Una vez que se haya completado la instalación, iniciamos el servicio Ntopng con systemctl:
systemctl start ntopng systemctl enable ntopng
Paso 2- Configurando Ntopng
El archivo de configuración predeterminado de Ntopng se encuentra en /etc/ntopng/ntopng.conf. Vamos a editarlo para hacer algunos cambios:
nano /etc/ntopng/ntopng.conf
Le agregamos lo siguiente
-G=/var/run/ntopng.pid # Interface de red -i=ens33 # Puerto Acceso web -w=3000
Guardamos el archivo y a continuación, creamos un nuevo archivo llamado ntopng.start para definir la red.
nano /etc/ntopng/ntopng.start
Donde ponemos los siguientes datos, que son nuestra red y la interface a usar:
--local-networks "192.168.254.0/24" --interface 1
Guardamos y reiniciamos el servicio para que tome los cambios.
systemctl restart ntopng
Paso 3- Abrir puertos de firewall
ufw allow 3000/tcp ufw allow 3000/udp
Paso 4- Acceso Ntopng
Ntopng ahora se está ejecutando y escuchando en el puerto 3000. Vamos al navegador web y ponemos la URL http://your-server-ip:3000.
Nos pedirá el usuario y la contraseña, que los predeterminados son admin / admin y al hacer clic en Login nos pedirá que cambiemos la clave que viene por defecto.
2- Webmin
Es una herramienta de configuración de sistemas accesible vía web para sistemas Unix, y está escrito en Perl. Con él se pueden configurar aspectos internos de muchos sistemas libres, como el servidor web Apache, PHP, MySQL, DNS, Samba, DHCP, entre otros.
Parte 1- Agregando repositorios
Editamos los repositorios en /etc/apt/sources.list y agregamos lo siguiente:
deb http://download.webmin.com/download/repository sarge contrib deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Parte 2- Cargamos la llave
wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc
Parte 3- Instalamos webmin y comprobando versión
apt update apt install webmin
Parte 4- Ingresando a webmin
Ahora que esta instalado abrimos un navegador y colocamos: https://localhost:10000/
Parte 5- Abrir puertos del firewall
ufw allow 10000/tcp ufw allow 10000/udp
Documentación de Webmin: https://doxfer.webmin.com/Webmin/Main_Page
3- Comando TOP
El comando top nos ayuda a conocer los procesos de ejecución del sistema (y más cosas) en tiempo real y es una de las herramientas más importantes para un administrador. Nos mostrará una gran cantidad de datos que se actualizan cada 3 segundos así que analizaremos paso a paso que es cada cosa que se muestra.
1- top – 16:29:19 up 9 min, 2 users, load average: 0,03, 0,21, 0,22
La primer línea es fácil, vemos, Hora y tiempo que hace que esta corriendo el sistema (up), cantidad de usuarios que esta mostrando 2 porque tengo nksistemas y root, y por último load average es la carga promedio del equipo.
2- Task: 137 total, 1 running, 136 slleping, 0 stopped, 0 zombie
Línea número 2, vemos la cantidad de tareas totales o procesos y en que estado están:
- Running procesos ejecutándose actualmente o preparados para ejecutarse.
- Sleeping procesos dormidos esperando que pase algo (depende del proceso) ejecutarse.
- Stopped proceso detenido.
- Zombie el proceso no está corriendo y quedan en este estado cuando el proceso que los inició murió o fue matado con el comando kill.
3- %Cpu(s): 1,7 us, 0,3 sy, 0,0 ni, 98,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
Línea Número 3, nos muestra los porcentajes de uso del procesador diferenciado por el uso que se le de.
- us (usuario): tiempo de CPU de usuario.
- sy (sistema): tiempo de CPU del núcleo (kernel).
- ni (nice): tiempo de CPU del usuario que tienen un “nice” positivo
- id (inactivo): tiempo de CPU en procesos inactivos (idle).
- wa (en espera): tiempo de CPU en procesos en espera.
- hi (interrupciones de hardware): interrupciones de hardware.
- si (interrupciones de software): tiempo de CPU en interrupciones de software.
- st (steal time): sólo aplica cuando la distro corre en una máquina virtual. Es el tiempo que algún proceso de nuestro sistema estaba esperando en la cola de ejecución, pero el hypervisor eligió no darnos tiempo de procesador, y asignarlo a otro procesador virtual.
4- KiB Mem: 2051776 total, 988684 used, 1063092 free, 55764 buffers
Línea número 4, hace referencia al uso de la memoria física del equipo.
- Memoria total.
- Memoria utilizada.
- Memoria libre.
- Memoria utilizada por buffer.
5- KiB Swap: 1012732 total, 0 used, 1012732 free. 513300 cached Mem
Línea número 5, utilización de la memoria virtual
- Memoria total.
- Memoria utilizada.
- Memoria libre.
- Memoria en caché.
6- PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
Línea número 6, muestra el detalle de los procesos en general teniendo en cuenta lo siguiente:
PID: es el identificador de proceso.
USER (USUARIO): usuario propietario del proceso.
PR: prioridad del proceso. Si aparece un RT sigifica que corre en tiempo real.
NI: asigna la prioridad. Si tiene un valor bajo (hasta -20) quiere decir que tiene más prioridad que otro con valor alto (hasta 19).
VIRT: cantidad de memoria virtual utilizada por el proceso.
RES: cantidad de memoria RAM física que utiliza ese proceso.
SHR: memoria compartida.
S (ESTADO): estado del proceso.
%CPU: porcentaje de CPU utilizado desde la última actualización.
%MEM: porcentaje de memoria física utilizada por el proceso desde la última actualización.
TIME+ (HORA+): tiempo total de CPU que ha usado el proceso desde su inicio.
COMMAND: comando utilizado para iniciar el proceso.
7- Podemos utilizar las siguientes teclas para ampliar el uso de TOP, esto es mientras esta corriendo:
M –> Ordenar por uso de memoria
P –> Ordenar por uso de CPU
T –> Ordenar por tiempo de CPU utilizado
F –> seleccionar campo por el cual ordenar la lista de procesos
i –> mostrar u ocultar procesos idle y zombie
m, l, t, 1 –> muestra u oculta las líneas del resumen (parte de arriba)
f, o –> agregar/quitar columnas, cambiar el orden
s –> cambia el tiempo de actualización de la pantalla (por defecto es de 3 segundos)
z –> Cambia de color
k –> Matar un proceso (luego pregunta el PID)
r –> “renice” cambia el nice value de un proceso (luego pregunta el PID)
q –> Salir de top
h –> ayuda
Finalmente veamos el video del curso: