Tutoriales y Manuales
Entradas Mensuales
-
►
2024
(Total:
1024
)
- ► septiembre (Total: 50 )
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
▼
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
▼
febrero
(Total:
75
)
- Lapsus$ filtra un torrent con casi 19GB de informa...
- Grupo sudamericano Lapsus hackea nVidia y roba 1TB...
- El ejército de Ucrania pide a los ciudadanos que t...
- Elon Musk activa servicio internet por satélite co...
- La restauración de fábrica de Windows 11 deja arc...
- Google está modificando por primera vez su página ...
- Algunos SSD NVMe pueden perder datos cuando se va ...
- Rusia ataca de nuevo con malware destructivo (Herm...
- La descarga de una película pirata con malware pro...
- Eurolink: 6 mil millones de € de la Unión Europea ...
- Alternativas a los sistemas operativos Windows, Ma...
- Arrancar en modo seguro en Windows 11
- Sistemas vulnerables para practicar legalmente ata...
- Linux es más rápido que Apple o Microsoft en corre...
- Windows 11 dejará de admitir los cifrados inseguro...
- Xenomorph es un nuevo malware para Android capaz d...
- Google Drive bloquea por error archivos .DS__Store...
- NAS ASUSTOR afectado por ataques del ransomware De...
- Instalar un firmware no oficial en un router neutr...
- Vulnerabilidad de validación de entrada datos numé...
- Unredacter es una herramienta gratuita para recupe...
- Deja sin Internet a todo un barrio para evitar que...
- Aceptar Cookies automáticamente y evitar mensajes ...
- EE.UU. dice que Rusos atacaron contratistas americ...
- Introducción al Sandbox de Privacidad de Android
- Ficheros /etc/passwd /etc/shadow y /etc/group en G...
- Google presenta Chrome OS Flex, un nuevo sistema o...
- Envían 1TB en 1 segundo a 1 kilómetro de distancia...
- ¿Qué es el SIM Swapping? Así pueden hackear tus cu...
- El 74% del dinero robado en ataques de ransomware ...
- Actualizaciones de seguridad importantes de Apple ...
- Cibertataques en Ucrania: Agencias militares y ban...
- pfSense distro basada en FreeBSD monitoriza y admi...
- Nueva versión distro Hacking: Kali Linux 2022.1
- Administrar y crear servicios con systemd en Linux...
- Un bug de Zoom para MacOS Monterey dejaba encendid...
- Android 13 permite ejecutar Windows 10, 11 y distr...
- Windows añade protecciones para evitar la extracci...
- Telefónica, Vodafone y Orange dicen que las empres...
- Detenidos en Madrid por fraude zapatillas falsific...
- Intel estrena con el kernel 5.18 funciones de pago...
- Google paga 8.7 millones de dólares en recompensas...
- AMD rompe su récord de cuota de mercado como fabri...
- Empiezan a vender "Air Tags" silenciados para espi...
- Mejora la temperatura de tu SSD con un disipador d...
- Malware Qbot necesita sólo 30 minutos para robar d...
- La Policía Nacional desarticula una organización c...
- SpaceX pierde 40 de los 49 nuevos satélites instal...
- Plugins y addons (scripts) para el firmware router...
- EE. UU. incauta 3.600 millones de dólares robados ...
- Microsoft deshabilita temporalmente los instalador...
- Multadas con casi 6 millones de € varias operadora...
- Ciberataque a Vodafone Portugal deja sin servicio ...
- NVIDIA abandona finalmente de forma oficial sus pl...
- La UE invertirá 43.000 millones de euros para dupl...
- Google afirma que la verificación en 2 pasos ha co...
- Microsoft deshabilitará por defecto las macros en ...
- Países Bajos multa a Apple con 5 millones € por la...
- El nuevo super yate de Jeff Bezos es tan grande qu...
- Una filtración de datos expone las identificacione...
- Meta amenaza con cerrar Facebook e Instagram en Eu...
- Microsoft detectó 35.700 millones de intentos de a...
- The Wall Street Journal hackeado por China
- Facebook pierde usuarios por primera vez en su his...
- El nuevo estándar WiFi 802.11bf permitirá detectar...
- Mozilla refuerza la privacidad Firefox combinando ...
- Monitorizar el rendimiento de contenedores Docker ...
- Raspberry Pi OS ya está disponible en 64 bits de f...
- VLC denuncia que hay personas domiciliando sus rec...
- Estándar Encrypted Client Hello (ECH) permitirá me...
- Roban 320 millones dólares de Ethereum a la plataf...
- Comando Robocopy: herramienta copia de seguridad d...
- Publicado exploit para nueva vulnerabilidad local ...
- Microsoft explica el motivo porque algunos usuario...
- La huella digital de tu GPU también sirve para ras...
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
Entradas populares
-
Después de ver qué es una vCPU y la diferencia entre núcleos (cores) e hilos en los procesadores, pasamos a explicar toda la nomenclatura d...
-
A pesar de que disponemos de gran cantidad de comandos en Windows 10 para realizar tareas de configuración y abrir aplicaciones, este no e...
-
Pese a que Gemini ofrece multitudes de opciones, recientemente, se ha dado a conocer una situación fuera de lo común. Hace unos días, un es...
Monitorizar el rendimiento de contenedores Docker con Ctop, Glances, NetData y los logs
Existen varias herramientas con las que podemos monitorizar el rendimiento y saber que está pasando en nuestros contenedores Docker. Algunas de estas herramientas son bpytop, ctop, glances y ciertos comandos que trae incorporado el mismo Docker. La primera de las opciones que analizaremos y veremos como funciona es Ctop.
MONITORIZAR EL RENDIMIENTO DE NUESTROS CONTENEDORES CON CTOP
- Docker: Ctop. El portanier de terminal
Ctop es un monitor de recursos que nos permitirá monitorizar el rendimiento de nuestros contenedores. Algunas de las opciones que proporciona ctop son las siguientes:
- Ver el consumo de memoria y CPU por contenedor
(CPU y MEM)
. - Datos que se han leído y escrito en disco
(IO R/W)
. - Registrar el consumo de ancho de banda de cada uno de los contenedores
(NET RX/TX)
. - Arrancar, parar y eliminar contenedores.
- Acceder directamente dentro de un contenedor para manipularlo y ejecutar comandos dentro de él.
- Consultar los logs generados por el contenedor. El resultado mostrado será equivalente al ejecutar el comando
docker logs
.
Instrucciones para instalar Ctop en su equipo
Para instalar y ejecutar el monitor Ctop en un dispositivo con arquitectura ARM tan solo tienen que ejecutar los siguientes comandos:
Docker para ARM (RaspBerry)
docker pull jinnlynn/ctop:latest
docker run --rm -it --name ctop --volume /var/run/docker.sock:/var/run/docker.sock:ro jinnlynn/ctop
Podemos crear un alias
alias ctop='docker run --rm -it --name ctop --volume /var/run/docker.sock:/var/run/docker.sock:ro jinnlynn/ctop'
Docker para amd64
Si usan otras arquitecturas, como por ejemplo amd64, deberán ejecutar el siguiente comando:
docker run --rm -it --name ctop \ --volume /var/run/docker.sock:/var/run/docker.sock:ro \ quay.io/vektorlab/ctop:latest
O crear un alias:
alias ctop='docker run --rm -it --name ctop --volume /var/run/docker.sock:/var/run/docker.sock:ro quay.io/vektorlab/ctop:latest'
Una vez ejecutado el comando se iniciará Ctop de forma completamente automática y verán lo siguiente:
Instrucciones a seguir para monitorizar el rendimiento de nuestros contenedores
Con el cursor nos posicionamos sobre el contenedor que nos interesa y presionamos Enter
.
Acto seguido aparecerán una serie de opciones. Seleccionan la que más
les interese que en mi caso es monitorizar únicamente el contenedor
seleccionado. Por lo tanto selecciono la opción Single view
y presiono Enter.
Nota: Las otras opciones disponibles son ver el log del contenedor, parar, pausar y reiniciar el contenedor y acceder dentro del contenedor.
El resultado obtenido es el siguiente:
Si quieren ir atrás y volver a la pantalla principal tan solo tienen que presionar la tecla q
.
Archivo de configuración
Mientras se ejecuta, use S
para guardar los filtros actuales, el campo de clasificación y otras opciones en una ruta de configuración predeterminada ( ~/.config/ctop/config=en sistemas XDG, de lo contrario =~/.ctop
).
Los valores del archivo de configuración se cargarán y aplicarán la próxima vez que =ctop=se inicie.
Por lo tanto mediante el uso de los cursores y la tecla Enter podrán realizar todas las acciones mencionadas en el inicio de este apartado. Asimismo pueden usar una serie de atajos de teclado que les ayudarán a obtener la información que buscan de una forma mucho más rápida. Los atajos de teclado son los siguientes:
Atajos de teclado | Acción |
---|---|
o | Para monitorizar únicamente el contenedor que hayamos seleccionado. |
l | Mostrar los logs de un determinado contenedor. |
e | Acceder dentro de un contenedor. |
q | Ir para atrás o cerrar Ctop. |
ENTER | Acceder al menú de Ctop. |
a | Para mostrar en pantalla únicamente los contenedores que están corriendo. |
f | Para filtrar / buscar contenedores por su nombre. Para deshabilitar el filtro aplicado deben presionar la tecla ESC . |
H o Mays+h | Para mostrar/ocultar la cabecera que apare en la parte superior de la terminal. |
h | Ayuda que muestra los atajos de teclado. |
s | Para ordenar los contenedores por uso de CPU, por consumo de memoria, por nombre, por número de proceso, por consumo de ancho de banda, etc. |
r | Para invertir el orden actual en que aparecen los contenedores. |
Nota: Para ejecutar Ctop de forma habitual les recomiendo que creen un alias porque el comando para ejecutar ctop en Docker es extremadamente largo.
Ahora que hemos terminado con Ctop pasaremos a ver las opciones que nos ofrece Glances.
MONITORIZAR EL RENDIMIENTO DE NUESTROS CONTENEDORES CON GLANCES
Glances no es más que otro monitor de recursos, pero con diferencias importantes respecto a Ctop. La información está presentada de una forma mucho más atractiva, pero al contrario que Ctop, Glances no permite interactuar con los contenedores. Con Glances tan solo podremos ver datos estadísticos y de funcionamiento de cada uno de los contenedores.
Glances es una herramienta de monitorización escrita en Python que te dará la información justa pero crítica del sistema en la propia terminal o en un navegador Web.
Instalación del monitor de recursos Glances
Glances se encuentra en los repositorios de la mayoría de distribuciones. Por lo tanto, para instalarlo en mi caso solo he tenido que ejecutar el siguiente comando en la terminal:
sudo apt install glances
O instalar manualmente:
$ curl -L https://bit.ly/glances | /bin/bash
Si lo prefieres también lo puedes instalar mediante docker ejecutando el siguiente comando en la terminal:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host -p 61208:61208 -e GLANCES_OPT="-w"
Nota: Si instalas Glances en Docker tengan en cuenta que Glances estará monitorizando nuestro equipo de forma permanente. Si quieren parar la monitorización tienes que parar el contenedor.
$ docker run -d --name=Glances --hostname=Glances --restart="always" --network=host -e GLANCES_OPT="-w" -v glances_config:/glances/conf -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host docker.io/nicolargo/glances
Como es un comando con muchos argumentos, vamos a explicar cada uno por separado:
docker run -d
: Crea un contenedor con la siguiente configuración si no existe y lo arranca en segundo plano.--name=Glances
: El nombre del contenedor. Es importante pues podemos tener varios contenedores basados en la misma imagen.--hostname=Glances
: El nombre de la máquina. Opcional.--restart=always
: Reinicia el contenedor si se para. Si se para manualmente, solo es reiniciado cuando el contenedor se reinicie manualmente o el servicio Docker sea reiniciado.--network=host
: La redhost
utiliza la dirección IP del servidor, de modo que la red de un contenedor parece ser el propio servidor en lugar de estar separado.-e GLANCES_OPT="-w"
: Con este argumento Glances iniciará el servidor Web para poder ver la información desde cualquier navegador Web.-v glances_config:/glances/conf
: Vinculamos la configuración de Glances a un volumen para que los datos persistan aunque borremos el contenedor.-v /var/run/docker.sock:/var/run/docker.sock
: Vincula una carpeta del servidor (izquierda), con una carpeta del contenedor (derecha). Glances tendrá acceso a los contenedores del servidor, vincula su información con el archivodocker.sock
.--pid host
: Indicamos que utilice el espacio de nombres del Host para los procesos. Este parámetro le da acceso a los procesos del servidor.docker.io/nicolargo/glances
: Indica la imagen usada para montar el contenedor. Si no se indica versión cogerá la última versión estable.
Iniciar el monitor de recursos Glances y datos que muestra
Si has instalado Glances mediante repositorios tan solo tienes que ejecutar el comando glances
en la terminal para que se abra el monitor de recursos. Si lo habéis
realizado a través de Docker tendréis que abrir un navegador y acceder a
la siguiente URL:
http://IP_servidor:61208
Una vez iniciado el software veremos que nos proporcionará datos interesantes sobre los contenedores de Docker que tenemos levantados y están funcionando. Un ejemplo del contenido mostrado por Glances es el siguiente:
Si observan la captura de pantalla verán datos útiles de los contenedores presentados de forma clara y atractiva. Algunos de los datos que podrán ver son:
- Contenedores que tenemos levantados y el % de CPU que está consumiendo cada contenedor.
- La cantidad total de memoria que está usando un contenedor y saber la cantidad total de memoria que un contenedor está autorizado a usar.
- La cantidad de memoria que está consumiendo cada uno de los contenedores.
- Cantidad total de datos leídos y escritos por cada uno de los contenedores.
- Datos recibidos y enviados por parte de cada uno de los contenedores que tenemos levantados.
- Detalle de las redes que tenemos levantadas y el tráfico de entrada y salida que se genera en cada una de las redes.
Otra de las opciones disponibles para obtener información sobre el funcionamiento de nuestros contenedores es consultar los logs de Docker de la siguiente forma.
ANALIZAR QUE PASA EN LOS CONTENEDORES DOCKER MEDIANTE LOS LOGS
Mediante los logs podemos obtener información importante sobre el funcionamiento de cada uno de los contenedores. Para consultar los logs deberán proceder del siguiente modo.
Consultar los logs del contenedor con Docker logs y obtener detalles de lo que está ocurriendo en nuestros contenedores
Disponemos de logs en todos y cada uno de los contenedores que tenemos instalados y corriendo en nuestro equipo. Los logs nos permitirán obtener la siguiente información:
- Detectar errores en el caso que un contenedor no se levante o no funcione como es de esperar.
- Confirmar que el funcionamiento del contenedor es correcto y no se producen errores.
- Observar si en un determinado momento se realizo la operación que se tenia que realizar.
Para poder consultar los logs de un contenedor determinado tan solo tienen que ejecutar un comando del siguiente tipo:
docker logs -f 'nombre o identificador del contenedor'
Por lo tanto para ver los logs del contenedor de DuckDNS ejecutaré el siguiente comando en la terminal:
docker logs -f duckdns
En el ejemplo los resultados obtenidos al ejecutar el comando han sido los siguientes:
-------------------------------------
GID/UID
-------------------------------------
User uid: 1000
User gid: 1000
-------------------------------------
[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 40-config: executing...
Retrieving subdomain and token from the environment variables
log will be output to file
Your IP was updated at Sat Aug 1 09:49:41 CEST 2020
[cont-init.d] 40-config: exited 0.
[cont-init.d] 99-custom-files: executing...
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-files: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
Si leemos el contenido de los logs y tenemos paciencia podremos ver detalles interesantes sobre el funcionamiento del contenedor. Por ejemplo en el caso de DuckDNS podemos ver que el día 1 de Agosto a las 09:49:41 se asocio una nueva IP a mi dominio.
Nota: Es altamente recomendable consultar los logs del contenedor la primera vez que lo arrancamos. De esta forma podremos asegurar que funciona de forma correcta.
Podemos añadir opciones adicionales al comando que acabamos de aplicar. De este modo podremos filtrar los resultados mostrados en pantalla y encontrar la información que buscamos de forma más fácil y más rápida. Las opciones adicionales que pueden añadir son:
Opciones | Función |
---|---|
--since | Mostrar los logs desde una fecha determinada. |
--until | Mostrar los logs hasta una fecha determinada. |
-f | Monitorizar el log de forma continua. |
--tail | Indicar el número de líneas que queremos mostrar del log. |
-t | Para mostrar el día y la hora en que se ha registrado el log. |
--details | Ver información adicional sobre un log. |
A modo de ejemplo si queremos ver las últimas 5 líneas del log del contenedor Jellyfin ejecutaré el siguiente comando en la terminal:
docker logs --tail 5 jellyfin
Si pretendemos ver todos los logs generados entre el 13/08/2020 a las 00:01 hasta el 14/08/2020 a las 00:01 podemos ejecutar el siguiente comando:
docker logs --since 2020-08-13T00:00:01 --until 2020-08-14T00:00:01 jellyfin
Para consultar los logs generados durante los últimos 10 minutos en Jellyfin usaré el siguiente comando:
docker logs --since 10m jellyfin
Consultar los logs generados por el propio servicio Docker
El propio servicio de Docker estará registrando logs sobre su funcionamiento. Por lo tanto si Docker no funciona tal y como esperamos les recomiendo que ejecuten los siguientes comandos:
journalctl -u docker.service | less
less /var/log/messages | grep docker
/var/log/messages
Una vez ejecutados los comandos deberán analizar cuidadosamente los resultados para intentar detectar donde está realmente el problema.
Si quieren obtener más información de como consultar los logs de un container les recomiendo que consulten el siguiente enlace:
Entrar dentro del contenedor y mirar manualmente los logs.
Otra opción que pueden considerar es entrar directamente en el contenedor que quieren monitorizar. Una vez dentro del contenedor pueden consultar los logs o usar un monitor de recursos como por ejemplo top para saber lo que está sucediendo. Para acceder dentro del contenedor que estamos usando lo podemos hacer mediante Ctop o mediante la ejecución de un comando del siguiente tipo:
docker exec -it nombre_contenedor bash
Nota: Debes reemplazar nombre_contenedor por el nombre del contenedor al que quieras acceder.
Si el comando anterior no les funciona es posible que sea porque no dispone de la shell de bash. En tal caso es posible que use la shell sh. Por lo tanto deberán ejecutar el siguiente comando:
docker exec -it nombre_contenedor sh
Una vez dentro del contenedor ya podrán consultar los logs o usar un monitor de recursos de la misma forma que lo harían en su sistema operativo habitual. Para finalizar el artículo veremos una serie de comandos que también podemos usar para monitorizar el rendimiento de nuestros contenedores.
COMANDOS A USAR PARA MONITORIZAR EL RENDIMIENTO NUESTROS CONTENEDORES
Docker dispone de una serie de comandos para que podamos saber en todo momento lo que sucede en nuestro contenedores. Algunos de estos comandos son los siguiente:
- Docker stats
- Docker info
- Docker events
A continuación veremos en detalle cada uno de ellos.
Monitorizar el rendimiento de nuestros contenedores con docker stats
El comando docker stats
mostrará datos de funcionamiento en tiempo real de los contenedores que
tenemos levantados y funcionando. Por lo tanto si abrimos una terminal y
ejecutamos el comando:
docker stats
Obtendremos un resultado similar el siguiente:
Los datos que se muestran son los siguientes:
- Número de contenedores que están corriendo.
- Consumo de CPU de cada uno de los contenedores.
(CPU %)
- Memoria que están consumiendo cada uno de los contenedores.
(MEM USAGE / LIMIT)
- Cantidad de datos que el contenedor ha recibido y enviado a través de la red.
(NET I/O)
- Cantidad de datos que un contenedor a leído y escrito en disco.
(BLOCK IO)
- Número de proceso del contenedor.
(PIDS)
Si solo quisieran obtener información de un contenedor en concreto, como por ejempo traefik, tan solo tendrían que añadir el nombre del contenedor al comando anterior. Por lo tanto ejecutaríamos:
docker stats traefik
Si
queremos que los resultados no se vayan refrescando periódicamente y
solo pretendemos obtener una foto del estado del contenedor en el
momento de ejecutar el comando tendremos que añadir la opción --no-stream
. Por lo tanto ejecutaríamos el siguiente comando:
docker stats --no-stream traefik
Docker
stats también nos permite modificar la forma en que se muestran los
resultados. Por ejemplo si solo queremos que se muestre el nombre de los
contenedores y su consumo de CPU sin ninguna cabecera y separando los
resultados mostrados por :
ejecutaremos el siguiente comando en la terminal:
docker stats --format "{{.Name}}: {{.CPUPerc}}"
Si ahora queremos mostrar el mismo resultado, pero que salga correctamente tabulado por columnas ejecutaremos el siguiente comando:
docker stats --format "{{.Name}}:\t {{.CPUPerc}}"
Si además queremos que se muestren las cabeceras para saber que es exactamente cada uno de los resultados mostrados ejecutaremos el siguiente comando:
docker stats --format "table {{.Name}}:\t {{.CPUPerc}}"
Para finalizar solo comentar que el el formato stándard que aplica docker stats es "table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDs}}"
. Por lo tanto si ejecutamos el siguiente comando veremos exactamente lo mismo que si ejecutáramos el comando docker stats
.
Obtener información de nuestros contenedores con Docker events
Para ver monitorizar los eventos de todo lo que pasa en Docker podemos ejecutar el siguiente comando en la terminal:
docker events
Una vez ejecutado el comando, la terminal quedará bloqueada a la espera de mostrar eventos relacionados con nuestros contenedores. A modo de ejemplo en el momento de parar un contenedor se mostrará del siguiente resultado:
La totalidad de eventos que podremos registrar los encontraréis en el siguiente enlace. A continuación muestro un breve resumen de los eventos más importantes que podemos registrar:
- Creación o eliminación de un contenedor.
- La creación o eliminación de una red.
- Todo tipo de operaciones realizadas con plugins.
- La actualización de una imagen.
- Etc.
Información aportada por el comando Docker info
Para finalizar con el artículos veremos el comando docker info
. Si abren una terminal y ejecutan el siguiente comando:
docker info
Obtendremos información genérica sobre Docker. Algunos de los datos que podrán obtener son los siguientes:
- Número de imágenes y contenedores que tenemos en nuestro servidor.
- Contenedores que están levantados y que por lo tanto estamos usando.
- Datos e información sobre el sistema operativo en que tenemos instalados los contenedores.
- El directorio raíz de Docker.
- Etc.
Fuentes:
https://geekland.eu/monitorizar-el-rendimiento-de-contenedores-docker/
0 comentarios :
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.