Flashcards: 108.2 - Registro Del Sistema
32 tarjetas de repaso. Usa el sistema de repeticion espaciada para memorizar.
P: En rsyslog, que significa la regla mail.=warning /var/log/mail.warn?
R: b) Registra solo los mensajes de la facility mail con prioridad exacta warning. El operador = antes de la prioridad indica que solo se registra esa prioridad exacta. Sin el operador =, la regla mail.warning registraria la prioridad warning y todas las superiores (err, crit, alert, emerg). Los operadores de prioridad en syslog son: sin operador (esa y superiores), = (solo esa exacta), ! (excepto esa y superiores), y none (excluir la facility).
P: Cual es el orden correcto de las prioridades de syslog, de mayor a menor severidad?
R: b) emerg, alert, crit, err, warning, notice, info, debug. Las 8 prioridades de syslog en orden de mayor a menor severidad son: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7). Una regla mnemotecnica util es: “Every Alley Cat Eats Wet Noodles In December” (Emerg, Alert, Crit, Err, Warning, Notice, Info, Debug).
P: Que comando envia un mensaje personalizado a syslog con facility local0 y prioridad info desde un script bash?
R: b) logger -p local0.info -t miscript "Mensaje". El comando logger se utiliza para generar mensajes syslog desde la linea de comandos o scripts. La opcion -p especifica la facility y prioridad en formato facility.priority, y -t agrega una etiqueta (tag) al mensaje. Los comandos syslog, rsyslog y journalctl --send no existen con esa sintaxis.
P: Cual es la diferencia entre /var/log/wtmp y /var/log/btmp?
R: b) wtmp registra los logins exitosos y btmp los intentos de login fallidos. /var/log/wtmp registra los logins exitosos del sistema y se lee con el comando last. /var/log/btmp registra los intentos de login fallidos y se lee con el comando lastb (requiere permisos de root). Ambos son archivos binarios que no se pueden leer directamente con cat o less; se necesitan los comandos especializados last y lastb respectivamente.
P: En la configuracion de rsyslog, que diferencia hay entre *.* @192.168.1.100:514 y *.* @@192.168.1.100:514?
R: b) @ envia por UDP y @@ envia por TCP. En rsyslog, un solo @ indica envio de logs al servidor remoto usando UDP, mientras que doble @@ indica envio usando TCP. Una regla mnemotecnica es: @ = UDP (un arroba, un protocolo simple), @@ = TCP (dos arrobas, protocolo con mas garantias). TCP es mas fiable porque garantiza la entrega, pero genera mas overhead. UDP es mas rapido pero puede perder mensajes.
P: Que comando de journalctl muestra los logs del servicio sshd desde hace 2 horas con prioridad error o superior?
R: b) journalctl -u sshd --since "2 hours ago" -p err. En journalctl, la opcion -u filtra por unidad de servicio systemd, --since especifica el tiempo de inicio (acepta formatos como “2 hours ago”, “yesterday”, o fechas absolutas), y -p filtra por prioridad (la prioridad indicada y todas las superiores). La prioridad err incluye err, crit, alert y emerg.
P: Como se limita el espacio en disco del journal de systemd a un maximo de 200MB de forma permanente?
R: b) Configurando SystemMaxUse=200M en /etc/systemd/journald.conf. Para limitar de forma permanente el espacio del journal, se configura la directiva SystemMaxUse=200M en la seccion [Journal] de /etc/systemd/journald.conf, seguido de un reinicio del servicio con systemctl restart systemd-journald. La opcion A (journalctl --vacuum-size=200M) realiza una limpieza inmediata pero no establece un limite permanente. Las opciones C y D no son sintaxis validas.
P: En logrotate, que hace la directiva copytruncate?
R: b) Copia el contenido al archivo rotado y trunca el original a cero. La directiva copytruncate copia el contenido del archivo de log al archivo rotado y luego trunca el archivo original a cero bytes. Esto es util para aplicaciones que mantienen el archivo abierto y no pueden ser senalizadas para reabrir el archivo (ya que el descriptor de archivo sigue apuntando al mismo inodo). Sin copytruncate, logrotate mueve el archivo y crea uno nuevo, lo cual requiere que la aplicacion reabra el archivo.
P: Que valor de Storage en /etc/systemd/journald.conf hace que el journal sea persistente creando automaticamente el directorio si no existe?
R: b) Storage=persistent. Con Storage=persistent, el journal almacena los logs de forma persistente en /var/log/journal/ y crea el directorio automaticamente si no existe. Con Storage=auto (valor por defecto), el almacenamiento es persistente solo si el directorio /var/log/journal/ ya existe; si no existe, los logs se guardan de forma volatil en /run/log/journal/. Storage=volatile almacena solo en RAM y Storage=permanent no es un valor valido.
P: Cual de los siguientes comandos muestra los mensajes del buffer del anillo del kernel con marcas de tiempo legibles?
R: b) dmesg -T. La opcion -T de dmesg muestra las marcas de tiempo en formato legible para humanos (fecha y hora completas) en lugar de los segundos desde el arranque del sistema. La opcion -H muestra el formato legible para humanos (human-readable) con paginacion. La opcion -l filtra por nivel de severidad (por ejemplo, dmesg -l err). La opcion -c muestra los mensajes y limpia el buffer.
P: Que comando de journalctl muestra los logs del arranque anterior al actual?
R: b) journalctl -b -1. journalctl -b -1 muestra los logs del arranque anterior al actual. La opcion -b sin argumento o -b 0 muestra los logs del arranque actual. -b -2 mostraria los del arranque anterior al anterior, y asi sucesivamente. Para ver la lista de arranques disponibles se usa journalctl --list-boots. Esta funcionalidad requiere que el journal sea persistente (almacenado en /var/log/journal/); con almacenamiento volatil solo se dispone del arranque actual.
P: Que regla de rsyslog registra todos los mensajes de prioridad info o superior, EXCEPTO los de la facility mail?
R: a) *.info;mail.none /var/log/messages. La regla *.info;mail.none /var/log/messages registra todos los mensajes (*) con prioridad info o superior, excepto los de la facility mail (indicado por .none). El punto y coma ; separa multiples selectores en una misma regla. El modificador .none excluye completamente una facility. Se pueden excluir multiples facilities: *.info;mail.none;cron.none /var/log/messages.
P: Donde almacena journald los logs de forma volatil (se pierden al reiniciar)?
R: b) /run/log/journal/. Cuando el journal de systemd esta configurado como volatil (o cuando Storage=auto y no existe /var/log/journal/), los logs se almacenan en /run/log/journal/. El directorio /run/ es un sistema de archivos en RAM (tmpfs), por lo que su contenido se pierde al reiniciar el sistema. Para almacenamiento persistente se usa /var/log/journal/. Con Storage=persistent en /etc/systemd/journald.conf, journald crea automaticamente el directorio /var/log/journal/ si no existe.
P: Que opcion de journalctl permite seguir los logs en tiempo real, similar a tail -f?
R: c) journalctl -f. journalctl -f (follow) muestra las ultimas entradas del journal y sigue mostrando las nuevas entradas en tiempo real, de forma similar a tail -f en archivos de log tradicionales. Se puede combinar con otros filtros: journalctl -f -u sshd sigue los logs del servicio sshd en tiempo real, o journalctl -f -p err sigue solo los mensajes con prioridad error o superior. La opcion -r muestra los logs en orden inverso (mas recientes primero).
P: Que facility de syslog se usa para mensajes del kernel?
R: b) kern. La facility kern se usa para mensajes del kernel de Linux. Otras facilities importantes son: auth/authpriv (autenticacion y seguridad), cron (servicio cron), daemon (demonios del sistema), mail (sistema de correo), user (aplicaciones de usuario), lpr (sistema de impresion), syslog (mensajes internos del propio syslog), y local0 a local7 (8 facilities para uso personalizado). La facility system no existe en syslog.
P: Que directiva de logrotate evita rotar un archivo si esta vacio?
R: b) notifempty. La directiva notifempty de logrotate indica que no se debe rotar el archivo si esta vacio, evitando crear archivos rotados innecesarios. missingok indica que no se genere un error si el archivo de log no existe. Otras directivas comunes: compress (comprimir archivos rotados), delaycompress (comprimir en la siguiente rotacion), copytruncate (copiar y truncar en vez de mover), y dateext (usar fecha como extension).
P: Que comando reduce el tamano del journal de systemd eliminando las entradas mas antiguas de 2 semanas?
R: b) journalctl --vacuum-time=2weeks. journalctl --vacuum-time=2weeks elimina las entradas del journal que tienen mas de 2 semanas de antiguedad. Para limitar por tamano se usa --vacuum-size=100M (reduce a un maximo de 100 MB). Estos comandos realizan una limpieza puntual. Para establecer limites permanentes se configuran las directivas SystemMaxUse, SystemMaxFileSize y MaxRetentionSec en /etc/systemd/journald.conf. Para ver el espacio usado: journalctl --disk-usage.
P: Que configuracion en syslog-ng define un objeto de tipo filtro?
R: c) filter f_auth { ... };. En syslog-ng, la configuracion se basa en cuatro tipos de objetos: source (define de donde se reciben los mensajes), destination (define donde se envian), filter (define criterios de filtrado como facility y prioridad), y log (conecta source, filter y destination). Un filtro tipico seria: filter f_auth { facility(auth, authpriv); };. La configuracion se encuentra en /etc/syslog-ng/syslog-ng.conf.
P: Que comando de journalctl muestra solo los mensajes del kernel, de forma similar a dmesg?
R: b) journalctl -k. journalctl -k muestra solo los mensajes del kernel, de forma equivalente a dmesg. Se puede combinar con otras opciones: journalctl -k -b -1 muestra los mensajes del kernel del arranque anterior, y journalctl -k -p err muestra solo los mensajes del kernel con prioridad error o superior. A diferencia de dmesg, que muestra el buffer del anillo del kernel actual, journalctl -k puede acceder a mensajes del kernel de arranques anteriores si el journal es persistente.
P: Que significa el prefijo - antes de un archivo de destino en una regla de rsyslog, como en *.*;auth.none -/var/log/syslog?
R: b) Que la escritura es asincrona (no se fuerza un sync despues de cada mensaje). El prefijo - antes de la ruta de un archivo en rsyslog indica escritura asincrona: no se fuerza un sync() al disco despues de cada mensaje escrito. Esto mejora el rendimiento significativamente, especialmente en sistemas con alto volumen de logs, pero implica un riesgo minimo de perder algunos mensajes si el sistema se apaga abruptamente. Sin el prefijo -, rsyslog fuerza un sync despues de cada escritura, lo que es mas seguro pero mas lento.
P: Escribe el comando para ver los logs del servicio nginx usando journalctl.
R: journalctl -u nginx. El comando journalctl -u nginx filtra y muestra solo los logs de la unidad de servicio nginx de systemd. La opcion -u (unit) acepta el nombre del servicio con o sin el sufijo .service. Se puede combinar con otras opciones: -f para seguimiento en tiempo real, -p err para filtrar por prioridad, --since "1 hour ago" para limitar por tiempo, y -n 50 para mostrar solo las ultimas 50 entradas.
P: Escribe el comando para enviar un mensaje de prueba a syslog con la etiqueta mibackup y prioridad local0.info.
R: logger -p local0.info -t mibackup. El comando logger genera mensajes syslog desde la linea de comandos o scripts. La opcion -p especifica la facility y prioridad en formato facility.priority, y -t establece una etiqueta (tag) para identificar el origen del mensaje. El texto del mensaje se puede pasar como argumento: logger -p local0.info -t mibackup "Backup completado". Es una herramienta esencial para registrar eventos en scripts de administracion.
P: Escribe el comando para ver las ultimas 20 entradas del journal de systemd sin paginador.
R: journalctl -n 20 —no-pager. El comando journalctl -n 20 --no-pager muestra las ultimas 20 entradas del journal sin usar un paginador (como less), enviando la salida directamente a stdout. La opcion -n (lines) limita el numero de entradas mostradas. --no-pager es util en scripts o cuando se quiere procesar la salida con otros comandos. Sin -n, journalctl muestra todas las entradas desde el inicio del journal.
P: Escribe el comando para forzar la ejecucion de logrotate en modo debug (simulacion sin ejecutar).
R: logrotate -d /etc/logrotate.conf. El comando logrotate -d /etc/logrotate.conf ejecuta logrotate en modo debug, simulando la rotacion sin realizar ningun cambio real. Es util para verificar que la configuracion es correcta antes de aplicarla. Para forzar una rotacion real: logrotate -f /etc/logrotate.conf. Para ejecutar normalmente: logrotate /etc/logrotate.conf. Logrotate se ejecuta tipicamente mediante cron de forma diaria.
P: Escribe el comando para ver el espacio en disco utilizado por el journal de systemd.
R: journalctl —disk-usage. El comando journalctl --disk-usage muestra el espacio en disco total utilizado por los archivos del journal de systemd. Es util para monitorear el crecimiento del journal y decidir si es necesario realizar una limpieza con journalctl --vacuum-size=TAMANO o journalctl --vacuum-time=TIEMPO. Para limitar permanentemente el tamano, se configura SystemMaxUse en /etc/systemd/journald.conf.
P: Un administrador configura rsyslog con la regla local3.* /var/log/app_custom.log pero no aparecen mensajes. El desarrollador confirma que la aplicacion envia logs con facility syslog. Cual es el problema?
R: La aplicacion esta enviando mensajes con la facility syslog (mensajes internos del propio sistema de logging), pero la regla filtra por local3. Para capturar esos mensajes, la regla deberia ser syslog.* /var/log/app_custom.log, o bien el desarrollador debe reconfigurar la aplicacion para usar local3 como facility. Las facilities local0 a local7 estan reservadas para uso personalizado y son las recomendadas para aplicaciones propias. La facility syslog esta reservada para mensajes generados internamente por el propio demonio syslog.
P: Un servidor usa systemd-journald y rsyslog simultaneamente, pero rsyslog no recibe los mensajes del journal. Que directiva debe configurarse en /etc/systemd/journald.conf para solucionar esto?
R: Debe configurarse ForwardToSyslog=yes en la seccion [Journal] de /etc/systemd/journald.conf. Esta directiva indica a journald que reenvie los mensajes al syslog tradicional (rsyslog o syslog-ng) a traves del socket /dev/log. Otras directivas de reenvio disponibles son: ForwardToKMsg (reenviar al buffer del kernel), ForwardToConsole (reenviar a la consola), y ForwardToWall (enviar mensajes criticos a todos los terminales). Tras modificar la configuracion, se debe reiniciar el servicio con systemctl restart systemd-journald.
P: Un servidor Linux tiene instalado tanto rsyslog como systemd-journald. Un junior pregunta cual es la diferencia fundamental entre ambos sistemas de logging. Cual es la respuesta correcta?
R: rsyslog es un demonio de logging tradicional basado en el protocolo syslog que almacena logs en archivos de texto plano en /var/log/. systemd-journald es el sistema de logging nativo de systemd que almacena logs en formato binario estructurado consultable con journalctl. Las diferencias clave son: rsyslog usa archivos de texto (legibles con cat, grep, less), journald usa formato binario (solo legible con journalctl). rsyslog se configura en /etc/rsyslog.conf, journald en /etc/systemd/journald.conf. Ambos pueden coexistir: journald captura los logs y los reenvia a rsyslog con ForwardToSyslog=yes.
P: Escribe el comando logger para enviar el mensaje “Error en disco” con facility local5, prioridad err, y etiqueta monitor-disco.
R: logger -p local5.err -t monitor-disco "Error en disco". La opcion -p especifica facility y prioridad en formato facility.priority. La opcion -t define la etiqueta (tag) que aparecera en el log para identificar el origen del mensaje. El texto del mensaje se pasa como argumento entre comillas. El comando logger es esencial en scripts de administracion para registrar eventos en syslog. Otros usos: logger -s envia tambien a stderr, y logger -i incluye el PID del proceso en el mensaje.
P: Despues de conectar un disco USB a un servidor, necesitas verificar si el kernel lo detecto correctamente. Que comando usarias y por que?
R: dmesg o dmesg -T para ver los mensajes del buffer del anillo del kernel con marcas de tiempo legibles. El kernel registra en su ring buffer todos los eventos de hardware, como la deteccion de nuevos dispositivos, errores de disco o problemas de memoria. Opciones utiles: -T muestra timestamps legibles, -l err filtra por nivel de severidad, -w sigue los mensajes en tiempo real (similar a tail -f), y -c muestra y limpia el buffer (requiere root). Tambien se puede usar journalctl -k para acceder a los mismos mensajes del kernel a traves de journald.
P: En el examen LPIC-1 aparece la regla cron.warning /var/log/cron.warn. Que mensajes se registraran: solo los de prioridad warning, o tambien los de prioridades superiores como err, crit y emerg?
R: Se registraran los mensajes de prioridad warning Y todas las superiores (err, crit, alert, emerg). En syslog, una regla sin operador especial como cron.warning captura la prioridad indicada y todas las de mayor severidad. Esta es una distincion critica en el examen: sin operador = esa prioridad y superiores; con = (por ejemplo cron.=warning) = solo esa prioridad exacta; con ! (por ejemplo cron.!warning) = excepto esa prioridad y superiores. El examen suele preguntar esta diferencia para confundir a los candidatos.
P: En el examen LPIC-1 te preguntan: “Que comando muestra los intentos de login fallidos?” y las opciones son last, lastb, lastlog y who. Cual es la respuesta correcta y por que las demas son incorrectas?
R: La respuesta correcta es lastb. El comando lastb lee /var/log/btmp y muestra los intentos de login fallidos (requiere root). Las trampas del examen: last lee /var/log/wtmp y muestra los logins exitosos, no los fallidos. lastlog lee /var/log/lastlog y muestra la fecha del ultimo login de cada usuario, no los intentos fallidos. who lee /var/run/utmp y muestra los usuarios actualmente conectados. Los archivos wtmp, btmp y lastlog son binarios y no se pueden leer con cat o less, solo con sus comandos especificos.