Eliminar los logs del sistema

Systemd tiene su propio sistema de logs que es equivalente a syslog en el sistema init. En el caso de systemd se llama journal y almacena logs del kernel, mensajes del sistema y servicios. Cualquier linux que utilice systemd guarda los logs en la ruta /var/log/journal y en ocasiones puede llegar a ocupar demasiado espacio.

Si en algún momento necesitamos corroborar cuanto espacio está ocupando journal podemos verificarlo rápidamente mediante estos dos comandos:

du -sh /var/log/journal/
journalctl --disk-usage

Ambos deben darnos un valor similar entre sí.

Una vez que sabemos cuanto espacio está ocupando nuestro log del sistema puede que decidamos liberar un poco de dicho espacio. Para hacerlo disponemos de varios métodos. El más simple sería eliminar los archivos o incluso la carpeta aunque no es algo recomendado.

El primer paso es utilizar el comando journalctl para rotar los archivos de log, esto archiva los logs actuales y crea nuevos logs.

sudo journalctl --rotate

Una vez archivados los logs antiguos y creados los nuevos, podemos por ejemplo sólo mantener el registro de logs de los últimos dos días. De este modo todos los logs que tengan más de dos días serán eliminados. Esto podemos hacerlo del siguiente modo:

sudo journalctl --vacuum-time=2d

También existe la opción para definir el tiempo en minutos 2m, o en segundos 2s.

Y con eso ya disponemos de un método para disminuir el consumo de espacio en disco que realizan los logs del sistema.

Docker Compose

Continuando con el uso de contenedores iniciado en este post https://fioriticarlos.wordpress.com/2018/11/05/contenedores-docker/ me gustaría comentar un poco el uso de esta gran herramienta Docker Compose.

Para utilizarlo simplemente creamos un archivo docker-compose.yml donde definimos los servicios que necesitamos tener corriendo junto con las images en la que están basados. También nos permite hacer redirecciones de puetos, volumes, parámetros para el enviroment y algunas cosas más.

Para utilizar docker-compose nos debemos situar en el directorio de trabajo donde este el docker-compose.yml.

Podemos ver los contenedores que están corriendo con el comando:

docker-compose ps

Iniciar todos los servicios definidos en nuestro archivo .yml (-d lo deja corriendo en segundo plano)

docker-compose up -d

Detener un contenedor concreto (si no se pone el nombre, se detiene todo)

docker-compose stop <nombre>

De igual modo el inicio y reinicio

docker-compose start <nombre>
docker-compose restart <nombre>

En ocasiones es útil forzar el recompilado de un contenedor

docker-compose up --build -d <nombre>

Para conocer el estado de lo que esta sucediendo en el contenedor es utilizar los logs

docker-compose logs -f --tail=100 <nombre>

Para ejecutar comandos dentro del contenedor

docker-compose exec [contenedor] [comando]

Por ejemplo para conocer la versión de PHP dentro del contenedor podemos hacer:

docker-compose exec php php -v

Obtendremos una salida similar a la siguiente:

PHP 7.3.29-1+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Jul  1 2021 16:08:24) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.29, Copyright (c) 1998-2018 Zend Technologies     with Zend OPcache v7.3.29-1+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Otro ejemplo bastante habitual es acceder a la consola de comandos del contenedro, podemos hacerlo del siguiente modo:

docker-compose exec mysql bash

Nos mostrará una consola dentro del contenedor, en este caso mysql, donde podemos ejecutar comandos como en cualquier linux. Podemos salir con exit.

Podemos ver un listado con todos los contenedores que tenemos en el sistema haciendo:

docker container ls -a

Otro comando que pude resultar muy útil es docker rm que nos permite eliminar uno o más contenedores del siguiente modo. Por ejemplo para eliminar los contenedores bdc21c36899e, a95816a12a71 y 381cbee91d15 haremos:

docker rm bdc21c36899e a95816a12a71 381cbee91d15

Pronto más posts sobre contenedores.