web-dev-qa-db-ja.com

完全に使用する前に新しいlogstashgrokフィルターをデバッグする

私はこのガイドに従っています:

http://deviantony.wordpress.com/2014/06/04/logstash-debug-configuration/

これが、logstashフィルターをテストして、フルタイムで使用する前に目的の出力が得られるかどうかを確認するのに役立つことを願っています。

ガイドの一部として、入力と出力を設定してから、フィルターファイルを設定するように指示されています。入力は正常に機能しているようです:

input {
    stdin { }
}

出力は次のとおりです。

output {
    stdout {
        codec => json
    }
    file {
        codec => json
        path => /tmp/debug-filters.json
    }
}

Logstashプロセスを実行しようとすると、次のエラーが発生します(ここでは、エラーがそれを試すようにアドバイスしているので、-configtestを使用して実行しましたが、それ以上の情報は提供されません)。

# /opt/logstash/bin/logstash -f /etc/logstash/debug.d -l /var/log/logstash/logstash-debug.log --configtest

Sending logstash logs to /var/log/logstash/logstash-debug.log.
Error: Expected one of #, ", ', -, [, { at line 21, column 17 (byte 288) after output {
    stdout {
        codec => json
    }
    file {
        codec => json
        path =>

出力のファイルセクションを削除しようとしましたが、logstashプロセスを実行できますが、ログ行をシェルに貼り付けると、ログエントリがコンポーネントに分割されていないことがわかります。grokフィルターが必要です。に侵入します。私がそれをするときに私が得るのは:

Oct 30 08:57:01 VERBOSE[1447] logger.c: == Manager 'sendcron' logged off from 127.0.0.1
{"message":"Oct 30 08:57:01 VERBOSE[1447] logger.c: == Manager 'sendcron' logged off from 127.0.0.1","@version":"1","@timestamp":"2014-10-31T16:09:35.205Z","Host":"lumberjack.domain.com"}

最初は新しいgrokフィルターで問題が発生していたので、現在は機能することがわかっている既存のフィルター(上記のように、Asterisk 1.2フィルター)を試してみて、しばらくの間、elasticsearchへのエントリを生成しています。

出力に記載されているjsonファイルに触れてみましたが、うまくいきませんでした。

Logstash-debug.logをテールすると、シェルにも書き込まれているエラーが表示されます。

Grokフィルターのデバッグに関する提案をいただければ幸いです。目がくらむほど明白なことを見逃してしまった場合は、お詫びします。ELKとgrokを使用して数週間しか経っていないため、これを最も賢明な方法で行っていない可能性があります。サンプルのログエントリをシェルにドロップし、JSON形式のlogstashエントリをコンソールに取得して、フィルターが期待どおりに機能しているかどうかを確認し、kibanaで表示されるようにタグ付けできるようにしたいと考えていました。終わり。これを行うためのより良い方法がある場合は、私に知らせてください。

Logstash1.4.2を使用しています

6
Rumbles

Grokフィルターのデバッグに関しては、このリンクを使用できます( http://grokdebug.herokuapp.com/ )非常に包括的なパターン検出器があり、これは良いスタートです。

ファイル出力に関しては、パスの周りに""が必要です。これが私が本番環境で使用する例です。これがファイル出力に関するドキュメントです http://logstash.net/docs/1.4.2/outputs/file#path

output {
    stdout {
        codec => rubydebug
    }
    file {
        codec => "plain"
        path => "./logs/logs-%{+YYYY-MM-dd}.txt"
    }
}
9
user3195649

Grokconstructor は、@ user3195649が言及した Grokdebug と同様のGrokデバッガーです。私はそれがランダムな例であるのが好きです。

5
czerasz