Erweiterte Systemüberwachung mit rsyslog

Seite 6: SQL-Grundlagen

Inhaltsverzeichnis

Um die Datenbank mit dem MySQL-Client abzufragen, benötigt man ein paar Grundkenntnisse in SQL. SQL hat eine recht einfache Syntax, sodass man schnell eigene Abfragen zusammenstöpselt. Hat man sich beim Datenbankserver angemeldet, wählt man zunächst mit use Syslog; die Datenbank mit den Log-Einträgen aus. Der Befehl show tables; zeigt alle Datenbanktabellen. Interessant und mit den Log-Einträgen befüllt ist die Tabelle SystemEvents, deren Spalten das Kommando describe SystemEvents auflistet. Die tabellarische Ausgabe zeigt auch, welche Wertetypen (Text, Ganzzahl usw.) die einzelnen Spalten aufnehmen. Eine solch schicke Tabelle gibt mysql auch bei Abfragen aus. Die einfachste Form einer Datenbankabfrage schaut so aus und zeigt alle Einträge der Tabelle an:

select * from SystemEvents; 

Das Sternchen ist ein Platzhalter, der automatisch alle Spalten der Tabelle auswählt. Um nur den Inhalt einzelner Spalten anzuzeigen, listen Sie die gewünschten einfach durch Kommata getrennt anstelle des Sternchens auf. So zeigt

select SysLogTag,DeviceReportedTime,Message from SystemEvents; 

nur die Spalten mit dem Dienst, dem Datum sowie der Log-Meldung an. Zumeist will man aber weitere Bedingungen setzen. So will man vielleicht nur die Daten eines bestimmten Dienstes über einen gewissen Zeitraum anzeigen oder nur Meldungen, die Begriffe wie „failure“ und „error“ enthalten. Bedingungen in SQL werden mit dem Schlüsselwort „where“ eingeleitet. Die Abfrage

select SysLogTag,DeviceReportedTime,Message from SystemEvents where SysLogTag like "fetchmail%";

liefert alle Meldungen des Mail-Abholers fetchmail. like verwendet man immer dann, wenn man im Abfragebegriff mit Platzhaltern arbeitet. Das ist nötig, weil hinter dem Dienstnamen immer noch die Prozess-ID in eckigen Klammern steht. Weiß man genau, wonach man sucht, verwendet man statt des like das Gleichheitszeichen. Außerdem stehen für Spalten mit Zahlen und Daten die Operatoren > und > zur Verfügung, um Wertebereiche zu definieren. Nicht nur dafür lassen sich bei Abfragen mehrere Bedingungen mit AND, OR und NOT verknüpfen.

Darüber hinaus lassen sich die Ausgaben nach beliebigen Spalten auf- oder absteigend sortieren und man kann Rechenoperationen durchführen wie etwa bestimmte Meldungen zählen oder Summen bilden. Abfragen lassen sich beispielsweise auch in csv-Dateien ausgeben, sodass man sie leicht in eine Tabellenkalkulation importieren und das Ergebnis grafisch aufbereiten kann. Eine gute Anlaufstelle für die SQL-Syntax ist die Dokumentation, die zusammen mit MySQL auf der Festplatte landet oder aber im Paket mysql-doc steckt. Die Datei „manual“ enthält viele ausführlich erklärte Abfragebeispiele und wird in den Formaten Text, Html und PostScript installiert.