Rotation des logs avec logrotate

Publiée le 26 Juin 2013

La gestion des logs est très importante. La problématique qui se pose très souvent à un admin est de gérer ses logs pour que celles-ci soient disponibles le plus longtemps possible sans saturer le stockage.

Logrotate est la solution idéal pour gérer les logs de vos service UNIX.

Logrotate permet d’archiver vos logs, de les compresser et d’effectuer des purges automatiques. La puissance de logrotate réside dans le fait qu’il peut archiver vos logs même quand celles ci sont en cours d’écriture!

Pour configurer logrotate allez dans le répertoire  /etc/logrotate.d

Ce répertoire contient la configuration de la rotation des logs pour chaque service.

Admettons que nous voulons gérer les logs du service « toto »:

– Créer un fichier toto dans le répertoire /etc/logrotate.d

-Editez le et ajoutez la configuration suivante:

 

# Indiquez le chemin de votre log

<chemin de votre fichier log> {

#Ne supprime pas le fichier mais vide le fichier log après en avoir fait une copie

copytruncate
# Logrotate analysera l’état de vos logs de manière journalière (vous pouvez spécifier weekly ou monthly pour chaque semaine ou chaque mois)

daily
# Logrotate conservera 7 archives

rotate 7
#Les logs seront compressées

compress

#Ne produit pas d’erreur si votre log n’existe pas

missingok

# Logrotate archivera votre log uniquement si la taille dépasse les 100M

size 100M
}

Enjoy 🙂




[TOMCAT] SEVERE: Failed to initialize java.lang.OutOfMemoryError: PermGen space

Publiée le 13 Juin 2013

Java est très très gourmand en ressource. L’administration des serveurs hébergeant des applications JAVA est un travail ardue.

Un problème que j’ai rencontré sur plusieurs serveurs tomcat durant mes différentes mission est le fameux :

Failed to initialize  java.lang.OutOfMemoryError: PermGen space

Etant encore novice dans la gestion des environnements JAVA je suis resté assez perplexe devant un tel message d’erreur.

Je check mon fichier startup.sh pour voir si mon xmx et xms sont bien paramétrés:

export JAVA_OPTS= »-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms2048m -Xmx2048m »

La solution est  d’augmenter le Maxpermsize (qui correspond à la mémoire allouée aux process java non géré par le garbage collector dit ramasse miette).

Pour résoudre le problème il suffit de paramétrer votre JAVA_OPTS de la façon suivante:

export JAVA_OPTS= »-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms2048m -Xmx2048m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC »

 

 

 

 




Présentation de BTRFS et comment migrer

Article publié le 9 Juin 2013

Mise à jour le 02 Décembre 2015

Présentation

BTRFS est un des dernier système de fichier révolutionnaire (développé principalement  par Oracle et RedHAT) qui devrait remplacer à terme EXT4.

Il n’apporte pas réellement de gain en performance mais sa force réside  dans ses fonctionnalités.(vous pourrez noter néanmoins un léger gain en performance à partir du Noyau 3.6)

J’ai été impressionné par les possibilités qu’offre BTRFS en terme d’administration:

 

– Création de SnapShot

– Meilleur gestion de l’intégrité des données ( Somme de controle)

– Compression en natif

– Sauvegarde incrémental intégrée au système de fichier

– Défragmentation à chaud

– Création de sous volumes

De plus le système de fichier BTRFS est optimisé pour la gestion des petits fichiers. En effet si vous avez un nombre très important de petits fichiers vous gagnerez en place et en performance par rapport à un système de fichier de type EXT3/EXT4

 

Création d’une nouvelle Partition 

Pour formater une partition en btrfs, rien de plus simple.

mkfs.btrfs <votre fs>

Migration

Dans un premier temps il est nécessaire d’installer btrfs-tools sous Debian ou btrfs-progs sous Red-Hat. (comme à mon habitude et pour des raisons idéologique ;-), mes tests sont effectués sur une Debian tout en essayant  de m’adapter au maximum pour les utilisateurs de RedHat/CentOS).

# apt-get install btrfs-tools (sous Debian) ou yum install btrfs-progs (Sous RedHAT)

– Convertissons un système de fichier  EXT4 vers BTRFS

Pour cela démontez votre volume:

#umount <votre fs>

Utilisez la commande btrfs-convert pour convertir votre FS EXT4 en BTRFS:

#btrfs-convert <votre fs>

N’oubliez pas de modifier votre fstab en remplacant EXT4 par btrfs.

– Remontez votre fs avec un mount -a

Présentation des fonctionnalités

1) Création de sous volume

Cette fonctionnalité est absolument génial, elle vous facilitera la vie en terme d’administration!

Pour créer un sous volume:

# btrfs subvolume create <votre-nom-sous-volume>

Pour supprimer un sous volume:

#btrfs subvolume delete <votre-nom-sous-volume>

 

2) Les  SnapShots

Créer un Snapshot:

Le système de snapshot est très abouti. Il vous permet de prendre « une image » de votre sous volume. En cas de problème (perte de fichier ou autre) vous pourrez recharger votre snapshot pour récupérer l’état de votre volume au moment ou le snapshot a été pris. (similaire aux snapshot de machine virtuel même si le fonctionnement est différent).

#btrfs subvolume snapshot <nom de votre sous volume>  <nom de votre snapshot>

Cette commande créera un répertoire à la racine de votre FS. Ce répertoire correspondra à  votre snapshot et contiendra toute votre arborescence avec son contenu.

 

Restaurer un Snapshot:

Rien de plus simple! Il suffit de faire un mv du répertoire de votre snapshot vers le le sous Volume à restaurer!

 

Autosnap:

Cette petite fonctionnalité vous permettra de faire des Snapshot automatiques, très utile pour sécuriser vos données.

 

#btrfs autosnap enable -m <fréquence de snapshots en minute> -c <Nombre de snapshots en rétention (roulement)> <votre sous volume>

Exemple:

#btrfs autosnap enable -m 30 -c 10 <votre sous volume> </btrfstest/toto>

Dans cette exemple un SnapShot sera effectué toutes les 30 minutes sur le sous volume « toto ». Un historique de 10 SnapShots sera conservé!

Vous pouvez même aller plus loin. Admettons que vous soyez rik rak niveau stockage vous pourrez faire en sorte que vos plus anciens SnapShot soientt supprimés au bout d’un certain seuil d’occupation d’espace disque

#btrfs au fslimit -n <% d’espace disque occupé> <Votre sous volume>

 

En conclusion le système de Snapshot est extrêmement performant et présente un très bon complément avec vos sauvegardes journalières.

(Dans le cas typique où vous créez un fichier dans la journée et que vous le supprimez par erreur avant la sauvegarde)

 

3) La compression

Btrfs prend nativement en charge la compression

Pour cela deux étapes sont nécessaires

– On modifie le fstab en conséquence:

Exemple:

<votre fs>   <point de montage>       btrfs    defaults,compress  0       1

-on compresse soit avec lzib (Meilleur compression  mais plus gourmand en CPU) ou lzo (Plus économe en ressource mais moins bonne compression):

compress=<algo de compression>




Migrer ext3 vers ext4

Article publié le 7 Juin 2013

Ext4 est un sytème de fichier qui possède beaucoup d’avantages :

– Vitesse d’écriture multiplié par 2!

– Possibilité de créer des FS allant  jusqu’a 16Eo (Exa octet)

– Possibilité de générer des fichiers jusqu’à 16To

– Beaucoup moins de chance d’avoir des données corrompus en écriture.

– Et beaucoup d’autres avantages!!!

J’ai entendu pas mal de gens dire que EXT4 n’est pas fiable ou qu’il présente des risques: ce sont des foutaises!!!! EXT4 est plus fiable que EXT3 donc faites vous plaisir!

J’ai noté une grosse amélioration des performances des base de données (Oracle et MySQL) ayant leur tablespace sur des FS en  EXT4(vos DBA n’en seront que plus heureux!)

Si vous décidez de faire des tests de performance, je vous conseille de les effectuer uniquement avec un noyau en version 2.6.32-X. En effet les noyaux plus anciens (à partir de 2.6.18-x) supportent l’EXT4 mais ne sont pas optimisés pour en tirer le plein potentiel. (Mais rien ne vous empêche de migrer pour tirer profit des autres avantages de ce système de fichier)

Maintenant une problématique: la migration.

Heureusement nos chers barbus ont pensés s à tout! Il est en effet possible de migrer à chaud vos données sans effectuer une migration lourde (suppression et création d’un nouveau FS)

Ci-dessous la procédure:

 Pour les utilisateurs de RedHat/Centos ayant une version antérieur à la 6.0 installez le paquet suivant:

e4fsprogs (yum install e4fsprogs)

 

-Démontez le lecteur à migrer:

# umount <fsck -pf /dev/sdb1votre point de montage>

-Ajustons les paramètres de votre FS pour le passage en EXT4:

#tune2fs -O extents,uninit_bg,dir_index /<votre FS>

-Vérifiez la cohérence de votre FS:

#fsck -pf /<votre fs>

-Modifiez votre fstab en remplacant « ext3 » par « ext4 » sur la ligne correspondante au FS que vous avez modifié

-Monter votre FS

#mount -a

Faites un df -T pour vérifier que votre FS est bien en EXT4 (juste pour la conscience ;-))

 

NB : Dans  mon prochain article je vous parlerai un peu de btrfs




apticron : notification des mises à jours debian

Article publié le 1 Juin 2013

Pour moi un bon admin doit toujours être averti des dernière mises à jour de son OS.

Un petit outil très sympathique nommé apticron permet d’être averti par mail dés que de nouvelles mises à jour sont disponibles! Egalement très pratique dans le cas ou vous administrez beaucoup de serveur pour savoir l’état des mises à jours de chacun d’entre eux.

Le contenu des mails est très détaillé car il vous donne toutes les mises à jours non installé sur votre machine avec le détail de ses corrections, sa date de publication ainsi que le nom du développeur.

Cette outil est codé en Shell par un membre de la communauté Debian et je dois dire que je suis assez admiratif du travail!

 Vous devez avoir un sender mail type postfix ou sendmail configuré pour que apticron soit capable d’envoyer des mails.

Pour installer cette outil :

#apt-get install apticron

Le fichier de configuration apticron se situe dans /etc/apticron/apticron.conf

Editons le:

#vi /etc/apticron/apticron.conf

Vous pourrez constater que le fichier de configuration est bien garni mais seulement trois lignes nous intéresserons:

Une fois votre configuration effectuée enregistrez votre fichier.

Lancez apticron:

# apticron

Si votre configuration est correct vous devriez recevoir un mail dans votre boite de messagerie avec la liste de toutes les nouvelles mises à jours disponible.

 Par défaut apticron est configuré pour vous envoyer des mails tous les jours en cas de nouvelles mises à jours. Si vous installez cette outil sur tous vos serveurs, la situation peu vite devenir ingérable (SPAM ;-)).

Pour cela je vous suggère une notification hebdomaraire:

# rm /etc/cron.d   (on supprime le cron journalier)

# cd /etc/cron.weekly && ln -s /usr/sbin/apticron apticron (on crée un lien symbolique du cron hebdomadaire vers le binaire d’apticron)