Portál AbcLinuxu, 4. července 2025 18:11

syslog-ng: jednoduché filtrování

25.7.2007 04:24 | Přečteno: 3059× | (bez kategorie) | Výběrový blog | poslední úprava: 25.7.2007 06:44

Už mě rozčiloval bordel ve /var/log/messages, tak jsem se trochu mrknul na filtrování v syslog-ng, když ho v Portage prezentují jako "syslog replacement with advanced filtering features". Následující postup je ukázka toho, jak logovat cron, sudo a iptables do extra logů.

Konfigurák syslog-ng.conf bývá buď v /etc nebo v /etc/syslog-ng. Zbytek konfigurace počítá s nastaveným zdrojem logů "src". Třeba takhle:

source src {
  unix-stream("/dev/log");
  internal();
  pipe("/proc/kmsg"); # roura
};
Zvolte si názvy souborů pro různé hlášky.
destination messages {
  file("/var/log/messages");
};

destination cron {
  file("/var/log/cron");
};

destination iptables {
  file("/var/log/iptables");
};

destination sudo {
  file("/var/log/sudo");
};
Potom je třeba vymyslet filtry. Tady bych se chtěl zmínit o filtru DEFAULT, který je dostupný vždy a zachytí všechny ještě nezpracované hlášky.
filter f_cron {
  facility(cron);
};

filter f_sudo {
  # match() bere (rozšířené) regexy
  match("^sudo:");
}; 

filter f_iptables {
  facility(kern) and
  match("^iptables: ");
};

filter f_messages {
  # vše od informací až po varování a
  level(info .. warn) and
  # ne to, co chytí filtr f_iptables a
  not filter(f_iptables) and
  # ...
  not filter(f_cron) and
  not filter(f_sudo);
};
Poznámka: Aby fungoval filtr iptables, je třeba logovacím pravidlům přidat přepínač --log-prefix "iptables: ". V případě, že používate firehol, nastavte v konfiguráku firehol.conf proměnnou FIREHOL_LOG_PREFIX="iptables: ". Firehol s touto proměnnou pracuje až od verze 1.255, takže pokud máte starší verzi, můžete buď aktualizovat (což samozřejmě nelze než doporučit) nebo použít patch pro 1.226.

No a pak už mu jen stačí říct co s těmi všemi pravidly dělat :-)

log {
  source(src); # zdroj
  filter(f_messages); # filtr
  destination(messages); # cíl
};

log {
  source(src);
  filter(f_cron);
  destination(cron);
};

log {
  source(src);
  filter(f_sudo);
  destination(sudo);
};

log {
  source(src);
  filter(f_iptables);
  destination(iptables);
  flags(final);
};

Hurá! Konečně je v tom pořádek.

Zdroje

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

25.7.2007 09:11 Ritchie | skóre: 27 | blog: Ritchie's | Berlin
Rozbalit Rozbalit vše Re: syslog-ng: jednoduché filtrování
Odpovědět | Sbalit | Link | Blokovat | Admin
Ještě doporučím nastavit logrotate, aby logovací soubory nerostly nadmíru.
25.7.2007 10:36 Chulda | skóre: 20
Rozbalit Rozbalit vše Re: syslog-ng: jednoduché filtrování
Vic se mi libi vyuzit promene syslogu-ng YEAR MONTH atd.

napr. file("/spool/$HOST/$YEAR/$MONTH/$DAY/$PROGRAM"); prevzato z http://eagain.net/articles/syslog-ng-chroot/

Stare soubory pak jednoduse pres cron gzipovat.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.