이전 포스팅에 이어 진행됩니다. (Windows 기준)
2024.04.24 - [코딩/C#] - C# Metric 데이터 수집하고 모니터링 하기 (dotnet-counters)
Nuget Package 에서 표시되지 않는다면 시험판 포함을 체크합니다.
위 Nuget Package 에는 아래 두 항목이 패키징되어있습니다.
OpenTelemetry 라이브러리는 이러한 측정값을 집계하고
Prometheus exporter 라이브러리는 HTTP 메트릭 엔드포인트를 통해 집계된 데이터를 사용할 수 있게 합니다.
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);
}
}
}
위와 같이 작성 후 프로젝트를 시작해 놓습니다.
https://prometheus.io/docs/introduction/first_steps/
위 사이트에서 아래 표시된 부분 (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']
처음 코드에 적었던 포트(9184)와 동일한 포트로 처리합니다.
cmd 창에서 다운로드한 폴더로 이동하여 아래 명령을 수행합니다.
prometheus --config.file=prometheus.yml
아래처럼 명령이 수행되어 Prometheus 가 실행되고 대시보드에 접근할 수 있게 됩니다.
localhost:9090 페이지로 이동합니다.
아래처럼 화면이 나왔다면 정상적으로 Prometheus 가 정상 동작한 것입니다.
상단 메뉴에서 Stasus > Targets로 들어가서 제대로 State 가 UP 이 되었는지 확인합니다.
(아래와 같이 떠야 정상입니다.)
http://localhost:9184/metrics 페이지로 이동하면 코드에서 처리한 매트릭 데이터가 잘 수집되고 있는지 확인합니다.
이름을 보면 알겠지만 Unit(Hats)까지 붙어서 '-'는 '_'로 바뀌어 이름이 정해집니다. (hats_sold_Hats)
실시간으로 값이 변경되는 경우 반영되어 보여집니다.
상단의 Graph 페이지로 이동하여 hats_sold_Hats 입력 후 Enter 하거나 Execute 버튼을 클릭합니다.
위처럼 매트릭 결과를 그래프로 확인할 수 있습니다.
현재는 계속 증가만 시키고 있어서 위와 같은 그래프가 표시되었습니다.
[Source]
https://github.com/kei-soft/MetricTestConsoleApp
참고
https://learn.microsoft.com/ko-kr/dotnet/core/diagnostics/metrics-collection
C# gRPC Streaming (0) | 2024.04.25 |
---|---|
C# gRPC 를 이용해 Server와 Client 통신 처리하기 (0) | 2024.04.25 |
C# Metric 데이터 수집하고 모니터링 하기 (dotnet-counters) (0) | 2024.04.24 |
C# Array.ConvertAll 사용하기 (0) | 2024.04.24 |
C# WebView2 에 html 넣는 방법 (0) | 2024.04.24 |