Saltar al contenido principal

Registros y depuración desde la línea de comandos

Esta unidad no usa el logread de BusyBox — ese comando no existe aquí. El registro funciona mediante rsyslogd en su lugar. Esta página cubre dónde viven realmente las copias de registros, cómo buscarlas desde la línea de comandos, y cómo hacer que un servicio específico registre más. Para saber qué servicio sostiene cada función y su comando de reinicio, vea la Referencia de comandos de servicios y registros; para lo básico de la línea de comandos en sí, vea Línea de comandos y preguntas frecuentes.

Todos los comandos se ejecutan como root, por SSH o por la consola.

Dónde viven realmente los registros​

Por defecto, /var/log es un directorio volátil, en memoria — esto protege el sistema de archivos raíz del desgaste o de llenarse, pero también significa que /var/log/messages no sobrevive por sí solo a un reinicio.

CopiaRutaRotación
Por defecto, en memoria/var/log/messagesRotado por /usr/sbin/rotate-messages en cuanto supera los 50 MB, o el 10% del tamaño de /tmp si eso es mayor. Solo se conserva la rotación anterior, como messages.1.gz.
Persistente, opcional/mnt/data/log/messagesSolo se escribe si se ha configurado un dispositivo de almacenamiento persistente en la pestaña Almacenamiento de la página Sistema — no es automático. Cuando existe, logrotate lo rota semanalmente y conserva 52 rotaciones comprimidas, aproximadamente un año.

Una tarea cron diaria aparte (5 1 * * * /usr/sbin/logrotate /etc/logrotate.conf) se encarga en general de los registros gestionados por logrotate.conf, independientemente de la rotación por tamaño anterior.

Algunos servicios mantienen su propio estado aparte de esto, totalmente fuera del flujo de registros — por ejemplo /mnt/data/dnsmasq/dhcp.leases, y, por instancia de VPN, una base de datos de seguimiento de conexiones en /mnt/data/openvpn/<instancia>/connections.db. Son archivos de estado, no registros, pero vale la pena conocerlos cuando el comportamiento de un servicio no coincide con lo que dice su registro.

Seguir y buscar​

tail -f /var/log/messages
grep openvpn /var/log/messages | tail -20

Si hay almacenamiento persistente configurado, /mnt/data/log/messages guarda el mismo flujo con más historial — compruebe ls /mnt/data/log/ primero para confirmar que existe en esta unidad antes de depender de él.

Para el prefijo de registro que realmente escribe cada servicio, vea la tabla en la Referencia de comandos de servicios y registros.

Qué hace realmente la página de Registros de la interfaz web​

La página Registros de la interfaz web es una capa fina sobre una única llamada ubus, que puede usar directamente — útil en un script, o cuando quiere el comportamiento de búsqueda exacto de la página sin abrir un navegador:

ubus call ns.log get-log '{"search":"openvpn","limit":20}'

Esto busca directamente en /var/log/messages (en efecto grep <búsqueda> /var/log/messages | tail -n <límite>) — no está respaldado por una base de datos de registros aparte.

VictoriaLogs: para qué sirve, y no sirve, aquí​

VictoriaLogs es un paquete opcional (opkg install victoria-logs), que no forma parte de la imagen por defecto. Instalarlo configura todo lo necesario de una vez: el paquete también registra una regla de reenvío de rsyslogd, así que en cuanto se instala, cada mensaje de registro se envía a 127.0.0.1:5514 por TCP (con framing por conteo de octetos) a medida que rsyslogd lo procesa. Lo que VictoriaLogs no es, actualmente, es algo conectado a nada más: ni la página de Registros de la interfaz web ni la API lo consultan — la página de Registros sigue funcionando como se describió arriba, directamente desde el archivo de texto plano. Si instala VictoriaLogs, obtiene todo lo que rsyslogd vea a partir de ese momento, consultable usted mismo con su propio lenguaje de consulta, LogsQL, por HTTP en el puerto 9428:

opkg update && opkg install victoria-logs
/etc/init.d/victoria-logs start

curl -s 'http://127.0.0.1:9428/select/logsql/query' \
--data-urlencode 'query=openvpn' \
--data-urlencode 'limit=20'

Vale la pena hacerlo si quiere el filtrado de LogsQL (por rango de tiempo, por campo, condiciones combinadas) en lugar de un grep simple — los nombres exactos de campo disponibles dependen de la plantilla de syslog con la que rsyslogd reenvía, así que revise primero un resultado sin filtrar (baje --data-urlencode 'limit=20' a 'limit=1' para ver uno) antes de construir una consulta filtrada alrededor de un campo específico. En cualquier caso, es una herramienta que usted mismo consulta — no una segunda copia que la interfaz ya muestre.

Aumentar la verbosidad de un servicio específico​

El volumen de registro por defecto suele ser demasiado silencioso para depurar un problema específico. Cada uno de estos aumenta la verbosidad de un servicio; bájela de nuevo cuando ya tenga lo que necesita — un rastreo IKE completo o la verbosidad máxima de OpenVPN produce mucha salida muy rápido, lo cual empuja /var/log/messages hacia su punto de rotación antes.

ServicioCómo aumentar la verbosidadDespués
OpenVPNuci set openvpn.<instancia>.verb='5' (0 silencioso a 11 muy detallado; 3 es el valor de fábrica)uci commit openvpn && /etc/init.d/openvpn restart
dnsmasq (DNS/DHCP)uci set dhcp.@dnsmasq[0].logqueries='1' para registrar cada consulta DNS, agregue .logdhcp='1' para las transacciones DHCP tambiénuci commit dhcp && /etc/init.d/dnsmasq restart
IPsec (charon)Edite /etc/strongswan.d/charon-logging.conf — suba un subsistema específico (por ejemplo ike = 2) o default para todo/etc/init.d/ipsec restart
nftables (firewall)Agregue log a una regla (es exactamente lo que hace el interruptor de registro por regla de la interfaz web) para un registro persistente, o ejecute nft monitor trace para un rastreo de paquetes en vivo, sin filtrarLos cambios de regla necesitan /etc/init.d/firewall reload; monitor trace se ejecuta de inmediato en primer plano

La opción de registro de consultas DNS de arriba es también lo que exponen los propios ajustes de DNS de la interfaz web — uci get dhcp.@dnsmasq[0].logqueries es el mismo valor que lee y escribe el interruptor de registro de consultas de la página DNS y DHCP.

Páginas relacionadas​