728x90
728x170

이전 포스팅에 이어 진행됩니다. (Windows  기준)

2023.01.11 - [C#] - [C#] 매트릭 수집 ( dotnet-counters )

 

[C#] 매트릭 수집 ( dotnet-counters )

1. 콘솔앱 생성 2. 아래와 같이 매트릭이 수집될수 있도록 코드 처리 using System.Diagnostics.Metrics; class Program { static Meter meter = new Meter("HatStore", "1.0.0"); static Counter hatsSold = meter.CreateCounter("hats-sold"); sta

kjun.kr

 

1. OpenTelemetry.Exporter.Prometheus 패키지 설치

OpenTelemetry 라이브러리는 이러한 측정값을 집계하고 Prometheus exporter 라이브러리는 HTTP 메트릭 엔드포인트를 통해 집계된 데이터를 사용할 수 있게 합니다. 위 패키지는 두항목이 함께 패키징 되어있습니다.

2. 코드작성 및 실행

using System.Diagnostics.Metrics;

using OpenTelemetry;
using OpenTelemetry.Metrics;

class Program
{
    static Meter meter = new Meter("HatStore", "1.0.0");
    static Counter<int> hatsSold = meter.CreateCounter<int>(name: "hats-sold",
                                                            unit: "Hats",
                                                            description: "The number of hats sold in our store");
    static void Main(string[] args)
    {
        using MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
               .AddMeter("HatStore")
               .AddPrometheusExporter(opt =>
               {
                   opt.StartHttpListener = true;
                   opt.HttpListenerPrefixes = new string[] { $"http://localhost:9184/" };
               })
               .Build();

        Console.WriteLine("Press any key to exit");
        while (!Console.KeyAvailable)
        {
            // Pretend our store has a transaction each second that sells 4 hats
            Thread.Sleep(1000);
            Console.WriteLine($"{DateTime.Now.ToString()} : 4 {hatsSold.Name} ({hatsSold.Meter.Name})");
            hatsSold.Add(4);
        }
    }
}

위와 같이 작성 후 프로젝트를 시작해 놓습니다.


3. Prometheus 설정 및 구성
https://prometheus.io/docs/introduction/first_steps/

 

First steps | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

위 사이트에서 아래 표시된 부분 (Download the latest release) 클릭합니다.

아래화면에서 Windows  선택 후 LTS 버전 다운로드 합니다.

아래처럼 압축을 풀고 prometheus.yml 파일에 OpenTelemetry 항목을 추가합니다.

  - job_name: 'OpenTelemetryTest'
    scrape_interval: 1s # poll very quickly for a more responsive demo
    static_configs:
      - targets: ['localhost:9184']

(코드에 적었던 포트와 동일한 포트로 처리)

cmd 창에서 다운로드한 폴더로 이동하여 아래 명령을 수행합니다.

prometheus --config.file=prometheus.yml

아래처럼 명령이 수행되어 Prometheus에 접근할 수 있게 됩니다.


4. Prometheus에서 매트릭 확인
localhost:9090 페이지로 이동합니다.
아래처럼 화면이 나왔다면 정상적으로 Prometheus 가 정상 동작한 것입니다.

상단 메뉴에서 Stasus > Targets로 들어가서 제대로 UP 이 되었는지 확인합니다.
(아래와 같이 떠야 정상)

http://localhost:9184/metrics 페이지로 이동하면 코드에서 처리한 내용기준 매트릭이 잘 수집되고 있는지 확인합니다.
이름을 보면 알겠지만 Unit(Hats)까지 붙어서 '-'는 '_'로 바뀌어 이름이 정해집니다. (hats_sold_Hats)

상단의 Graph 페이지로 이동하여 hats_sold_Hats 입력 후 Enter 하거나 Execute 버튼을 클릭합니다.

매트릭 결과를 그래프로 확인할 수 있습니다.


[Source]
https://github.com/kei-soft/MetricTestConsoleApp

 

GitHub - kei-soft/MetricTestConsoleApp

Contribute to kei-soft/MetricTestConsoleApp development by creating an account on GitHub.

github.com


참고
https://learn.microsoft.com/ko-kr/dotnet/core/diagnostics/metrics-collection

 

메트릭 수집 - .NET

.NET 애플리케이션에서 메트릭을 수집하는 자습서

learn.microsoft.com

 

728x90
그리드형
Posted by kjun
,