狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

.NET 使用 OpenTelemetry metrics 監控應用程序指標

freeflydom
2024年6月11日 9:37 本文熱度 1233

隨著現代應用程序的復雜性不斷增加,對于性能監控和故障排除的需求也日益迫切。在 .NET 生態系統中,OpenTelemetry Metrics 可用于實時監控和分析應用程序的性能指標。比如監控內存,CPU 使用量,鏈接數等等。

OpenTelemetry Metrics 概述#

OpenTelemetry Metrics 是 OpenTelemetry 的一部分,用于記錄和導出應用程序的性能指標。它提供了一組靈活的 API 和工具,用于創建、注冊和導出度量指標,以便實時監控和分析應用程序的性能。OpenTelemetry Metrics 支持各種類型的度量指標,包括計數器(Counter)、測量值(ObservableGauge)等,以滿足不同場景下的性能監控需求。

監控 ASP.NET Core 與 Runtime 的指標#

OpenTelemetry 已經為我們直接提供了一些開箱即用的包。我們使用這些包就可以非常便捷的對 ASP.NET Core 或者 Runtime 的一些指標進行監控。以下我們將演示通過簡單的幾步如何把這些指標通過 OpenTelemetry 協議發送給 Prometheus。

使用 nuget 安裝包#

首先安裝相關的包

		<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.8.1" />
		<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" />
		<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.8.1" />
		<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.8.1" />

配置服務#

跟 logs,traces 一樣,我們需要在啟動的時候添加必要的服務及配置。


builder.Services.AddControllers();


var otel = builder.Services.AddOpenTelemetry();


// Configure OpenTelemetry Resources with the application name

otel.ConfigureResource(resource => resource

    .AddService(builder.Environment.ApplicationName));



otel.WithMetrics(metrics =>

{

    metrics.AddAspNetCoreInstrumentation()

    .AddRuntimeInstrumentation()

    .AddOtlpExporter((otlpOptions, metricReaderOptions) =>

    {

        otlpOptions.Protocol = OtlpExportProtocol.HttpProtobuf;

        otlpOptions.Endpoint = new Uri("http://localhost:9090/api/v1/otlp/v1/metrics");

        metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 1000;


    });

});

安裝 Prometheus#

從官網下載 Prometheus 的安裝包或者 k8s 運行。啟動的時候記得開啟參數:otlp-write-receiver

./prometheus --enable-feature=otlp-write-receiver

prometheus 默認的 metrics 的 api 地址為:http://localhost:9090/api/v1/otlp/v1/metrics

在 Prometheus 中查看指標#

讓我們運行上面的 .NET 程序,等待一會。然后打開 http://localhost:9090/graph 進行查看。我們能看到 Prometheus 中多了很多跟 ASP.NET Core 以及 .NET runtime 相關的指標。

有 kestrel 相關的,GC 相關的, Thread pool 相關的指標等等很多很多。
下面我們隨便選一個 kestrel 的活動鏈接數看看:

可以直觀的看到從0個連接到2個連接再到1個連接的過程。

自定義指標#

以上演示了如何監控 ASP.NET Core 以及 .NET runtime 相關的指標。過程呢相當簡單。但是光有這些框架的指標可能還不夠,有的時候我們希望監控業務數據的指標,比如訂單數量,實時用戶在線量,等等。那么這個時候我們需要自己去實現一個指標。
下面我們就以訂單總數這個數據定義一個自定義的指標。當用戶每次下單成功后訂單數量就會 +1。

MyMeterService#

首先定義一個 MyMeterService 的類:

    public class MyMeterService

    {

        public static Meter MyMeter = new("MyMeter", "1.0");

        public static Counter<long> MyOrderCounter = MyMeter.CreateCounter<long>("MyOrderCounter");

    }

首先創建了一個名為 MyMeter 的度量器。然后創建了一個名為 MyOrderCounter 的長整型計數器(Counter),并將其綁定到 MyMeter 上,名稱為 "MyOrderCounter"。

修改服務配置代碼#

otel.WithMetrics(metrics =>

{

    metrics.AddAspNetCoreInstrumentation()

    .AddRuntimeInstrumentation()

    .AddMeter("MyMeter")

    .AddOtlpExporter((otlpOptions, metricReaderOptions) =>

    {

        otlpOptions.Protocol = OtlpExportProtocol.HttpProtobuf;

        otlpOptions.Endpoint = new Uri("http://localhost:9090/api/v1/otlp/v1/metrics");

        metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 1000;


    });

});

通過調用 AddMeter("MyMeter") 方法 OpenTelemetry 會監聽前面定義的 MyMeter 度量器。

添加 Order 控制器#

代碼高亮:

    [ApiController]

    [Route("[controller]")]

    public class OrderController : ControllerBase

    {

        [HttpPost]

        public string Add()

        {

            MyMeterService.MyOrderCounter.Add(1);


            return "ok";

        }


    }

添加一個 Order 的控制器,每次調用 Add 方法的時候就會給 MyOrderCounter 加 1 。

在 Prometheus 中查看自定義指標#

跟上面一樣我運行我們的程序后等待一會,再次刷新 http://localhost:9090/graph。里面就會多出來 MyOrderCounter 指標。

使用 POSTMAN 調用幾次 Order 接口后,點擊 Execute 查詢一下:

可以看到 MyOrderCounter 指標的折線圖。

更多的度量#

上面我們使用一個 Counter 來對訂單數進行累加。其實 .NET 為我們提供了更多的度量方法。以下簡單介紹幾個常用的:

  • Counter
    表示支持添加非負值的檢測。 例如,可以在每次處理請求時調用 counter.Add(1) 以跟蹤請求總數。 默認情況下,大多數指標查看器使用速率 (請求數/秒) 顯示計數器,但也可以顯示累積總計。

  • ObservableCounter
    表示一個指標可觀測的檢測,當觀察檢測時報告單調遞增的值,例如,不同進程、線程、用戶模式或內核模式的 CPU 時間。

  • ObservableGauge
    表示在觀察儀器時報告非累加值的可觀測儀器,例如當前室內溫度。

  • UpDownCounter
    支持報告正或負指標值的工具。 UpDownCounter 可用于報告活動請求或隊列大小更改等方案。

  • ObservableUpDownCounter
    一種指標可觀測的儀器,在觀察檢測時報告值增加或減少。 例如,使用此儀器可以監視進程堆大小或無鎖循環緩沖區中的項的近似數量。



該文章在 2024/6/11 9:37:41 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved