:::: MENU ::::

Monthly Archives / May 2015

  • May 27 / 2015
  • 0
Linux

Rsyslog stops working after logrotateRsyslog ne fonctionne plus après un logrotate

You are using an RSyslog mechanism to send your logs to a centralized server, but as soon as the logrotate is executed on the server, no log is sent anymore?
I will explain here why this can happen and how to fix it properly.

In logrotate, when rotation is happening the old file is renamed and a new file is created. But some processes do not care about the filename change and keep their file descriptor on the older file (whatever the name/extension is). To avoid that kind of problem, you need to use copytruncate option in logrotate so this process can start writing to the new file.

Due to his previous option copytruncate, logrotate is working fine, but rsyslog doesn’t understand that the file has changed (truncated) and is acting like a tail -f command staying stuck on this truncated state and not sending logs anymore…

To avoid that, you have to specify a lastscript option when logrotate has been executed to renew the rsyslog spool and state of the file.

As an example, here is how a logrotate script could look like to be working fine in such a case:

The “rm /var/spool/rsyslog/MyApp-*” line has to be adapted depending on the InputFileStateFile name you used in your rsyslog configuration.Vous utilisez un mécanisme RSyslog pour envoyer vos logs à un serveur centralisé, mais dès que logrotate est exécuté sur le serveur, plus aucun log n’est envoyé?
Je vais expliquer ici pourquoi ceci peut arriver et comment corriger le problème correctement.

Dans logrotate, lorsque la rotation survient, l’ancien fichier est renommé et un nouveau fichier est créé. Mais certains processus ne se préoccupent pas du changement du nom de fichier et conservent leur descripteur de fichier sur l’ancien fichier (peu importe le nom/extension). Pour éviter ce genre de problème, vous devez utiliser l’option copytruncate dans logrotate afin que ce processus puisse commencer à écrire dans le nouveau fichier.

A cause de l’option précédente copytruncate, logrotate fonctionne correctement, mais rsyslog ne comprend pas que le fichier a changé (tronqué) et agit comme une commande tail -f en restant bloqué sur l’état tronqué et en n’envoyant plus aucun log…

Pour éviter cela, vous devez spécifier une option lastscript lorsque logrotate a été exécuté pour renouveler le spool rsyslog et l’état du fichier.

Comme exemple, voici à quoi pourrait ressembler un script logrotate pour bien fonctionner dans un cas de ce genre :

La ligne “rm /var/spool/rsyslog/MyApp-*” doit bien sûr être adaptée selon le nom InputFileStateFile que vous avez utilisé dans votre configuration rsyslog.

  • May 15 / 2015
  • 0
Linux

NPM – Warning “root” does not have permission to access the dev dirNPM – Warning “root” does not have permission to access the dev dir

If you want to install some packages using npm and you are getting this kind of error “Warning “root” does not have permission to access the dev dir“, that means that system is trying to compile some native libraries with a wrong user and so lead to an unability to gain access on certain directories.

To fix this, just use this command instead (in this example, I’m installing ‘sails‘):

It should do the trick 😉Si vous voulez installer quelques paquets en utilisant npm et que vous obtenez une erreur du type “Warning “root” does not have permission to access the dev dir“, cela signifie que le système essaie de recompiler des librairies natives avec un mauvais utilisateur, et cela mène donc à des interdictions d’accès à certains répertoires.

Pour contourner cela, utilisez simplement la commande suivante à la place (dans cet exemple, j’installe le package ‘sails‘) :

Cela devrait suffire pour contourner le problème 😉

Question ? Contact