logstash+elasticsearch+kibanaを使って、素早くログプラットフォームを作ります.

7433 ワード

原文の出典:http://www.cnblogs.com/buzzlight/p/logstash_elastic search ch ch ukibanaロゴ
ログの分析と監視はシステム開発において非常に重要な地位を占めています.システムが複雑になるほど、ログの分析と監視が重要になります.
キーワードによる検索ログの詳細システムの運行状況を監視するインタフェースの呼び出し回数、実行時間、成功率などの統計分析
異常データ自動トリガメッセージ通知ログベースのデータマイニング多くのチームが日誌で出会うかもしれないいくつかの問題があります.
開発者はオンラインサーバにログインできません.詳しいログを確認してください.運営・維持費を経ると、労力がかかります.
ログデータは複数のシステムに分散されており、を検索するのは難しい.
ログデータ量が多く、検索速度が遅い一つの呼び出しは、複数のシステムに関連し、これらのシステムのログにおいて、高速位置決めデータを容易にすることができない.
データが足りないです.
一般的ないくつかのヘビー級のオープンソースTraceシステムがあります.
facebook scribe clouder flume twitter zipkin storm これらのプロジェクトは機能が強いですが、多くのチームにとっては複雑すぎて、配置と配置が面倒です.システムの規模が大きいから、ある程度までは、logstash+elasticsearch+kibana(LEK)の組み合わせがオススメです.
ログにとって最も一般的な需要は、収集、検索、表示であり、logstash、elasticsearch、kibanaの機能に対応しています.
logstash
ホームページ
logstashは配置が簡単で、jarをダウンロードして使えます.ログの処理ロジックも簡単です.pipelineの過程です.
inputs >> codecs >> filters >> outputs
対応するプラグインがあります
上から見れば、logstashは一般的なログタイプをサポートしています.他の監視システムとの整合も便利です.データをzabbix、nagios、emailなどに出力できます.
入力バッファとしてredisを推奨します.
データを集計してgrapphiteに出力することもできます.統計データの可視化を実現します.
metrics demo statsd grapphite
参考文献
cookbook doc デモelasticsearch
elastic searchホームページ
elasticsearchはluceneのオープンソースサーチエンジンに基づいています.ここ数年発展が速くて、主な特徴があります.
real time distributed high availability document orented schema free レストful appi elasticsearchの詳細を紹介してから書きます.よく使う資源は以下の通りです.
中国語
smart cn,ESデフォルトの中国語の単語 https://github.com/elasticsearch/elasticsearch-analysis-smartcn
mmseg https://github.com/medcl/elasticsearch-analysis-mmseg
イキ https://github.com/medcl/elasticsearch-analysis-ik
pinyin、ピンインの分詞、ピンインを入力して中国語にヒントを与えることができます. https://github.com/medcl/elasticsearch-analysis-pinyin
stconvert、中国語簡体字互換 https://github.com/medcl/elasticsearch-analysis-stconvert
一般プラグイン
elasticsearch-servicewrapperは、Java Service Wrapperによるelasticsearchのパッケージです. https://github.com/elasticsearch/elasticsearch-servicewrapper
Elastic HQ,elasticsearchのモニタツール http://www.elastichq.org
elasticsearch-rtfは、中国語に対して関連プラグイン(rtf=Ready To Fly)を統合しています. https://github.com/medcl/elasticsearch-rtf 著者ホームページ
kibana
ホームページ
Kibanaは強力なelasticsearchデータ表示クライアントであり、logstashは既にkibanaを内蔵しており、Kibanaを単独で展開することもできます.最新版のKibana 3はhtml+jsクライアントで、Apache、NgixなどのHttpサーバに簡単に配置できます.
kibana 3の住所: https://github.com/elasticsearch/kibana  kibana 2の住所: https://github.com/rashidkpc/Kibana  kibana 3 demo住所: http://demo.kibana.org
デモから先にキバの基本機能を見てもいいです.
グラフ
データテーブルは、どの列の表示と順序をカスタマイズできますか?
実際に実行されているクエリ文が表示されます.
新しい行を追加します
新しくパンをプラスして、支持のパンのタイプを見ることができます.
円グラフを一つ追加します
統計結果を地図で示す
http reponse codeによって統計します.
豊富な検索文法
配置を取り付ける
以下に簡単LEK体験環境の構築手順を示します.
jdk 1.7をインストールします
oracle javaホームページ
インストールプロセスを省略し、1.7+バージョンを推奨します.
java -version
javaの環境変数を設定します.
sudo vim ~/.bashrc

>>
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH  
>>

source ~/.bashrc
インストール
ホームページ
cd ~/src
wget http://download.redis.io/releases/redis-2.6.16.tar.gz
tar -zxf redis-2.6.16.tar.gz
cd redis-2.6.16
make
sudo make install
redisソースコードの中でutils/install_を通すことができます.server下のスクリプトは配置作業を簡略化します.
cd utils
sudo ./install_server.sh 
install_server.shはいくつかの問題を聞いたら、redisを起動サービスにインストールします.次のコマンドラインでサービスを開始/停止します.
sudo /etc/init.d/redis_ start/end 
redisクライアントを起動してインストールを確認します.
redis-cli
> keys *
Elasticsearchのインストール
Elasticsearchホームページ
cd /search
sudo mkdir elasticsearch
cd elasticsearch
sudo wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.zip
sudo unzip elasticsearch-0.90.5.zip
elasticsearchは解圧して使えます.これから効果を見て、まずESサービスを起動して、elasticsearchディレクトリに切り替えて、binの下のelasticsearchを実行します.
cd /search/elasticsearch/elasticsearch-0.90.5 
bin/elasticsearch -f
デフォルトの9200ポートにアクセス
curl -X GET http://localhost:9200
logstashをインストール
ホームページ
cd /search
sudo mkdir logstash
cd logstash
sudo wget http://download.elasticsearch.org/logstash/logstash/logstash-1.2.1-flatjar.jar
logstashをダウンロードして使えます.コマンドラインのパラメータはlogstash flagsを参照できます.
agent   #  Agent  
-f CONFIGFILE #      

web     #  Web  
-p PORT #    ,  9292
キバを取り付ける
logstashの最新版はすでにkibanaを内蔵しています.Kibanaを単独で展開することもできます.kibana 3は純粋JavaScript+htmlのクライアントですので、任意のhttpサーバに展開できます.
cd /search
sudo mkdir kibana
sudo wget http://download.elasticsearch.org/kibana/kibana/kibana-latest.zip
sudo unzip kibana-latest.zip
sudo cp -r  kibana-latest /var/www/html
config.jsを変更して、elasticsearchのアドレスとインデックスを設定することができます.
ブラウザでアクセスしてみます. http://127.0.0.1/html/kibana-latest/index.html
統合
上のシステムを統合します.
まずredisとelasticsearchを起動します.
logstashのためのプロファイルを作成します.
cd /search/logstash
sudo vi redis.conf
プロファイルの内容は以下の通りです.
input {
  redis {
    host => "127.0.0.1"
    port => "6379" 
    key => "logstash:demo"
    data_type => "list"
    codec  => "json"
    type => "logstash-redis-demo"
    tags => ["logstashdemo"]
  }
}

output {
  elasticsearch {
    host => "127.0.0.1"
  }

}
このプロファイルでlogstash agentを起動します.
java -jar /search/logstash/logstash-1.2.1-flatjar.jar agent -f /search/logstash/redis.conf &
ロゴstash内蔵のwebを起動します.
java -jar /search/logstash/logstash-1.2.1-flatjar.jar web &
webを見ると、まだデータがないはずです.
http://127.0.0.1:9292
redisにデータを追加します.
RPUSH logstash:demo "{\"time\": \"2013-01-01T01:23:55\", \"message\": \"logstash demo message\"}"
elasticsearchのインデックスの現状を見てください.
curl 127.0.0.1:9200/_search?pretty=true 

curl -s http://127.0.0.1:9200/_status?pretty=true | grep logstash
またlogstash webで調べてみます.
http://127.0.0.1:9292
単独のkibanaインターフェイスで見る
http://127.0.0.1/html/kibana-latest/index.html#/dashboard/file/logstash.json
データ整理
logstashデフォルトでは、日ごとにESインデックスを作成します.このような利点は、履歴データを削除する時に直接インデックス全体を削除すればいいです.
elasticsearchは各ドキュメントのttl(time to live)を設定することもできます.設定ドキュメントの期限切れに相当しますが、インデックス全体を削除するよりも多くのIO操作が必要です.
索引
elasticsearchはデフォルトではセパレータによってフィールドを分割します.ログの一部のフィールドは単語を区切らないでください.例えばurlはこのようなフィールドのためにnot_を設定できます.analzed属性です
multi-field-type属性を設定すると、フィールドを他のタイプにマップすることができます.multi-field-type
大量のログを導入する時はbulk方式を使います.
ログクエリに対しては、filterはqueryよりも速いフィルタで評価が実行されず、自動的にキャッシュされます.query-dsl
elasticsearchデフォルトのインデックス操作は、すべてのスライスがドキュメントに対するインデックスを完了してから戻ってきます.コピーを非同期に設定して、バッチログの導入を早めることができます.
elasticsearch最適化
JVMを最適化する  最適化システムは最大のファイルディスクリプタの数を開くことができます.  目次と索引の更新間隔を適切に増加します.
ベストな実践
まずあなたのプログラムはログを書きます.
記録したログは問題を分析するのに役立ちます.「パラメータエラー」というログだけを記録しても問題解決には役立ちません.
異常に依存しないでください.異常はあなたが考えていないところだけ処理します.
発生時間、実行時間、ログソース、入力パラメータ、出力パラメータ、エラーコード、異常スタック情報などの重要なパラメータを記録します.
sessionid、trositionid、useridなどを記録してあなたの迅速な位置付けと各システムのログを直列に並べることができる肝心なパラメータを記録します.
オススメのテキスト+jsonフォーマットキューを使う他のログ支援ツール
rsyslogs sylog-ng graylog flouentd nxlog