コーディングプラグ(CODEC)
コーデックは、(導入された新しいコンセプトバージョン1.3.0の先頭からlogstashあるコーデック から 共同 DER / 12月の二つの言葉の略語オーデルイニシャル)。
これに先立ち、その後、プレーンテキストのみの入力をlogstash フィルターがそれを処理します。しかし、今、私たちができる入力 データの異なる種類の処理を、それはすべてのためのコーデックの設定でした。
だから、ここでは、補正前の概念を必要とします。Logstashだけではなく、input | filter | output
データ・ストリームが、 input | decode | filter | encode | output
データのストリーム!コーデックは 、エンコードイベントを復号するために使用されます。
データフォーマットは、このような他の製品グラファイト、流暢、NetFlowの、collectd、及びmsgpackの使用、JSON、EDN他の一般的なデータフォーマットなどの他の自己共存より便利な操作および保守製品、とのより良いlogstashを定義するようにコーデックが導入されます。
実際には、私たちの最初の「Hello World」のユースケースは、使用されている コーデックを アップ- rubydebug の一種である コーデック!それは通常のみ設定試験またはデバッグツールとしてSTDOUTプラグインで使用されているが。
JSONを使用してエンコード1、
nginxのログによってケースとして、このテストを使用することを学びます。nginxのは、JSON形式で保存されたログ、設定ファイルを変更します。
- LOG_FORMATのJSON '{ "@timestamp": "$のtime_iso8601"、'
- ' "@version": "1"、'
- ' "ホスト": "$のSERVER_ADDR"、'
- ' "クライアント": "$のREMOTE_ADDR"、'
- ' "サイズ":$のbody_bytes_sent'
- ' "RESPONSETIME":$のREQUEST_TIME'
- ' "ドメイン": "$ホスト"、'
- ' "URL": "$のURI"、'
- ' "ステータス": "$ステータス"}' ;
- access_logの/ ログ/ nginxの/ アクセス。JSONを記録。
nginxのを有効にするには再起動してください。
テストに使用logstashプロファイルwebnginx.confの設定:
- 入力{
- ファイル{
- パス=> "/logs/nginx/access.log"
- タイプ=> "nginxの"
- START_POSITION => "始まり"
- add_field => { "キー" => "値" }
- コーデック=> "JSON"
- }
- }
- 出力{
- 標準出力{
- コーデック=> rubydebug { }
- }
- }
logstashスタートアップテストをロードします。
- logstash - F webnginx 。confに
以下に示す試験用アドレスにアクセス(私はwww.elk.com仮想マシンを対象としますここをnginxの存在)
- {
- "タイプ" => "nginxの" 、
- "URL" => "/app/panels/timepicker/module.html" 、
- "タグ" => []、
- "パス" => "/logs/nginx/access.log" 、
- "@timestamp" => 2017年- 02 - 13T17 :02 :47.000Z 、
- "サイズ" => 2397 、
- "ドメイン" => "www.elk.com" 、
- "@version" => "1" 、
- "ホスト" => "192.168.1.104" 、
- "クライアント" => "192.168.2.16" 、
- "RESPONSETIME" => 0.0 、
- "キー" => "値" 、
- "状態" => "200"
- }
追加情報:
その後、フィルターでlogstashに変更統一記録フォーマット文字列の書式を(すなわち、二重引用符「を入れている)ログ/数値型、文字フィールドの値の型でなければなりませんウィジェット変異させます。
データの複数の行と2、(複数)
いくつかのケースでは、アプリケーションのデバッグログは、コンテンツの富が含まれますイベントとして多くの行の内容をプリントアウトします。このログは通常、コマンドラインの解析により解析を行うことは非常に困難です。logstashはその準備ができているの コーデック/複数行の プラグを。テスト:
- 入力{
- 標準入力{
- コーデック=> マルチ{
- パターン=> "^ \の["
- 否定=> 真
- 何=> 「前の」
- }
- }
- }
- 出力{
- 標準出力{
- コーデック=> rubydebug { }
- }
- }
ロード:multiline.conf -f logstash
次のような効果があります
- こんにちは世界
- こんにちはlogstash
- こんにちは、複数行
- [
- {
- "@timestamp" => 2017年- 02 - 13T17 :29 :47.658Z 、
- "@version" => "1" 、
- "ホスト" => "0.0.0.0" 、
- "メッセージ" => "[\世界nhello \ nhello logstash \ nhello複数行" 、
- "タグ" => [
- [ 0 ] "マルチ"
- ]
- }
このプラグインの原理は、非常に単純で、現在の行は、これまで定期的に[新規^ \と一致するまで、フロントラインの背後にある現在の行にデータを追加することです。この正規表現はまた、GROKを使用することができます。
参考記事:
http://kibana.logstash.es/content/logstash/plugins/codec/multiline.html