GNU/Linux >> Tutoriels Linux >  >> Linux

Paramètre Centos/Linux logrotate à la taille de fichier maximale pour tous les journaux

Comme mentionné par Zeeshan, les options logrotate size , minsize , maxsize sont des déclencheurs de rotation.

Pour mieux l'expliquer. Vous pouvez exécuter logrotate aussi souvent que vous le souhaitez, mais à moins qu'un seuil ne soit atteint, comme la taille de fichier atteinte ou le temps approprié écoulé, les journaux ne seront pas tournés.

Les options de taille ne garantissent pas que vos journaux pivotés ont également la taille spécifiée. Pour qu'ils soient proches de la taille spécifiée, vous devez appeler le programme logrotate suffisamment souvent. C'est essentiel.

Pour les fichiers journaux qui s'accumulent très rapidement (par exemple, des centaines de Mo par jour), à moins que vous ne vouliez qu'ils soient très volumineux, vous devrez vous assurer que logrotate est appelé souvent ! c'est essentiel.

Par conséquent, pour empêcher votre disque de se remplir de fichiers journaux de plusieurs gigaoctets, vous devez vous assurer que logrotate est appelé assez souvent, sinon la rotation des journaux ne fonctionnera pas aussi bien que vous le souhaitez.

sur Ubuntu, vous pouvez facilement passer à la rotation horaire en déplaçant le script /etc/cron.daily/logrotate vers /etc/cron.hourly/logrotate

Ou ajoutez

*/5 * * * * /etc/cron.daily/logrotate 

Dans votre fichier /etc/crontab. Pour l'exécuter toutes les 5 minutes.

Le size l'option ignore les options de temps quotidiennes, hebdomadaires et mensuelles. Mais minsize &maxsize en tiennent compte.

La page de manuel est un peu déroutante. Voici mon explication.

minsize ne tourne que lorsque le fichier a atteint une taille appropriée et que la période définie s'est écoulée. par exemple. minsize 50MB + dailyIf fichier atteint 50MB avant l'heure quotidienne, il continuera de croître jusqu'au lendemain.

maxsize tournera lorsque le journal atteindra une taille définie ou que le temps approprié sera écoulé. par exemple. maxsize 50MB + daily.If file is 50MB and we're not the next day, the log will be rotated. Si le fichier ne fait que 20 Mo et que nous passons au lendemain, le fichier subira une rotation.

size tournera lorsque le journal> taille. Indépendamment de la spécification horaire/quotidienne/hebdomadaire/mensuelle. Donc, si vous avez une taille de 100 Mo - cela signifie que lorsque votre fichier journal est> 100 Mo, le journal sera tourné si logrotate est exécuté lorsque cette condition est vraie. Une fois qu'il est tourné, le journal principal sera 0 et une exécution ultérieure ne fera rien.

Donc dans le cas de l'op. Spécifiquement 50 Mo maximum, j'utiliserais quelque chose comme ce qui suit :

/var/log/logpath/*.log {
    maxsize 50M
    hourly
    missingok
    rotate 8
    compress
    notifempty
    nocreate
}

Ce qui signifie qu'il créerait 8 heures de journaux maximum. Et il y en aurait 8 à pas plus de 50 Mo chacun. Puisqu'il dit qu'il obtient plusieurs gigaoctets chaque jour et en supposant qu'ils s'accumulent à un rythme assez constant, et que maxsize est utilisé, il se retrouvera avec environ près du maximum atteint pour chaque fichier. Ils seront donc probablement proches de 50 Mo chacun. Compte tenu du volume qu'ils créent, il devrait s'assurer que logrotate est exécuté assez souvent pour atteindre la taille cible.

Depuis que j'y ai mis toutes les heures, nous aurions besoin que logrotate soit exécuté au moins toutes les heures. Mais comme ils s'accumulent pour dire 2 gigaoctets par jour et nous voulons 50 Mo... en supposant un taux constant de 83 Mo par heure. Vous pouvez donc imaginer que si nous exécutons logrotate toutes les heures, malgré le réglage de maxsize à 50, nous nous retrouverons avec 83 Mo de journaux dans ce cas. Donc, dans ce cas, régler le fonctionnement toutes les 30 minutes ou moins devrait être suffisant.

Assurez-vous que logrotate est exécuté toutes les 30 minutes.

*/30 * * * * /etc/cron.daily/logrotate 

Il spécifie la taille du fichier journal pour déclencher la rotation. Par exemple size 50M déclenchera une rotation des journaux une fois que le fichier aura atteint une taille de 50 Mo ou plus. Vous pouvez utiliser le suffixe M pour les mégaoctets, k pour les kilo-octets, et G pour les gigaoctets. Si aucun suffixe n'est utilisé, cela signifiera des octets. Vous pouvez vérifier l'exemple à la fin. Trois directives sont disponibles size , maxsize , et minsize . Selon la page de manuel :

minsize size
              Log  files  are  rotated when they grow bigger than size bytes,
              but not before the additionally specified time interval (daily,
              weekly,  monthly, or yearly).  The related size option is simi-
              lar except that it is mutually exclusive with the time interval
              options,  and  it causes log files to be rotated without regard
              for the last rotation time.  When minsize  is  used,  both  the
              size and timestamp of a log file are considered.

size size
              Log files are rotated only if they grow bigger then size bytes.
              If size is followed by k, the size is assumed to  be  in  kilo-
              bytes.  If the M is used, the size is in megabytes, and if G is
              used, the size is in gigabytes. So size 100,  size  100k,  size
              100M and size 100G are all valid.
maxsize size
              Log files are rotated when they grow bigger than size bytes even before
              the additionally specified time interval (daily, weekly, monthly, 
              or yearly).  The related size option is  similar  except  that  it 
              is mutually exclusive with the time interval options, and it causes
              log files to be rotated without regard for the last rotation time.  
              When maxsize is used, both the size and timestamp of a log file are                  
              considered.

Voici un exemple :

"/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail [email protected]
           size 100k
           sharedscripts
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

Voici une explication pour les deux fichiers /var/log/httpd/access.log et /var/log/httpd/error.log . Ils font l'objet d'une rotation chaque fois qu'ils dépassent 100 ko, et les anciens fichiers journaux sont envoyés (non compressés) à [email protected] après avoir effectué 5 rotations, plutôt que d'être retiré. Le sharedscripts signifie que le postrotate Le script ne sera exécuté qu'une seule fois (après la compression des anciens journaux), et non une fois pour chaque journal faisant l'objet d'une rotation. Notez que les guillemets autour du premier nom de fichier au début de cette section permettent à logrotate de faire pivoter les journaux avec des espaces dans le nom. Les règles normales de citation du shell s'appliquent, avec , , et \ caractères pris en charge.


Linux
  1. Faire pivoter et archiver les journaux avec la commande Linux logrotate

  2. 10 alias Bash pratiques pour Linux

  3. Comment créer une rotation de fichier journal personnalisée par logrotate sous Linux

  4. CentOS / RHEL :Comment faire pivoter les fichiers /var/log/wtmp et /var/log/btmp à l'aide de logrotate

  5. surveiller la taille du fichier sous linux

10 exemples de commandes Linux Cat pour les débutants

Tutoriel de commande Linux df pour les débutants (8 exemples)

Commande ls sous Linux pour lister les fichiers

Configuration de logrotate sous Linux

Réduire la taille du fichier PDF sous Linux

À quoi sert Linux test -a command test ?