Keskne logihaldus
Autorid:
Kristiina Liebert A31
Chris Liebert A32
12.12.2013
Eesmärk
Luua aine Linuxi administreerimine raames Ubuntu testkeskkonnas keskne logihalduse süsteem, mis vastaks meie poolt püstitatud nõuetele. Klient peab saatma logid logiserverisse, kus need salvestatakse. Hiljem peab olema võimalik salvestatud logisid sirvida ning neist otsida.
Nõuded
Nõuded kliendile:
- Töötab Linux/Unix keskkonnas - sellepärast, et meie testsüsteemis on kasutusel arvutid, millel on operatsioonisüsteemiks Ubuntu 13.04.
- TCP protokolli tugi - TCP protokolli kasutamine annab suurema kindluse sõnumite kohale jõudmiseks kui UDP protokoll, sest server saadab kinnituse kohalejõudnud sõnumi kohta ning võrgus esinenud vea korral saadetakse sõnum uuesti.
- TLS protokolli tugi - tegemist on SSL'i järeltulijaga, mis võimaldab kahel osapoolel turvaliselt suhelda ning seega on sõnumite pealtkuulamine välistatud.
- Esmane sõnumite filtreerimine - võimaldab esmast sõnumite filtreerimist ning samuti korduvate sõnumite eemaldamist, mis muidu ummistaksid võrguliiklust.
Nõuded logiserverile:
- TCP protokolli kasutamise võimalus - TCP protokolli kasutamine annab suurema kindluse sõnumite kohale jõudmiseks kui UDP protokoll, sest server saadab kinnituse kohalejõudnud sõnumi kohta ning võrgus esinenud vea korral saadetakse sõnum uuesti.
- UDP protokolli kasutamise võimalus - vajalik seadmete puhul, mis ei toeta TCP protokolli.
Nõuded logide esitamise vahendile:
- Veebiliides, mis võimaldab logisid sirvida ning erinevate parameetrite järgi logisid otsida.
Tarkvara
Server: Ubuntu server 64bit, versioon 12.04 LTS
Klient: Ubuntu client 64bit, versioon 13.04
Logimise klient: Rsyslog
Logiserver: Logstash
Logide salvestamine: Elasticsearch
Veebiliides: Kibana
Logimise kliendi valimisel otsustasime Rsyslog’i kasuks, sest antud tarkvara on vaikimis paigaldatud meie poolt kasutatavas operatsioonisüsteemis ja vastab eelpool püstitatud nõuetele.
Logiserveriks valisime Logstash’i, mis täitis kõik meie poolt seatud nõuded. Logstash’i miinuseks võib lugeda asjaolu, et tegemist on üsna mälunõudliku programmiga. Kuid kuna antud keskkonnas pole vähene mälukasutus üheks kriteeriumiks, siis leiame, et suurem mälukasutus pole probleemiks.
Veebiliideseks valisime Kibana, mis ühildub hästi Elasticsearch’i ja Logstash’iga.
Serveri seadistamine
Serverina kasutame juba meile tuttavaks saanud eelnevalt seadistatud virtuaalmasinat, mille saime siit.
Alustuseks muudame failis /etc/network/interfaces eth1 liidese IP aadressi. Meie testkeskkonnas on selleks 192.168.56.201.
Tõmmis testkeskkonna serveris asuvast /etc/network/interfaces failist
Järgmiseks muudame failis /etc/hostname serveri nime. Meie testkeskkonnas on selleks rsyslog.
Tõmmis testkeskkonna serveris asuvast /etc/hostname failist
Logstash
Kasutatud Sander Arnuse wiki artiklit “Keskse logilahenduse rakendamine”
Paigaldame Java (Logstash vajab seda oma tööks)
apt-get update
apt-get install openjdk-7-jre
Loome kausta /etc/logstash
mkdir /etc/logstash
Rakenduse paigaldamine:
wget https://logstash.objects.dreamhost.com/release/logstash-1.1.12-flatjar.jar
mv logstash-1.1.12-flatjar.jar /etc/logstash/logstash.jar
Loome kausta /etc/logstash konfiguratsioonifaili logstash.conf, kuhu sisestame:
nano /etc/logstash/logstash.conf
input {
#Linux/Unix süsteemidest tulevad logid
tcp {
type => "syslog-tcp"
port => 10514
}
#Logiserveri enda logid
file {
type => "logserver"
path => [ "/var/log/syslog", "/var/log/*.log" ]
}
}
output {
#Saadetakse andmebaasi
elasticsearch {
}
}
Järgnevalt loome Upstart rakendusele vastava kirje, et Logstash alustaks serveri käivitamisel automaatselt oma tööd. Loome vajaliku faili ja kasutaja ning lisame loodud kasutaja adm gruppi:
touch /etc/init/logstash-server.conf
adduser --system --disabled-password --no-create-home --group --quiet logstash
usermod -a -G adm logstash
Loon kausta /var/log/logstash
mkdir /var/log/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
Käsitsi saab Logstash'i käivitada käsuga:
initctl start logstash-server
Elasticsearch
Rakenduse allalaadimine, selle paigaldamine ja pärast paigaldust allalaetud faili eemaldamine:
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
Käsitsi saab Elasticsearch’i käivitada käsuga:
service elasticsearch start
Kibana
Kuna Kibana vajab oma tööks ruby ja rubygems pakke, siis paigaldame need:
apt-get install ruby1.9.3 rubygems
Rakenduse allalaadimine, installimine ja pärast paigaldamist allalaetud faili eemaldamine:
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
Rakenduse konfiguratsioon asub failis /etc/kibana/KibanaConfig.rb . Muudame parameetri KibanaHost väärtust, et Kibana kasutajakeskkond oleks veebiserveriga ligipääsetav.
nano /etc/kibana/KibanaConfig.rb
KibanaHost = '192.168.56.201’
Loome Kibana jaoks samuti Upstart kirje:
Loome konfiguratsioonifaili /etc/init/kibana.conf ja sisestame:
nano /etc/init/kibana.conf
# 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
Käsitsi saab Kibana't käivitada käsuga:
initctl start kibana
Kliendi seadistamine
Kliendina kasutame samuti juba meile tuttavaks saanud virtuaalmasinat, mille saime siit.
Rsyslog
Kui rsyslog’i vaikimisi paigaldatud pole, siis selle paigaldamiseks tuleb tegutseda järgmiselt:
apt-get update
apt-get install rsyslog
Konfiguratsioonifaili /etc/rsyslog.conf muutmine:
Lisame rea *.* @@192.168.56.201:10514
@ - selle parameetri kasutamisel edastatakse sõnumid logiserverile kasutades UDP protokolli @@ - selle parameetri kasutamisel edastatakse sõnumid logiserverile kasutades TCP protokolli *.* - selle parameetriga määrame ära, et logiserverile edastatakse kõiki tüüpi sõnumid olenemata nende prioriteedist. Mõned näited prioriteetide kohta: debug, info, notice, warning, err, crit, alert IP aadressiga määrame, kuhu sõnumid edastatakse ehk meie logiserveri IP aadress
Pärast konfiguratsioonifaili muutmist on oluline teha teenusele restart:
service rsyslog restart
Lisame /etc/hosts faili meie eelnevalt seadistatud logiserveri kohta kirje, kasutades selleks logiserveri IP'd, täispikka domeeninime ja serveri nime. Meie testkeskkonna puhul on kirje järgmine:
192.168.56.201 rsyslog.planet.zz rsyslog
Lahenduse testimine
1. Oma lahenduse käigus lisasime Upstart’i kirjed Kibana ja Logstash’i jaoks, et need logiserveri käivitamisel automaatselt tööle hakkaksid. Selle testimiseks pole muud paremat moodust, kui server seisma panna ning uuesti käima panna. Serveri käivitamisel veendume, et vajalikud teenused on üleval(Kibana,Elasticsearch,Logstash).
2. Kontrollimaks, kas seadistatud veebiliides töötab ning meil sellele ligipääs on, sisestame veebibrauserisse aadressi: 192.168.56.201:5601
Kui kõik on eelnevalt õigesti seadistatud, siis avaneb Kibana veebiliides.
Tulemus
Rsyslog edastab sündmused kesksele logiserverile, kus jookseb Logstash. Logiteated salvestatakse Elasticsearch’i andmebaasi. Kibana võimaldab veebiliidese vahendusel vaadelda logisid ning samuti võimaldab otsida logidest.
Kasutatud materjal: http://enos.itcollege.ee/~mernits/Linux%20administreerimine/Arnus%20-%20keskne%20logilahendus.pdf