Monitoring – Gardez un œil sur les utilisateurs de votre système GNU/Linux avec Psacct / Acct Tools

Plop les bovins,

Si vous avez beaucoup d’utilisateurs, de développeurs, de programmeurs, qui accèdent à vos serveurs ou qui possèdent une session sur votre machine. Et si vous voulez garder un œil sur les données auxquelles ils accèdent, les commandes qu’ils utilisent, le temps qu’ils ont passé sur les serveurs et la quantité de ressources système qu’ils consomment, Psacct ou ACCT sont les outils qu’ils vous faut.

Il s’agit de deux petits outils de surveillance et de monitoring utilisables en ligne de commande, qui vont vous permettre de tout savoir sur vos machines.

Fondamentalement les deux outils font la même chose, à la différence près que vous utiliserez PSACCT sur les plateformes « RPM » et ACCT sur les plateformes « DEB ».

Pour installer le bel animal en fonction de votre distribution, il faudra entrer au choix les lignes de commande suivantes :

Version RPM :

yum install psacct -y

Version DEB :

sudo apt-get install acct

Une fois le soft installé, lancez le service en question, toujours en adaptant votre commande en fonction de la distribution utilisée.

/etc/init.d/acct start ou /etc/init.d/psacct start

NB : Sur les systèmes Deb il n’est en général pas nécessaire de lancer le service manuellement, car celui-ci est censé démarrer automatiquement. Cela dit, une vérification ça ne mange pas de pain.

Nous allons voir maintenant quelques exemples d’options, en utilisant les commandes dédiées à la version deb .

La commande [ ac ]

Exemples :

[ ac ] indique les statistiques concernant le temps de connexion global d’un utilisateur :

[lavachelibre:~] $ ac
total 72.92
[lavachelibre:~] $

[ ac -p ] indique les statistiques concernant le temps de connexion global des utilisateurs :

[lavachelibre:~] $ ac -p
lavachelibre 73.14
root 0.00
total 73.14
[lavachelibre:~] $

[ ac -d ] indique les statistiques concernant les temps de connexion d’un utilisateur, en heures et en jours :

[lavachelibre:~] $ ac -d
May 1 total 3.66
May 2 total 4.85
May 3 total 6.54
May 4 total 6.84
May 5 total 8.57
May 6 total 7.43
May 7 total 8.36
May 8 total 10.38
May 9 total 8.20
May 10 total 2.82
Today total 5.40
[lavachelibre:~] $

[ ac -p -d ] indique les statistiques concernant les temps de connexion des utilisateurs, en heures et en jours.

[lavachelibre:~] $ ac -p -d
lavachelibre 3.66
May 1 total 3.66
lavachelibre 4.85
May 2 total 4.85
lavachelibre 6.54
May 3 total 6.54
lavachelibre 6.83
root 0.00
May 4 total 6.84
[lavachelibre:~] $

Les commandes précédentes ont été effectuées en local mais si vous êtes sur un serveur d’entreprise ou perso, rien ne vous empêche d’interroger les statistiques d’un utilisateur en particulier. Il suffit simplement d’ajouter à votre commande le(s) nom(s) d’utilisateur(s) concerné(s), ici « root » et « lavachelibre ».

[lavachelibre:~] $ ac lavachelibre
total 75.12
[lavachelibre:~] $

[lavachelibre:~] $ ac root
total 0.00
[lavachelibre:~] $

[lavachelibre:~] $ ac -d lavachelibre
May 1 total 3.66
May 2 total 4.85
May 3 total 6.54
May 4 total 6.83
May 5 total 8.57
Today total 7.52
[lavachelibre:~] $

Usages pour la commande [ ac ] :

Usage: ac [-dhpVy] [-f ] [people] ...
[--daily-totals] [--individual-totals] [--file ]
[--complain] [--reboots] [--supplants] [--timewarps] [--print-year]
[--compatibility] [--print-zeros] [--debug] [--tw-leniency ]
[--tw-suspicious ] [--version] [--help]

La commande [ sa ]

Exemples :

La commande [ sa ] va vous permettre d’afficher la liste des commandes lancées par tous les utilisateurs.

[lavachelibre:~] $ sa
15323 1630.09re 3.28cp 0avio 1524k
17 57.45re 1.06cp 0avio 45846k chromium-browse*
8 102.13re 0.84cp 0avio 51674k SignalSender*
241 0.66re 0.64cp 0avio 4997k command-not-fou
7401 1.45re 0.26cp 0avio 1068k cpufreq-info
10 43.23re 0.10cp 0avio 23349k gdbus
2 0.09re 0.09cp 0avio 3932k apt-check
822 0.15re 0.05cp 0avio 1193k sensors
4 1.79re 0.04cp 0avio 51196k VC manager*
2 0.10re 0.03cp 0avio 13334k gtk-update-icon
36 67.86re 0.03cp 0avio 9609k ***other*
4 0.60re 0.03cp 0avio 2208k apt-get
2 3.05re 0.02cp 0avio 55104k gnome-terminal

La commande [ sa -u ] va vous indiquer l’activité CPU des utilisateurs :

[lavachelibre:~] $ sa -u
lavachel 0.01 cpu 1068k mem 0 io cpufreq-info
lavachel 0.00 cpu 1068k mem 0 io cpufreq-info
lavachel 0.01 cpu 1193k mem 0 io sensors
nobody 0.00 cpu 1384k mem 0 io dnsmasq *
nobody 0.00 cpu 1384k mem 0 io dnsmasq *
lavachel 0.00 cpu 1666k mem 0 io bash *
root 0.00 cpu 1664k mem 0 io bash *

[ sa -m ] affiche le nombre de processus et la charge CPU par minute :

[lavachelibre:~] $ sa -m
16538 1782.73re 3.38cp 0avio 1516k
lavachelibre 15589 516.69re 3.26cp 0avio 1530k
root 278 1265.64re 0.12cp 0avio 1047k
man 378 0.01re 0.00cp 0avio 1408k
nobody 293 0.40re 0.00cp 0avio 1384k
[lavachelibre:~] $

Usages pour la commande [ sa ]  :

Usage: sa [ options ] [ file ]
options: [-abcdfiljkmnprstuDKP] [-v ] [--version] [--help]
[--other-acct-file ] [--other-usracct-file ]
[--print-seconds] [--dont-read-summary-files] [--debug]
[--separate-times] [--other-savacct-file ] [--percentages]
[--print-ratio] [--print-users] [--merge] [--user-summary]
[--list-all-names] [--not-interactive] [--threshold ]
[--sort-ksec] [--sort-tio] [--sort-sys-user-div-calls] [--sort-avio]
[--sort-cpu-avmem] [--sort-num-calls] [--sort-real-time] [--ahz hz]
[--show-paging] [--show-paging-avg]

La commande [ lastcomm ]

Exemples :

[ lastcomm ] va afficher les dernières commandes lancées par les utilisateurs :

[lavachelibre:~] $ lastcomm
wc lavachel pts/0 0.00 secs Sat May 11 12:10
bash F lavachel pts/0 0.00 secs Sat May 11 12:10
bash F lavachel pts/0 0.00 secs Sat May 11 12:10
sudo S root pts/0 0.06 secs Sat May 11 12:10
sh S root pts/0 0.00 secs Sat May 11 12:10
rm root pts/0 0.00 secs Sat May 11 12:10
apt-get S root pts/0 0.48 secs Sat May 11 12:10
[lavachelibre:~] $

Si votre parc comporte de nombreuses machines il est possible de ne cibler qu’un utilisateur particulier. Ajoutez simplement son nom d’utilisateur à votre commande [ lastcomm nom-d-utilisateur ].

Vous pouvez également ne cibler qu’une commande en particulier comme dans l’exemple suivant, ou nous voulons savoir qui a éventuellement lancé la commande [ ac ] :

[lavachelibre:~] $ lastcomm ac
ac lavachel pts/2 0.00 secs Sat May 11 15:22
ac lavachel pts/2 0.00 secs Sat May 11 15:22
ac lavachel pts/2 0.00 secs Sat May 11 15:22
ac lavachel pts/2 0.00 secs Sat May 11 15:21
ac lavachel pts/2 0.00 secs Sat May 11 15:21

Usages pour la commande [ lastcomm ] :

Usage: lastcomm [-hpV] [-f file] [command] ... [user] ... [terminal] ...
[--forwards] [--file ] [--strict-match] [--print-controls]
[--user ] [--tty ] [--command ] [--debug]
[--show-paging] [--version] [--help]

Ce ne sont bien entendu que quelques exemples de ce que vous pouvez faire avec Pcacct/Acct. D’autres outils comme Nagios sont disponibles et très bien aussi.

Il y a quand même de quoi déjà bien vous amuser et de quoi vous faire une bonne séance de monitoring si la CLI ne vous fait pas peur.

Amusez-vous bien et bon monitoring.

Moo!

Artcicle traduit en partie d’un article signé unixmen.com

3 Responses

  1. H2L29 11 mai 2013 / 20 h 37 min

    il y a nagios qui est très utilisé/complet/connu, il y a aussi munin qui génère des graphs avec les stats de ta/tes machine et des différents serveurs, les commandes w et history, et beaucoup beaucoup d’autres…

  2. ImmortalPC 11 mai 2013 / 20 h 27 min

    Salut !
    Ton site est vraiment super !
    Petite question sur la commande `sa`. Es que Acct enregistre l’activité dans le temps ? Ainsi une commande terminée peut être retrouvée.
    Peut on avoir la commande complète -> /usr/bin/…. -arg1 -arg2 ?
    Si cela n’est pas possible, connais tu des outils similaires pour la sécurité serveur.

    • noireaude 11 mai 2013 / 21 h 16 min

      Merci immortal PC.

      Je dirais bonne question :) J’ai un peu fouiné mais je n’ai pas trouvé de logs.

Comments are closed.