Installere logstash på Centos 6

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.

Leave a Reply

Your email address will not be published. Required fields are marked *