Keskse logilahenduse rakendamine V2: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Kindlo (talk | contribs)
Kindlo (talk | contribs)
mNo edit summary
 
(220 intermediate revisions by the same user not shown)
Line 1: Line 1:
Juhend on mõeldud Algaja/Keskmise oskustega GNU/Linux administraaotritele.
Juhend kehtib tarkvarale:
-CentOS 6.6
-Trisquel GNU/Linux 7.0
-Debian GNU/Linux 7.7
-Logstash 1.4.2
-Kibana 3.0.1
-Elasticsearch 1.1.1
-Logstash-forwarder 0.3.1
Autor: Kristjan Indlo A41
Autor: Kristjan Indlo A41


Kuupäev: 2014.11.22
Kuupäev: 2014.11.22, 2014.12.03, 2014.12.09, 2014.12.10, 2014.12.11, 2015.01.13
 
= Eesmärk =
 
Antud juhendi põhiline eesmärk on algupärane labor [[Keskse logilahenduse rakendamine]] kaasajastada ja võimalikult palju lihtsustada.
 
Sekundaarne eesmärk on kasutada kolme erinevat operatsioonisüsteemi, kahest erinevast perekonnast:
 
1) Debian GNU/Linux (Debainiliste perekond)
 
2) Trisquel GNU/Linux (Ubuntu vabastatud asendus, Debianiliste perekond)
 
3) CentOS GNU/Linux (RHEL perekond)
 
=== Juhendi eelised ===
Selle juhendi eelisteks on:
 
-Uuema tarkvara kasutuselevõtt. Logstash, kibana ja elasticearch on muutunud palju.
 
-See juhend katab rohkem vabu operatsioonisüsteeme.
 
-Kasutusel on nii .deb, kui ka .rpm pakendusega süsteemid
 
-Kerge rakendus logstash-forwarder kogub logisi ja edastab neid logiserverile
 
-Ühenduse usalduse tagamiseks on kasutatud logiserveris loodud sertifikaati(nõutud parameeter logstash-forwarder poolt)
 
=== Juhendi puudused ===
 
Selle juhendi miinusteks on:


-Siin juhendis ei käsitleta Windows logide kogumist. [[Keskse logilahenduse rakendamine|Eelmisest juhendist võib sellisel juhul kasu olla]]


-Antud juhend venib pikaks võrreldes juhendi esimese versiooniga


= Sissejuhatus laborisse =
= Sissejuhatus laborisse =
Line 11: Line 62:
Eelneva versiooni Keskse logihalduse laborist leiab [[Keskse logilahenduse rakendamine|SIIT]]
Eelneva versiooni Keskse logihalduse laborist leiab [[Keskse logilahenduse rakendamine|SIIT]]


Juhendis kekskendutakse samadele tööriistadele, mida kasutatakse ka eelnevas laboris.
Selles juhendis on kasutatud logiserveri ülesseadmiseks samu põhikomponente:
 
-Logstash
 
-Elasticsearch
 
-Kibana
 
Logisi klientidel kogub logstash-forwarder
 
 
''' NB! Kõik käsureategevused on läbi viidud juurkasutaja õigustes (root). '''
 
 
__TOC__


= Juhendis kasutatav tarkvara =
= Juhendis kasutatav tarkvara =
Hüperviisorina on kasutuses Virt-Manager, Qemu ja KVM komplekt.
Hüperviisorina on kasutuses Virt-Manager, Qemu ja KVM komplekt.


== Logiserver: Debain Wheezy 7.7 x86_64 ==
== Logiserver: Debain Wheezy 7.7 x86_64 ==
Line 24: Line 88:


eth1: 192.168.56.110/24 (Static)
eth1: 192.168.56.110/24 (Static)
FQDN: logiserver.minudomeen.midagi


CPU: 1x
CPU: 1x


MEM: 2084MB
MEM: 2084M
 
Video: Cirrus Logic 9M


Disk:  
Disk:  
Line 38: Line 106:
See on logiserver kuhu paigaldatakse järgnev tarkvara:
See on logiserver kuhu paigaldatakse järgnev tarkvara:


1. Logstash v1.4.2
1. Logstash v1.4.2 (Logiserver)


2. Elasticsearch v1.1.1
2. Elasticsearch v1.1.1 (Logide otsing)


3. Kibana
3. Kibana (Logide visualiseerimine veebiliideses)


Kuna kibana on veebirakendus, on vaja ka veebiserverit.
Kuna kibana on veebirakendus, on vaja ka veebiserverit.


Siin laboris kasutatakse Nginx
Siin laboris kasutatakse veebiserveriks ja proksimiseks Nginx
 
== Trisquel Belenos 7.0 x86_64 ==
 
Esimene tööjaam, millelt kogutakse logisi: '''syslog''' ja '''auth.log'''.
 
Tööjaamal on graafiline liides LXDE. Paigladatud on "Trisquel Mini"
 
Ip addr:
 
eth0: 192.168.122.20/24 (DHCP)
 
eth1: 192.168.56.111/24 (Static)
 
FQDN: logiklient1.minudomeen.midagi
 
CPU: 1x
 
MEM: 1024M
 
Video: QXL 64M
 
Disk:
 
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0    8G  0 disk
└─vda1 253:1    0    8G  0 part /
 
== CentOS 6.6 x86_64 ==
 
Server, millelt kogutakse sama tüüpi logisid.
 
Logid(nende nimed) on erinevad, demonstreerimaks erinevusi Debianiliste ja Redhatiliste erinevust.
 
Ip addr:
 
eth0: 192.168.56.221 (DHCP)
 
eth1: 192.168.56.112 (Static)
 
FQDN: logiklient2.minudomeen.midagi
 
CPU: 1x
 
MEM: 512M
 
Video: Cirrus Logic 9M
 
Disk:
 
vda                        252:0    0    8G  0 disk
├─vda1                      252:1    0  500M  0 part /boot
└─vda2                      252:2    0  7.5G  0 part
  ├─VolGroup-lv_root (dm-0) 253:0    0  6.7G  0 lvm  /
  └─VolGroup-lv_swap (dm-1) 253:1    0  816M  0 lvm  [SWAP]
 
= Paigaldus ja konfigureerimine[https://www.digitalocean.com/community/tutorials/how-to-use-logstash-and-kibana-to-centralize-and-visualize-logs-on-ubuntu-14-04] =
 
''' NB! Kõik käsureategevused on läbi viidud juurkasutaja õigustes (root). '''
 
CentOS puhul saab kasutada ka su, kuid tavakasutaja saab kirjeldada ära sudojate failis, mis võimaldab juurkasutajaks eskaleeruda tavakasutaja parooliga.
 
Selleks:
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /etc/sudores
|}
 
või
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | visudo
|}
(avab sudojate faili programmiga vi).
 
Lisa polkki '''## Allow root to run any commands anywhere''':
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <sinuusername> ALL=(ALL)      ALL
|}
 
== Logiserver ==
 
=== Java ===
 
Siin juhendis kasutatakse vaba java keskkonda. Üldiselt on see distributsioonide repositooriumites olemas, seega pole vaja alla laadida pakkfaile ega nõustuda kasutajatingimustega.
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | apt-get install openjdk-7-jre-headless
|}
 
=== Elasticsearch ===
 
Siin juhendis kasutatakse elasticsearch versioon 1.1.1, kuna see on soovitav versioon logstash 1.4.2'le.
 
 
Lisa elasticsearch apt-varamuvõti:
 
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
|}
 
 
Lisa ka elasticsearch varamu(käsk uuendab tarkvaravaramute nimekirja):
 
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | echo 'deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main' > /etc/apt/sources.list.d/elasticsearch.list && apt-get update
|}
 
 
Paigalda elasticsearch(v1.1.1.)[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html]
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | apt-get install elasticsearch=1.1.1
|}
 
 
 
Turvalisuse suurendamiseks keela skriptide dünaamiline koostamine. Skripte saab juurde lisada eraldi kaustast (sama põhimõte nagu httpd/apache konfiguratsiooni nö ''includemine'')[http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html]
 
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | echo 'script.disable_dynamic: true' >> /etc/elasticsearch/elasticsearch.yml
|}
 
 
Muuda elasticsearch teenus automaatselt käivituvaks(käsuga ühtlasi käivitatakse elasticsearch teenus).
 
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | update-rc.d elasticsearch defaults 95 10 && service elasticsearch start
|}
 
=== Kibana ===
 
Siin juhendis on kasutaud kibana versioon 3.0.1, sest see on soovitatav versioon logstash 1.4.2'le.
 
 
Lae alla kibana tarpakk.
 
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | wget "https://download.elasticsearch.org/kibana/kibana/kibana-3.0.1.tar.gz" -O /tmp/kibana.tgz
|}
 
 
Loo httpd/apache veebiruudu kaust ja paki kibana sinna lahti.
 
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | mkdir -p /var/www && tar -xzvf /tmp/kibana.tgz -C /var/www/
|}
 
Konfigureeri Kibana kasutama õiget serverinime/aadressi
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /var/www/kibana-3.0.1/config.js
|}
 
Seal muuda konfiguratsiooniparameeter
 
  +elasticsearch: {server: "http://localhost:9200", withCredentials: true}+
 
selliseks nagu süsteemis vaja
 
  +elasticsearch: {server: "http://<SINU SERVERI FQDN>:<KIBANA ACCESS PORT>", withCredentials: true}+
 
 
Juhendi looja näites on sätitud kibana järgmiselt: <Serveri fqdn> ja port 80, selleks, et veebilehitsejast saada kibanale ligi läbi pordi 80.
 
+elasticsearch: {server: "http://logiserver.minudomeen.midagi:80", withCredentials: true}+
 
=== Nginx ===
 
Paigala nginx
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | apt-get install nginx
|}
 
Lae alla nginx kibana sample konfiguratsioonifail kibana githubist:
 
''' NB! Käsk kirjutab üle NGINX tavaveebikonfi, kui tahad seda alles hoida, siis  tee sellest tagavarakoopia! '''
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" |
wget https://gist.githubusercontent.com/thisismitch/2205786838a6a5d61f55/raw/f91e06198a7c455925f6e3099e3ea7c186d0b263/nginx.conf -O /etc/nginx/sites-available/default
|}
 
Muuda äsja allalaetud faili konfiguratsiooni:
 
{|style="background:lightyellow;width:450px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /etc/nginx/sites-available/default
|}
 
Muuda parameetrid vastavalt vajadusele:
server_name          kibana.myhost.org;
root                  /usr/share/kibana3;
 
Juhendi autori näite puhul:
 
server_name          logiserver.minudomeen.midagi;
root                  /var/www/kibana-3.0.1;
 
Paigalda parooli genereerimise jaoks vajalik apache2-utils pakk:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | apt-get install apache2-utils
|}
 
Genereeri kasutajanimi ja parool kibana veebirakendusele
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | htpasswd -c /etc/nginx/conf.d/<kibanaADDR>.htpasswd <USER>
|}
 
Juhendi autori näite puhul
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | htpasswd -c /etc/nginx/conf.d/logiserver.minudomeen.midagi.htpasswd student
|}
[[File:Screenshot_logiklient_belenos_2014-12-09_21-27-56.png|200px|thumb|right|Kibana tervitusleht]]
Taaskäivita nginx teenus
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service nginx restart
|}
 
Testi tulemust, mine veebilehitsejaga:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | http://<sinu logiserveri fqdn>
|}
 
 
 
Juhendi autoril on Trisquel GNU/Linux virtuaalmasinas graafiline keskkond ja kohalik nimelahendus, seega test sai läbi viidud eelmainitud masinas
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | http://logiserver.minudomeen.midagi
|}
Tulemuseks peab olema kibana tervitusleht.
 
=== Logstash ===
 
Lisa elasticsearch logstash apt-varamu (käsk uuendab ka varamunimekirja)
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | echo 'deb http://packages.elasticsearch.org/logstash/1.4/debian stable main' > /etc/apt/sources.list.d/logstash.list && apt-get update
|}
 
Paigalda logstash
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | apt-get install logstash=1.4.2-1-2c0f5a1
|}
 
Logstashile SSL sertifikaatide genereerimine
 
Esmalt loo sertifikaatide hoiustamiseks kaustad
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | mkdir -p /etc/pki/tls/certs && mkdir -p /etc/pki/tls/private
|}
 
Genereeri vajalik võti ja sertifikaat, sertifikaati kasutatakse hiljem logiserveri ja logitavate serveri vahel usalduse tekitamiseks
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | cd /etc/pki/tls; sudo openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
|}
 
Muuda sertifikaat loetavaks, et seda saaks kopeerida klientidesse, mille logisi koguma hakatakse:
{|style="background:lightyellow;width:450px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | chmod a+r /etc/pki/tls/certs/logstash-forwarder.crt
|}
 
 
 
 
 
Konfigureeri logstash input(käsk loob uue faili)
{|style="background:lightyellow;width:450px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" |<tekstiredaktor> /etc/logstash/conf.d/01-lumberjack-input.conf
|}
 
 
Konfigureeri lumberjack: mis port on avatud, mis sertifikaati ja võtit kasutatakse, et luua usaldust logstash kliendi ja serveri vahel.
 
input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}
 
 
Konfigureeri syslog filter(käsk loob uue faili):
{|style="background:lightyellow;width:450px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /etc/logstash/conf.d/10-syslog.conf
|}
 
Loo filter, mis filtreerib syslog nimelisi logisi:
 
filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}
 
 
Loo lumberjack väljundi konfiguratsioon(käsk loob uue faili):
{|style="background:lightyellow;width:450px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /etc/logstash/conf.d/30-lumberjack-output.conf
|}
 
Konfigureeri elasticsearch asukoht, localhost, kuna elasticsearch asub samas serveris mis logstash.
 
Standardväljund, mis edastab informatsiooni  tavasätetes standardväljundisse  logstashi käsitsi käivitades,  suunatakse nüüd rubydebug'i[http://logstash.net/docs/1.4.2/codecs/rubydebug]
 
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}
 
Käivita logstash teenus, testimaks, kas siiani on kõik õigelt konfigureeritud
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service logstash start
|}
Kontrolli kas teenus ka käivitus:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service logstash status
|}
Viimase käsu väljund peab olema:
logstash is running
 
Kontrolli, kas porti 5000(või sinu valitud porti) kuulatakse:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | ss -lntp
|}
 
Eeldusel, et teenus toimib, siis muuda see ka automaatselt käivituvaks(käsk taaskäivitab ka logstash teenuse)
{|style="background:lightyellow;width:500px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | update-rc.d logstash defaults 95 10 && service logstash restart
|}
 
==  Logiklient1 ==
'''Need käsud vii läbi oma ''esimeses logikliendis'' juurkasutajana'''
 
Lisa elasticsearch apt-varamuvõti
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
|}
 
 
 
Lisa logstash-forwarder apt-varamu(käsk uuendab ka tarkvaravaramu nimekirjad):
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | echo 'deb http://packages.elasticsearch.org/logstashforwarder/debian stable main' > /etc/apt/sources.list.d/logstashforwarder.list && apt-get update
|}
 
Paigalda logstash forwarder pakk
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | apt-get install logstash-forwarder
|}
 
Lae logstash serverist sertifikaat, mille alusel saab serveri ja kliendi vahel usalduse luua:
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | scp <kasutaja>@<serverIP>:<sertifikaati asukoht> <soovitud allalaadimiste kaust>
|}
 
Juhendi autori näitel:
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | scp student@192.168.56.110:/etc/pki/tls/certs/logstash-forwarder.crt /home/student/
|}
 
Loo sertifikaadile kaust ning tõsta äsja allalaetud sertifikaat sinna kausta:
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | mkdir -p /etc/pki/tls/certs && mv /home/student/logstash-forwarder.crt /etc/pki/tls/certs/
|}
 
 
Konfigureeri logstash-forwarder(käsk loob uue faili)
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /etc/logstash-forwarder
|}
 
 
Lisa sinna faili:
 
-logiserveri ip aadress
 
-logstashis konfigureeritud port(kontrollida saab ''' ss -lntp ''')
 
-sertifikaadi asukoht, mille abil usaldust serveri ja kliendi vahel luua
 
Selles konfiguratsioonis saadetakse logiserverisse kaht logi: ''' syslog ja auth.log '''
 
{
  "network": {
    "servers": [ "<logstash serveri addr>:<logstash serveri kuulatav port>" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/syslog",
        "/var/log/auth.log"
        ],
      "fields": { "type": "syslog" }
    }
    ]
}
 
Juhendi autori näites
 
{
  "network": {
    "servers": [ "192.168.56.110:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/syslog",
        "/var/log/auth.log"
        ],
      "fields": { "type": "syslog" }
    }
    ]
}
 
Käivita logstash-forwarder teenus:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service logstash-forwarder start
|}
 
Logstash-forwarder teenuse automaatkäivitus süsteemi käivitumise ajal(käsk taaskäivitab ka hetkel töötava logstash forwarder teenuse):
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | update-rc.d logstash-forwarder defaults 95 10 && service logstash-forwarder restart
|}
 
Eelneva käsu edukuse testimiseks tuleb süsteem taaskäivitada ja vaadata kas pärast taaskäivitust logstash-forwarder teenus toimib:
 
Taaskäivitus
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | reboot
|}
 
Test
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service logstash-forwarder status
|}
 
Eelneva käsu väljund peab olema:
* logstash-forwarder is running
 
==  Logiklient2 ==
''' Järgnevad käsud käivita teises logikliendis '''
''' NB! Kõik käsud on käivitatud juurkasutaja õigustes(root) '''
 
Lae alla logiserveri sertifikaat, selleks et luua usaldust logiserveri ja kliendi vahel:
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | scp <kasutaja>@<logiserver ip addr>:<sertifikaadi asukoht> <allalaadimiste kaust>
|}
 
Juhendi koostaja näites:
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | scp student@192.168.56.110:/etc/pki/tls/certs/logstash-forwarder.crt /home/student/
|}
 
Loo sertifikaadile kaust ja tõsta see sinna:
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | mkdir -p /etc/pki/tls/certs/ && mv /home/student/logstash-forwarder.crt /etc/pki/tls/certs/
|}
 
 
 
Paigalda logstash-forwarder:
{|style="background:lightyellow;width:700px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | yum install http://packages.elasticsearch.org/logstashforwarder/centos/logstash-forwarder-0.3.1-1.x86_64.rpm
|}
 
 
Loo logstash-forwarder käivitusparameetrite konfiguratsioon logstash-forwarder käivitusskripti jaoks:
{|style="background:lightyellow;width:500px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | echo -e '# Options for the Logstash Forwarder
LOGSTASH_FORWARDER_OPTIONS="-config /etc/logstash-forwarder -spool-size 100"'> /etc/sysconfig/logstash-forwarder
|}
 
 
Konfigureeri logstash-forwarder:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /etc/logstash-forwarder
|}
 
Täpsemalt vaja muuta:
 
-logstash serveri ip aadress
 
-logstash serveri port
 
 
{
  "network": {
    "servers": [ "<logstash servri ip addr>:<logstash server port>" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/messages",
        "/var/log/secure"
        ],
      "fields": { "type": "syslog" }
    }
    ]
}
 
 
Juhendi autori näites:
 
{
  "network": {
    "servers": [ "192.168.56.110:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/messages",
        "/var/log/secure"
        ],
      "fields": { "type": "syslog" }
    }
    ]
}
 
 
''' Paraku RPM pakist saadud käivitusskript on vigane, seega tuleb luua uus SysVinit-stiilis käivitusskript. '''
 
Nimeta vana initscript ümber või tõsta see mujale, igaks juhuks:
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | mv /etc/init.d/logstash-forwarder /etc/init.d/logstash-forwarder.OLD
|}
 
 
Loo logstash-forwarder teenuse käivitusskript, skript saadaval ka siin[http://smuth.me/listings/logstash-forwarder/logstash-forwarder.init.html]
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | <tekstiredaktor> /etc/init.d/logstash-forwarder
|}
 
Lisa sinna:
<source lang="bash">
#! /bin/sh
#
# chkconfig: 345 99 99
# description: logstash-forwarder
# processname: logstash-forwarder
# config: /etc/logstash-forwarder
 
# Source function library.
. /etc/init.d/functions
 
NAME=logstash-forwarder
DESC="log shipper"
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
DAEMON=/opt/logstash-forwarder/bin/logstash-forwarder
DAEMON_ARGS="-config /etc/logstash-forwarder -spool-size 100 -log-to-syslog"
 
start() {
echo -n "Starting $NAME: "
daemon --pidfile $PIDFILE "nohup $DAEMON $DAEMON_ARGS >/dev/null 2>&1 &"
touch /var/lock/subsys/$NAME
echo $(pidofproc $NAME) > $PIDFILE
echo
return 0
}
 
stop() {
echo -n "Shutting down $NAME: "
killproc -p $PIDFILE
rm -f /var/lock/subsys/$NAME
echo
return 0
}
 
case "$1" in
    start)
start
;;
    stop)
stop
;;
    status)
status -p $PIDFILE $NAME
;;
    restart)
    stop
start
;;
    *)
echo "Usage: service $NAME {start|stop|status|restart}"
exit 1
;;
esac
exit $?
 
</source>
 
Anna äsjaloodud skriptile käivitusbitt
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | chmod +x /etc/init.d/logstash-forwarder
|}
 
 
Käivita logstash-forwarder teenus:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service logstash-forwarder start
|}
 
 
Muuda logstash-forwarder teenus automaatselt käivituvaks:
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | chkconfig --add logstash-forwarder
|}
 
{|style="background:lightyellow;width:300px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" |  chkconfig logstash-forwarder on
|}
 
 
=== Tulemuse kontroll===
[[File:Kibana 3 - Introduction 2014 10 10 19 35.png|200px|thumb|right|Logstash vaate avamine]]
Ava veebilehitsejaga kibana. Juhenid eeldatakse, et masin, kus veebilehitsejat kasutatakse oskab logiserveri nime lahendada.
 
Juhendi autori näitel:
[[File:Kibana 3 - Logstash Search 2014 12 10 19 31.png|200px|thumb|right|Kibana graafilise liidese näide]]
logiserver.minudomeen.midagi
 
Avaneb kibana tervitusaken.
 
 
Sealt ava ''' Logstash Dashboard '''.
 
Avaneb graafiline liides, kus on ülevaade kõikidest süsteemidest, kust logisi kogutakse.
 
Avanenud liideses saab erinevaid trikke teha, näiteks võib proovida:
 
-otsida oma logitavate seadmete hostname
 
-otsida kasutajanime student(või sellist, mille ise lõid)
 
-otsida sõne ''' root ''', saada teada, kes/mis juurkasutajaks eskaleerus
 
-sirvida kogutud logisi
 
-vaadata logide ülevaadet
 
jne
 
''' Juhul, kui on soov kibana vaikeleheks saada Logstash kuva '''
 
Seiska nginx ja logstash
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service nginx stop && service logstash stop
|}
 
Nimeta logstash.json ümber default.json'iks
{|style="background:lightyellow;width:800px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | mv /var/www/kibana-3.0.1/app/dashboards/default.json /var/www/kibana-3.0.1/app/dashboards/default.json.OLD
|}
{|style="background:lightyellow;width:800px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | mv /var/www/kibana-3.0.1/app/dashboards/logstash.json /var/www/kibana-3.0.1/app/dashboards/default.json
|}
 
Taaskäivita logstash ja nginx
{|style="background:lightyellow;width:600px;margin:3px;border:1px solid lightgrey" align=centre
| style="padding:0px 0px 0px 5px;font-family:courier;font-size:8pt;" | service nginx start && service logstash start
|}
 
Kontrolli tulemust ühendudes kibana veebirakendusega läbi veebilehitseja.
 
Juhendi autori näitel:
logiserver.minudomeen.midagi
 
= Kokkuvõte =
 
Autori arvamusel on juhend paraku pikk, kuid piisavalt lihtne, et end käsureal mugavalt tundev süsteemiadministraator saab labori eduka sooritusega hakkama.
 
Kindlsti on algul konseptuaalsest poolest keerulisem aru saada. Sellisel puhul aitab labori õppimine teoreetilisel tasemel: kibana[http://www.elasticsearch.org/overview/kibana/],logstash[http://logstash.net/docs/1.4.2/configuration], elasticsearch[http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/index.html] juhendid näiteks.
 
= Kasutatud kirjandus =
 
 
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html
 
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html
 
https://www.digitalocean.com/community/tutorials/how-to-use-logstash-and-kibana-to-centralize-and-visualize-logs-on-ubuntu-14-04
 
http://logstash.net/docs/1.4.2/configuration
 
http://logstash.net/docs/1.4.2/codecs/rubydebug
 
http://smuth.me/posts/centos-logstash-forwarder-init-script.html
 
http://www.elasticsearch.org/overview/kibana/


= Trisquel Belenos 7.0 x86_64 =
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/index.html


See on tööjaam, mis edastab oma logid üle TCP
[[Category:Linuxi administreerimine]]

Latest revision as of 08:54, 13 January 2015

Juhend on mõeldud Algaja/Keskmise oskustega GNU/Linux administraaotritele.

Juhend kehtib tarkvarale:

-CentOS 6.6

-Trisquel GNU/Linux 7.0

-Debian GNU/Linux 7.7

-Logstash 1.4.2

-Kibana 3.0.1

-Elasticsearch 1.1.1

-Logstash-forwarder 0.3.1


Autor: Kristjan Indlo A41

Kuupäev: 2014.11.22, 2014.12.03, 2014.12.09, 2014.12.10, 2014.12.11, 2015.01.13

Eesmärk

Antud juhendi põhiline eesmärk on algupärane labor Keskse logilahenduse rakendamine kaasajastada ja võimalikult palju lihtsustada.

Sekundaarne eesmärk on kasutada kolme erinevat operatsioonisüsteemi, kahest erinevast perekonnast:

1) Debian GNU/Linux (Debainiliste perekond)

2) Trisquel GNU/Linux (Ubuntu vabastatud asendus, Debianiliste perekond)

3) CentOS GNU/Linux (RHEL perekond)

Juhendi eelised

Selle juhendi eelisteks on:

-Uuema tarkvara kasutuselevõtt. Logstash, kibana ja elasticearch on muutunud palju.

-See juhend katab rohkem vabu operatsioonisüsteeme.

-Kasutusel on nii .deb, kui ka .rpm pakendusega süsteemid

-Kerge rakendus logstash-forwarder kogub logisi ja edastab neid logiserverile

-Ühenduse usalduse tagamiseks on kasutatud logiserveris loodud sertifikaati(nõutud parameeter logstash-forwarder poolt)

Juhendi puudused

Selle juhendi miinusteks on:

-Siin juhendis ei käsitleta Windows logide kogumist. Eelmisest juhendist võib sellisel juhul kasu olla

-Antud juhend venib pikaks võrreldes juhendi esimese versiooniga

Sissejuhatus laborisse

See juhend on mõeldud Keskse logihalduse labori eelneva versiooni värskenduseks.

Eelneva versiooni Keskse logihalduse laborist leiab SIIT

Selles juhendis on kasutatud logiserveri ülesseadmiseks samu põhikomponente:

-Logstash

-Elasticsearch

-Kibana

Logisi klientidel kogub logstash-forwarder


NB! Kõik käsureategevused on läbi viidud juurkasutaja õigustes (root).


Juhendis kasutatav tarkvara

Hüperviisorina on kasutuses Virt-Manager, Qemu ja KVM komplekt.

Logiserver: Debain Wheezy 7.7 x86_64

Ip addr:

eth0: 192.168.122.43/24 (DHCP)

eth1: 192.168.56.110/24 (Static)

FQDN: logiserver.minudomeen.midagi

CPU: 1x

MEM: 2084M

Video: Cirrus Logic 9M

Disk:

NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    254:0    0   8G  0 disk
└─vda1 254:1    0   8G  0 part /


See on logiserver kuhu paigaldatakse järgnev tarkvara:

1. Logstash v1.4.2 (Logiserver)

2. Elasticsearch v1.1.1 (Logide otsing)

3. Kibana (Logide visualiseerimine veebiliideses)

Kuna kibana on veebirakendus, on vaja ka veebiserverit.

Siin laboris kasutatakse veebiserveriks ja proksimiseks Nginx

Trisquel Belenos 7.0 x86_64

Esimene tööjaam, millelt kogutakse logisi: syslog ja auth.log.

Tööjaamal on graafiline liides LXDE. Paigladatud on "Trisquel Mini"

Ip addr:

eth0: 192.168.122.20/24 (DHCP)

eth1: 192.168.56.111/24 (Static)

FQDN: logiklient1.minudomeen.midagi

CPU: 1x

MEM: 1024M

Video: QXL 64M

Disk:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda    253:0    0     8G  0 disk
└─vda1 253:1    0     8G  0 part /

CentOS 6.6 x86_64

Server, millelt kogutakse sama tüüpi logisid.

Logid(nende nimed) on erinevad, demonstreerimaks erinevusi Debianiliste ja Redhatiliste erinevust.

Ip addr:

eth0: 192.168.56.221 (DHCP)

eth1: 192.168.56.112 (Static)

FQDN: logiklient2.minudomeen.midagi

CPU: 1x

MEM: 512M

Video: Cirrus Logic 9M

Disk:

vda                         252:0    0    8G  0 disk
├─vda1                      252:1    0  500M  0 part /boot
└─vda2                      252:2    0  7.5G  0 part
  ├─VolGroup-lv_root (dm-0) 253:0    0  6.7G  0 lvm  /
  └─VolGroup-lv_swap (dm-1) 253:1    0  816M  0 lvm  [SWAP]

Paigaldus ja konfigureerimine[1]

NB! Kõik käsureategevused on läbi viidud juurkasutaja õigustes (root).

CentOS puhul saab kasutada ka su, kuid tavakasutaja saab kirjeldada ära sudojate failis, mis võimaldab juurkasutajaks eskaleeruda tavakasutaja parooliga.

Selleks:

<tekstiredaktor> /etc/sudores

või

visudo

(avab sudojate faili programmiga vi).

Lisa polkki ## Allow root to run any commands anywhere:

<sinuusername> ALL=(ALL) ALL

Logiserver

Java

Siin juhendis kasutatakse vaba java keskkonda. Üldiselt on see distributsioonide repositooriumites olemas, seega pole vaja alla laadida pakkfaile ega nõustuda kasutajatingimustega.

apt-get install openjdk-7-jre-headless

Elasticsearch

Siin juhendis kasutatakse elasticsearch versioon 1.1.1, kuna see on soovitav versioon logstash 1.4.2'le.


Lisa elasticsearch apt-varamuvõti:

wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -


Lisa ka elasticsearch varamu(käsk uuendab tarkvaravaramute nimekirja):

echo 'deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main' > /etc/apt/sources.list.d/elasticsearch.list && apt-get update


Paigalda elasticsearch(v1.1.1.)[2]

apt-get install elasticsearch=1.1.1


Turvalisuse suurendamiseks keela skriptide dünaamiline koostamine. Skripte saab juurde lisada eraldi kaustast (sama põhimõte nagu httpd/apache konfiguratsiooni nö includemine)[3]

echo 'script.disable_dynamic: true' >> /etc/elasticsearch/elasticsearch.yml


Muuda elasticsearch teenus automaatselt käivituvaks(käsuga ühtlasi käivitatakse elasticsearch teenus).

update-rc.d elasticsearch defaults 95 10 && service elasticsearch start

Kibana

Siin juhendis on kasutaud kibana versioon 3.0.1, sest see on soovitatav versioon logstash 1.4.2'le.


Lae alla kibana tarpakk.

wget "https://download.elasticsearch.org/kibana/kibana/kibana-3.0.1.tar.gz" -O /tmp/kibana.tgz


Loo httpd/apache veebiruudu kaust ja paki kibana sinna lahti.

mkdir -p /var/www && tar -xzvf /tmp/kibana.tgz -C /var/www/

Konfigureeri Kibana kasutama õiget serverinime/aadressi

<tekstiredaktor> /var/www/kibana-3.0.1/config.js

Seal muuda konfiguratsiooniparameeter

 +elasticsearch: {server: "http://localhost:9200", withCredentials: true}+

selliseks nagu süsteemis vaja

 +elasticsearch: {server: "http://<SINU SERVERI FQDN>:<KIBANA ACCESS PORT>", withCredentials: true}+


Juhendi looja näites on sätitud kibana järgmiselt: <Serveri fqdn> ja port 80, selleks, et veebilehitsejast saada kibanale ligi läbi pordi 80.

+elasticsearch: {server: "http://logiserver.minudomeen.midagi:80", withCredentials: true}+

Nginx

Paigala nginx

apt-get install nginx

Lae alla nginx kibana sample konfiguratsioonifail kibana githubist:

NB! Käsk kirjutab üle NGINX tavaveebikonfi, kui tahad seda alles hoida, siis tee sellest tagavarakoopia!

wget https://gist.githubusercontent.com/thisismitch/2205786838a6a5d61f55/raw/f91e06198a7c455925f6e3099e3ea7c186d0b263/nginx.conf -O /etc/nginx/sites-available/default

Muuda äsja allalaetud faili konfiguratsiooni:

<tekstiredaktor> /etc/nginx/sites-available/default

Muuda parameetrid vastavalt vajadusele:

server_name           kibana.myhost.org;
root                  /usr/share/kibana3;

Juhendi autori näite puhul:

server_name           logiserver.minudomeen.midagi;
root                  /var/www/kibana-3.0.1;

Paigalda parooli genereerimise jaoks vajalik apache2-utils pakk:

apt-get install apache2-utils

Genereeri kasutajanimi ja parool kibana veebirakendusele

htpasswd -c /etc/nginx/conf.d/<kibanaADDR>.htpasswd <USER>

Juhendi autori näite puhul

htpasswd -c /etc/nginx/conf.d/logiserver.minudomeen.midagi.htpasswd student
Kibana tervitusleht

Taaskäivita nginx teenus

service nginx restart

Testi tulemust, mine veebilehitsejaga:

http://<sinu logiserveri fqdn>


Juhendi autoril on Trisquel GNU/Linux virtuaalmasinas graafiline keskkond ja kohalik nimelahendus, seega test sai läbi viidud eelmainitud masinas

http://logiserver.minudomeen.midagi

Tulemuseks peab olema kibana tervitusleht.

Logstash

Lisa elasticsearch logstash apt-varamu (käsk uuendab ka varamunimekirja)

echo 'deb http://packages.elasticsearch.org/logstash/1.4/debian stable main' > /etc/apt/sources.list.d/logstash.list && apt-get update

Paigalda logstash

apt-get install logstash=1.4.2-1-2c0f5a1

Logstashile SSL sertifikaatide genereerimine

Esmalt loo sertifikaatide hoiustamiseks kaustad

mkdir -p /etc/pki/tls/certs && mkdir -p /etc/pki/tls/private

Genereeri vajalik võti ja sertifikaat, sertifikaati kasutatakse hiljem logiserveri ja logitavate serveri vahel usalduse tekitamiseks

cd /etc/pki/tls; sudo openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Muuda sertifikaat loetavaks, et seda saaks kopeerida klientidesse, mille logisi koguma hakatakse:

chmod a+r /etc/pki/tls/certs/logstash-forwarder.crt



Konfigureeri logstash input(käsk loob uue faili)

<tekstiredaktor> /etc/logstash/conf.d/01-lumberjack-input.conf


Konfigureeri lumberjack: mis port on avatud, mis sertifikaati ja võtit kasutatakse, et luua usaldust logstash kliendi ja serveri vahel.

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}


Konfigureeri syslog filter(käsk loob uue faili):

<tekstiredaktor> /etc/logstash/conf.d/10-syslog.conf

Loo filter, mis filtreerib syslog nimelisi logisi:

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}


Loo lumberjack väljundi konfiguratsioon(käsk loob uue faili):

<tekstiredaktor> /etc/logstash/conf.d/30-lumberjack-output.conf

Konfigureeri elasticsearch asukoht, localhost, kuna elasticsearch asub samas serveris mis logstash.

Standardväljund, mis edastab informatsiooni tavasätetes standardväljundisse logstashi käsitsi käivitades, suunatakse nüüd rubydebug'i[4]

output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}

Käivita logstash teenus, testimaks, kas siiani on kõik õigelt konfigureeritud

service logstash start

Kontrolli kas teenus ka käivitus:

service logstash status

Viimase käsu väljund peab olema:

logstash is running

Kontrolli, kas porti 5000(või sinu valitud porti) kuulatakse:

ss -lntp

Eeldusel, et teenus toimib, siis muuda see ka automaatselt käivituvaks(käsk taaskäivitab ka logstash teenuse)

update-rc.d logstash defaults 95 10 && service logstash restart

Logiklient1

Need käsud vii läbi oma esimeses logikliendis juurkasutajana

Lisa elasticsearch apt-varamuvõti

wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -


Lisa logstash-forwarder apt-varamu(käsk uuendab ka tarkvaravaramu nimekirjad):

echo 'deb http://packages.elasticsearch.org/logstashforwarder/debian stable main' > /etc/apt/sources.list.d/logstashforwarder.list && apt-get update

Paigalda logstash forwarder pakk

apt-get install logstash-forwarder

Lae logstash serverist sertifikaat, mille alusel saab serveri ja kliendi vahel usalduse luua:

scp <kasutaja>@<serverIP>:<sertifikaati asukoht> <soovitud allalaadimiste kaust>

Juhendi autori näitel:

scp student@192.168.56.110:/etc/pki/tls/certs/logstash-forwarder.crt /home/student/

Loo sertifikaadile kaust ning tõsta äsja allalaetud sertifikaat sinna kausta:

mkdir -p /etc/pki/tls/certs && mv /home/student/logstash-forwarder.crt /etc/pki/tls/certs/


Konfigureeri logstash-forwarder(käsk loob uue faili)

<tekstiredaktor> /etc/logstash-forwarder


Lisa sinna faili:

-logiserveri ip aadress

-logstashis konfigureeritud port(kontrollida saab ss -lntp )

-sertifikaadi asukoht, mille abil usaldust serveri ja kliendi vahel luua

Selles konfiguratsioonis saadetakse logiserverisse kaht logi: syslog ja auth.log

{
  "network": {
    "servers": [ "<logstash serveri addr>:<logstash serveri kuulatav port>" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/syslog",
        "/var/log/auth.log"
       ],
      "fields": { "type": "syslog" }
    }
   ]
}

Juhendi autori näites

{
  "network": {
    "servers": [ "192.168.56.110:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/syslog",
        "/var/log/auth.log"
       ],
      "fields": { "type": "syslog" }
    }
   ]
}

Käivita logstash-forwarder teenus:

service logstash-forwarder start

Logstash-forwarder teenuse automaatkäivitus süsteemi käivitumise ajal(käsk taaskäivitab ka hetkel töötava logstash forwarder teenuse):

update-rc.d logstash-forwarder defaults 95 10 && service logstash-forwarder restart

Eelneva käsu edukuse testimiseks tuleb süsteem taaskäivitada ja vaadata kas pärast taaskäivitust logstash-forwarder teenus toimib:

Taaskäivitus

reboot

Test

service logstash-forwarder status

Eelneva käsu väljund peab olema:

* logstash-forwarder is running

Logiklient2

Järgnevad käsud käivita teises logikliendis NB! Kõik käsud on käivitatud juurkasutaja õigustes(root)

Lae alla logiserveri sertifikaat, selleks et luua usaldust logiserveri ja kliendi vahel:

scp <kasutaja>@<logiserver ip addr>:<sertifikaadi asukoht> <allalaadimiste kaust>

Juhendi koostaja näites:

scp student@192.168.56.110:/etc/pki/tls/certs/logstash-forwarder.crt /home/student/

Loo sertifikaadile kaust ja tõsta see sinna:

mkdir -p /etc/pki/tls/certs/ && mv /home/student/logstash-forwarder.crt /etc/pki/tls/certs/


Paigalda logstash-forwarder:

yum install http://packages.elasticsearch.org/logstashforwarder/centos/logstash-forwarder-0.3.1-1.x86_64.rpm


Loo logstash-forwarder käivitusparameetrite konfiguratsioon logstash-forwarder käivitusskripti jaoks:

echo -e '# Options for the Logstash Forwarder

LOGSTASH_FORWARDER_OPTIONS="-config /etc/logstash-forwarder -spool-size 100"'> /etc/sysconfig/logstash-forwarder


Konfigureeri logstash-forwarder:

<tekstiredaktor> /etc/logstash-forwarder

Täpsemalt vaja muuta:

-logstash serveri ip aadress

-logstash serveri port


{
  "network": {
    "servers": [ "<logstash servri ip addr>:<logstash server port>" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/messages",
        "/var/log/secure"
       ],
      "fields": { "type": "syslog" }
    }
   ]
}


Juhendi autori näites:

{
  "network": {
    "servers": [ "192.168.56.110:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [
        "/var/log/messages",
        "/var/log/secure"
       ],
      "fields": { "type": "syslog" }
    }
   ]
}


Paraku RPM pakist saadud käivitusskript on vigane, seega tuleb luua uus SysVinit-stiilis käivitusskript.

Nimeta vana initscript ümber või tõsta see mujale, igaks juhuks:

mv /etc/init.d/logstash-forwarder /etc/init.d/logstash-forwarder.OLD


Loo logstash-forwarder teenuse käivitusskript, skript saadaval ka siin[5]

<tekstiredaktor> /etc/init.d/logstash-forwarder

Lisa sinna:

#! /bin/sh
#
# chkconfig: 345 99 99
# description: logstash-forwarder
# processname: logstash-forwarder
# config: /etc/logstash-forwarder

# Source function library.
. /etc/init.d/functions

NAME=logstash-forwarder
DESC="log shipper"
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
DAEMON=/opt/logstash-forwarder/bin/logstash-forwarder
DAEMON_ARGS="-config /etc/logstash-forwarder -spool-size 100 -log-to-syslog"

start() {
	echo -n "Starting $NAME: "
	daemon --pidfile $PIDFILE "nohup $DAEMON $DAEMON_ARGS >/dev/null 2>&1 &"
	touch /var/lock/subsys/$NAME
	echo $(pidofproc $NAME) > $PIDFILE
	echo
	return 0
}	

stop() {
	echo -n "Shutting down $NAME: "
	killproc -p $PIDFILE
	rm -f /var/lock/subsys/$NAME
	echo
	return 0
}

case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    status)
	status -p $PIDFILE $NAME
	;;
    restart)
    	stop
	start
	;;
    *)
	echo "Usage: service $NAME {start|stop|status|restart}"
	exit 1
	;;
esac
exit $?

Anna äsjaloodud skriptile käivitusbitt

chmod +x /etc/init.d/logstash-forwarder


Käivita logstash-forwarder teenus:

service logstash-forwarder start


Muuda logstash-forwarder teenus automaatselt käivituvaks:

chkconfig --add logstash-forwarder
chkconfig logstash-forwarder on


Tulemuse kontroll

Logstash vaate avamine

Ava veebilehitsejaga kibana. Juhenid eeldatakse, et masin, kus veebilehitsejat kasutatakse oskab logiserveri nime lahendada.

Juhendi autori näitel:

Kibana graafilise liidese näide
logiserver.minudomeen.midagi

Avaneb kibana tervitusaken.


Sealt ava Logstash Dashboard .

Avaneb graafiline liides, kus on ülevaade kõikidest süsteemidest, kust logisi kogutakse.

Avanenud liideses saab erinevaid trikke teha, näiteks võib proovida:

-otsida oma logitavate seadmete hostname

-otsida kasutajanime student(või sellist, mille ise lõid)

-otsida sõne root , saada teada, kes/mis juurkasutajaks eskaleerus

-sirvida kogutud logisi

-vaadata logide ülevaadet

jne

Juhul, kui on soov kibana vaikeleheks saada Logstash kuva

Seiska nginx ja logstash

service nginx stop && service logstash stop

Nimeta logstash.json ümber default.json'iks

mv /var/www/kibana-3.0.1/app/dashboards/default.json /var/www/kibana-3.0.1/app/dashboards/default.json.OLD
mv /var/www/kibana-3.0.1/app/dashboards/logstash.json /var/www/kibana-3.0.1/app/dashboards/default.json

Taaskäivita logstash ja nginx

service nginx start && service logstash start

Kontrolli tulemust ühendudes kibana veebirakendusega läbi veebilehitseja.

Juhendi autori näitel:

logiserver.minudomeen.midagi

Kokkuvõte

Autori arvamusel on juhend paraku pikk, kuid piisavalt lihtne, et end käsureal mugavalt tundev süsteemiadministraator saab labori eduka sooritusega hakkama.

Kindlsti on algul konseptuaalsest poolest keerulisem aru saada. Sellisel puhul aitab labori õppimine teoreetilisel tasemel: kibana[6],logstash[7], elasticsearch[8] juhendid näiteks.

Kasutatud kirjandus

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html

https://www.digitalocean.com/community/tutorials/how-to-use-logstash-and-kibana-to-centralize-and-visualize-logs-on-ubuntu-14-04

http://logstash.net/docs/1.4.2/configuration

http://logstash.net/docs/1.4.2/codecs/rubydebug

http://smuth.me/posts/centos-logstash-forwarder-init-script.html

http://www.elasticsearch.org/overview/kibana/

http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/index.html