Ich räume auf und standardisiere unsere Protokollverwaltung, indem ich fluentd und ELK hinzufüge. Dieser Teil funktioniert gut, da nginx in seine eigene Datei protokolliert:
input(type="imfile" tag="app.nginx" file="/var/log/nginx/access.log" ruleset="fluentd")
Andere Komponenten der App, z. B. der Python-Prozess, melden sich jedoch /var/log/syslog
mit Protokollnachrichten an, die mit beginnen [flask]
. Ich möchte /var/log/syslog
Nachrichten mit filtern [flask]
, sie mit markieren app.flask
und den fluentd
Regelsatz anwenden.
Ich könnte jeden Dienst so konfigurieren, dass er in seine eigene Datei protokolliert, wie z. B. nginx, aber ich möchte Änderungen an der systemd-Konfiguration möglichst vermeiden.
Antwort1
Ich habe dieses Problem letztendlich dadurch gelöst, dass ich die Nachrichten an eine bestimmte Protokolldatei umgeleitet und input
ihr dann einen Verweis hinzugefügt habe.
if $rawmsg contains "[flask]" then /var/log/flask.log
input(type="imfile" tag="app.flask" file="/var/log/flask.log" ruleset="fluentd")
Wenn es eine Möglichkeit gibt, dies zu tun, ohne auf eine andere Datei umzuleiten, würde ich es trotzdem gerne wissen.