asp.net core監視—Prometheusを導入（一）


Prometheusは、CNCFが卒業した2番目のプロジェクトで、スター製品です（Prometheusの機能については、自身で調べることができます）。asp.net coreはもちろん、それに合わせて使用することを見逃すことはできません。.netでは、prometheus.net【https://github.com/prometheus-net/prometheus-net】を通じて導入されます。
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJJj8odib0wwV4eOERMKHau31BibmcDohcCc8x7mSobEcIkRVPTfrIeLLw/640?wx_fmt=png)
上図はPrometheusを使用した監視構造図で、Prometheusはデフォルトでプル方式を採用しており、アプリケーションサービスからmetricsデータを引き抜いて、Grafanaが表示用に提供することができるようにします。以下は一例を通して説明します。
1. Prometheusのダウンロード【https://prometheus.io/download/】
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJ0kXicMVOXsiaHMrjEKvGLFF1huIOVFqmD2L4SYRHTgEOIDiaa1WhZDo5g/640?wx_fmt=png)
prometheus.ymlは設定ファイルで、プルモードを採用しているため、設定ファイル内でアプリケーションサービスのurl http://localhost:5000を設定する必要があります。
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJv0rldrT2bgqVoMrGZ8ZtzASd2MkArEia4L4lHz2vbWVJk2XudLgXJ5Q/640?wx_fmt=png)
prometheus.exeをダブルクリックして起動できます。
2. Grafanaのダウンロード【https://grafana.com/grafana/download?platform=windows】
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJ6CdZJnXcMhCTfmzJOia9YewoU0jz5fQAIic7G0L8pswls43LSOb9O9mw/640?wx_fmt=png)
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJnmRl8Xyxmy2lISKKhiabeibqpiaP50zEXg3hjr4Euqs9VnxK2QMib6V7RA/640?wx_fmt=png)
grafana-server.exeを起動します。
アクセス：http://localhost:3000/
ユーザー名パスワードデフォルト：username:admin, password:admin
これからGrafanaの設定を始めます：
a. データソースの設定
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJIO30bSja9GB9NBjDLHiaN86HcexpAtYu3mWPHiaqnJwoUqcd4pbsFnOA/640?wx_fmt=png)
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJm3lTkpBWDx6VicBPic3CccFN3nQoobVYicReqEWOXI2uDIUQcibibIeJ9uw/640?wx_fmt=png)
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJuuDBap0mqfVIsJoI9A2nibc4Qj8XCUQk49rrm428yicP9rsILYNua9QQ/640?wx_fmt=png)
b. 監視パネルの設定
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJckNsNfIzvTZ9FaStN70UVOiaSN7vAArzU9UzbgVzrV78Up22RWHKabg/640?wx_fmt=png)
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJ66FzibdlZnhzzD9ujFof1Ds07QZLbryDHdIS6ZhGpDeYgIvNQNHcia5A/640?wx_fmt=png)
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJf1OBdhKv0ibcto4cXbAWGTdTRjVNcAJOerqMm4Une4jt5h8E88mwThw/640?wx_fmt=png)
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJI0MOdaNMkU4NqMkib2cOw6yNgudfNDyMmuQmLTZ5hFRD4x0Xr0icG3ibg/640?wx_fmt=png)
3. asp.net core 5.0のAPIプロジェクトを作成し、nugetパッケージprometheus-net.AspNetCoreを導入します。同時に、Startup.csのconfigureにPrometheusのミドルウェアを追加します：
```C#
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "PrometheusSimpal v1"));
    }

    app.UseRouting();            
    // HTTPリクエストのミドルウェア            
    app.UseHttpMetrics();            
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>            
    {                
        // 監視アドレスを /metrics にマッピング                
        endpoints.MapMetrics();                
        endpoints.MapControllers();            
    });        
}
```
サービスの開始：http://localhost:5000
![alt 画像](https://mmbiz.qpic.cn/mmbiz_png/4CAA63nvHRCGaJZwBoIt1pz4ibL4VO4BJ9UK4NF4RhjLfmiaic68l8P977qObx1S2ibRAmJ8x6MGsdHuCVwGib2xt8w/640?wx_fmt=png)
この例では、grafanaテンプレート10915を使用してデータを表示しており、表示される情報はリクエストとコントローラーの追跡情報だけですが、完全に収集するには固定ミドルウェアを使用することができます。ビジネス面での情報トラッキング表示が必要な場合は、開発者が自身のビジネスロジックに応じて表示する必要があります。

(Translated by GPT)

元のリンク：https://mp.weixin.qq.com/s?__biz=MzA3NDM1MzIyMQ==&mid=2247483728&idx=1&sn=c749f6b03fabf545bf7f6594d4a3afe6&chksm=9f005e7aa877d76c831b63fc354e3150928ec846aff0842277aedbd08a9002eee22f9175f289&token=418912929&lang=zh_CN#rd