健康チェックを加えること.NETコアアプリケーション
8469 ワード
この一連の投稿では、ヘルスチェックについて話し、Webアプリケーション/Web APIを監視します.
また、他の記事と私のブログをチェックアウトhttps://rmauro.dev
このブログ記事では、アプリケーションの状態を監視するためにエンドポイントを追加します.
そして、あなたはそれがかなり簡単であるのを見ます.NETコアアプリケーション.コードのほんの数列で、我々はインフラストラクチャを我々のサービスの健康状態を表示する準備ができています.
次のようなサービスを監視できます. データベース(SQL Server、Oracle、MySQL、MongoDBなど) 外部API接続 ディスク接続(読み書き) キャッシュサービス( REDIS , memcacheなど) あなたが考えることができる基本的な何でも.もしあなたに合った実装が見つからない場合は、カスタム実装を作成できます.
でも.なぜ?
への参照https://docs.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring
まず、HealthCheckサービスを追加します.
第2に、HeadCheckエンドポイントを構成するパイプラインを追加します.
常にUSEMVCの前に置いてください.私たちはエンドポイントの前に実行されるMVCパイプラインを望まない.
URLのビルド、実行、アクセス
すべての設定を行い、監視リストにサービスを追加し始める.MongoDBを監視リストに追加しましょう.
Xabarilのリストから選びましょう.XabarilのGithubリポジトリには、aspnetcoreの束が含まれています.診断法Healthcheckパッケージを使用する準備ができました.
その他多くのパッケージ.
バック・トゥ・ビジネス.
まず、nugetパッケージを追加する
そして、それらはMongoDB健康チェックを含むためにaddHealthCheckを修正します.
これらの変更の後、それはすべての設定です.アプリケーションを実行し、再度ヘルスステータスページをチェックできます.
では、監視エンドポイントに関する詳細な情報を表示する別のエンドポイントを作成しましょう.
もう一度実行し、エンドポイントにアクセスする
それだ!
次の記事では、UI(ユーザーインターフェイス)をどのように置くかを示します.
https://github.com/ricardodemauro/Health-Check-Series https://rmauro.dev/adding-health-checks-to-net-core-application/ https://docs.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring https://www.hanselman.com/blog/HowToSetUpASPNETCore22HealthChecksWithBeatPulsesAspNetCoreDiagnosticsHealthChecks.aspx https://github.com/xabaril/AspNetCore.Diagnostics.HealthChecks
また、他の記事と私のブログをチェックアウトhttps://rmauro.dev
このブログ記事では、アプリケーションの状態を監視するためにエンドポイントを追加します.
そして、あなたはそれがかなり簡単であるのを見ます.NETコアアプリケーション.コードのほんの数列で、我々はインフラストラクチャを我々のサービスの健康状態を表示する準備ができています.
次のようなサービスを監視できます.
健康終点モニタリングパターン
でも.なぜ?
Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals. This can help to verify that applications and services are performing correctly.
への参照https://docs.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring
基本健康チェック
まず、HealthCheckサービスを追加します.
public void ConfigureServices(IServiceCollection services)
{
//adding health check services to container
services.AddHealthChecks();
}
Startup.cs
第2に、HeadCheckエンドポイントを構成するパイプラインを追加します.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//adding health check endpoint
app.UseHealthChecks("/healthcheck");
app.UseMvcWithDefaultRoute();
}
Startup.cs
for .Net Core 2.2
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/healthcheck");
endpoints.MapDefaultControllerRoute();
});
}
Startup.cs
for .Net Core 3.1
常にUSEMVCの前に置いてください.私たちはエンドポイントの前に実行されるMVCパイプラインを望まない.
URLのビルド、実行、アクセス
http://{YOUR-URL}/healthcheck
あなたはこのようなものを見るべきです.すべての設定を行い、監視リストにサービスを追加し始める.MongoDBを監視リストに追加しましょう.
MongoDBをモニタサービスとして追加する
Xabarilのリストから選びましょう.XabarilのGithubリポジトリには、aspnetcoreの束が含まれています.診断法Healthcheckパッケージを使用する準備ができました.
AspNetCore.HealthChecks.System
AspNetCore.HealthChecks.Network
AspNetCore.HealthChecks.SqlServer
AspNetCore.HealthChecks.MongoDb
AspNetCore.HealthChecks.Npgsql
AspNetCore.HealthChecks.Elasticsearch
AspNetCore.HealthChecks.Redis
AspNetCore.HealthChecks.EventStore
AspNetCore.HealthChecks.AzureStorage
AspNetCore.HealthChecks.AzureServiceBus
AspNetCore.HealthChecks.AzureKeyVault
AspNetCore.HealthChecks.MySql
https://github.com/xabaril/AspNetCore.Diagnostics.HealthChecks
その他多くのパッケージ.
バック・トゥ・ビジネス.
まず、nugetパッケージを追加する
AspNetCore.HealthChecks.MongoDb
プロジェクトに.そして、それらはMongoDB健康チェックを含むためにaddHealthCheckを修正します.
public void ConfigureServices(IServiceCollection services)
{
//adding health check services to container
services.AddHealthChecks()
.AddMongoDb(mongodbConnectionString: "YOUR-CONNECTION-STRING",
name: "mongo",
failureStatus: HealthStatus.Unhealthy); //adding MongoDb Health Check
}
Startup.cs
これらの変更の後、それはすべての設定です.アプリケーションを実行し、再度ヘルスステータスページをチェックできます.
ほかのエンドポイントの追加
では、監視エンドポイントに関する詳細な情報を表示する別のエンドポイントを作成しましょう.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//... ommited code
//adding health check endpoint
app.UseHealthChecks("/healthcheck");
//adding custom json response
app.UseHealthChecks("/hc",
new HealthCheckOptions
{
ResponseWriter = async (context, report) =>
{
var result = JsonConvert.SerializeObject(
new
{
status = report.Status.ToString(),
errors = report.Entries.Select(e => new { key = e.Key, value = Enum.GetName(typeof(HealthStatus), e.Value.Status) })
});
context.Response.ContentType = MediaTypeNames.Application.Json;
await context.Response.WriteAsync(result);
}
});
app.UseMvcWithDefaultRoute();
}
Startup.cs
for .Net 2.2
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//... ommited code
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/healthcheck");
endpoints.MapHealthChecks("/hc",
new HealthCheckOptions
{
ResponseWriter = async (context, report) =>
{ //using the new json serializer
var result = JsonSerializer.Serialize(
new
{
status = report.Status.ToString(),
errors = report.Entries.Select(e => new { key = e.Key, value = Enum.GetName(typeof(HealthStatus), e.Value.Status) })
});
context.Response.ContentType = MediaTypeNames.Application.Json;
await context.Response.WriteAsync(result);
}
});
endpoints.MapGet("/", async context => await context.Response.WriteAsync("Hello World!"));
endpoints.MapDefaultControllerRoute();
});
}
Startup.cs
for .Net 3.1
もう一度実行し、エンドポイントにアクセスする
/hc
.それだ!
次の記事では、UI(ユーザーインターフェイス)をどのように置くかを示します.
分岐節のソースコード- 1
当初投稿
参考記事
Reference
この問題について(健康チェックを加えること.NETコアアプリケーション), 我々は、より多くの情報をここで見つけました https://dev.to/rmaurodev/adding-health-checks-to-net-core-application-2o6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol