log example apache ubuntu apache2 logrotate

example - Configuración de apache y logrotate.



apache log level (3)

Siguiendo las instrucciones de un sitio web, acabo de cambiar el archivo de configuración logrotate, agregando la directiva su solicitada de la siguiente manera y ahora gira de la manera correcta.

su <user> <group>

La semana pasada encontré un problema en mi servidor, porque el uso del disco era del 100% y descubrí que Apache había creado un enorme archivo de error.log de 60 GB. Cambié entonces el LogLevel a emerg, pero después de una semana es de nuevo 1.3GB que definitivamente es demasiado. Además tengo un access.log de 6MB y un other_vhosts_access.log de 167MB. Así que descubrí que el problema podría ser logrotate no funciona. En realidad, los archivos comprimidos con gzip de los registros tienen una fecha muy antigua (23 de febrero). Así que intenté primero cambiar la configuración del archivo logrotate para apache2, agregando un tamaño máximo para el archivo, ahora con este aspecto:

/var/log/apache2/*.log { weekly size 500M missingok rotate 20 compress delaycompress notifempty create 640 root adm sharedscripts postrotate if /etc/init.d/apache2 status > /dev/null ; then / /etc/init.d/apache2 reload > /dev/null; / fi; endscript prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then / run-parts /etc/logrotate.d/httpd-prerotate; / fi; / endscript }

Después de esto, intenté manualmente forzar logrotate para ejecutar una configuración específica para apache con

logrotate -f /etc/logrotate.d/apache2

y tengo este error:

error: skipping "/var/log/apache2/access.log" because parent directory has insecure permissions (It''s world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation. error: skipping "/var/log/apache2/error.log" because parent directory has insecure permissions (It''s world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation. error: skipping "/var/log/apache2/other_vhosts_access.log" because parent directory has insecure permissions (It''s world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.

Lo extraño es que de alguna manera ejecuta la rotación, creando un archivo de error.log vacío, pero con permisos diferentes del anterior, y sin comprimir el error.log existente. Mirando el directorio de registro de apache, ahora se ve así:

-rwxrwxrwx 1 root adm 6.3M Oct 21 10:54 access.log -rwxrwxrwx 1 root adm 22K Feb 18 2014 access.log.1 -rwxrwxrwx 1 root adm 7.0K Feb 16 2014 access.log.2.gz -rwxrwxrwx 1 root adm 4.0K Feb 9 2014 access.log.3.gz -rw------- 1 amministratore amministratore 0 Oct 21 10:32 error.log -rw-r--r-- 1 root root 1.3G Oct 21 10:57 error.log.1 -rwxrwxrwx 1 root adm 167M Oct 21 10:57 other_vhosts_access.log -rwxrwxrwx 1 root adm 225K Feb 23 2014 other_vhosts_access.log.1 -rwxrwxrwx 1 root adm 16K Feb 15 2014 other_vhosts_access.log.2.gz -rwxrwxrwx 1 root adm 3.2K Feb 8 2014 other_vhosts_access.log.3.gz

Entonces, ¿cuál es la forma correcta de proceder? ¿Debo cambiar los permisos del directorio / var / log / apache2? (que ahora es 777) No establecí estos permisos y no sé si es correcto. ¿o debo decirle a logrotate qué usuario usar para la rotación? ¿y cómo?


Tengo "el directorio principal tiene permisos inseguros" en un intento de forzar la rotación de syslog.
Así es como lo resolví:

cat /etc/logrotate.conf ... # use the syslog group by default, since this is the owning group # of /var/log/syslog. su root syslog vim /etc/logrotate.d/rsyslog # Add to top: su root syslog logrotate -f /etc/logrotate.d/rsyslog # No errors now, log is rotated.


simplemente añada su root adm al archivo de configuración:

/var/log/apache2/*.log { # … su root adm }