@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

Logstash 1.5.0 Beta1リリース(日本語訳)

※この記事は次のブログを翻訳したものになります。

原文:logstash 1.5.0.beta1 released

Logstash 1.5.0 Beta1をリリースしました。こちらのページからダウンロードできます。

Note: ベータリリースです。本番環境では使用しないでください。

1.5.0の主な変更点は?

1.5.0の主なテーマはプラグイン管理、パフォーマンス改善、Apache Kafkaインテグレーションです。Logstashの主な特徴の1つは プラグインを利用できることであり、パイプラインの動作を拡張するためにプラグインを追加するのが簡単なことです。 このリリースで、プラグインの開発、管理、公開がより簡単になります。 また、Logstashの速度をより良くしたため、より多くのデータを短時間に処理することができます。 興味ありませんか?では、詳細を見ていきましょう。

plugin ecosystemの変更

Logstashは165ものプラグイン(inputs、filters、outputs、codecs)を持っており、 これらはElasticsearchとコミュニティからのコントリビュートで開発されています。 多くのプラグインを管理することは、使いやすさと素早さの間のトレードオフがあります。 Logstashの全てのプラグインをまとめることは使いやすさがある一方、プラグインの更新を取り込むために Logstashの新しいリリースを待ってもらうことになります。 Logstashからプラグインを分離して個別に配布する場合、更新は簡単になりますが、使いやすさ(特に新しいユーザに)に影響が出ます。

私たちは、プロジェクトを前進させるために、これらのバランスをとることを考えました。 これまで、全ての利用可能なプラグインは’core’と’contrib’の2つに分割していました。 ‘core’にあるよく使われるプラグインは、Logstashに含めていました。 コミュニティによりコントリビュートされたプラグインは’contrib’パッケージとして分離して配布していました。 1.5.0のリリースで、ユーザに対してより良いプラグイン管理をできるように変更しました。 全てのプラグインは、それ自身によるパッケージに移行しました。 パッケージングフレームワークとしてrubygemsを使い、rubygem.org経由でこれらのプラグインを配布、公開します。 また、Logstashにプラグインのインストール、更新、削除を簡単にするための構造も追加しました。

例えば、S3 output pluginをインストールするには、以下のコマンドを実行します。

1
$LS_HOME/bin/plugin install logstash-output-s3

それだけです!Logstashがgemと依存するgemをrubygems.orgからダウンロードし、インストールします。 あなたは、S3にデータを送ることができるようになります。

ダウンロード可能なLogstashリリースはプラグインをまだ多く含んでいますが、 いつでも、個別にプラグインをアップグレードし、インストールすることができます。 プラグインエコシステムの変更に関する詳細のブログ記事をお待ち下さい。

パフォーマンス改善

Logstash 1.5.0はより高速になっています。パフォーマンスが改善された2カ所について説明します。

grok filter

Grok filterはLogstashで、構造化データを抽出するためにパターンを記述するのに使われます。 本リリースで、人気のある幾つかのパターンのgrok filterのスループットを100%に改善しました。 言い換えると、grok filterを使うときに、Logstashを通してより多くのデータを処理することができます。

私たちのベンチマークテストで、1.5.0と1.4.2のスループットの比較をしました。 利用したデータは690万件のApache Webアクセスlogで、COMBINEDAPACHELOGのgrok patternです。 1.5.0で、スループットは34,000 event per sec(eps)から50,000 epsに増加しました。 両方のテストを8コアのマシンでLogstashで8つのワーカーを実行しました。 これらのテストで、一つのgrok filterを実行し、 stdinstdoutを使ったパイプラインでイベントのスループットを計測しました。 全体的なパフォーマンスは、様々なハードウェアやLogstashのコンフィグによって変化することに注意してください。

json serialization / deserialization

JSONのシリアライズ/でシリアライズをJrJacksonライブラリを利用して実装しました。 これにより、100%以上のスループットの改善がありました。 先ほど説明したパフォーマンステストにおいて、1.3KBのサイズの500,00 JSONイベントを送信し、 16,000 epsから30,000 epsにスループットが改善しました。 45,000サイズのイベントで、850 epsから3500 epsにスループットが増加しました。 すばらしいです。

apache kafka integration

いまでは、Apache Kafkaが大規模スケールデータ処理システムでよく利用されます。 Logstashの配備のスケーリングにおいて、Kafkaもまた、shippingインスタンスとindexingインスタンス間の データを保存するための中間メッセージバッファとして使うことができます。

1.5.0で、Logstash Kafkaのinputとoutputのプラグインのビルトインサポートを追加しました。 これは、Joseph Lawsonによって最初に開発されました。 私たちは、これらのプラグインにインテグレーションテストとドキュメントを追加することにより改良し、 新しいKafkaの機能を開発し続けます。 また、Apache Avro codecを追加することで、Kafkaに保存されたイベントを 簡単に取得でき、ELKスタックを使ってそれらを解析できるようにしました。

Kafka inputを追加するのは次のコマンドです。

1
$LS_HOME/bin/plugin install logstash-input-kafka

Kafka outputは次のコマンドです。

1
$LS_HOME/bin/plugin install logstash-output-kafka

セキュリティに関する改善

認証と経路暗号化のサポートを追加し、Elasticsearchのoutput、input、filterのセキュリティを改良しました。 例えば、HTTPプロトコルでSSL/TLSにより暗号化を有効にでき、 HTTPベーシック認証をユーザ名とパスワードをリクエストに与えることで設定できます。 これらの機能は、時期にリリースされるElasticsearch ShieldセキュリティプロダクトとLogstashを統合できます。

ドキュメント

これまで、Logstashのドキュメントは[logstash.net])(http://logstash.net/)に置いてあり、 他のELKスタックと一緒に動かす時に、情報を探すのが厄介でした。 1.5.0および、今後のバージョンのドキュメントはelasticsearch.orgのLogstash Guideに移行します。 この移行でelasticsearch.org/guideにELKスタックを利用、 学習するためにドキュメントが1つになりました。 このベータリリースのイテレーションで、私たちはプレゼンテーションとドキュメントの品質を改善することに活発に取り組んでいきます。 (過去のLogstashのドキュメントの全てはいままでのlogstash.netで引き続き公開していく予定です。)

バグフィックスと改善

ここまでの新しい機能に加えて、Logstash 1.5.0では、多くのバグフィックスと多くの機能改善があります。 ここで、これらのいくつかを紹介します。

  • 出力しない’metadata’をイベントに格納可能に。これは、例えば、date filterに使う中間フィールドのために必要。(#1834, #LOGSTASH-1798)
  • HTTPを利用しているときのファイルデスクリプタリークの修正。Logstashがストールするのを防ぎ、OOMエラーからクラッシュするケースも防ぎます。(#1604)
  • Twitter input:full_tweetオプションの追加、Twitter rate limitingエラーのハンドリング(#1471)
  • イベントを生成するfilter(multiline、clone、split、metrics)により、 後続の条件文にこれらのイベントを正しく伝搬(#1431)
  • Elasticsearch output:Logstashはデフォルトでmessage.rawフィールドを作成しない。messageフィールドはElasticsearch によりnot_analyzedでマルチフィールドとして追加される。マルチフィールドはディスクスペースが2倍必要だが、利点がない。
  • bin/logstashの複数のサブコマンドを除去(#1797)

これらの機能、改善、バグフィックスについては、Logstash 1.5.0.Beta1 のchangelogをごらんください。

試してみてください!

ぜひ、Logstash 1.5.0 Beta 1をダウンロードして試してみてください。 そして、感想をTwitter(@elasticsearch)などで教えて下さい。 また、問題がありましたら、GitHub issues pageで報告をお願いします。

Comments