GNU/Linux >> Znalost Linux >  >> Linux

Změna formátu data v syslog

Vždy existují nové možnosti pro problém s datem přidáním pouze několika řádků.
Mým řešením je přidání souboru do /etc/rsyslog.d/ , například myrsyslog.conf , poté přidejte formát podle svého výběru, můj je:

$template myformat,"%TIMESTAMP:1:10:date-rfc3339% %TIMESTAMP:19:12:date-rfc3339% %syslogtag%%msg%\n"
$ActionFileDefaultTemplate myformat

tím se použije nový formát na vaše protokoly, což usnadní analýzu.

před

Sep  3 12:52:37 whs dhcpcd[477]: wlan0: expired address ...
Sep  3 12:52:37 whs dhcpcd[477]: wlan0: part of Router Advertisement expired
Sep  3 12:52:37 whs dhcpcd[477]: wlan0: deleting route to ...

po

2020-09-03 13:00:49 systemd[1]: rsyslog.service: Succeeded. 
2020-09-03 13:00:49 systemd[1]: Stopped System Logging Service. 
2020-09-03 13:00:49 systemd[1]: Starting System Logging Service...

I když jste našli jiné řešení, dávám odpověď pro ostatní.

Upravte svůj konfigurační soubor syslog (například v Debianu:/etc/syslog-ng/syslog-ng.conf ).

Poté deklarujte novou šablonu takto:

template template_date_format {
    template("${YEAR}-${MONTH}-${DAY} ${HOUR}:${MIN}:${SEC} ${HOST} ${MSGHDR}${MSG}\n");
    template_escape(no);
};

Toto je příklad, ale můžete použít různá makra podle dokumentace syslog spojené v odpovědi uživatele 9645.

Poté najděte v tomto konfiguračním souboru všechny soubory, u kterých chcete změnit výstupní formát, a použijte na ně tuto šablonu.

Například chci změnit /var/log/auth.log výstupní formát, pak změním :

destination d_auth { file("/var/log/auth.log"); };

do :

destination d_auth { file("/var/log/auth.log" template(template_date_format)); };

Poté restartujte syslog (service syslog-ng restart ) a zkuste se přihlásit, abyste viděli změny v auth.log .


Měl jsem stejný problém s FreeBSD 9.2 a Zabbix GUI monitoru systému, které nezvládá věci jako 'Jan' nebo 'Feb' v datovém razítku (!) ve zprávách systémového protokolu.

Udělal jsem instalaci sysutils/syslog-ng port a použijte convert-syslogconf.awk skript pro migraci mého /etc/syslog.conf na /usr/local/etc/syslog-ng.conf (která naštěstí fungovala dobře i s poměrně složitou konfigurací) a přidal tuto vlastní šablonu formátování do všech file() destinace:

template t_msgfmt {
    template("${ISODATE} ${HOST} ${FACILITY} ${LEVEL} ${MSGHDR}${MSG}\n");
    template_escape(no);
};

Více informací o formátování naleznete v příručce syslog-ng v sekci 11.1 . Pro mě to funguje dobře (zatím), doufám, že vám to pomůže!


Linux
  1. Linux – Jak zjistit datum vytvoření souboru?

  2. Jak nastavit datum pomocí formátu Epoch?

  3. Jak vytvořit Bash skript pro změnu formátu data v souboru CSV?

  1. Cookie – Generátor souborů pro projekty založený na šablonách

  2. Změnit datum vytvoření souboru

  3. Restartovat cron po změně souboru crontab?

  1. Náhrada procesu a potrubí?

  2. Změna obsahu souboru pomocí shell skriptu

  3. Formát indexovaného archivu?