aprendiendo sobre el registro / rotación general en Linux?


13

Suponga que, además de los registros del servidor web Apache, nunca tuve contacto con ningún tipo de registros (profesionales) en ningún sistema operativo. Entonces, el registro, aunque entiendo algunos conceptos básicos, es un tema bastante nuevo. Por el momento, la inversión para aprender completamente sobre este tema parece ser bastante grande, pero aún no sé si vale la pena saber más que los conceptos más abstractos.

¿Qué recursos sugeriría si alguien en esa situación consume (tutoriales, páginas de manual, libros) para aprender sobre el registro?

¿Qué registros debe leer un usuario normal de Linux diariamente / mensualmente? ¿Es correcto incluso suponer que están escritos para la legibilidad humana o generalmente son evaluados y utilizados por otras herramientas?

¿Qué debe saber el usuario normal * nix y el desarrollador de software sobre estos registros?

¿Qué necesita saber sobre la rotación de registros, si no se espera que administre servidores web profesionales con una gran cantidad de eventos?


¿Le importa si yo (o usted) edito el título para leer "en linux" en lugar de "en ubuntu" ya que estas son esencialmente la misma pregunta (vea mi respuesta)? De esa manera es menos probable que terminan con duplicados cerrados preguntas sobre "el aprendizaje de la tala en el arco", "aprender registro en centOS", etc.
GOLDILOCKS

No me importa ese tipo de cambios, siempre y cuando las respuestas sean buenas :)
erikbwork

Respuestas:


18

[Esto se escribió unos años antes de la adopción generalizada de journald en los sistemas systemd y no se menciona. Actualmente (finales de 2018), tanto journald como (r) syslog, descritos a continuación, se usan en distribuciones como Debian. En otros, es posible que deba instalar rsyslog si desea usarlo junto, pero la integración con journald es sencilla.]

No discutiré mucho sobre el registro con respecto a ubuntu, ya que el tema está estandarizado para Linux en general (y creo que la mayoría o todo lo que tengo que decir también es cierto en general para cualquier sabor * nix, pero no toma mi palabra para eso). Tampoco diré mucho sobre "cómo leer registros" más allá de responder esta pregunta:

¿Es correcto incluso suponer que están escritos para la legibilidad humana o generalmente son evaluados y utilizados por otras herramientas?

Supongo que eso depende de la aplicación, pero en general, al menos con respecto a lo que entra en syslog (ver más abajo), deberían ser legibles para los humanos. "Significativo para mí" es otro problema, jajaja. Sin embargo, también pueden estar estructurados de manera que sea más fácil analizarlos con herramientas estándar (grep, awk, etc.) para fines específicos.

En cualquier caso, primero, hay una distinción entre las aplicaciones que realizan su propio registro y las aplicaciones que utilizan el registrador del sistema. Apache por defecto es el primero, aunque se puede configurar para hacer el segundo (que creo que la mayoría de la gente consideraría indeseable). Las aplicaciones que realizan su propio registro podrían hacerlo de cualquier manera utilizando cualquier ubicación para los archivos, por lo que no hay mucho que decir al respecto. El registrador del sistema generalmente se conoce como syslog.

syslog

"Syslog" es realmente un estándar que se implementa con un proceso de daemon genéricamente llamado syslogd (¡d es para daemon!). El demonio syslog predominante actualmente en uso en Linux, incluido ubuntu, es rsyslogd. Rsyslogd puede hacer mucho, pero tal como está configurado de fábrica en la mayoría de las distribuciones, emula un syslog tradicional, que clasifica las cosas en archivos de texto sin formato /var/log. Puede encontrar documentación para ello en /usr/share/doc/rsyslog-doc-[version](cuidado, también hay un /usr/share/doc/rsyslog-[version], pero eso es solo avisos del paquete fuente como NEWSy ChangeLog). Si está allí, es html, pero Stack Exchange no permite incrustar enlaces de archivos locales:

file://usr/share/doc/rsyslog-doc/index.html

Entonces podrías intentar copiar pegar eso. Si no está allí, puede ser parte de un paquete separado que no está instalado. Consulte su sistema de embalaje (por ejemplo, apt-cache search rsyslog | grep doc).

La configuración está en /etc/rsyslog.conf, que tiene una página de manual man rsyslog.conf, aunque aunque la página de manual hace una buena referencia, puede ser menos penetrable como introducción. Afortunadamente, los fundamentos del stock rsyslog.conf se ajustan a los del syslog.conf tradicional, para el cual hay muchas presentaciones y tutoriales. Este , por ejemplo; lo que quiere quitar de eso, mientras mira en su rsyslog.conf local, es una comprensión de las instalaciones y prioridades ("prioridad" a veces se denomina nivel de registro), ya que son parte del estándar de syslog mencionado anteriormente. La razón por la cual este estándar es importante es porque rsyslog realmente obtiene sus cosas a través del núcleo, y lo que implementa el núcleo es el estándar.

Con respecto a las $directivas en rsyslog.conf, estas son específicas de rsyslog y si instala ese paquete de documentos opcional encontrará una guía para ellas rsyslog_conf_global.html.

Diviértete ... si tienes curiosidad acerca de cómo las aplicaciones usan el registrador del sistema, mira man loggery man 3 syslog.

Rotación de registro

El medio normativo de los registros rotativos es a través de una herramienta llamada logrotate(y hay una man logrotate). El método normativo de usar logrotate es a través del demonio cron , aunque no tiene que hacerse de esa manera (por ejemplo, si tiende a apagar su escritorio todos los días, también puede hacerlo una vez en el arranque antes de que comience syslog , pero, obviamente, después de montar el sistema de archivos rw).

Hay una buena introducción para iniciar sesión aquí . Tenga en cuenta que logrotate no es solo para cosas de syslog , sino que puede usarse con cualquier archivo. El archivo de configuración base es /etc/logrotate.conf, pero dado que la configuración tiene una directiva "incluir", comúnmente la mayoría de las cosas van a archivos individuales en el /etc/logrotate.ddirectorio (aquí d es para el directorio, no para el demonio; logrotate no es un demonio).

Una cosa importante a tener en cuenta al usar logrotate es cómo una aplicación volverá a actuar cuando su archivo de registro se "rote", es decir, se mueva , mientras la aplicación se está ejecutando. WRT (r) syslogd, simplemente dejará de escribir en ese registro (creo que hay una justificación de seguridad para esto). La forma habitual de lidiar con eso es decirle a syslog que se reinicie (y vuelva a abrir todos sus archivos), por lo que verá una postrotatedirectiva en logrotate conf files que envía SIGHUP al syslog daemon.


2
Si también lo menciona syslog-ng, habrá escrito todo lo que hay que decir sobre el registro de Linux. Excelente respuesta
Nils

Aprendí mucho y tengo más fuentes para leer. ¡Gracias! Por cierto. ¿Por qué sería malo usar el registro del sistema para apache? ¿Y qué registros debo leer?
erikbwork

@ erikb85 1) Principalmente porque apache genera mucha salida. No he tenido que configurar Apache en mucho tiempo, así que no puedo recordar cuán flexible es WRT para enviar cosas específicas a syslog (pero supongo que es muy flexible) 2) Registros WRT que desea leer, eche un vistazo a la lógica en tu /etc/rsyslog.conf. Por ejemplo: a menudo las cosas que están por encima de cierta prioridad entrarán /var/log/messages, y las que están debajo de eso entrarán /var/log/notice. También me gusta tener un registro que contenga todo, lo que hace que se superpongan doble y triple, pero si los mantiene rotados no es gran cosa.
Ricitos de Oro

Solo para confirmar, rsyslogno es un envoltorio de demonios logrotate, ¿verdad? Porque ?
Thomas

@Thomas Realizan diferentes propósitos, aunque (r) syslog podría implementar la rotación para evitar la necesidad de logrotate. Sin embargo, tenerlos separados significa que puede usar logrotate en otras cosas que no sean archivos syslog.
Ricitos
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.