Keskse logilahenduse rakendamine Rsyslog näitel
Eesmärk
Juhendi eesmärgiks on keskse logilahenduse rakendamine virtualiseeritud testkeskkonnas.
Eeldused
Testkeskkonnas on virtuaalmasinate võrguparameetrid eelnevalt seadistatud.
Võrguparameetrite seadistamiseks loe juhendit Ubuntu server võrgu seadistamine ja VirtualBoxi võrgud.
Nõuded tarkvarale
Töötab Linux/Unix keskkonnas;
Võimaldab TCP protokolli kasutada;
Avatud lähtekoodiga või vaba tarkvara;
Logide jälgimine veebikeskkonnas.
Tarkvara valik
Nõuetele vastab Rsyslog ja LogAnalyzer. Valiku langetasime tuginedes Sander Arnuse lõputööle.
Alternatiivse logiserveri tarkvarana võib kasutada näiteks logstash'i või syslog-ng'd.
Kliendi masinates võib kasutada logitarkvarana nxlog'i või syslog-ng'd.
LogAnalyzer'i asemel võib kasutada Kibana't.
Virtuaalmasinate seadistused
Selle konkreetse lahenduskäigu puhul on kasutusel kolm virtuaalmasinat:
1) Puppet server: Ubuntu Server 64bit versioon 12.04.3 LTS.
puppet.planet.zz 192.168.56.200
2) Keskne logiserver: Ubuntu Server 64bit versioon 12.04.3 LTS.
rsyslog.planet.zz 192.168.56.201
3) Klient: Ubuntu Desktop 64bit versioon 13.
client.planet.zz 192.168.56.101
Joonis 1: Virtuaalmasinate topoloogia
Tarkvara kirjeldus
Lahendus on testitud ja töötab kasutades järgnevaid tarkvara versioone.
Rsyslog versioon 5.8.6 - logiserver, mis saadab ja võtab vastu klientide poolt saadetud logid
Apache2 versioon 2.2.22 - veebiserver, mis seadistatakse hilisemaks logide veebipõhiseks vaatamiseks
MySQL server versioon 5.5 - andmebaasiserver, kuhu salvestatakse logid nende hilisemaks analüüsiks
LogAnalyzer versioon 3.6.5 - veebipõhine kasutajaliides logide otsimiseks ja analüüsimiseks reaalajas
Logiserveri seadistamine
Tarkvara paigaldamine [1][2]
NB! Kõik juhendis kirjutatud käsud käivitatakse root kasutaja õigustes.
Paigaldame keskses logiserveris (rsyslog.planet.zz) vajalikud pakid.
Esmalt uuendame tarkvararepositooriumit:
apt-get update && apt-get upgrade -y
Paigaldame rsyslog'i:
apt-get install rsyslog
Paigaldame apache veebiserveri:
apt-get install apache2
Paigaldame MySQL andmebaasiserveri:
(MySQL-serveri paigaldamisel tuleb määrata root kasutaja parool)
apt-get install mysql-server
Paigaldame php5 ja vajalikud moodulid:
apt-get install php5 php5-gd libapache2-mod-php5 php5-mysql
Taaskäivitame teenused:
service rsyslog restart
service mysql restart
service apache2 restart
Kontrollime, kas veebiserver ja andmebaasiserver kasutavad õigeid TCP/IP porte (80, 3306):
netstat -tapn
Jälgime, et:
Protsess nimega mysqld kasutab porti 3306.
Protsess nimega apache2 kasutab porti 80.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 18595/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18766/apache2
MySQL-serveri seadistamine [3]
Loome MySQL-serverisse andmebaasi nimega "rsyslog". Sinna hakkab toimuma logide salvestamine:
mysqladmin -u root -p create rsyslog
Käivitame MySQL käsurea ning loome andmebaasi "rsyslog" uue kasutaja.
Siseneme andmebaasi:
mysql -u root -p
Loome andmebaasi "rsyslog" kasutaja nimega rsyslog:
NB: 'sinu_uus_rsyslogi_parool' asemele kirjuta meelepärane parool.
GRANT SELECT, INSERT, UPDATE ON rsyslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'sinu_uus_rsyslogi_parool';
Aktiveerime õigused:
FLUSH PRIVILEGES;
MySQL serverist väljumiseks:
quit
Rsyslog seadistamine [4]
Seadistame keskse logiserveri kasutama porti 10514. Näiteks ei kasuta me porti 514, sest Rsyslogi puhul on teada programmiviga, mille tõttu võetakse kasutajalt õigused ennem kui avatakse uus port. Seetõttu kuvatakse veateadet. Kasutama peaks porte, mis on suuremad kui 1024.
Täpsemalt saab selle kohta lugeda järgnevalt lingilt: veakirjeldus
Avame nano või mõne muu tekstiredaktoriga rsyslog.conf faili:
nano /etc/rsyslog.conf
Lisame rsyslog.conf faili lõppu järgnevad read:
$ModLoad MySQL
*.* >127.0.0.1,rsyslog,rsyslog,sinu_uus_rsyslogi_parool
Eemaldame kommentaari sümboli ‘#’ järgnevatelt ridadelt:
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 10514
Seejärel taaskäivitame rsyslog teenuse:
service restart
Kontrollime, kas serverid kuulavad õigeid TCP/IP porte (80, 10514 & 3306):
netstat -tapn
Jälgime, et:
Protsess nimega mysqld kasutab porti 3306.
Protsess nimega apache2 kasutab porti 80.
Protsess nimega rsyslogd kasutab porti 10514.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 14689/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14881/apache2 tcp 0 0 0.0.0.0:10514 0.0.0.0:* LISTEN 14923/rsyslogd tcp6 0 0 :::10514 :::* LISTEN 14923/rsyslogd
LogAnalyzer paigaldamine [5]
Liigume /tmp kausta:
cd /tmp
Laeme alla LogAnalyzer-i ja konfigureerime Apache veebiserveri logide näitamiseks:
wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.5.tar.gz
Pakime lahti alla laetud tarkvara:
tar xvzf loganalyzer-3.6.5.tar.gz
Kopeerime loganalyzer'i /var/www/ kausta:
mv loganalyzer-3.6.5/ /var/www/
Liigume /var/www kausta:
cd /var/www
Muudame /var/www/ kataloogis olevate failide ja kaustade omanikku ja gruppi:
chown www-data:www-data * . -R
Loome uue kausta:
mkdir /var/www/loganalyzer
Kopeerime /src/ kaustast kõik failid /var/www/loganalyzer kausta:
cp loganalyzer-3.6.5/src/* /var/www/loganalyzer -R
Kopeerime /contrib/ kaustast kõik skriptifailid /var/www/loganalyzer kausta:
cp loganalyzer-3.6.5/contrib/*.sh /var/www/loganalyzer -R
Anname skriptidele käivitusõigused:
chmod +x /var/www/loganalyzer/*.sh
Liigume kausta:
cd loganalyzer/
Käivitame skripti:
sh ./configure.sh
Anname Apachele õigused kasutada syslogi: [6]
usermod -G adm www-data
LogAnalyzeri paigaldamine jätkub veebibrauseris aadressil: http://192.168.56.201/loganalyzer/install.php
Kui tuleb ette paigaldamise juhend, siis võib jätkata paigaldamist vaikesätetega.
Nüüd peaks rsyslogi server töötama koos LogAnalyzeriga. Logisid saab vaadata aadressil http://192.168.56.201/loganalyzer/src/
Rsyslog klientide seadistamine [7]
NB! Kõik juhendis kirjutatud käsud käivitatakse root kasutaja õigustes.
Paigaldame klientidele (client.planet.zz ja puppet.planet.zz) rsyslog paki:
Esmalt uuendame tarkvararepositooriumit:
apt-get update && apt-get upgrade -y
Paigaldame rsyslog'i:
apt-get install rsyslog
Avame nano või mõne muu tekstiredaktoriga rsyslog.conf faili:
nano /etc/rsyslog.conf
Lisame rsyslog.conf faili lõppu järgnevad read:
*.* @@192.168.56.201:10514
Taaskäivita rsyslogi teenus:
service rsyslog restart
Kontrolli, kas server kuulab õiget TCP IP porti (10514).
netstat -tapn
Jälgime, et:
Protsess nimega rsyslogd kasutab porti 10514 (Foreign Address).
Antud väljund on client.planet.zz klientmasinast.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.56.101:49155 192.168.56.201:10514 ESTABLISHED 9180/rsyslogd
Rsyslog klientide seadistamine puppeti abil
Alternatiivse lahendusena saab kliente seadistada puppeti abil.
Järgnevad muudatused tehakse puppetserveris root kasutaja õigustes.
Luua kaks erinevat klassi klientmasinate konfigureerimiseks /etc/puppet/manifest/classes/ kausta.
Loo nano või mõne muu tekstiredaktoriga puppeti retsept "rsyslog.pp", mille abil paigaldatakse rsyslog tarkvara.
nano /etc/puppet/manifests/classes/rsyslog.pp
rsyslog.pp sisu
class rsyslog {
package { 'rsyslog': ensure=> latest }
}
Loo nano või mõne muu tekstiredaktoriga puppeti retsept "rsyslog_conf.pp", mille abil tehakse vajalikud muudatused klientmasinate /etc/rsyslog.conf failis.
nano /etc/puppet/manifests/classes/rsyslog_conf.pp
rsyslog_conf.pp sisu
class rsyslog_conf {
file_line { 'rsyslog':
ensure => present,
line => '*.* @@192.168.56.201:10514',
path => '/etc/rsyslog.conf',
}
}
Järgnevalt tuleb vastavad klassid lisada /etc/puppet/manifest/site.pp faili.
import "classes/*"
node 'basenode' {
include rsyslog
include rsyslog_conf
}
Kokkuvõte
Lõpplahendusena valmis keskne logihaldussüsteem Rsyslog baasil, et oleks võimalik vaadata ning analüüsida logisid veebibrauseri abil.
Kasutatud kirjandus
http://www.howtoforge.com/centralized-rsyslog-server-monitoring
http://www.slsmk.com/setup-syslog-with-loganalyzer-on-ubuntu-server/
http://badsimplicity.com/rsyslog-not-listening-tcp-on-port-514/
http://enos.itcollege.ee/~mernits/Linux%20administreerimine/Arnus%20-%20keskne%20logilahendus.pdf