Un grand nombre de scripts en Perl existent sur Internet (ex : FreshMeat.net). Le problème est que l'on a souvent un script pour la rotation des logs et un autre pour la purge (quand un find ne se ballade pas tout seul dans une crontable, une vague odeur de déjà vue ?!).
Ce petit script a pour but de reconcillier les deux mondes en fournissant un seul script à lancer et un seul fichier de configuration pour tout gérer.
Ce script n'a pour l'instant été testé que sur AIX avec KSH. Si vous l'avez testé sur d'autres plateformes, n'hésitez pas à me faire un retour.
C'est peu simpliste, mais c'est totalement ça ! Il n'y a pas de délire de paramètrages à se faire (voir les exemples).
La TODO Liste est encore pas mal chargée.
Ci-dessous une configuration pour la rotation de logs. On garde 15 jours de Logs de chaque fichier indiqué par FileToWork dans chacun des répertoires /apps/webservers/*/logs/.
# ######################################################## # # Ci dessous paramètrage de base pour les logs apache # # ######################################################## # BEGIN # Les répertoires et fichiers doivent subir une rotation de Logs TypeAction::Rotate # Pourcentage minimale du FS à laisser libre FSMin::20 # Nombre de rotation de rétention de Log LogDay::15 # Liste des répertoires à traiter DirToWork::/apps/webservers/ # Les des sous répertoires de DirToWork à traiter DirToComp::*/logs/ # Liste des fichiers à traiter dans chaque sous répertoire FileToWork::access_log|error_log|access_log_ssl|error_log_ssl|http_plugin.log|http_access|access|error|errors|access_log_sec|error_log_sec|error_sec_log|error.log|access.log|errors|errors.log|access_sec_log|http_error|http_errors END
Ci-dessous une configuration pour la purge de fichier. On garde 1 jours des fichiers identifiés par FileToWork dans chacun des répertoires de DirToWork.
# ######################################################## # # Paramétrage pour les Javacore et HeapDump WebSphere # # ######################################################## # BEGIN # Les répertoires et fichiers doivent subir une rotation de Logs TypeAction::Purge # Nombre de rotation de rétention de Log LogDay::1 # Liste des répertoires à traiter DirToWork::/apps/WebSphere/AppServer5/|/apps/WebSphere/AppServer5b/|/apps/WebSphere/DeploymentManager5/|/apps/WebSphere/DeploymentManager5b/ # Liste des fichiers à traiter dans chaque sous répertoire FileToWork::core|heapdump*|javacore* END
Les deux configuration précédente peuvent être incorporées au sein d'un même fichier de configuration. Tant que les blocs de paramétrages commencent bien par un BEGIN et se terminent par un END.
Puisque par défaut le script appelle un fichier de configuration (MyPurgeLogs.conf) et que l'on peut avoir envie de faire une purge ou une rotation exceptionnelle. Le script peut prendre en compte un autre fichier de paramètres en ligne de commande.
/apps/WebSphere/MyPurgeLogs.sh /apps/MyConfForCFTdeMerde.conf
Pour avoir une aide succinte :
/apps/WebSphere$ ./MyPurgeLogs.sh -h MyPurgeLogs.sh [-h] [--version] [--verify] [--FORK] [ Fichier_Config ] -h ou --help : Avoir une aide. --version : Affiche le numéro de version du script. --verify : Vérifie la syntaxe du fichier de conf. Fichier_Config : Indique le nom d'un fichier de configuration à prendre en compte. Par défaut le fichier /apps/WebSphere/MyPurgeLogs.conf est utilisé. --FORK : Permet de lancer le script même si une autre instance tourne. Il existe des fichiers que vous pouvez utiliser pour contrôler le fonctionnement du script : _nopurgelogs : Lorsque ce fichier est présent dans un répertoire, ce dernier n'est traité par le script. Aucune action n'est effectuée. _purgelogs.conf : Est un fichier de configuration présent dans un répertoire, cette configuration est utilisée à la place de celle par défaut.
Comme l'indique l'aide, des fichiers peuvent modifier le fonctionnement du script lorsqu'ils sont détéctés dans un répertoire (uniquement pour la rotation).