ABRT

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Rapport automatique de crash applicatif
Commande abrt-cli
Service abrtd.service
Contexte RHEL7 — plugins pour C/C++, Python, Ruby, Java, X.Org, noyau
Voir aussi Systemctl (gestion du service)

ABRT (Automatic Bug Reporting Tool) est le service RHEL7 qui détecte, collecte et permet de traiter automatiquement les crashs applicatifs (C/C++, Python, Ruby, Java, X.Org) ainsi que les incidents noyau (oops, panic). Ce n'est pas un outil de sécurité : c'est un service de diagnostic/reporting, comparable à un gestionnaire de core dumps enrichi.

Installation et service

yum install abrt-cli libreport-plugin-mailx abrt-java-connector

systemctl start abrtd.service
systemctl is-active abrtd.service

Auto-reporting

L'envoi automatique des rapports se configure via :

abrt-auto-reporting enabled

Le fichier de configuration principal du service est /etc/abrt/abrt.conf.

Plugins par type d'application

Chaque type de crash détecté par ABRT est fourni par un paquet dédié :

abrt-addon-ccpp         crashs C/C++
abrt-addon-python       exceptions Python
rubygem-abrt            exceptions Ruby
abrt-java-connector     exceptions Java
abrt-addon-xorg         crashs X.Org
abrt-addon-kerneloops   oops noyau
abrt-addon-vmcore       panic noyau
abrt-addon-pstoreoops   oops noyau via stockage persistant (pstore)

Détection par type de crash

C/C++

Par défaut, le système écrit le fichier core dans le répertoire courant de l'application, selon le motif défini par :

cat /proc/sys/kernel/core_pattern

Le service ABRT peut remplacer cette valeur système par son propre hook, qui écrit le core dans /proc/PID/ :

/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e

Python

Par défaut, l'interpréteur Python importe abrt.pth, installé dans /usr/lib64/python2.7/site-packages/, ce qui active la capture des exceptions non gérées. Pour désactiver cet import (et donc la capture ABRT) pour une exécution donnée, utiliser l'option -S :

python -S file.py

Ruby

Par défaut, l'interpréteur Ruby exécute at_exit en fin d'exécution. ABRT capture cette sortie et l'envoie par défaut.

Java

Le connecteur ABRT pour Java s'active via l'agent abrt-java-connector au lancement de la JVM :

java -agentlib:abrt-java-connector[=abrt=on] MaClasse -platform.jvmtiSupported true

⚠️ Activer ce plugin sur une application Java a un coût en performance — à réserver au diagnostic ponctuel, pas à un usage permanent en production.

X.Org

Par défaut, le fichier de log surveillé est /var/log/Xorg.0.log. La configuration du plugin se trouve dans /etc/abrt/plugins/xorg.conf.

Noyau (oops, panic)

Un « oops » est une déviation non fatale du noyau ; les résultats sont stockés dans /var/crash ou /var/tmp/abrt. Pour qu'ABRT récupère un core kernel complet (kernel panic), le service kdump doit être activé.

Utilisation en ligne de commande

abrt-cli list                        # afficher les problèmes détectés par ABRT
abrt-cli info [-d] directory_or_id   # afficher le détail d'un problème
abrt-cli report directory_or_id      # analyser/envoyer un rapport pour un problème

Voir aussi