Denne artikkelen er en trinn for trinn bruksanvisning på hvordan en kan komme igang med logstash på Centos 6. Guiden er fritt oversatt fra: http://www.logstash.net/docs/1.1.9/tutorials/getting-started-centralized.
For ordens skyld lager jeg en arbeidsmappe i /root hvor jeg laster ned, bygger og tester alle komponentene. Når jeg vet at de funker flytter jeg de i tur og orden til /opt/komponentnavn.
Last ned Logstash
{codecitation}
# wget http://logstash.objects.dreamhost.com/release/logstash-1.1.9-monolithic.jar
{/codecitation}
Last ned og pakk ut Elasticsearch
{codecitation}
wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.5.zip
unzip elasticsearch-0.20.5.zip
{/codecitation}
Last ned og pakk ut Redis
{codecitation}
# wget http://redis.googlecode.com/files/redis-2.6.10.tar.gz
# tar xfzv redis-2.6.10.tar.gz
{/codecitation}
Kompiler og test Redis
{codecitation}
# make
# make test
{/codecitation}
Testen over viser at jeg mangler TCL 8
{codecitation}
# yum install tcl
# make test
{/codecitation}
Nå har du forhåpentligvis passert alle 32 testene og kan med rimelig sikkerhet at Redis fungerer.
Vi trenger java
{codecitation}
# yum install java-1.6.0-openjdk
{/codecitation}
Start Redis
{codecitation}
# cd src
# ./redis-server –loglevel verbose
{/codecitation}
Start Elasticsearch
{codecitation}
# cd bin
# ./elasticsearch -f
{/codecitation}
Konfigurer og test litt med logstash
For å teste de forskjellige delene av systemet vårt oppretter vi to konfigurasjonsfiler.
indexer.conf
{codecitation}
input {
redis {
host => “127.0.0.1”
type => “redis-input”
# these settings should match the output of the agent
data_type => “list”
key => “logstash”
# We use json_event here since the sender is a logstash agent
format => “json_event”
}
}
output {
stdout { debug => true debug_format => “json”}
elasticsearch {
host => “127.0.0.1”
}
}
{/codecitation}
shipper.conf
{codecitation}
input {
stdin {
type => “stdin-type”
}
}
output {
stdout { debug => true debug_format => “json”}
redis { host => “127.0.0.1” data_type => “list” key => “logstash” }
}
{/codecitation}
Vi skal nå kjøre to tester.
1: Logstash konfigurert til å videresende logger.
2: Logstash konfigurert til å samle og indeksere logger.
Vi har allerede startet de to komponentene i egne vinduer, med full debug og i forgrunnen.
1:Logstash som en shipper.
{codecitation}
# java -jar logstash-1.1.9-monolithic.jar agent -f shipper.conf
{/codecitation}
Denne testen leser fra standard input og shipper det til Redis. Du vil se at det du skriver blir lagret i Redis.
Du kan også bruke Redis CLI for å se igjennom dataene som blir lagret.
{codecitation}
# cd src
# ./redis-cli
redis 127.0.0.1:6379> llen logstash
(integer) 2
redis 127.0.0.1:6379> lpop logstash
“{\”@source\”:\”stdin://vps.host.no/\”,\”@tags\”:[],\”@fields\”:{},\”@timestamp\”:\”2013-02-22T20:14:00.463Z\”,\”@source_host\”:\”vps.host.no\”,\”@source_path\”:\”/\”,\”@message\”:\”hei\”,\”@type\”:\”stdin-type\”}”
redis 127.0.0.1:6379> llen logstash
(integer) 1
redis 127.0.0.1:6379> lpop logstash
“{\”@source\”:\”stdin://vps.host.no/\”,\”@tags\”:[],\”@fields\”:{},\”@timestamp\”:\”2013-02-22T20:14:00.471Z\”,\”@source_host\”:\”vps.host.no\”,\”@source_path\”:\”/\”,\”@message\”:\”tester\”,\”@type\”:\”stdin-type\”}”
redis 127.0.0.1:6379> exit
{/codecitation}
- Vi leser lengden på listen
- Poper toppen av stabelen
- Sjekker lengden igjen
- Poper toppen en gang til
- Avslutter redis-cli
2: Logstash som en collector og indexer.
{codecitation}
# java -jar logstash-1.1.9-monolithic.jar agent -f indexer.conf
{/codecitation}
Vi kobler nå til Redis og poper logstash listen. Hver gang en ny event kommer inn blir den plukket opp og sendt til Elasticsearch for indeksering.
Sjekk Elasticsearch vinduet ditt for å verifisere at Logstash kobler til ordentlig.
{codecitation}
[2013-02-22 21:09:41,617][INFO ][cluster.service ] [Chondu the Mystic] added {[Bereet][c0u_WTuJQrizX-FjpBv6OA][inet[/311.42.312.47:9301]]{client=true, data=false},}, reason: zen-disco-receive(join from node[[Bereet][c0u_WTuJQrizX-FjpBv6OA][inet[/311.42.312.47:9301]]{client=true, data=false}])
{/codecitation}
Webgrensesnitt
Vi starter webgrenesnittet. Husk å åpne brannmuren din om du skal nå webguiet.
{codecitation}
# java -jar logstash-1.1.9-monolithic.jar web –backend elasticsearch://127.0.0.1/
{/codecitation}
Oppsummering
Du har nå et komplett distribuert miljø kjørende på maskinen din. Dette er et rent teoretisk testmiljø og vil i praksis ikke kunne bruke til noe uten en ordentlig konfigurasjon.
I de aller fleste tilfeller vil man kjøre disse komponentene på forskjellige maskiner.
På serveren(e) som skal sende logger:
- Last ned og kjør logstash (1: Logstash konfigurert til å videresende logger.)
På serveren som skal motta og indeksere logger:
- Last ned og kjør Elasticsearch
- Last ned og kjør Redis
- Last ned og kjør Logstash (2: Logstash konfigurert til å samle og indeksere logger.)
Disse to oppsettene krever forskjellig konfigurasjon. Det vil også være greit å ha upstart script slik at du kan kjøre alt som demoner istedetfor i terminalvinduet ditt. Etterhvert vil vi du også føle behovet for å bytte ut webguiet til logstash med et litt mer robust et.
Jeg håper å få til en egen post på eksempel real world konfigurasjon om ikke lenge.