Rsyslog

From ICO wiki
Jump to navigationJump to search

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