14 months agojournald-ai: handle journald entries with no message content master
Dominik Brodowski [Sun, 30 Jul 2017 14:10:15 +0000 (16:10 +0200)]
journald-ai: handle journald entries with no message content

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
15 months agojournald-ai: Initial commit -- presented at tübix 2017
Dominik Brodowski [Sat, 24 Jun 2017 12:54:00 +0000 (14:54 +0200)]
journald-ai: Initial commit -- presented at tübix 2017

Artificial ignorance logging -- or "enumerating goodness" -- means to look
at just those log messages which you did not expect. All other log
messages -- those which are expected, as they appear with some sort of
regularity -- are ignored. This allows you to quickly discern new problems
or unexpected behavior. All the "regular" log messages -- which you may
need to debug specific issues -- are kept in their regular places. This
concept is well known since at least 1997, see [1] and [2] for details.

[1] http://www.ranum.com/security/computer_security/papers/ai/index.html
[2] http://www.ranum.com/security/computer_security/editorials/dumb/

journald-ai is a framework for artificial ignorance logging for the
systemd-journald logger. Closely coupling the artificial ignorance
framework with journald allows to make use of he specifics of journald,
especially the metadata information also logged by journald.

The messages which are known and should be filtered out are stored in
files below /etc/ai/. The directory name below /etc/ai/ reflects the
transport over which systemd-journald receives the log message -- one
of driver, journal, kernel, stdout and syslog --, the filename
reflects the identifier: The identifier for kernel-messages is kernel;
otherwise the first available entry of SYSLOG_IDENTIFIER, _SYSTEMD_UNIT
and _COMM is the identifier. The ending of the file denotes the
filtering algorithm. Currently, only python regular expressions are
supported; these files must have the ending ".regex".

As this tool requires specific set-up to run, there is *no* Makefile
yet, and also no default rules which are filtered out. An example /
testcase may be found in README.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>