web-dev-qa-db-ja.com

認証を使用してNLogまたはSeriLogでElasticSearchにログを記録する方法

現在、Azureスケールセット(負荷分散と1つの可用性セットを備えた1つのソースグループ上の多くのVM)を使用しており、以前はNLogを使用してWebアプリのアクションとエラーをログに記録していましたが、ElasticSearchを使用するように要求/必要になりました。インスタンスごとのファイルではなく、すべてのAzureVMインスタンスの集中ログ。

ESとLogStashの概念は初めてですが、NLogを別のものに置き換える必要がありますか? ESを使用してすべてのログを1つに統合するにはどうすればよいですか(統合結果としてAzureストレージテーブルにnlogストアを作成すると思いますか、LogStashを使用する必要がありますか、それとも他のものを使用しますか)?

上記のように、AzureマルチVMで.netコアアプリをサポートする最も多くのログは何ですか?

何か助けてください?

4

ElasticSearchにログインしたいので、[NLog]にこの機能が含まれている構造化ロギングをサポートするロギングフレームワークを使用するのが最適です。 ベータ[〜#〜] rtm [〜#〜]

構造化ロギングをサポートするロギングフレームワークとして Serilog を使用できます。

また、ElasticSearch用のSerilogシンクもあります https://github.com/serilog/serilog-sinks-elasticsearch

これらのnugetパッケージをプロジェクトに追加する必要があります。

Serilog
Serilog.Sinks.ElasticSearch  

これは、SerilogElasticSearchにシンクするための設定のサンプルコードです。

var logger = new LoggerConfiguration()
    .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200"))
    {
        ModifyConnectionSettings = x => x.SetBasicAuthentication(username, password);
    })
    .CreateLogger();
6
Kahbazi

NLogには、Elasticsearch.Netパッケージを使用するターゲット「NLog.Targets.ElasticSearch」( nuget )があります。

使用法:

<nlog>
  <extensions>
    <add Assembly="NLog.Targets.ElasticSearch"/>
  </extensions>
  <targets>
    <target name="elastic" xsi:type="BufferingWrapper" flushTimeout="5000">
      <target xsi:type="ElasticSearch"  
         requireAuth="true"
         username="myUserName"
         password="coolpassword"/>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="elastic" />
  </rules>
</nlog>

パラメータのドキュメント: https://github.com/ReactiveMarkets/NLog.Targets.ElasticSearch/wiki

ご注意ください:

  • Elasticsearch.Net 6(Elastic Searchバージョン6以降と同等)を使用する必要がある場合は、NLog.Targets.ElasticSearchバージョン5が必要です。
  • Elasticsearch.Net 5の場合、NLog.Targets.ElasticSearch4を使用する必要があります
9
Julian

多くの人が、アプリケーションがElasticSearchに直接書き込むのではなく、ローカルファイルに書き込むことを推奨しています。

次に、ログファイルの内容をElasticSearchにアップロードするサービス(例:FileBeat)を用意します。

これにより、ElasticSearchインスタンス(バルク)へのネットワークトラフィックが最適化され、メンテナンスのためにネットワークまたはElasticSearchインスタンスの問題が再開された場合にログが失われないようになります。

7
Rolf Kristensen