Portál AbcLinuxu, 30. dubna 2025 23:32

Konfigurácia Syslog-NG á la Gentoo + grc / spc

13.9.2012 20:45 | Přečteno: 1871× | Linux | Výběrový blog | poslední úprava: 13.9.2012 20:34

Syslog-NG je (nielen) na Linuxe veľmi obľúbeným systémom na správu logov. V dnešnom blgu si ukážeme niekoľko jeho možností ako napr. zobrazovanie logov v reálnom čase na samostatnej konzole, alebo použitie filtrov na ofarbenie logov.

Čo je to Syslog-NG

Syslog-NG je nástroj na centralizovanú správu logov. Logy môžu pochádzať z rôznych zdrojov(source) - zariadenie, súbor, vzdialený stroj vysielajúci UDP packety na určitom porte … Podľa konfigurácie sa správy zo zdrojov posielajú do zvolených cieľov(destination).

Vzťahy medzi zdrojmi a cieľmi majú kardinalitu M:N tj. jeden cieľ môže mať viacej zdrojov a zároveň jeden zdroj môže byť priradený viacerým cieľom. Vzťah sa vyjadruje v konfiguračnom súbore Syslog-NG príkazom log. Voliteľne môže byť pri definícii vzťahu použité filtre (príkaz filter).

Základná konfigurácia Syslog-NG

Konfiguračný súbor Syslog-NG sa obyčajne nachádza na adrese /etc/syslog-ng/syslog-ng.conf. Obvykle obsahuje direktívu options ovplyvňujúcu správanie Syslog-NG. Štandardné nastavenia sú pre väčšinu prípadov postačujúce. Ja používam nasledujúce nastavenia:

options {
	# jednoduchý formát hostname
	chain_hostnames(no);
	# vypnutie logovania STATS, štandardne je čas nastavený na 10 minút
	stats_freq(0);
	# vypnutie logovania MARK
	mark_freq(0);
};

Zdroje logov sa v konfiguračnom súbore zapisujú direktívou source. Nasledujúci kód nastavuje ako interný (lokálny) zdroj unixový socket /dev/log. Spravovať logy je samozrejme možné aj z viacerých zdrojov súčasne napr. z UDP portu pre spracovanie logov z routra.

source src {
	unix-stream("/dev/log" max-connections(256));
	internal();
	file("/proc/kmsg");
};
# Sieťový zdroj logov napr. router
# source src_router { udp(); };

Ciele sú nastavené direktívou destination. Cieľom môže byť súbor, zariadenie, port … Nasledujúce nastavenia sú ukážkou cieľov pre logovanie:

destination d_cron { file("/var/log/crond.log"); };
destination d_kernel { file("/var/log/kernel.log"); };
destination d_messages { file("/var/log/messages.log"); };
destination d_errors { file("/var/log/errors.log"); };

Aby sme mohli logy roztriediť do rôznych cieľov musíme definovať pravidlá, na základe ktorých budú správy triedené. Tie sa zapisujú kľúčovým slovom filter. V nasledujúcom príklade je použitých niekoľko spôsobov definície filtrov a ich kombinácie.

# Filtrovanie správ obsahujúcich IN= a OUT=
filter f_iptables { match("IN=" value("MESSAGE")) and match("OUT=" value("MESSAGE")); };

# Správy pochádzajúce od cronu
filter f_cron { facility(cron); };

# Správy pochádzajúce od kernelu, ale nepochádzajú od iptables
filter f_kernel { facility(kern) and not filter(f_iptables); };

# Správy úrovne info - varovanie nepochádzajúce od cronu ani od iptables
filter f_messages { level(info..warn) and not facility(cron) and not program(/usr/sbin/cron) and not filter(f_iptables); };

# Varovania až kritické správy
filter f_warn { level(warn); };
filter f_crit { level(crit); };
filter f_err { level(err); };
filter f_emergency { level(emerg); };

Po nastavení zdrojov a filtrov môžme konečne prejsť k prepojeniu zdrojov s cieľmi. To dosiahneme použitím direktívy log.

log { source(src); filter(f_cron); destination(d_cron); };
log { source(src); filter(f_kernel); destination(d_kernel); };
log { source(src); filter(f_messages); destination(d_messages); };
log { source(src); filter(f_warn); destination(d_errors); };
log { source(src); filter(f_crit); destination(d_errors); };
log { source(src); filter(f_err); destination(d_errors); };
log { source(src); filter(f_emergency); destination(d_errors); };

Zobrazovanie logov na samostatnej console (tty12)

Po úspešnej konfigurácii logovania do súborov môžme nakonfigurovať zobrazovanie logov na samostatnej konzole. Táto funkcia príde vhod v prípade, že často pracujete v konzole, alebo máte KMS, takže prepínanie z X do konzoly je veľmi rýchle. Konfiguráciu začneme deklaráciou cieľa.

destination console_all { file("/dev/tty12"); };

Voliteľne môžme definovať filter pre odstránenie správ, ktoré nie sú zaujímavé. Napríklad pre odstránenie cronu je možné použiť nasledujúci príkaz:

# Správy určené pre konzolu (všetko okrem cron-u)
filter f_console_all { not facility(cron) and not program(/usr/sbin/cron); };

Následne stačí už len prepojiť zdroj a cieľ a to nasledujúcim kódom:

# s použitím filtra
log { source(src); filter(f_console_all); destination(console_all); };

# bez použitia filtra
# log { source(src); destination(console_all); };

Po reštarte Syslog-NG by sa mali na 12. konzole (CTRL + ALT + F12) začať objavovať logy.

Ofarbenie logov pomocou grcat / supercat

Dúha

grc

Program grcat sa obvykle nachádza v balíku grc. Tento program pochádza zo Slovenska, čo je mimochodom patrné aj z jeho názvu ;-). Jeho úlohou je čítať štandardný vstup a na štandardný výstup vypisovať pôvodný vstup ofarbený ANSII sekvenciami. Jediným parametrom programu je konfiguračný súbor (konfiguračné súbory sa vyhľadávajú obyčajne v adresári /usr/share/grc).

Pre použitie grcat na ofarbenie logov na tty12 stačí vymeniť nastavenie destination pre console_all za nasledujúci kód a po reštarte Syslog-NG sa môžme kochať farebnými výpismi ;-)

destination console_all { program("grcat conf.log gt; /dev/tty12"); };

supercat

Supercat a grc sú veľmi podobné projekty. Hlavný rozdiel medzi týmito nástrojmi je v použitom programovacom jazyku - grc je v pythone zatiaľ čo supercat v C. Pre mnohých ľudí môže byť práve výber jazyka prekážkou v nasadení.

Konfiguračné súbory grc a supercat sú medzi sebou navzájom nekompatibilné. Zatiaľ čo grc sa dodáva s konfiguračným súborom pre logy u supercat-u si musíme tento súbor vytvoriť. Ja som napísal jednoduchú konfiguráciu podobnú tej, ktorú používa grc:

  HTML COLOR NAME   COL A N T STRING or REGULAR EXPRESSION
#################### ### # # # ################################################################
Magenta              mag b     ([0-9]{1,3}(\.[0-9]{1,3}){3})
Yellow               yel b     (`[^'`]*')
Yellow               yel b   s WARNING
Green                grn b     [[:space:]](/[^[:space:]&|;(){}]*)
Green                grn   1   (\([^)]*\))
Green                grn       (^...[ ]*[0-9]{1,2} [0-9]{2}:[0-9]{2}:[0-9]{2} )
Brown                yel       ^...[ ]*[0-9]{1,2} [0-9]{2}:[0-9]{2}:[0-9]{2} (\w*)
Red                  red b     ^...[ ]*[0-9]{1,2} [0-9]{2}:[0-9]{2}:[0-9]{2} \w* ([^ ]*):
Blue                 blu b     ^...[ ]*[0-9]{1,2} [0-9]{2}:[0-9]{2}:[0-9]{2} \w* [^ \[]*(\[\w*\])

Tento súbor je možné uložiť napr. ako /etc/supercat/syslog. Zodpovedajúci príkaz destination v syslog-ng.conf bude vyzerať nasledovne:

destination console_all { program("spc -c /etc/supercat/syslog > /dev/tty12"); };

Po dokončení konfigurácie by sme mali mať na 12. konzole pekne ofarbené výpisy ako v prípade použitia grc.

Nástroje ako supercat a grc nám samozrejme nič nebráni používať aj pri parsovaní logovacích súborov. Na zobrazovanie výpisov v reálnom čase sa dajú kombinovať s príkazom tailf napr.

tailf /var/log/messages|spc -c /etc/supercat/syslog
       

Hodnocení: 100 %

        špatnédobré        

Obrázky

Konfigurácia Syslog-NG á la Gentoo + grc / spc, obrázek 1 Konfigurácia Syslog-NG á la Gentoo + grc / spc, obrázek 2

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

Komentáře

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

Vložit další komentář

kotyz avatar 13.9.2012 21:52 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Odpovědět | Sbalit | Link | Blokovat | Admin
To je teda blog na grc :-D
Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
14.9.2012 15:14 Radovan Garabík
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
a ten ilustračný obrázok na grc sa mi páči :-)
13.9.2012 21:53 Scarabeus IV | skóre: 20 | blog: blogisek_o_gentoo | Praha
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Odpovědět | Sbalit | Link | Blokovat | Admin
Nazev tveho pocitace se mi libi :-)
Tise predpokadam ze to neni podle nazvu jednoho divneho pitiva :D
mirec avatar 13.9.2012 22:22 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Žiaľ je :-( Mohol som ho pomenovať aj podľa iného v česku obľúbeného nápoja, ale dnešná mládež bez základov chémie netuší čo je metanol ;-)
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
Václav 13.9.2012 22:58 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
methanol je snad učivo základní školy, ne? Jestli to někdo neví, tak potěš…
Cross my heart and hope to fly, stick a cupcake in my eye!
mirec avatar 13.9.2012 23:04 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Neviem ako je to v Česku, ale tu na Slovensku je každá ďalšia genrácia z prírodných vied tupšia a tupšia. Vidieť to aj v práci kde som najstarší a keby som sa niekoho spýtal či máme v kuchyni NaCl tak budú na mňa pozerať či som z inej planéty. Keby som sa nebodaj ešte pokúsil o nejakú praktickú ukážku (napr. elektrolýzu) tak ma ešte budú chcieť upáliť na hranici ...
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
14.9.2012 08:05 kotrcka | skóre: 23 | blog: Onééé 2 | Praha
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
ale no. v dnesnych dnoch je o metanole dost vzdelevacich programov prakticky v kazdej velkej televizii medzi 7. a 8. vecer.
Keďže tu účet nejde zrušiť, zmenil som si heslo na random a "zabudol ho".
14.9.2012 15:08 kavol | skóre: 28
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Odpovědět | Sbalit | Link | Blokovat | Admin
prosímtě, co se snažíš s nějakým syslog-ng, to je úplně zbytečná práce, Ash [systemd] durbatulûk ... agh burzum-ishi krimpatul.
mirec avatar 14.9.2012 15:18 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Nech skúsi vliezť bez povolenia na moje Gentoo :P
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
14.9.2012 16:18 kavol | skóre: 28
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
z jiného soudku ... Resistance is futile.
mirec avatar 14.9.2012 16:24 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Tiež pravda, kedsi som si to hovoril o consolekitoch a podobných blbostiach adnes mi bez toho nejde ani automount. Vlastne ani s tým ;-)
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
18.9.2012 17:47 helb
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
podivej se na udevil + devmon (sys-apps/udevil), automount mi funguje i bez *kitu a jinych sracek :)
mirec avatar 18.9.2012 22:40 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Konfigurácia Syslog-NG á la Gentoo + grc / spc
Hmm, vyzerá zaujímavo dík za tip.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon

Založit nové vláknoNahoru

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