nix-git/modules/journalwatch.nix

256 lines
8.5 KiB
Nix
Raw Normal View History

{ config, pkgs, ... }:
{
2023-09-18 16:22:12 +02:00
# Systemd Journal Monitoring.
# Alternative:
# journal-biref
# https://github.com/twaugh/journal-brief
# https://opensource.com/article/20/7/systemd-journals-email
# Write to Systemd Journal:
# echo 'hello' | systemd-cat -p emerg
# echo 'hello' | systemd-cat -t someapp -p emerg
# View Systemd Journal.
# Filter by app:
# journalctl -b -t someapp
# Filter by priority:
# journalctl -b -p 5
# Manually execute journalwatch timer:
# sudo systemctl start journalwatch.service
# Find a message and view its details
# journalctl -b -p5 -o json-pretty
# Then press "/" and enter a pattern, then press "Enter".
assertions = [{
assertion = config.services.opensmtpd.enable;
message = "journalwatch requires a configured sendmail MTA, see sendmail-mta.nix.";
}];
services.journalwatch = {
enable = true;
# TODO: Same as configured by sendmail MTA.
mailFrom = "langbein@mail.de";
mailTo = "daniel+journalwatch@systemli.org";
#interval = "hourly";
2023-09-27 16:44:56 +02:00
# Lowest priority of message to be considered. A value between 7 (“debug”), and 0 (“emerg”). Defaults to 6 (“info”). If you don't care about anything with “info” priority, you can reduce this to e.g. 5 (“notice”) to considerably reduce the amount of messages without needing many filterBlocks.
priority = 5;
# Default patterns: https://github.com/The-Compiler/journalwatch/blob/363725ac4b8aa841d87654fa8a63403a59ad1275/journalwatch.py#L71
# If the value of `match` starts and ends with a slash, it is interpreted as a regular expression, if not, it's an exact match.
# `filters` are always regular expressions.
# All regular expressions have to match the full string!
filterBlocks = [
2023-09-20 15:39:26 +02:00
2023-09-27 16:44:56 +02:00
#
# _EXE
#
{ # yodaNas
filters = ''
# Ignore any invocation of sudo.
.*
'';
match = "_EXE = //nix/store/[a-z0-9]+-sudo-[0-9]+.[0-9]+.[0-9]+[a-z0-9]+/bin/sudo/";
}
2023-09-23 19:16:38 +02:00
#
# _SYSTEMD_CGROUP
#
{ # yodaYoga
filters = ''
2023-09-27 16:44:56 +02:00
parent not found! continent_id [0-9]+
2023-09-23 19:16:38 +02:00
'';
match = "_SYSTEMD_CGROUP = /system.slice/docker.service";
}
2023-09-24 22:07:58 +02:00
#
# IMAGE_NAME
#
{ # yodaYoga
filters = ''
2023-09-27 16:44:56 +02:00
[BABEL] Note: The code generator has deoptimised the styling of \S+ as it exceeds the max of 500KB\.
2023-09-24 22:07:58 +02:00
'';
match = "IMAGE_NAME = /biketripplanner/digitransit-ui:\S+/";
}
2023-09-20 15:39:26 +02:00
#
# _SYSTEMD_UNIT
#
2023-09-18 15:45:26 +02:00
{ # yodaTux
filters = ''
2023-09-27 16:44:56 +02:00
.*
2023-09-18 15:45:26 +02:00
'';
2023-09-20 11:34:32 +02:00
match = "_SYSTEMD_UNIT = /(bluetooth\.service|cups\.service)/";
2023-09-18 15:45:26 +02:00
}
2023-09-20 11:34:32 +02:00
{ # yodaYoga
2023-09-18 15:45:26 +02:00
filters = ''
2023-09-27 16:44:56 +02:00
# Somebody evil trying to connect over SSH ^^
error: kex_exchange_identification: read: Connection reset by peer
# Somebody evil connected with a non-SSH client to the SSH server.
error: kex_exchange_identification: banner line contains invalid characters
# Somebody evil ...
error: kex_exchange_identification: client sent invalid protocol identifier "GET / HTTP/1.1"
error: kex_exchange_identification: Connection closed by remote host
error: PAM: Authentication failure for \S+ from \S+
2023-09-18 15:45:26 +02:00
'';
2023-09-20 11:34:32 +02:00
match = "_SYSTEMD_UNIT = sshd.service";
2023-09-18 15:45:26 +02:00
}
2023-09-20 15:39:26 +02:00
{ # yodaTux, yodaYoga
2023-09-18 15:45:26 +02:00
filters = ''
The system will suspend now!
2023-09-27 16:44:56 +02:00
The system will power off now!
2023-09-20 15:39:26 +02:00
System is powering down\.
2023-09-18 15:45:26 +02:00
'';
match = "_SYSTEMD_UNIT = systemd-logind.service";
}
{ # yodaTux
filters = ''
2023-09-20 15:39:26 +02:00
Reexecuting\.
(finished )?switching to system configuration /nix/store/.+-nixos-system-.+-[0-9]+\.[0-9]+pre-git
2023-09-18 15:45:26 +02:00
'';
match = "_SYSTEMD_UNIT = user@0.service";
}
{ # yodaTux
filters = ''
2023-09-20 15:39:26 +02:00
Reexecuting\.
2023-09-18 15:45:26 +02:00
(finished )?switching to system configuration /nix/store/.+-nixos-system-.+-[0-9]+\.[0-9]+pre-git
'';
match = "_SYSTEMD_UNIT = user@1000.service";
}
{ # yodaTux
filters = ''
Reloading rules
2023-09-20 15:39:26 +02:00
Collecting garbage unconditionally\.\.\.
2023-09-18 15:45:26 +02:00
Loading rules from directory /.+
Finished loading, compiling and executing [0-9]+ rules
'';
match = "_SYSTEMD_UNIT = polkit.service";
}
{ # yodaTux
filters = ''
.+ error name="org\.bluez\.MediaEndpoint1\.Error\.NotImplemented" .+
2023-09-20 11:34:32 +02:00
# Open issue: https://github.com/NixOS/nixpkgs/issues/79220
2023-09-23 15:22:24 +02:00
Unknown (username|group) .+ in message bus configuration file
2023-09-18 15:45:26 +02:00
'';
2023-09-18 22:02:25 +02:00
match = "_SYSTEMD_UNIT = dbus.service";
}
2023-09-20 11:34:32 +02:00
{ # yodaTux
filters = ''
2023-09-20 13:38:26 +02:00
Mounted /dev/\S+ at /\S+ on behalf of uid [0-9]+
Cleaning up mount point /\S+ \(device \S+ is not mounted\)
Unmounted /dev/\S+ on behalf of uid [0-9]+
Successfully sent SCSI command SYNCHRONIZE CACHE to /dev/\S+
Successfully sent SCSI command START STOP UNIT to /dev/\S+
Powered off /dev/\S+ - successfully wrote to sysfs path /sys/devices/\S+
2023-09-20 11:34:32 +02:00
'';
2023-09-20 13:38:26 +02:00
match = "_SYSTEMD_UNIT = udisks2.service";
}
#
# SYSLOG_IDENTIFIER
#
{ # yodaTux. If the user `yoda` runs a command with `sudo`.
filters = ''
2023-09-23 18:36:51 +02:00
\s+yoda : TTY=pts/[0-9] ; PWD=/\S+ ; USER=root ; COMMAND=/.+
2023-09-20 13:38:26 +02:00
'';
match = "SYSLOG_IDENTIFIER = sudo";
}
{ # yodaYoga
filters = ''
(finished )?switching to system configuration /nix/store/.+-nixos-system-.+-[0-9]+\.[0-9]+pre-git
'';
match = "SYSLOG_IDENTIFIER = nixos";
2023-09-20 11:34:32 +02:00
}
2023-09-20 15:39:26 +02:00
{ # yodaYoga
filters = ''
2023-09-27 16:44:56 +02:00
\S+.(service|scope): Consumed .+ CPU time, read .+ from disk, written .+ to disk.+
\S+.(service|scope): Consumed .+ CPU time, received .+ IP traffic, sent .+ IP traffic\.
2023-09-20 15:39:26 +02:00
#
Shutting down\.
'';
match = "SYSLOG_IDENTIFIER = systemd";
}
2023-09-18 22:02:25 +02:00
{ # yodaTux
filters = ''
.*
'';
match = "SYSLOG_IDENTIFIER = //nix/store/.+/libexec/gdm-x-session/";
2023-09-18 15:45:26 +02:00
}
2023-09-23 15:22:24 +02:00
{ # yodaTux, yodaTab
2023-09-18 15:45:26 +02:00
filters = ''
2023-09-23 15:22:24 +02:00
#
# YodaTux
#
2023-09-20 22:24:33 +02:00
# Bug.
2023-09-18 15:45:26 +02:00
ACPI: FW issue: working around C-state latencies out of order
# Kernel WiFi driver bug.
2023-09-23 15:22:24 +02:00
#iwlwifi 0000:01:00\.0: .*
iwlwifi 0000:01:00\.0: Unhandled alg: 0x707
iwlwifi 0000:01:00\.0: Not associated and the session protection is over already...
2023-09-23 19:16:38 +02:00
iwlwifi 0000:01:00\.0: api flags index 2 larger than supported by driver
2023-09-20 22:24:33 +02:00
# Ignore.
2023-09-20 11:34:32 +02:00
random: crng reseeded on system resumption
2023-09-27 16:44:56 +02:00
random: crng init done
2023-09-20 22:24:33 +02:00
# Ignore.
2023-09-27 16:44:56 +02:00
sd [0-9]:0:0:0: [sda] [0-9]+ 512-byte logical blocks: \([0-9]+ GB/[0-9]+ GiB\)
sd [0-9]:0:0:0: [sda] Write Protect is off
sd [0-9]:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd [0-9]:0:0:0: [sda] Optimal transfer size [0-9]+ bytes not a multiple of preferred minimum block size (4096 bytes)
sd [0-9]:0:0:0: [sda] Attached SCSI disk
2023-09-23 15:22:24 +02:00
#
# YodaTab
#
# Ignore.
mmc0: cannot verify signal voltage switch
2023-09-27 16:44:56 +02:00
Initialise system trusted keyrings
Key type asymmetric registered
Asymmetric key parser 'x509' registered
Loading compiled-in X.509 certificates
Key type \.fscrypt registered
Key type fscrypt-provisioning registered
Key type encrypted registered
Bridge firewalling registered
SCSI subsystem initialized
scsi 0:0:0:0: Direct-Access\s+ATA\s+SanDisk SD7TB6S2 1201 PQ: 0 ANSI: 5
thinkpad_acpi: Disabling thinkpad-acpi brightness events by default\.\.\.
2023-09-23 15:22:24 +02:00
#
done\.
2023-09-18 15:45:26 +02:00
'';
match = "SYSLOG_IDENTIFIER = kernel";
}
2023-09-20 11:34:32 +02:00
{ # yodaTux
filters = ''
.*
'';
match = "SYSLOG_IDENTIFIER = simple-scan";
}
2023-09-20 13:38:26 +02:00
#
# _SYSTEMD_USER_UNIT
#
2023-09-23 15:22:24 +02:00
{ # yodaTux, yodaTab
2023-09-20 13:38:26 +02:00
filters = ''
.+ Setting AttentionNeeded to FALSE because EnsureCredentials\(\) succeded
2023-09-23 15:22:24 +02:00
Connecting to org\.freedesktop\.Tracker3\.Miner\.Files
2023-09-20 13:38:26 +02:00
'';
match = "_SYSTEMD_USER_UNIT = dbus.service";
}
2023-09-20 11:34:32 +02:00
{ # yodaTux
filters = ''
.*
'';
2023-09-23 15:22:24 +02:00
match = "_SYSTEMD_USER_UNIT = /(org\.gnome\..+\.service|pipewire\.service|wireplumber\.service|app-gnome-org\.gnome\.Software-[0-9]+\.scope)/";
2023-09-20 11:34:32 +02:00
}
];
};
}