Login
Newsletter
Werbung

Di, 13. Mai 2003, 00:00

BSD Process Accounting

Process Accounting ist die Möglichkeit, alle Prozesse, die der Kernel startet, aufzuzeichnen.

Vorwort

Wer schon einmal durch die Kernel-Konfiguration gegangen ist, dem ist vielleicht schon einmal eine Option mit der Bezeichnung

 [ ] BSD Process Accounting

aufgefallen (im Menü General Setup). Was verbirgt sich dahinter und was hat BSD damit zu tun?

Process Accounting ist die Möglichkeit, alle Prozesse, die der Kernel startet, aufzuzeichnen. Aufgezeichnet werden u.a. der Name des Prozesses, die Startzeit, die verbrauchte CPU-Zeit (User- und Systemzeit), die Laufzeit, der Besitzer des Prozesses, Anzahl der Disk I/O-Operationen, Anzahl der Page-Faults, der durchschnittliche Speicherverbrauch, der Exit-Code und anderes. Diese Daten werden in einer Datei gespeichert, deren Format in der struct acct in /usr/include/linux/acct.h festgelegt ist. Es handelt sich um eine Binärdatei.

BSD Process Accounting heißt es deshalb, weil es in dieser Form zuerst in der BSD-Variante von UNIX implementiert wurde. In Linux ist es seit Kernel 2.0 verfügbar, oder sogar schon länger.

Verwendungszweck des Process Accounting

Process Accounting wurde ursprünglich eingeführt, um den Ressourcenverbrauch (CPU-Zeit, I/O usw.) der Benutzer messen und in Rechnung stellen zu können. Auf den Großrechnern seit den 50er/60er Jahren war dies gang und gäbe, auf Supercomputern ist es oft heute noch so.

Da die Abrechnung im Heimbereich eine eher untergeordnete Rolle spielt, wird man es hier eher für Performance-Tuning einsetzen (welcher Prozeß lief wie oft, welcher verbraucht die meisten Ressourcen), oder um ungewöhnliche Programmaufrufe zu entdecken. Sicher gibt es auch noch andere Anwendungen für das Accounting.

Die Accounting Tools

Um Process Accounting zu aktivieren, genügt es nicht, daß es in den Kernel eincompiliert ist. Man benötigt auch ein Tool, um es einzuschalten (oder auszuschalten). Dieses heißt accton und ist in dem Paket acct enthalten, das auf jedem GNU-Mirror unter acct/acct-6.3.2.tar.gz zu finden sein dürfte. Seit 1998 hat sich an dem Paket nichts mehr geändert. Praktischerweise enthält das Paket auch gleich noch ein paar andere Helfer, insbesondere zur statistischen Auswertung, so daß es einem meist erspart bleiben sollte, eigene Programme zum Lesen der Accounting-Daten zu schreiben.

Wer seine Accounting-Tools unter Kernel 2.2 oder 2.4 compiliert hat, kann damit keine Accounting-Daten von Kernel 2.0 bearbeiten und umgekehrt. Das liegt daran, daß Kernel 2.0 ein geringfügig anderes Dateiformat hatte als die neueren Kernel.

Ein- und Ausschalten von Accounting

accton /var/account/pacct

schaltet das Accounting ein. Statt /var/account/pacct kann man einen beliebigen anderen Dateinamen verwenden. Accounting-Daten werden von diesem Moment an an diese Datei angehängt (wenn nötig, wird sie neu erzeugt), alte Daten werden nie überschrieben. Mit dem wenig intuitiven Kommando

accton

schaltet man das Accounting ab.

Die Accounting-Datei

Ein gebräuchlicher Pfad für die Datei ist /var/account/acct. Das Verzeichnis /var/account muß man gegebenenfalls anlegen. Nur root sollte in dem Verzeichnis Schreibrechte haben, damit niemand die Datei manipulieren kann. Im Sinne von Sicherheit und Datenschutz wäre sogar zu überlegen, ob man allen Benutzern die Leserechte entzieht. Traditionell ist das Lesen der Datei aber meist zugelassen. Man verbietet den Benutzern ja auch nicht Kommandos wie who oder ps ax.

Die Accounting-Datei wird vom Kernel nie gelöscht. Wenn man nicht eingreift, wächst sie also stetig, was bei halbwegs beschäftigten Rechnern schnell zu Megabytes an Daten führen kann. SuSE hat offenbar vorgesehen, die Datei wie eine normale Logdatei zu rotieren, wie es bei anderen Distributionen aussieht, habe ich nicht nachgesehen. Man kann wohl davon ausgehen, daß es bei den führenden Distributionen keinen Disk-Überlauf geben wird, wenn man das Accounting einschaltet.

Auswertung der Daten

Ist das Accounting eingeschaltet, so kann man mit

lastcomm | less

jederzeit die letzten gestarteten Kommandos sehen (Prozesse, die noch nicht beendet sind, erscheinen in der Liste nicht). Ziemlich cool, aber noch nicht ganz ausreichend. Deshalb gibt es das Programm sa, das diese Liste nach verschiedenen Kriterien zusammenfassen und sortieren kann. Es kann auch dazu verwendet werden, solche Zusammenfassungen mit bereits bestehenden Zusammenfassungen zu vereinigen.

Es geht aber noch besser. Schon vor ca. fünf Jahren dachte ich mir, daß dieses Erfassen der Daten und Anlegen von Statistiken automatisch gehen sollte. Mit moderatem Aufwand schrieb ich daraufhin ein Shell-Skript, das genau dieses tut. Es legt tägliche, monatliche und jährliche Zusammenfassungen an, die jeden Tag aktualisiert werden, und erzeugt eine Index-Datei im HTML-Format. In Kombination mit einem kleinen CGI-Programm, ebenfalls ein Shell-Skript, lassen sich so auf simpelste Weise die Statistiken abrufen und nach verschiedenen Kriterien sortieren.

Von acctsum erzeugte Index-Seite

hjb

Von acctsum erzeugte Index-Seite

Dieses Tool heißt acctsum und ist auf meiner Homepage zu finden. Die Dokumentation ist weitgehend englisch. Die Installation sollte niemand vor Probleme stellen. Es gibt eine Konfigurationsdatei /etc/account.conf, die man wahrscheinlich sogar ohne Änderung übernehmen kann, wenn man die Accounting Utilities in /usr/local/sbin installiert hat.

Man benötigt einen Eintrag in crontab, um acctsum täglich automatisch auszuführen. Zum Ansehen der Daten ist ein Web-Server nötig, in dessen CGI-Verzeichnis das Programm showacct zu installieren ist. Alles in allem ist die Installation nicht so komfortabel wie ein rpm -i, aber auch nicht kompliziert.

Die einzelnen Schritte der Installation (als Root) sind:

  • Makefile durchsehen und make install aufrufen
  • das Programm showacct ins CGI-Verzeichnis kopieren
  • crontab -e aufrufen und einen Eintrag hinzufügen:

    # At 00:00: Accounting summary
    0 0 * * * /usr/local/sbin/account.daily
    
  • /etc/account.conf editieren und an den eigenen Geschmack anpassen

Ab Mitternacht sollte dann die Auswertung der Daten laufen und eine Datei index.html irgendwo erzeugt werden. Diese kann man in seine Bookmarks aufnehmen, oder einen Link auf die Datei irgendwo einbauen, so daß man bequem darauf zugreifen kann.

Was in der Installationsanleitung fehlt, ist, daß man die Distribution daran hindern muß, sich an der Account-Datei zu vergreifen. Denn das erledigt das acctsum-Programm selbst. Bei SuSE würde das bedeuten, die Zeile mit /var/account/pacct aus /etc/logfiles zu entfernen. Bei Debian, Red Hat und Mandrake müßte es eine Datei im Verzeichnis /etc/logrotate.d sein, die zu bearbeiten oder einfach zu löschen ist.

  • Dieses Werk wurde von seinem Urheber zur uneingeschränkten Nutzung freigegeben und ist damit gemeinfrei (»public domain«).

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung