Logstashは、「トリガーとなるイベント監視機能」「イベントが発生したらその情報を整形する機能」「しかるべき場所に適切な形式で出力する機能」を備えています。
Logstashのデータパイプラインは、主に、「Input機能」「Codec機能」「Filter機能」「Output機能」で構成され、それぞれをプラグインとして実装することにより、さまざまな「イベント種類」「データ形式」「出力先」に対応できるようになっています。
新しいデータ形式に対しては、それに対応できるプラグインをインストールすることで、柔軟に対応できます。
Logstashでは、それぞれのプラグインを組み合わせて、以下のように処理が実行されます。
①「Inputプラグイン」---データ入力(eventlog、file、pipe、stdin、tcpなど)
②「Codecプラグイン」---Inputから受け取ったデータを指定した形式に整形(jsonなど)
③「Filterプラグイン」---Codecから受け取ったデータをフィルタ処理/解析(json、xml など)
④「Outputプラグイン」---Filterから受け取ったデータを出力(Elasticsearch、各種データストア、csvファイル など)
たとえば、Inputとして「stdin」、Outputに「Elasticsearch」というプラグインを使用すれば、標準入力からイベントを受け取り、データ処理を行い、結果をElasticsearchに出力します。
Logstashでは、プラグインエコシステムにより、さまざまなプラグインが用意されており、さまざまなInput、Filter、Outputなどを組み合わせて、スムーズに動作するパイプラインを構築できます。
「カスタムアプリケーションからデータ投入」など、既存のプラグインで対応できない処理については、プラグイン作成用APIとプラグインジェネレータを利用して独自開発も行えます。
Inputプラグインは、Logstashにデータを取り込むために利用します。
形式/サイズ/ソースを問わず、さまざまなデータソースから同時にデータを取り込みます。loglotatedのように、ログローテションしてファイル末尾に数字を加えていくような仕組みにも対応しています。
主な対応データソース
・ログ
・メトリックス
・Webアプリケーション
・データストア
・クラウドサービス など
Codecプラグインは、InputプラグインまたはOutputプラグインの一部として機能するストリームフィルタで、イベントのデータ表現を変更します。
対象データに対して「改行対応」「区切り文字対応」「JSON対応」などを行います。
Filterプラグインは、InputプラグインとOutputプラグインの間で、データの解析や変換などを実行します。「集計処理」「分割処理」「暗号処理」などを行えます。
Filterプラグインは、フィールドを識別して構造化し、出力用としてデータフォーマットの変換/整形を行います。どのようなソース/フォーマット/スキーマのデータでも動的に対応でき、イベントの特性に応じて条件付きで適用できます。
→Elastic →Docs →Filter plugins
Outputプラグインは、データパイプラインの最終段階として、処理されたデータを特定の宛先に出力します。さまざまな出力先を指定してデータを転送できます。
1つのイベントは複数のOutputを通ることができるため、多数のダウンストリームにも対応できます。
OSS×Cloud ACCESS RANKING