Rsyslog
Autor
Robert Pärn, A21
Viimase muudatuse ajalugu
26.05.2012 valmis esialgne versioon
Sissejuhatus
Rsyslog võimaldab süsteemi logimist sarnaselt Linuxi/Unixi utiliidile syslog, kuid lisab palju rohkem funktsionaalsust. Mõningad olulised lisafunktsioonid, mida rsyslog pakub on näiteks täpsete kriteeriumite põhjal filtreerimine, sh. ka sisupõhine filtreerimine. Samuti on võimalik rsyslogiga võimalik logifaile vastavalt soovile IP võrgus liigutada. Tänu rsyslog'i võimekusele ja kasutusmugavusele on ta muudetud enamikes Linuxi distrotes standardiks.
Eeldused
Uusim rsyslog versioon on 6.3.8. See juhend eeldab, et ka teil on uusim versioon. Versioonid 0-4 on tänaseks vananenud, kuid on kasutus on suuresti sarnane uutematega. Nagu mainitud on uutemates Linuxites kohe rsyslog installitud ning on võimalik installida vanematele, millel see ei tule Operatsioonisüsteemiga kaasa. Suure tõenäosusega ei ole teil selle rakenduse kasutamiseks vaja mitte midagi juurde installida, kui kasutate uuemat Linuxit.
Oskused, mida kasutajalt eeldatakse on Linuxi käsurea tundmine, mõningad teadmised logidest ning kasuks tuleb ka programmeerimis- või skriptimiskeele oskus.
Basic kasutamise õpetus
Et rsyslog oleks täielikult mõistetav, demonstreerin tema põhilisi omadusi. Lühidalt öeldes on sellega võimalik kõike logida. Selleks, et logida erinevaid asju on rsyslogil propertyd. Propertyd "püüavad" süsteemi sõnumeid kinni stringidena ning neid on hiljem võimalik oma tahtmise järgi manipuleerida. Kõikvõimalikud propertyd on nähtavad siin: http://www.rsyslog.com/doc/property_replacer.html.
Teeme demo'ks ühe lihtsa logi, vaatame, mis süsteemi sõnumid liiguvad, kui teeme restardi teenusele rsyslog. Kõigepealt veendume, et oleme root kasutajaõigustes:
sudo -i
Järgmiseks veendume meil on rsyslog installitud.
apt-get update apt-get install rsyslog
Avame rsyslog konfifaili.
nano /etc/rsyslog.conf
Edasi defineerime uue templiidi faili lõppu. Templiidi alustel põhineb terve rsyslogi töö. Siin saab kasutatada erinevaid propertyd ja stringi manipulatsioone ning defineerida kuhu faili logi kirjutatakse.
$template testikas, "Silt: '%syslogtag%', systeemis6num: '%msg%'\n" *.* /var/log/testing123.log;testikas
Mida see kõik tähendab? $template defineerib templiidi, selle järgi saab rsyslog aru, et seal on eraldi reeglitel põhinev logimine ning oskab seda rakendada. Mina defineerisin enda templiidinimeks "testikas". Pärast koma järgneb see mida väljastatakse. Nagu näha siis on seal "Silt: " ning sellele järgneb property "%syslogtag%" jne. Lõpus on "\n", mis peaks olema tuttav neile, kes skriptimise või programmeerimisega tegelevad, antud märk vahetab rida (muidu kirjutataks kogu tekst üksteise otsa).
Salvesta fail ning testi seda mingi käsuga. Mina tegin rsyslogile restardi, aga nüüdsest püüab see logi kinni paljud süsteemi käsud.
service rsyslog restart
less /var/log/testing123.log
Minu väljastus:
Silt: 'kernel:', systeemis6num: 'imklog 5.8.1, log source = /proc/kmsg started.' Silt: 'rsyslogd:', systeemis6num: ' [origin software="rsyslogd" swVersion="5.8.1" x-pid="1372" x-info="http://www.rsyslog.com"] start' Silt: 'rsyslogd:', systeemis6num: 'rsyslogd's groupid changed to 103' Silt: 'rsyslogd:', systeemis6num: 'rsyslogd's userid changed to 101'
Kui teil on tõsine soov hakata rsyslogi kasutama, siis soovitan tungivalt katsetada igasuguste erinevate propertytega ning regexiga (JAH ka seda on võimalik kasutada logifailide koostamisel). Võimalusi mida antud rakendus pakub on väga palju ning ilmselt aitaks lahendada ka paljude süsteemiadminnide muresid katkiste teenustega ja muuga.
Tõsisem rsyslog'i kasutuse näide
Kuna rsyslog on väga paindlik ja võimalik kasutada koos paljude programmide ja teenustega, siis olen toonud mõne näite teenustega, mida kasutatakse tihti.
Apache2
Apache2 teeb juba vaikeseades logisid ja see on piisav paljudel juhtudel, kuid kui tegu on suurema veebihostiga võib vaja minna rohkem logimise viise. Näiteks soovite saata ErrorLogisid üldse kuskile teise masinasse või filtreerida logisid sissetulevate IP'de järgi. Süsteemilogisid on võimalik saata igale poole, selleks on facilityd, nii saab logid suunata näiteks FTP serverisse, saata meil või teha fail kohalikku masinasse. Siin on kõik syslogi facilityd: http://www.kiwisyslog.com/help/syslog/index.html?protocol_facilities.htm. Meie näites kasutame kohalikku masinasse salvestust.
Kui tahame salvestada ErrorLogid kuskile erladi asukohta saab teha nii. Kõigepealt avame veebilehe konfifaili ja lisame järgmise rea.
ErrorLog syslog:local1
Local1 kohalik facility, neid on kokku 7. Edasi tuleb teha uus rida rsyslog konfifaili.
local1.crit /var/log/apache.crit
crit on standartne syslogi sisseehitatud tõsiduse aste (neid on teisigi). Edaspidi logitakse "kriitilised" ja tõsisemad errorid faili /var/log/apache2.crit.
Kahjuks on access logidega rohkem vaeva vaja näha, kuna sisseehitatud syslogi funktsioonid ei tegele sellega. On võimalik teha mingi skript, mis saadab apache logi syslogile, kuid kasutame selle asemel rakendust logger, mis teeb selle töö meie eest ära. Kõigepealt lisada apache2 konfi järgmised read:
# (20100219) Rianto Wahyudi - Send apache log to syslog CustomLog logs/access_log combined CustomLog "|/usr/bin/logger -p local6.info" combined CustomLog logs/access_log combined
Märkus: kui te kasutate mitmes kohas sama facilityt, tuleks -t võtmega määrata ka programminimi, mida logitakse. Edasi tuleks muuta ka rsyslog konfifail.
if $syslogfacility-text == 'local6' then /var/log/httpd-access.log if $syslogfacility-text == 'local6' then ~
Pärast seda tuleks teha restart mõlemale teenusele.
Märkus 2: rsyslog konfifailis include-itakse vaikeseades rsyslog.d kaustas olevad failid.
Viited
http://www.rsyslog.com/article354/
http://wiki.rsyslog.com/index.php/Working_Apache_and_Rsyslog_configuration
http://www.kiwisyslog.com/help/syslog/index.html?protocol_facilities.htm