Linuxi administreerimine - Labor 2 (keskse logihalduse rakendamine) protokoll
Labor 2 protokoll - keskse logihalduse rakendamine
Sten Aus
A32
28.11.2013
Õppeaine ja ülesanne: Linuxi administreerimine#Keskne_logiserver
Ülesande püstitus
Luua kohalikus võrgus kahes virtuaalmasinas keskne logihaldus. Üks masin on logiserver ja teine klient, mis saadab oma logid sinna.
Server: Ubuntu Server 64bit, versioon: 12.04.3 LTS
Klient: Ubuntu client 64bit, versioon 13.04
Abimaterjal - väljavõte Sander Arnus lõputööst "Keskse logilahenduse rakendamine Hariduse Infotehnoologia Sihtasutuses" ja selle IT Kolledži wiki materjal Keskse logilahenduse rakendamine.
Kasutatud tarkvara
Logstash versioon 1.1.12 - logiserver, mis võtab vastu ja töötleb logisid
Elasticsearch versioon 0.90.0 - logide talletamiseks
Kibana 0.2.0 - veebiliides logide sirvimiseks ja otsimiseks
NB! Kasutasin samu versioone, mis on kasutanud S. Arnus, kuna Kibana versioon 3 (version 3 milestone 4) on totaalselt teistsugune varasematest ja lahendus selle versiooniga ei töötanud.
Protokoll
Serveri seadistamine
Uus virtuaalmasin nimega LA-logiserver-64 (kasutatud varem eksporditud masinat IT Kolledži elab keskkonnast).
Omistasin masinale staatilise ip 192.168.56.210 (kuna kasutusel on ka teine server (puppet), mille aadress on juba 192.168.56.200). Selleks muutsin /etc/network/interfaces failis ip aadressi eth1 võrgukaardi jaoks.
/etc/hostname failis asendasin masina nimeks '"logimassin"'. Koos domeeninimega on masina nimi "logimassin.planet.zz" (FQDN).
Logstash
Kasutatud S. Arnus lahendust
apt-get install openjdk-7-jre
mkdir /etc/logstash
wget https://logstash.objects.dreamhost.com/release/logstash-1.1.12-flatjar.jar
mv logstash-1.1.12-flatjar.jar /etc/logstash/logstash.jar
Loon konfiguratsioonifaili /etc/logstash/logstash.conf sisuga: NB! Eemaldasin windowsi ja RELP protokollide logid, kuna neid ei ole antud laboris kasutatud.
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 {
}
}
Loon automaatse käivituse jaoks kirje upstarti
nano /etc/init/logstash-server.conf
Ja faili sisu:
# 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
Loon kausta /var/log/logstash ja kasutaja nimega logstash, lisan ta gruppi adm.
mkdir /var/log/logstash
adduser --system --disabled-password --no-create-home --group --quiet logstash
usermod -a -G adm logstash
Muudan vajalike kaustade omanikuks kasutaja nimega "logstash" ja grupi "adm"
chown -R logstash:adm /etc/logstash/
chown -R logstash:adm /var/log/logstash/
Elasticsearch
Laen internetist alla elasticsearchi binaarse paki, pakin selle lahti (installeerin) ja eemaldan faili.
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
Teenuse käivitamine
service elasticsearch start
Kibana
Installeerin sõltuvused ja tõmban internetist pakitud kibana arhiivi.
apt-get install ruby1.9.3 rubygems
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
Muudan faili /etc/kibana/KibanaConfig.rb ja seal sees leiduvat "KibanaHost" stringi. Stringi on vaja kirjutada masina IP-aadress, et pääseks ligi veebiserveriga Kibana kasutajakeskkonnale.
KibanaHost = ‘192.168.56.210’
Loon upstarti kirje kibana automaatseks käivitamiseks
nano /etc/init/kibana.conf
Faili sisu:
# 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
Töö lõppu üks korralik taaskäivitus ja olen serveri seadistamisega jõudnud lõpuni.
Kliendi seadistamine
Kliendiks Ubuntu client 64bit. Kasutusel sama klient, mis samas aines puppeti laboris kliendina.
Rsyslog
Rsyslog on Linux/UNIX masina jaoks logiklient, mis saadab logisid edasi seadistatud serverile. Kui rsyslogi seadistatud poleks, saab seda teha kasutades käsku
apt-get install rsyslog
Muudan kliendis rsyslogi konfiguratsioonifaili
nano /etc/rsyslog.conf
Lisasin TCP kommentaaride juurde rea, mis saadab üle TCP protokolli logid määratud ip-aadressi suunas.
*.* @@192.168.56.210:10514
Seletused:
*.* kõik logifailid
@@ - kasutades TCP protokolli (@ - UDP protokoll) - miks kasutada TCP-d? Kuna TCP on kindlam ja turvalisem, ei lase andmekaol tekkida.
192.168.56.210 - "logimassin" serveri ip-aadress
10514 - logide saatmise ja vastuvõtmise port
Kliendil on vaja rsyslogi jaoks teha taaskäivitus. Seda saab teha kas masinat taaskäivitades või kasutades käsku
service rsyslog restart
Ligipääs ja testimine
Veebiliidesest on võimalik keskkond avada, kui trükkida sisse aadress http://192.168.56.210:5601. Mina aga lisasin kliendi masina hosts faili kirje
192.168.56.210 logimassin.planet.zz logimassin
Avades liidese näen nii serverist (logimassin) kui ka kliendist (client) tulnud logisid. Et asja illustreerida enda jaoks veelgi, panin käima serveri (puppet) ja läbi Kibana veebiliidese lugesin välja, mis kliendi logifailis tekkis, kui puppet saatis sinna mingeid uuendusi.
Kaitsmine
syslogng, logstash ja rsyslog
Logstashi installeerimine on väga lihtne ja ainukeseks piiranguks (sõltuvuseks) on java olemasolu. Logstash on väga skaleeruv ja lihtsasti hallatav. Logstashi saab saata logisid erinevatest sisenditest - ei ole piiratud ainult syslogi-saatvate operatsioonisüsteemidega.