Imagínese cómo sería la vida si un servicio crítico fallara hace unos minutos y lo llamaran para salvar el día. Intenta reiniciar el servicio y simplemente no funciona. No hay mensajes de error, pero lo que es más importante, no hay rastros de lo que estaba haciendo antes de que decidiera morir. Ciento una causas pasan por tu mente y te das cuenta de que no hay manera de saber en qué dirección ir. Tal vez podría reiniciar el servidor por completo. Solo tal vez.
Este escenario es uno de los muchos en los que el registro puede ayudarlo. Por lo general, una pieza de software en ejecución mantiene un registro de actividades importantes relacionadas con su ejecución por el bien de la posteridad en un archivo. Cualquier cosa se puede guardar en un archivo de registro, ya que ayuda a los desarrolladores y administradores de sistemas a saber qué sucedió con una pieza de software en particular después del hecho. Los archivos de registro también son utilizados por personas orientadas a la seguridad para revisar el acceso a recursos particulares. En redes o mensajería, los archivos de registro registran la hora en que se enviaron o recibieron los mensajes para referencia posterior.
Los archivos de registro, por definición, siguen aumentando de tamaño según la frecuencia y el nivel de detalle con el que se actualizan. Para cumplir su propósito, normalmente se abren en modo adjunto y contienen marcas de tiempo para ayudar con la resolución de problemas y el análisis forense. Sin embargo, esto plantea un problema, ya que los archivos de gran tamaño hacen que trabajar con archivos de registro sea un proceso engorroso tanto para el sistema como para el revisor humano. Los registros se rotan para mantener los archivos de registro sostenibles. En pocas palabras, se abre un nuevo archivo mientras que el anterior se cierra y se guarda o elimina según las preferencias de diseño. Esto evita que los registros llenen particiones enteras y pongan de rodillas a los sistemas en el proceso. Es posible que haya notado la rotación de registros en funcionamiento en un sistema cercano. Mire las fechas en el boot.log
archivos.
En este caso, cuando se cumple una condición específica, se cambia el nombre del archivo actual agregando una fecha para identificarlo y rastrearlo, y se abre un nuevo archivo con el nombre original, listo para recibir mensajes de registro entrantes.
Iniciar sesión en Linux (rsyslogd)
Como era de esperar, iniciar sesión en sistemas Linux, como el servidor CentOS 7 que estoy usando para ilustración, depende de un demonio para facilitar el registro. Rsyslogd
es el nombre del antiguo servicio confiable y es de código abierto. En realidad, no es tan antiguo. Es una versión mejorada del syslog
original daemon, y posee la capacidad de procesar y reenviar registros rápidamente a cualquier ubicación en una red IP. Aparte de syslog
y rsyslog
, hay syslog-ng
, que es otro demonio para manejar registros. El controlador de registro predeterminado depende de la distribución que se elija. Rsyslog
viene por defecto en muchas distribuciones basadas en Red Hat. Ejecute el siguiente comando para verificar su presencia y versión en su sistema:
rsyslogd -v
Como es un demonio, puede verificar que esté activo empleando systemd
de la siguiente manera:
systemctl status rsyslog
Si, por alguna razón, no se está ejecutando, puede iniciarlo a través de systemd
.
[ Nota del editor:muchos sistemas más nuevos han reemplazado rsyslogd con journald para el registro. Puede elegir cualquiera de las opciones, o incluso ambas, para manejar sus necesidades de registro. Para obtener más información, consulte la documentación de su distribución. Este artículo asumirá que está utilizando rsyslogd.]
Logrotar
Logrotate
es una utilidad de Linux cuya función principal es - esperar - rotar registros. Si no está instalado como parte de la instalación predeterminada del sistema operativo, puede instalarse simplemente ejecutando:
yum install logrotate
El archivo binario se puede ubicar en /bin/logrotate
.
Al instalar logrotate
, se coloca un nuevo archivo de configuración en /etc/
directorio para controlar el comportamiento general de la utilidad cuando se ejecuta. Además, se crea una carpeta para archivos de configuración de complementos específicos del servicio para solicitudes de rotación de registros personalizadas. Más sobre esto un poco más tarde.
Trabajo cron diario
Un cron
trabajo se ejecuta diariamente que inicia la utilidad. Esto se logra haciendo una llamada a la utilidad en el cron
estándar Carpeta para trabajos diarios. Si bien los detalles de la llamada están fuera del alcance de este artículo, basta con decir que la llamada es solo un script Bash que ejecuta el logrotate
binario, diciéndole al sistema qué hacer en caso de error.
Ubicación del archivo de registro estándar
Los registros en un sistema Linux se pueden colocar en cualquier lugar que permitan los permisos. Sin embargo, debido al hecho de que están cambiando continuamente en tamaño y contenido, por definición, la jerarquía del sistema de archivos prescribe que se mantengan en el /var/log/
directorio.
La siguiente captura de pantalla es un vistazo al contenido de mi /var/log
directorio.
Archivos de configuración y ejemplos
/etc/logrotate.conf
El primer archivo a tener en cuenta con respecto a la función de logrotate
es logrotate.conf
. Este archivo de configuración contiene las directivas sobre cómo se deben rotar los archivos de registro de forma predeterminada. Si no hay un conjunto específico de directivas, la utilidad actúa de acuerdo con las directivas de este archivo.
A continuación se muestra una muestra del contenido del archivo de configuración.
Repasemos algunas de las directivas para tener una idea de la flexibilidad de logrotate. Afortunadamente, el autor de la utilidad ha incluido suficientes comentarios para que un novato se ponga en marcha. También podrías ver al man
página para una inmersión más profunda. Las directivas weekly
, dateext
, compress
, create
y rotate 4
indicar que los archivos de registro deben rotarse semanalmente , que se utilice la fecha de rotación como sufijo identificativo de los archivos rotados, que los archivos rotados deben ser comprimidos , que se va a crear un nuevo archivo para recibir registros entrantes, y que no más de cuatro se deben mantener registros. En otras palabras, se debe eliminar el quinto registro más nuevo. También tenga en cuenta que en mi sistema, debido a la presencia de #
antes de compress
directiva, la compresión está deshabilitada de forma predeterminada.
Además, hay una directiva para incluir una carpeta en particular:/etc/logrotate.d
. Esta carpeta se usa para solicitudes de rotación de registros específicas del paquete. Paquetes diseñados para aprovechar logrotate
suelte los archivos de configuración en este directorio. Esta modularidad está en consonancia con el espíritu de Linux y mejora la extensibilidad de la utilidad. Los archivos de configuración contienen directivas similares y archivos de registro personalizados cuando corresponda. También puede crear su propio archivo de configuración para manejar cualquier archivo de registro de su elección. Solo asigne un nombre al archivo, agregue el archivo de registro para procesarlo y colóquelo en este directorio. Finalmente, hay directivas para archivos de registro sin paquetes de propietario, como wtmp
y otros archivos de registro del sistema. El man
La página está llena de más directivas, y para los usuarios que tienen necesidades de rotación más específicas, les recomiendo que le den un vistazo.
/etc/logrotate.d
Afortunadamente, he hablado bastante sobre el /etc/logrotate.d
directorio, así que sin mucho preámbulo, permítame mostrarle el contenido de este directorio para llevar a casa las ideas compartidas anteriormente.
Y solo por si acaso, echemos un vistazo al archivo de configuración de Samba.
¿Puedes ver cuán similar es a logrotate.conf
? ? Antes de poner fin a esta pieza, repasemos algunas de las directivas de este archivo:
/var/log/samba/*
- El archivo de registro que se rotará. En este caso, es cada archivo de registro en el directorio de registro de Samba.
notifempty
- Directiva que establece que el archivo no debe girarse si está vacío.
olddir /var/log/samba/old
- Ubicación para almacenar registros rotados antiguos.
missingok
- Detiene logrotate
de arrojar un error si falta el archivo de registro.
copytruncate
- No cierre el archivo de registro. Haga una copia, que será el archivo rotado y renombrado, y luego trunque el archivo de registro a tamaño cero
¿Puedes adivinar lo que los sharedscripts
hace la directiva? No es necesario adivinar:consulte al man
página.
Terminando
Con suerte, esto es suficiente para ponerlo en funcionamiento con la administración de registros. Logrotate
es una utilidad de rotación de código abierto simple pero poderosa. Hasta la próxima publicación, ¡feliz rotación!
[ Curso en línea gratuito:Resumen técnico de Red Hat Enterprise Linux. ]