El cuento de no acabar. Especialmente si son dos los que meten mano. Aviso ya que la entrada es un desahogo y seguramente muy sosa por los tecnicismos.
Recibo un correo como administrador que se queja de lo siguiente:
/etc/cron.daily/logrotate:
error: odoo:19 unknown group 'odoo-test'
error: found error in /var/log/odoo/odoo-server-test.log , skipping
error: odoo:28 unknown group 'odoo-beta'
error: found error in /var/log/odoo/odoo-server-beta.log , skipping
Y le echo un vistazo al directorio de registros porque no acabo de verlo claro.
-rw-r--r-- 1 odoo odoo 846 nov 15 15:29 odoo-server.log.2019-11-14
-rw-r--r-- 1 odoo odoo 745 nov 15 15:29 odoo-server.log.2019-11-13
-rw-r--r-- 1 odoo odoo 16807 nov 18 18:21 odoo-server.log.2019-11-16
-rw-r--r-- 1 odoo odoo 467837 nov 18 18:23 odoo-server.log.2019-11-15
drwxrwxrwx 2 odoo odoo 4096 nov 18 20:51 .
-rwxrwxrwx 1 root root 330 nov 19 03:18 odoo-backup.log
drwxrwxr-x 16 root syslog 4096 nov 19 06:25 ..
-rw-r--r-- 1 odoo odoo 6320 nov 19 10:51 odoo-server.log
-rw-r--r-- 1 odoo odoo 9910 nov 19 11:20 odoo-server.log.2019-11-17
Y compruebo que no existen archivos llamados odoo-server-test.log ni odoo-server-beta.log. Pues vale. ¿ Por qué hace referencia a ello ?
Le echo otro vistazo al archivo que define las rotaciones:
/var/log/odoo/odoo-server-test.log {
daily
rotate 4
compress
size 100M
missingok
create 0640 odoo-test odoo-test
}
Y veo que hace referencia a esos archivos pero de lo único que no se queja es de su no existencia. Normal, ya que es posible que se dé tal condición en estos contenidos.
Como me he dado cuenta de que el otro administrador ha creado odoo-backup.log con permisos diferentes pues intento respetarlo con lo siguiente:
/var/log/odoo/odoo-backup.log {
monthly
rotate 3
compress
size 10M
missingok
create 0640 root root
}
/var/log/odoo/*.log {
daily
rotate 4
compress
size 100M
missingok
create 0640 odoo odoo
}
Pensando en que irá de lo más específico a lo más genérico, ¿ verdad ? Pues no, un testeo me suelta lo siguiente:
root@erp:/etc/logrotate.d# logrotate -d ./odoo
reading config file ./odoo
error: ./odoo:13 duplicate log entry for /var/log/odoo/odoo-backup.log
Handling 2 logs
rotating pattern: /var/log/odoo/odoo-backup.log 10485760 bytes (3 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/odoo/odoo-backup.log
error: skipping "/var/log/odoo/odoo-backup.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.
rotating pattern: /var/log/odoo/*.log 104857600 bytes (4 rotations)
empty log files are rotated, old logs are removed
No logs found. Rotation not needed.
No estás ayudando. Te das cuenta, ¿ verdad ?
Luego he descubierto que el archivo de registro lo crea un script para hacer copias por parte del otro administrador (encargado por el jefe, que ha perdido parte de su confianza en mí) y que los errores se pueden solucionar de la siguiente forma:
- Cambiando la propiedad y los permisos de /var/log/odoo a usuario y grupo root y permisos 0755.
- Concretando más la declaración de archivos a rotar y dejando sólo los dos, el que crea el programa odoo y el que crea el script de copia.
- Asegurándome de que la rotación crea archivos de registro con la propiedad adecuada para que los scripts puedan trabajar sobre ellos (usuario y grupo odoo).
Por lo que el archivo quedaría así:
/var/log/odoo/odoo-backup.log {
monthly
rotate 3
compress
size 10M
missingok
create 0640 odoo odoo
}
/var/log/odoo/odoo-server*.log {
daily
rotate 4
compress
size 100M
missingok
create 0640 odoo odoo
}
Y la comprobación se resume ahora a explicar si debe o no rotarlos:
root@erp:/etc/logrotate.d# logrotate -d ./odoo
reading config file ./odoo
Handling 2 logs
rotating pattern: /var/log/odoo/odoo-backup.log 10485760 bytes (3 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/odoo/odoo-backup.log
log does not need rotating
rotating pattern: /var/log/odoo/odoo-server*.log 104857600 bytes (4 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/odoo/odoo-server.log
log does not need rotating
Y, bueno, todos felices hasta la próxima en que volvamos a chocar.