Keskse logilahenduse rakendamine
Eesmärk
Koguda lõputöö "Keskse logilahenduse rakendamine Hariduse Infotehnoloogia Sihtasutuses" raames valminud paigaldusjuhendid ühele lehele, võimaldades neid muuta ning täiendada.
Lahendus
Lühidalt näeb lahendus välja järgmine:
Rsyslog - logi klient, mis on paigaldatud Linux operatsioonisüsteemile. Saadab kõik oma logid edasi kesksele logiserverile
Nxlog - logi klient, mis on paigaldatud Windows operatsioonisüsteemile. Saadab kõik oma logid edasi kesksele logiserverile
Logstash - logiserver, võtab kõik logid vastu ning töötleb neid või saadab kohe edasi andmebaasi ja analüüsivahendile
Simple Event Correlator (SEC) - tegeleb logide analüüsi, korrelatsiooni ja administraatorite teavitamisega
Elasticsearch - talletab kõik logid ja jagab neid logide esitlusvahendiga
Kibana - võimaldab läbi veebiliidese sirvida ja otsida logisid
Nxlog
Testitud 64 bitise Windows 7 Professional operatsioonisüsteemi peal.
Paigaldus
Laadida alla viimane versioon tarkvarast (hetkel 2.4.1054): http://sourceforge.net/projects/nxlog-ce/files/latest/download
Paigaldamine käib lihtsalt "Next" ja "Finish" nuppu vajutades.
Seadistus
Konfiguratsioonifail 64 bitise opsüsteemi puhul:
C:\Program Files (x86)\nxlog\conf\nxlog.conf
Konfiguratsioonifail 32 bitise opsüsteemi puhul:
C:\Program Files\nxlog\conf\nxlog.conf
Vastavalt opsüsteemile määrata konfiguratsioonifailis rakenduse asukoht, kommenteerides vale väärtus välja:
#define ROOT C:\Program Files\nxlog define ROOT C:\Program Files (x86)\nxlog
Muuta konfiguratsioon järgnevaks:
#64 bitise Windowsi puhul
#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
<Extension syslog>
#Pakub syslog tuge. Loob sõnumeid ja tegeleb kriitilisuse ja
#rakenduse valdkonna väärtustega
Module xm_syslog
</Extension>
<Input internal>
#Kogub sisemisi nxlog logisid
Module im_internal
</Input>
<Input eventlog>
#Kogub logisid uuematelt Windowsi opsüsteemidelt
#Windows 2008, Vista ja hilisemad
#Windows 2003 ja vanemad puhul tuleb kasutada im_mseventlog
Module im_msvistalog
</Input>
<Output out>
#Muuta IP-aadress ja port vastavalt
#logiserveri seadistustele
Module om_tcp
Host 192.168.13.52
Port 10515
#Muudab väljundi IETF syslog vormingusse
Exec to_syslog_ietf();
</Output>
<Route 1>
#Sisenditest eventlog ja internal kogutud logid
#saadetakse väljundisse out
Path eventlog, internal => out
</Route>
Käivitamine
Teenus, nimega nxlog, tuleb käivitada Windows „Services“ menüüst.
Rsyslog
Juhendis toodud käsud on mõeldud rakendamiseks Linux/Unix operatsioonisüsteemis. Testitud 64 bitise Ubuntu Server 12.04 operatsioonisüsteemi peal.
Kõikide käskude puhul on eeldatud, et need antakse root kasutaja õigustes, ehk käskude eest on jäetud ära sudo.
Paigaldus
Rsyslog on vaikimisi paigaldatud uuematel distributsioonidel. Juhul kui ei ole, saab kasutada käske:
Ubuntu paigaldus
apt-get install rsyslog
Debian paigaldus
apt-get install rsyslog
OpenSUSE paigaldus
zypper install rsyslog
CentOS paigaldus
yum install rsyslog
Seadistus
Konfiguratsioonifail: /etc/rsyslog.conf
Konfiguratsioonifaili tuleb lisada rida, mis edastab kõik sõnumid (*.*) TCP protokolliga (@@) logiserverile, mille IP-aadress testkeskkonnas on 192.168.13.52 ja port 10514.
# Edastab kõik sündmused logiserverile, TCP port 10514
*.* @@192.168.13.52:10514
Pärast seadistuse muutmist tuleb teha teenusele restart:
service rsyslog restart
RELP
Rsyslog puhul on võimalik kasutada TCP protokolli asemel kindlamat protokolli, RELP (Reliable Event Logging Protocol). Sellisel juhul tuleks alla laadida rsyslog-relp pakk:
apt-get install rsyslog-relp
Lisada konfiguratsioonifaili read:
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName srvrfwd # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down
$ModLoad omrelp
*.* :omrelp:192.168.13.52:10517
Käivitamine
service rsyslog start
Logstash
Juhendis toodud käsud on mõeldud rakendamiseks Linux/Unix operatsioonisüsteemis. Testitud 64 bitise Ubuntu Server 12.04 operatsioonisüsteemi peal.
Kõikide käskude puhul on eeldatud, et need antakse root kasutaja õigustes, ehk käskude eest on jäetud ära sudo.
Paigaldus
Viimane versioon on hetkel 1.1.12. Ennem paigaldamist tuleks kontrollida ega ei ole uuendusi.
Sõltuvused
apt-get install openjdk-7-jre
mkdir /etc/logstash
Rakendus
wget https://logstash.objects.dreamhost.com/release/logstash-1.1.12-flatjar.jar
mv logstash-1.1.12-flatjar.jar /etc/logstash/logstash.jar
Seadistus
Luua konfiguratsioonifail logstash.conf kausta /etc/logstash ning lisada konfiguratsioon:
input {
#Linux/Unix süsteemidest tulevad logid
tcp {
type => "syslog-tcp"
port => 10514
}
#Linux/Unix TCP alternatiiv. Pakub kindlamat sõnumite transporti
relp {
type => "RELP"
port => 10517
}
#Windowsi logid
tcp {
type => "eventlog"
port => 10515
}
#Tulemüürid ja võrguseadmed, mis ei võimalda TCP'd
udp {
type => "syslog-udp"
port => 10516
}
#Logiserveri enda logid
file {
type => "logserver"
path => [ "/var/log/syslog", "/var/log/*.log" ]
}
}
output {
#Saadetakse andmebaasi
elasticsearch {
}
#Sisendiks SEC’ile
file {
path => "/var/log/logstash/log.out"
}
}
Faili roteerimine
Roteerime SEC sisendiks olevat faili korra päevas logrotate rakendust kasutades, jättes alles kaks varasemat versiooni ja kustutades ülejäänud, luues faili /etc/logrotate.d/logstash ja lisades faili järgnevad read:
/var/log/logstash/log.out {
daily
copytruncate
rotate 2
}
Käivitamine
Käsitsi käivitamine:
java -jar /etc/logstash/logstash.jar agent -f /etc/logstash/logstash.conf
Automaatseks rakenduse käivitamiseks saab kasutada rakendust Upstart.
Upstart
Loome vajaliku faili ja kastaja ning lisame kasutaja adm gruppi:
touch /etc/init/logstash-server.conf
adduser --system --disabled-password --no-create-home --group --quiet logstash
usermod -a -G adm logstash
Muudame loodud kasutaja rakenduse kaustade omanikuks:
chown -R logstash:adm /etc/logstash/
chown -R logstash:adm /var/log/logstash/
Lisame faili /etc/init/logstash-server.conf:
# logstash server instance
description "logstash server instance"
start on virtual-filesystems
stop on runlevel [06]
respawn
respawn limit 5 30
limit nofile 65550 65550
env HOME=/etc/logstash
chdir /etc/logstash
setuid logstash
setgid adm
console log
#Minimaalne ja maksimaalne javale lubatud mälumaht
#env JAVA_OPTS='-Xms512m -Xmx512m'
script
exec java -jar /etc/logstash/logstash.jar agent -f /etc/logstash/logstash.conf
end script
Serveri taaskäivitusel alustab logstash automaatselt tööd. Käsitsi saab käivitada rakendust käsuga:
initctl start logstash-server
Simple Event Correlator
Juhendis toodud käsud on mõeldud rakendamiseks Linux/Unix operatsioonisüsteemis. Testitud 64 bitise Ubuntu Server 12.04 operatsioonisüsteemi peal.
Kõikide käskude puhul on eeldatud, et need antakse root kasutaja õigustes, ehk käskude eest on jäetud ära sudo.
Paigaldus
apt-get install sec
Seadistus
Konfiguratsioonifaili sec.conf loomine kausta /root ja täitmine konfiguratsiooniga. Vajalik reeglid tuleb kirjutada süsteemiadministraatorite poolt.
Käivitamine
Rakenduse käivitamiseks tuleb anda käsk:
sec --conf=/root/sec.conf --input=/var/log/logstash/log.out --log=/var/log/sec
Elasticsearch
Juhendis toodud käsud on mõeldud rakendamiseks Linux/Unix operatsioonisüsteemis. Testitud 64 bitise Ubuntu Server 12.04 operatsioonisüsteemi peal.
Kõikide käskude puhul on eeldatud, et need antakse root kasutaja õigustes, ehk käskude eest on jäetud ära sudo.
Nõutav on java olemasolu serveris. Logiserveri paigaldusele eelnes java paigaldus ning eeldame, et see on olemas.
Paigaldus
Viimane versioon on hetkel 0.90.0.
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.0.deb
dpkg -i elasticsearch-0.90.0.deb
rm elasticsearch-0.90.0.deb
Seadistus
Hetkel kasutusel vaikimisi seadistus. Andmebaasi töö optimeerimiseks suuremate andmemahtude korral on soovitav seadistust muuta.
Käivitamine
service elasticsearch start
Curator
Elasticsearch Curator on kergestikasutatav abivahend ajaseeria indeksite haldamiseks. Curator võimaldab:
- Lisada indekseid aliaste sisse ning neid sealt eemaldada.
- Suunata indekseerimist erinevatele node-dele.
- Välja lülitada Bloom Filter puhvri.(Mälukasutuse vähendamiseks)
- Indekseid kustutada ja sulgeda.
- Optimeerida indekseid kiiremaks Elasticsearchi taastamiseks pärast süsteemi taaskäivitamist.
- Luua indeksitest snapshote olemasolevasse Elasticsearch repositooriumisse.
Paigaldus
Soovitatav on paigalduseks kasutada pip-i
pip install elasticsearch-curator
Kustutamine
Curatori peamine kasutusala - indeksite, mis on vanemad kui etteantud päevade arv, kustutamine. Näiteks: kustutada indeksid, mis on vanemad kui 90 päeva.
curator delete --older-than 90
Võimalik on ka kustutada indekseid selliselt, et alles jäetakse indekseid kindlas mahus. Näiteks kustutada vanemaid indekseid, kui Logstash logide poolt on kasutuses rohkem kui 5GB ruumi.
curator delete --disk-space 5
Sulgemine
Vahel on lepingute ja eeskirjade tõttu vaja säilitada vanu indekseid, mis aga ressurssikasutuse seisukohalt ei ole mõistlik. Selleks puhuks on Curatoril indeksite sulgemise võimalus, mis keelab lugemise-kirjutamise operatsioonid ning seega võtab sisuliselt ressurssi vaid nende hoiustamine. Vajadusel saab sulgetud indekseid uuesti avada. Näiteks sulgeda indeksid, mis on vanemad kui 90 päeva.
curator close --older-than 90
Alias
Võimaldab indekseid olemasolevate aliaste sisse lisada või neid sealt eemaldada. Näiteks lisada kõik indeksid, mis on vanemad kui 365 päeva, lisada aliase "eelmine_aasta" sisse.
curator alias --alias-older-than 365 --alias eelmine_aasta
Kibana
Juhendis toodud käsud on mõeldud rakendamiseks Linux/Unix operatsioonisüsteemis. Testitud 64 bitise Ubuntu Server 12.04 operatsioonisüsteemi peal.
Kõikide käskude puhul on eeldatud, et need antakse root kasutaja õigustes, ehk käskude eest on jäetud ära sudo.
Paigaldus
Rakenduse viimane versioon on hetkel 0.2.0.
Sõltuvused
apt-get install ruby1.9.3 rubygems
Rakendus
wget https://github.com/rashidkpc/Kibana/archive/v0.2.0.tar.gz
tar -zxf v0.2.0.tar.gz
mv Kibana-0.2.0/ /etc/kibana
rm v0.2.0.tar.gz
cd /etc/kibana
gem install bundler
bundle install
Seadistus
Konfiguratsioon asub failis /etc/kibana/KibanaConfig.rb Muudame väärtust KibanaHost, et veebiliides oleks kättesaadav ka väljaspoolt serverit.
KibanaHost = '192.168.13.52'
Käivitamine
Manuaalselt saab rakendust käivitada käsuga:
ruby /etc/kibana/kibana.rb
Automaatselt saab seadistada rakenduse käivituma programmiga Upstart.
Upstart
Loome konfiguratsioonifaili /etc/init/kibana.conf ja lisame read:
# kibana.conf# kibana - log viewer
description "Kibana logstash viewer"
start on virtual-filesystems
stop on runlevel [06]
respawn
respawn limit 5 30
limit nofile 65550 65550
# Environment
env HOME=/etc/kibana/
chdir /etc/kibana
setuid logstash
setgid adm
console log
# Run Kibana, which is in /etc/kibana
script
ruby /etc/kibana/kibana.rb
end script
Serveri taaskäivitusel alustab kibana automaatselt tööd. Käsitsi saab käivitada rakendust käsuga:
initctl start kibana
Veebiliides
Näites kasutatud seadistuste korral asub Kibana veebiliides aadressil: 192.168.13.52:5601
Kasutatud kirjandus
http://www.rackspace.com/knowledge_center/article/understanding-logrotate-part-2
http://cookbook.logstash.net/recipes/using-upstart/
https://gist.github.com/technosophos/5009484
http://www.librelp.com/relp.html
http://www.rsyslog.com/doc/omrelp.html
http://logstash.net/docs/1.1.12/inputs/relp
http://www.rsyslog.com/doc/rsyslog_reliable_forwarding.html