Keskse logilahenduse rakendamine Rsyslog näitel

From EIK wiki

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


Skeem1.png
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