Nyílt forráskódú lett az nxlog naplózó rendszer

Címkék

Mivel hazai fejlesztésről van szó, ajánlom a magyar open-source közösség figyelmébe: több éves fejlesztés eredményét tettük elérhetővé. Az nxlog egy nyílt forráskódú (GPL/LGPL licencelésű), moduláris naplózó eszköz, amely többféle forrásból és protokollon tud naplóeseményeket fogadni, továbbítani és tárolni. És még azt a másik operációs rendszert is támogatja. Akit érdekel, próbálja ki vagy jöjjön el az FSF konferenciára ahol egy előadás keretében néhány szót ejtünk róla.

Hozzászólások

Egy kérdés, amit nem látok a leírásban: Kompatibilis (értsd: van ilyen modulja?) az új Syslog szabvánnyal? (RFC5424,RFC5425,RFC5426)

Én meg arra lennék kíváncsi, hogy ez a Community Edition verzió miben tér el a fizetőstől...

Hadoopba lehet valamilyen modullal vagy beállítással hatékonyan továbbítani a logokat?

nagyon szuper szoftver. ma akadtam rá és egy óra alatt többet tudtam kihozni belõle mint pályafutásom során már syslogger-ekbõl.

unix-os gépállományra nagysokára összeállítottam egy egységes rsyslog konfigot központosított loggolásra, de a win-ek bevonása enélkül kilátástalan lett volna.

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

arra lennék kiváncsi, regexp substitution-t tud?
pl. mint perlben:

$SourceName =~ s/[^a-z0-9_-]//g;

úgy akartam emulálni a /g módosítót, hogy sokszor egymás utan tettem egy karakterosztályt és az inverzét:

if $SourceName =~ /([a-z0-9_-]*)[^a-z0-9_-]*([a-z0-9_-]*)[^a-z0-9_-]*([a-z0-9_-]*)[^a-z0-9_-]*([a-z0-9_-]*)[^a-z0-9_-]*([a-z0-9_-]*)/ $SourceName = $1+$2+$3+$4+$5;

ez így mũködhet és csak én vétek el valamit, vagy nem?

a cél az rsyslog számára nem emészthetõ karakterek kihagyása a programnévbõl. észrevettem, hogy a szóközöket szépen helyettesíti is (talán ez a statement? "OutputFormat syslog_rfc3164")

ezt találtam még ki, de valamiképp nem úgy adja át az iconv lib-nek az akaratomat, mint az iconv cli.

Exec $SourceName = convert($SourceName, "iso8859-2", "ascii//translit");

(de lehet hogy még így se lenne elég, mert repölõ ékezeteket csinál)

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

A regexp replalace egyelrőre TODO, de hamarosan megcsinálom. Van sima replace() illetve xm_perl és ott bűvészkedhetsz tetszés szerint.

Ha windows-ról szeretnél logot beküldeni rsyslog-nak, akkor esetleg próbálhatod a snare formátumot, ez elég elterjedt. Esetleg valami modernebb strukturált formátumban is küldheted mint a JSON.

Az syslog_rfc3164 formázó valóban lecseréli a whitespace-t.

Az "ascii//translit" helyett nem inkább "utf-8" kellene?

Egyébként ajánlom a levelező listát, ott esetleg más is tud segíteni.

xm_perl-hez gondolom kell eper perl, vagy vlami interpreter windows alá és nem akarom ettõl függõvé tenni a loggolást.

a többi formátumtól kicsit idegenkedek, már csak ilyen oldschool vagyok :)
bár magam is meglepõdtem, amikor láttam, hogy az rfc3164 annyira meztelen plaintext, hogy a többsoros loghoz is bũvészkedni kell.
apropo, az octet-counted framing-et hogy tudom nx-ben meghatározni?

nem utf8. programonként (SourceName) külön fájlba irányítom a logokat, és az rsyslog az elsõ nem-alfanumerikus karakterig vágja le a programnevet, ezért ahol ékezet van a programnévben (hát igen, lokalizált windows-ról történik a mũvelet), pl. "Cserélhetõ Tároló Szolgáltatás", ott csak "cser" lesz a fájlnév. ezért probálkoztam meg az ascii//translit-tel, sakkor a
syslog/host05/daemon/cserelheto_tarolo_szolgaltatas.log sokkal jobban mutatna.

de már megtaláltam a kódban, hol lehet belenyúlni :)
amit persze kevésbé részesítek elõnyben, mint a konfig fájlt, ha van rá konfig megvalósítás.
kivéve, ha elfogadtok patch-et :)

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

Az xm_perl még nincs windows-ra. Tehát ez még nem is menne.

Az octet-counted framing alatt az rfc 5425-ben írtakat érted? Erre van egy Syslog_TLS input/outputtype. Ez működik TCP-n is, nem kell neki TLS. Az elnevezés megtévesztő, de próbált az rfc nevéhez igazodni.

Patch-et elfogadunk, de csak akkor van értelme ha nem hack. Ha jól tudom az rfc3164-ben nincs karakterkészletre megkötés, ezért az utf-8 karakterek kezelése sem definiált. Ezért a karakterek (vagyis inkább bájtok) önkényes lecserélése sem biztos, hogy szerencsés, szvsz ezt célszerű lehet konfigból végezni. (Lesz rá mód). Illetve meg kellene nézni a többi syslog implementeciót, hogy ott miként van ez kezelve.

ezaz!

Exec $SourceName = replace($SourceName, "\xc3\xa1", "a");

forma utasításokkal megoldottam.
sajnos hajlamosabb vagyok elõbb belenyúlni a kódba, mint a dokumentációba :)

az még a kérdésem, hogy hol alakul utf8-cá a raw log, ha ilyen configom van:
amiért a noacute blokkban nem latin2-es karaktereket kellett megadnom...


< Extension syslog >
    Module      xm_syslog
< /Extension >
< Extension charconv >
    Module      xm_charconv
    AutodetectCharsets  utf-8, iso8859-2
< /Extension >
< Input msevent >
    Module  im_mseventlog
    UTF8    TRUE
< /Input >
< Processor syslogizer >
    Module         pm_transformer
    OutputFormat   syslog_rfc3164
< /Processor >
< Processor noacute >
        Module  pm_null
        Exec    $SourceName = replace($SourceName, "\xc3\xa1", "a");
        Exec    to_syslog_bsd();
< /Processor >
< Route 1 >
    Path    msevent => syslogizer => noacute => rsyslog
< /Route >

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE