2015年5月12日火曜日

ElasticSearch + LogStash の連携を検証してみる

概要

ElasticSearch + Logstash の連携を検証してみました
本当に触りの部分だけ試しています

環境

  • CentOS 6.6 64bit
  • Java 1.8.0_31
  • ElasticSearch 1.5.2
  • LogStach 1.4.2

Javaインストール

yum -y install java-1.8.0-openjdk
echo 'export JAVA_HOME=/usr/lib/jvm/java/' >> ~/.bashrc
source ~/.bashrc

ElasticSearch インストール

cd /var/tmp
wget 'https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.2.zip'
unzip elasticsearch-1.5.2.zip
mv elasticsearch-1.5.2 /usr/local/
cd /usr/local/
ln -nfs elasticsearch-1.5.2 elasticsearch
echo 'export PATH=$PATH:/usr/local/elasticsearch/bin' >> ~/.bashrc
source ~/.bashrc

LogStash インストール

cd /var/tmp
wget 'https://download.elastic.co/logstash/logstash/logstash-1.4.2.zip'
unzip logstash-1.4.2.zip
mv logstash-1.4.2 /usr/local/
cd /usr/local/
ln -nfs logstash-1.4.2/ logstash
echo 'export PATH=$PATH:/usr/local/logstash/bin' >> ~/.bashrc
source ~/.bashrc

ElasticSearchとLogStashの連携

LogStashでアプリのログをElasticSearchに投げてみたいと思います
今回はElasticSearchもLogStashも同一ホストで動作することを想定しています

ElasticSearch起動

elasticsearch

今回はsupervisorなどでデーモン化はしていません
起動中はターミナルを閉じないようにしてください
9200番でLISTENしていることを確認してください

LogStashからログを投げてみる

logstash -e 'input { stdin { } } output { elasticsearch { host => localhost } }'

とすることでインタラクティブモードで起動し入力した文字列をElasticSearchに投げてくれます
起動したら適当な文字列を入力してみてください

そしたらElasticSearchにデータが投入されているか確認してみます

curl 'http://localhost:9200/_search?pretty'

これで確認すると入力したデータが格納されていることがわかると思います

Tips

「-e」で渡した設定はファイルに記載することも可能です

  • cat interactive_input.conf
input {
  stdin {
  }
}
output {
  elasticsearch {
    host => localhost
  }
}

こんな感じで設定ファイルには記載して「-f」オプションを使ってファイルを指定します

  • logstash -f interactive_input.conf

これでもOKです

最後に

インストールはzipをダウンロードし適当なディレクトリに配置することで実施しましたがyumとapt用のリポジトリも用意されているようです
http://www.elastic.co/guide/en/logstash/current/package-repositories.html

普通に使う場合はログを解析して使うことになると思います
ログ連携はまた別の記事で紹介できればと思います

参考サイト

1 件のコメント: