syslog-ng: Jednoduché filtry

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

| David Watzke © 2005 - 2010 | Kontakt | Nahoru ↑ | Poslední změna: 22. 08. 2010 v 16:49 |