# [HOWTO] Accounting "basique"

## anigel

Bonjour,

Certains d'entre nous disposent de machines plus ou moins puissantes, et parfois on aimerait bien savoir exactement où part la puissance de la machine. Une solution simple est d'utiliser la commande "top", qui permet d'avoir une vue "temps-réel" de ce à quoi votre Linux est occupé. Mais ça reste insuffisant pour obtenir des renseignements probants sur la réelle utilisation de votre CPU. Au mieux, on obtient un polaroïd de votre système, à un instant donné.

Il existe un outil GNU pour pallier ce manque : acct. Je vous propose dans ce document très court, de vous aider à le mettre en place.

1. Configuration noyau et installation des outils.

Pour qu'acct puisse lire les informations sur l'occupation du noyau, il faut autoriser le "process accounting". Ca se fait très simplement, en activant les options idoines.

```
General setup  --->

   [*] BSD Process Accounting

   [*]   BSD Process Accounting version 3 file format
```

Acct est un logiciel très léger, qui plus est disponible dans portage, son installation est donc aussi simple que rapide :

```
emerge acct
```

2. Création des scripts de démarrage et du fichier de configuration.

NB : au moment où vous lirez ces lignes, il est possible que les modifications présentées ici aient été intégrées directement à l'outil (cf bugreport). Auquel cas ce paragraphe devient superflu.

Acct est livré brut de décoffrage, sans aucun script de démarrage, ou même d'arrêt. Pas très pratique pour un logiciel sensé observer la charge machine pendant des semaines ou des mois. J'ai donc rédigé quelques scripts simples pour régler ce problème.

Commençons par le script de démarrage : /etc/init.d/acct

```
#!/sbin/runscript

# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

opts="${opts} report"

depend() {

        need localmount

}

start() {

        if [ -z ${ACCT_LOG} ] ; then

                ewarn "Unable to load configuration. Please check /etc/conf.d/acct."

                return 1

        fi

        if ! [ -f ${ACCT_LOG} ] ; then

                ewarn "${ACCT_LOG} does not exists. Trying to create it automatically..."

                touch ${ACCT_LOG}

                chmod 600 ${ACCT_LOG}

        fi

        ebegin "Starting accounting"

        /usr/sbin/accton ${ACCT_LOG}

        eend ${ret}

}

stop() {

        ebegin "Stopping accton"

        /usr/sbin/accton

        eend $?

}

report() {

        if ! service_started "${myservice}" ; then

                ewarn ""

                ewarn "Service is not started. Statistics may be obsolete !"

                ewarn "If you really wish to get this information, please run :"

                ewarn ""

                ewarn "   sa ${REPORT_OPTS} ${ACCT_LOG}"

                ewarn ""

        else    sa ${REPORT_OPTS} ${ACCT_LOG}

        fi

        return $?

}

restart() {

        svc_stop

        svc_start

}
```

Ensuite, le fichier de configuration, /etc/conf.d/acct

```
# ACCT_LOG specifies the accounting logging file.

# Remember to create it manually if it doesn't yet exist.

# Default : ACCT_LOG="/var/account/pacct"

ACCT_LOG="/var/account/pacct"

# REPORT_OPTS contains arguments for the "sa" command, used for console-reporting.

# Please run "sa --help" or "man sa" to get a description of available options.

REPORT_OPTS="--sort-real-time --list-all-names --percentages"
```

Vous pourrez noter que j'ai affecté des valeurs par défaut à ces variables, afin de rendre plus lisibles les stats de sortie (si tant est qu'elles le soient vraiment).

3. Mise en service, et obtention des résultats.

Tout est en place, il faut maintenant lancer le service. Un simple /etc/init.d/acct start suffit. Si vous souhaitez que vos statistiques prennent vraiment un sens, il vaut mieux que ce service tourne en permanence : rc-update add acct default.

Par simple curiosité, vous pouvez dès à présent demander un rapport de charge : /etc/init.d/acct report. Notez qu'à ce stade, la liste ne doit pas être bien longue. En effet, vous venez juste de lancer le processus, et le rapport n'est pas encore vraiment probant. Pour être réellement exploitable, l'observation du système doit se faire sur plusieurs jours, afin d'avoir une vue plus globale de l'utilisation que vous faites de votre temps machine. Alors vous verrez les valeurs  augmenter, et les stats s'affiner. Vous saurez ainsi ce qui occupe le plus votre machine. Ce genre d'information peut servir à plein de choses, que je vous laisse découvrir au fur et à mesure  :Wink:  !

PS : Comme d'habitude, nhésitez pas à réagir, commenter, etc...

PPS : Pour des raisons que je ne développerai pas, je ne souhaite pas que ce document soit recopié ailleurs ; merci de votre compréhension.

PPPS : Pour les puristes : inutile de détailler la problématique de l'interprétation des résultats fournis par sa : ce n'est certes pas l'outil parfait, mais pour les besoins couverts par ce document, c'est parfaitement adapté.

PPPPS : Non, rien en fait  :Wink:  .

Changelog :

04/01/2006 : ajout du paragraphe sur la config noyau (merci marvin rouge !)

09/01/2006 : modifications mineures du fichier de conf et du script de démarrage.

----------

## marvin rouge

Merci   :Wink: 

Par contre, c'est bizarre, ici acct vient avec un script d'init (et c'est pas moi qui l'ai fait):

```
cat /etc/init.d/acct

#!/sbin/runscript

# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/sys-process/acct/files/acct.rc6,v 1.2 2005/03/21 03:47:19 robbat2 Exp $

depend() {

    need localmount

}

start() {

        ebegin "Starting accounting"

        touch /var/account/pacct

        chmod 600 /var/account/pacct

        /usr/sbin/accton /var/account/pacct

        eend $?

}

stop() {

        ebegin "Stopping accounting"

        /usr/sbin/accton

        eend $?

}

# vim:ts=4 sw=4:

```

Version de acct: sys-process/acct-6.3.5-r2

Mais pas de /etc/conf.d/acct ici.

Je pense que je vais reprendre tes scripts.

+

EDIT : bon, ça ne fonctionne pas, ni l'ancien script ni le tien, accton me répond: "fonction non implémentée" ... même si je le lance à la main. Tant pis.

```
# /usr/sbin/accton /root/accounting.log

accton: Function not implemented
```

----------

## anigel

J'utilise sys-process/acct-6.3.5-r1, pour être précis, sur un système en x86.

----------

## marvin rouge

C'est de ma faute. Il faut BSD Process Accounting et BSD Process Accounting version 3 file format dans la config du kernel (sous General Setup). Recompilation.

+

----------

## anigel

 :Embarassed:  effectivement, grossier oubli de ma part ! Je corrige ça de suite !

Merci à toi  :Wink:  !

----------

## boozo

marche très bien merci Ani   :Cool:   pas de commentaires techniques tout marche impec   :Wink: 

en tout cas... le premier report que j'ai fait, même non représentatif, est très intéressant... y'a un tas d'appli dont je ne soupçonnais même pas l'existence   :Shocked:   ...un man ! vite !   :Laughing: 

----------

## anigel

 *boozo wrote:*   

> en tout cas... le premier report que j'ai fait, même non représentatif, est très intéressant... y'a un tas d'appli dont je ne soupçonnais même pas l'existence    ...un man ! vite !  

 

Oui, c'est parfois surprenant  :Wink:  ! J'ai été surpris de constater que la machine centrale de mon réseau, pour ne citer qu'elle, glande toute la journée. Celle que je croyais la plus chargée ne tourne en fait qu'à 10% de ses capacités, en journée, et à 4 fois rien % la nuit... En revanche, un petit serveur que je croyais sous-utilisé est harcelé au niveau de se config web. Donc : soit cette dernière est mal foutue (ça demande à être vérifié), soit il est beaucoup plus sollicité que je ne l'aurais cru au premier abord...

Par contre, le fait que tu aies une sortie très détaillée peut aussi provenir des choix d'options par défaut que j'ai fait. N'hésites pas à adapter à ton cas personnel  :Wink:  .

----------

## Nirna

Bonjour, 

Très intéressant comme outil, notamment dans des environnements de prod où l'on adore ce type de stats   :Wink: 

Juste une remarque (pour la 6.3.5-r1):

 *anigel wrote:*   

> 
> 
> /etc/conf.d/acct :
> 
> ```
> ...

 

La commande lastcomm permet d'afficher toutes les commandes utilisées (et donc tracées), en se basant sur le fichier d'accounting par défaut du système :  /var/account/pacct.

Je ne sais pas comment il le trouve là, le fait de changer le fichier de log par accton ne change rien pour lastcomm.

Donc, pour se servir de lastcomm,  soit il faut remettre le "bon" fichier de log dans /etc/conf.d/acct, soit utiliser lastcomm -f /root/accounting.log

Et toujours pour pinailler, l'option dans la doc est --percentages, mais --percentage marche aussi bien   :Cool: 

----------

