¿Dónde debe un paquete / opt escribir registros?

13

Estoy instalando un paquete personalizado para /opt/package_namealmacenar archivos de configuración /etc/opt/package_namey archivos estáticos /var/opt/package_name/static/, todo siguiendo las convenciones sugeridas por FHS. [ 1 ] [ 2 ] [ 3 ]

También necesito almacenar algunos archivos de registro. Quiero que sean detectables por las herramientas de análisis, por lo que también deberían estar en una ubicación convencional. En caso de que entren:

  • /var/log/package_name (como un paquete del sistema, aunque este sea un paquete personalizado)
  • /var/opt/package_name/log(después de la /var/optconvención, pero ¿se puede descubrir?)
  • ¿algo más?
david.libremone
fuente
¿Tiene en mente un ejemplo de una herramienta de análisis que escanea / var / log?
sourcejedi
55
¿Por qué no es la respuesta syslog?
Joshua

Respuestas:

19

Los colocaría en /var/log/package_name; satisface el principio de menos sorpresa mejor que /var/opt/package_name/log. No tengo una cita para esto; simplemente coincide donde buscaría registros.

También podría renunciar a escribir mis propios archivos de registro y, en su lugar, iniciar sesión syslogcon una etiqueta y facilidad apropiadas; Si busco una integración limpia con herramientas de análisis establecidas, no creo que pueda mejorar mi canal de comunicaciones:

  • Todas las herramientas genéricas con "análisis de registro" como una función enumerada ya están vigiladas syslog.
  • La semántica de liberación y rotación de archivos de registro se maneja para mí; No tengo que configurar un mecanismo para logrotatedecirme que suelte el archivo y abra uno nuevo. ¡Ni siquiera tengo que contar logrotatesobre nuevos archivos para rotar!
  • La descarga de registros a los servidores de registro central se maneja para mí, si el sitio lo requiere; Las herramientas establecidas existentes, como por ejemplo rsyslog, estarán en uso si es necesario, por lo que no tengo que pensar en implementar esa función yo mismo.
  • Los controles de acceso (POSIX y, por ejemplo, SELinux) alrededor de los archivos de registro ya se manejan, por lo que no necesito prestar tanta atención a la semántica de seguridad específica de la distribución.

A menos que esté haciendo un formato binario personalizado para mi registro e incluso entonces, prefiero formatos de texto analizables por máquina amigables con syslog como JSON. Me cuesta mucho justificar mis propios archivos de registro; Las herramientas de análisis ya miran syslogcomo un halcón.

Michael Mol
fuente
8

A medida que sigue las convenciones de FHS para sus archivos de configuración de paquetes, debe ser coherente y almacenar los archivos de registro /var/opt/package_name/log.

El FHS dice:

Los datos variables de los paquetes en / opt deben instalarse en / var / opt /

y también declara

No pueden existir otros archivos de paquete fuera de las jerarquías / opt, / var / opt y / etc / opt, excepto aquellos archivos de paquete que deben residir en ubicaciones específicas dentro del árbol del sistema de archivos para funcionar correctamente. Por ejemplo, los archivos de bloqueo del dispositivo deben colocarse en / var / lock y los dispositivos deben ubicarse en / dev.

Tener los archivos de registro debajo /var/optno impide que el paquete funcione correctamente, por lo que su uso /var/logviola claramente el estándar.

No está claro a qué te refieres con "¿es esto reconocible?" Como es probable que los registros personalizados sean manejados por herramientas personalizadas de todos modos, pero suponiendo que una herramienta genérica esté diseñada para procesarlos, debe explorar la ubicación estándar de los paquetes desagregados como el suyo.

Tenga en cuenta que sysloges una función útil para centralizar y ajustar la configuración de registro, pero no resuelve completamente el problema sobre dónde almacenar los registros cuando tiene que hacerlo en archivos sin formato con una ruta bien conocida. Algunos archivos a veces almacenados en el directorio de registro de una aplicación están diseñados para que la aplicación misma o los programas asociados puedan acceder a ellos utilizando su ruta esperada, por ejemplo, un archivo que almacene un ID de proceso, por sysloglo que no funcionará para ellos.

jlliagre
fuente