Keskse logilahenduse rakendamine

From EIK wiki

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:
Logilahendus2.PNG

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