私はFilebeatでGraylogのサイドカー機能を使用して、Syslog、Nginx、Java Appなどのさまざまなログファイルをサーバーから取得しています。これらはすべて、Beatsの同じGraylog入力に流れます(複数の入力を提供しようとしましたが、残念ながらFilebeatは1つの場所にのみ送信します)。Extractorsを除いてすべてがうまく機能します。
特定のログメッセージに特定のエクストラクタを指定するにはどうすればよいですか?例:フィールド 'type' = 'API'(my Java app)の場合、JSONエクストラクタを適用します。type= 'nginx'の場合、正規表現エクストラクタを適用します。
1つの入力で複数のログソースを取り込んでおり、4つのエクストラクターがチェーンされています。私が観察した動作から、エクストラクタが一致しない場合は、単に次のエクストラクタに渡されます。それは単なる試みであり、力ではありません。
たとえば、私のエクストラクタ:
エラーのないアプリログが届くと、次のようになります。
そして、Mac OS Xシステムログが入ってくると:
いくつかの計画と優れたgrokのセットを使用すると、ログの予想されるフォーマットに基づいて、これを多くのExtractorで機能させることができます。エクストラクタ内の「フィールドに(文字列/正規表現)が含まれている場合にのみ抽出を試行する」オプションも特に役立ちます。