2017-08-17 15 views
0

私のnode.jsサーバーから別のサーバーにエラーを記録します。私はelasticsearch、logstashとkibanaの使用を考えています。自分のノードサーバーでELKを設定する方法を知りたい。node.jsでELKを設定するには

答えて

1

以前の組織ではまさにこの使用例でした。あなたのnodejsアプリはエラー/警告/情報などの異なるフォーマットでファイルにログインします(bunyanはこれを使用できます)。これは基本的にBeats + ELKのスタートアップの基本的なチュートリアルです - ELK - https://www.elastic.co/guide/en/beats/libbeat/current/getting-started.html

Filebeatはこれらのログファイルの末尾にあり、logstashサーバーにメッセージを送信します。 Logstash input.confには入力フィルタがいくつかあります(あなたの場合はエラーフィルタになります)。いずれかのログメッセージがこれらのフィルタを通過すると、logstashはoutput.confファイルで決められたように、それを何らかのエンドポイントに転送します。ここで

は、私たちが何をしたかである -

初期アーキテクチャ - 尾にnodejsサーバー上のログをfilebeat(以前の私たちはlogstashフォワーダを使用)、クライアントをインストールし、マシンをlogstashするためにそれを転送します。 Logstashは入力ログに対して何らかの処理を行い、それらをESクラスタに送ります(Logstashと同じマシン上にある可能性があります)。キバナはこのESの視覚化に過ぎません。

最終的なアーキテクチャ - 小規模なトラフィックでは初期セットアップがクールでしたが、logstashは単一障害点となり、トラフィックが増加するとログが失われる可能性があることがわかりました。そこで、カフカとLogstashを統合し、システムのスケールをスムーズに行えるようにしました。ここに記事があります - https://www.elastic.co/blog/logstash-kafka-intro

これは役に立ちます!

+0

返信ありがとうございます。セットアップ、confファイル、node.js層からのログの記録に必要な基本的なインストール手順を順を追って説明できますか? –

+0

各コンポーネントとステップについてのチュートリアルで答えを編集しました:) –

+0

それは助けましたか?それとも他の助けが必要ですか? –

1

アプリケーションからログを収集するエージェントを実行しないでlogstashを使用することは可能です。 Logstashには入力プラグイン(https://www.elastic.co/guide/en/logstash/current/input-plugins.html)があります。これは、パイプラインで設定できます。 1つの基本的な設定は、TCP(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-tcp.html)またはUDP(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-udp.html)inputプラグインを設定することです)Logstashは、プラグインで設定されたポートでリスンすることができます。 その後、アプリケーションはlogstashサーバにログを直接送信できます。耐久性があることがLogstashパイプラインを構成することによりES。 、データの損失を回避することができます。このアプローチは、アプリケーションサーバーが(コンテナのように)短命あるときに優れている。nodejsについては

https://www.npmjs.com/package/winston-logstashはかなり有効であるパッケージです。この要点https://gist.github.com/jgoodall/6323951は、他の言語での全体的なアプローチの良い例を提供します。

これは、サンプル(最小)TCPインプですプラグインの設定

input { 
    tcp { 
    'port' => '9563' 
    } 
} 
関連する問題