Quels sont les avantages et les inconvénients de logrotate vs rotatelogs avec Apache?

11

Apache fournit un outil appelé rotatelogs qui a l'avantage de ne pas redémarrer apache lors de la rotation des journaux, ce qui se produit avec logrotate. Je n'ai pas assez d'expérience pour parler si c'est assez de critères pour utiliser les rotatelogs sur logrotate.

Ma question est: est-ce que quelqu'un a une expérience réelle de l'utilisation de l'un ou de ces deux outils et quelle serait votre contribution?

Que recommanderiez-vous et pourquoi?

Mohan Gulati
la source

Réponses:

7

Je recommanderais logrotate pour la plupart des gens car c'est ce qui fera tourner tous les autres journaux (KISS: Keep it Simple Stupid). Logrotate ne redémarre pas tout Apache, il lui envoie plutôt un signal qui lui dit de rouvrir tous ses fichiers journaux et de redémarrer les enfants. Ce signal peut être SIGHUP, ce qui provoque le redémarrage immédiat des enfants (ce qui interrompra les téléchargements), ou SIGUSR1, qui effectue un redémarrage gracieux. Avec SIGUSR1, vous devez retarder le traitement du journal jusqu'à ce que vous pensiez que tous les enfants seraient morts naturellement. Dans les deux cas, vous souhaiterez probablement analyser vos journaux et les programmer pour la période de trafic la plus faible de la journée ou de la semaine.

Les journaux canalisés semblent être la solution la plus puissante. Un gros avantage est qu'il vous permettra d'utiliser un système de journalisation centralisé et de prendre en charge le serveur Web lui-même. Le manuel lui-même dit:

Comme pour la journalisation conditionnelle, les journaux redirigés sont un outil très puissant, mais ils ne doivent pas être utilisés lorsqu'une solution plus simple comme le post-traitement hors ligne est disponible.

Donc, apparemment, n'utilisez pas la journalisation canalisée si vous n'en avez pas besoin . J'ai utilisé la journalisation canalisée dans le passé comme un moyen hacky de filtrer les journaux, et je n'ai eu aucun problème.

Kyle Brandt
la source
Le script postrotate avec les fichiers logrotate d'Apache consiste à envoyer un SIGHUP, ce qui oblige Apache à terminer tous les enfants et à redémarrer. Toutes les connexions actives à ce moment sont interrompues.
Warner
J'ai lu un commentaire quelque part qui disait que le redémarrage gracieux ne fonctionnait pas très bien avec des serveurs transportant une lourde charge. Mais je ne pense vraiment pas qu'il y ait beaucoup d'alternative.
Mohan Gulati
logrotate avec SIGHUP est assez standard. Je ne m'en inquiéterais pas.
Warner
2

J'ai déjà utilisé les deux auparavant. J'ai trouvé que l'utilisation de rotatelogs est un outil très utile dans la gestion des journaux d'accès et si vous ne voulez pas de temps d'arrêt Apache. Sur un site à volume élevé, je recommanderais ceci, le seul problème que j'ai trouvé était que si vous voulez gérer les journaux, vous devrez avoir un script séparé créé pour nettoyer ou déplacer les journaux vers un serveur de sauvegarde, évidemment dépend de l'exigence. Avec logrotate, vous avez plus d'options sur la façon dont les fichiers journaux sont traités, le seul problème est lorsque logrotate s'exécute comme expliqué dans la réponse précédente, vous devrez redémarrer apache.

Fondamentalement, tout se résume au choix, si vous avez besoin d'apache pour exécuter sans interruption, puis rotatelogs avec un script cron externe à gérer, sinon logrotate suffira. Assurez-vous simplement de configurer le cron logrotate pour ne pas faire tourner les journaux lorsque le trafic est élevé.

Enfin, si vous souhaitez avoir un journal apache sur votre syslog, vous pouvez toujours utiliser la commande logger qui se trouve sur les linux basés sur Redhat.

Danie
la source