web-dev-qa-db-ja.com

ELKをnode.jsでセットアップする方法

Node.jsサーバーから別のサーバーにエラーを記録したいのですが。 elasticsearch、logstash、kibanaの使用を考えています。 ELKをノードサーバーでセットアップする方法を知りたい。

6
saurav ranjan

アプリケーションからログを収集するためにエージェントを実行せずに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サーバーに送信できます。パイプラインは変換してESに転送できます。Logstashパイプラインを永続的に構成することで、データの損失を回避できます。このアプローチは、アプリケーションサーバーが短命な場合(コンテナ内)。

Nodejsの場合、 https://www.npmjs.com/package/winston-logstash は非常にアクティブなパッケージです。この要旨 https://Gist.github.com/jgoodall/6323951 は、他の言語での全体的なアプローチの良い例です。

これはサンプル(最小)ですTCP入力プラグイン構成

input {
  tcp {
  'port' => '9563'
  }
}
4
sajjanin

私の以前の組織では、まさにこの使用例がありました。 Beats + ELKで起動するための基本的なチュートリアル- https://www.elastic.co/guide/en/beats/libbeat/current/getting-started.html

つまり、基本的にはこれがどのように機能するかです。nodejsアプリは、エラー/警告/情報などのさまざまな形式でファイルにログインします(これにはbunyanを使用できます)。Filebeatはこれらのログファイルをテールにし、メッセージをlogstashサーバーに送信します。 Logstash input.confにはいくつかの入力フィルターがあります(あなたの場合はエラーフィルターになります)。ログメッセージがこれらのフィルターを通過すると、logstashはoutput.confファイルで決定されたように、メッセージをいくつかのエンドポイントに転送します。

これが私たちがしたことです-

初期アーキテクチャ-filebeat(以前はlogstashフォワーダーを使用していました)クライアントをインストールして、nodejsサーバーのログをテールにし、それをlogstashマシンに転送します。 Logstashは入力ログに対していくつかの処理を行い、ESログに送信します(Logstashと同じマシン上に置くこともできます)。 Kibanaは、このESを視覚化したものです。

最終的なアーキテクチャ-トラフィックが少ない場合の初期設定はクールでしたが、logstashは単一点障害になる可能性があり、トラフィックが増加するとログが失われる可能性があることに気付きました。したがって、KafkaとLogstashを統合して、システムがスムーズにスケーリングできるようにしました。ここに記事があります- https://www.elastic.co/blog/logstash-kafka-intro =

お役に立てれば!

3
Aky_0788

NodeJSサーバーにLogstashをインストールし、入力(ログファイルの場所)とElastic Serverホストへの出力を受け入れる構成ファイルを作成できます。

以下は、logstashディレクトリに作成する必要があるサンプル構成ファイル(custom.conf)です。

    input {
    file {
    path => "/path to log"
    start_position => beginning
    }
    }
    output {
    stdout { }
    elasticsearch{
    type => "stdin-type"
    embedded => false
    Host => "192.168.0.23"
    port => "9300"
    cluster => "logstash-cluster"
    node_name => "logstash"
    }
    }

Logstashを実行する

    logstash -f custom.conf

リファレンス: https://www.elastic.co/guide/en/logstash/current/config-examples.html

NodeJSアプリケーションをカスタマイズしてエラーログを送信することを計画している場合は、ELKStack Nodjsラッパーをインストールして、アプリケーション内にエラーログをポストできます。 ELKStack Nodjsラッパー- https://www.npmjs.com/package/elksdk

1
Satish Kumar