.NET ヘルプ

開発者向け Appmetrics C# の仕組み

公開済み 2024年7月1日
共有:

AppMetrics C# (アプメトリクス C#)は、アプリケーションのモニタリングとパフォーマンス分析を効率化するために設計された強力なツールです。 App Metricsの抽象化により、アプリケーションのさまざまな側面を追跡する際の複雑さが簡素化されます。 .NET Core または .NET Framework を使用しているかどうかに関わらず、この .NET ライブラリはメトリックタイプを効率的に記録することができます。 メトリクスを取得し、App Metricsがサポートするメトリクスタイプを利用して、包括的な洞察を得ることができます。

.NETライブラリは、メトリクスを取得することをサポートし、指定された間隔でメトリクスをフラッシュすることができるため、タイムリーなデータ収集を保証します。 また、拡張性を高めるために拡張ポイントを提供する拡張メソッドも提供しています。 クロスプラットフォームソリューションとして、AppMetricsは多様な環境に適しており、一貫したパフォーマンス監視を保証します。

IronPDF:C#開発者のための高度なPDFライブラリPDFドキュメントを扱う際に、C#開発者にとってもう一つ重要なライブラリです。 それにより、.NET Coreアプリケーション内でPDFファイルの作成、編集、および抽出が直接可能になります。 この機能は、アプリケーションからPDF形式のレポート、請求書、およびその他のドキュメントを生成する必要がある場合に特に役立ちます。

AppMetricsの使用開始

.NETプロジェクトにクロスプラットフォームのApp Metricsを統合するには、まずAppMetricsライブラリをインストールします。 これを行うには、.NETのパッケージマネージャーであるNuGetパッケージを使用できます。 プロジェクト内で、NuGet パッケージ マネージャー コンソールで次のコマンドを実行してください:

Install-Package App.Metrics.AspNetCore
Install-Package App.Metrics.AspNetCore
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package App.Metrics.AspNetCore
VB   C#

Appmetrics C#(開発者向けの操作方法):図1 - AppMetrics

このコマンドは、プロジェクトに必要なすべての依存関係を追加し、AppMetricsの設定を開始できるようにします。

基本コード例:HTTPリクエストの監視

以下は、AppMetricsを使用してあなたの.NETアプリケーションでHTTPリクエストの基本的な監視を設定する方法です。 まず、Startup.csファイルでメトリクスをビルドします。以下のコードをConfigureServicesメソッドに追加してください:

// ここにコードが入ります
// ここにコードが入ります
' ここにコードが入ります
VB   C#
public void ConfigureServices(IServiceCollection services)
{
    services.AddMetrics(); // metric type
    services.AddMetricsTrackingMiddleware();
    services.AddMetricsEndpoints();
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddMetrics(); // metric type
    services.AddMetricsTrackingMiddleware();
    services.AddMetricsEndpoints();
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddMetrics() ' metric type
	services.AddMetricsTrackingMiddleware()
	services.AddMetricsEndpoints()
End Sub
VB   C#

次に、同じファイルのConfigureメソッドで、監視を処理するためにAppMetricsミドルウェアを追加してください:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseMetricsAllMiddleware();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseMetricsAllMiddleware();
}
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseMetricsAllMiddleware()
End Sub
VB   C#

このセットアップは、リクエスト数、リクエストの所要時間、エラーレートなど、アプリケーションに対するHTTPリクエストに関するメトリクスのキャプチャを自動的に開始します。

アプリメトリクスの機能を実装する

カスタムメトリクスの記録

カスタムメトリクスを作成および記録する、またはアプリケーション内の項目を測定するために、AppMetricsは追跡する必要がある内容を柔軟に定義する方法を提供します。 以下は、ユーザーログインを追跡するためのシンプルなカウンターを記録する例です:

public class LoginTracker
{
    private readonly IMetrics _metrics;
    public LoginTracker(IMetrics metrics)
    {
        _metrics = metrics;
    }
    public void TrackLogin(string userId)
    {
        _metrics.Measure.Counter.Increment(MetricsRegistry.Logins, new MetricTags("UserId", userId));
    }
}
public class LoginTracker
{
    private readonly IMetrics _metrics;
    public LoginTracker(IMetrics metrics)
    {
        _metrics = metrics;
    }
    public void TrackLogin(string userId)
    {
        _metrics.Measure.Counter.Increment(MetricsRegistry.Logins, new MetricTags("UserId", userId));
    }
}
Public Class LoginTracker
	Private ReadOnly _metrics As IMetrics
	Public Sub New(ByVal metrics As IMetrics)
		_metrics = metrics
	End Sub
	Public Sub TrackLogin(ByVal userId As String)
		_metrics.Measure.Counter.Increment(MetricsRegistry.Logins, New MetricTags("UserId", userId))
	End Sub
End Class
VB   C#

このコードでは、TrackLogin が呼び出されるたびに、指定されたユーザーIDのログインカウンターが増加します。

アプリケーションのパフォーマンス測定

AppMetricsは、アプリのパフォーマンスを測定するためにも使用できます。 たとえば、タイマーを使用して特定のメソッドの実行時間を追跡することができます。

public void ProcessData()
{
    using (_metrics.Measure.Timer.Time(MetricsRegistry.DatabaseQueryTimer))
    {
        // Code to execute a database query
    }
}
public void ProcessData()
{
    using (_metrics.Measure.Timer.Time(MetricsRegistry.DatabaseQueryTimer))
    {
        // Code to execute a database query
    }
}
Public Sub ProcessData()
	Using _metrics.Measure.Timer.Time(MetricsRegistry.DatabaseQueryTimer)
		' Code to execute a database query
	End Using
End Sub
VB   C#

このタイマーは、ProcessData メソッドの実行時間を記録し、データベースクエリのパフォーマンスに関する洞察を提供します。

ダッシュボードへのレポートメトリクス

さまざまなメトリックタイプを視覚化してモニタリングするために、AppMetrics は異なるダッシュボードにデータをレポートできます。 以下は、InfluxDBダッシュボードにレポートを構成する方法です:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMetricsReportingHostedService();
    services.AddMetricsBuild(builder =>
    {
        builder.Report.ToInfluxDb(options =>
        {
            options.InfluxDb.BaseUri = new Uri("http://your-influxdb-server");
            options.InfluxDb.Database = "appmetricsdb";
            options.InfluxDb.UserName = "user";
            options.InfluxDb.Password = "password";
            options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
            options.HttpPolicy.FailuresBeforeBackoff = 5;
            options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
            options.FlushInterval = TimeSpan.FromSeconds(5);
        });
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddMetricsReportingHostedService();
    services.AddMetricsBuild(builder =>
    {
        builder.Report.ToInfluxDb(options =>
        {
            options.InfluxDb.BaseUri = new Uri("http://your-influxdb-server");
            options.InfluxDb.Database = "appmetricsdb";
            options.InfluxDb.UserName = "user";
            options.InfluxDb.Password = "password";
            options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
            options.HttpPolicy.FailuresBeforeBackoff = 5;
            options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
            options.FlushInterval = TimeSpan.FromSeconds(5);
        });
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddMetricsReportingHostedService()
	services.AddMetricsBuild(Sub(builder)
		builder.Report.ToInfluxDb(Sub(options)
			options.InfluxDb.BaseUri = New Uri("http://your-influxdb-server")
			options.InfluxDb.Database = "appmetricsdb"
			options.InfluxDb.UserName = "user"
			options.InfluxDb.Password = "password"
			options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30)
			options.HttpPolicy.FailuresBeforeBackoff = 5
			options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10)
			options.FlushInterval = TimeSpan.FromSeconds(5)
		End Sub)
	End Sub)
End Sub
VB   C#

メモリ使用量の追跡

システムメモリ使用量の監視は、パフォーマンスチューニングのために重要です。 次の方法で空きメモリを追跡できます:

public void CheckSystemMemory()
{
    var freeMemory = GC.GetTotalMemory(false);
    _metrics.Measure.Gauge.SetValue(MetricsRegistry.FreeMemory, freeMemory);
}
public void CheckSystemMemory()
{
    var freeMemory = GC.GetTotalMemory(false);
    _metrics.Measure.Gauge.SetValue(MetricsRegistry.FreeMemory, freeMemory);
}
Public Sub CheckSystemMemory()
	Dim freeMemory = GC.GetTotalMemory(False)
	_metrics.Measure.Gauge.SetValue(MetricsRegistry.FreeMemory, freeMemory)
End Sub
VB   C#

このゲージは、アプリケーションで利用可能なメモリの空き容量を測定し、メモリ消費のパターンを把握するのに役立ちます。

指定された間隔でのメトリクスの処理

AppMetricsは、指定された間隔でメトリクス収集を処理するように構成できます。 これにより、データを頻繁に記録せずにパフォーマンスを維持するのに役立ちます。

public void ConfigureScheduledReporting(IApplicationBuilder app)
{
    var metrics = app.ApplicationServices.GetService<IMetricsRoot>();
    var scheduler = new AppMetricsTaskScheduler(
        TimeSpan.FromSeconds(60),
        async () =>
        {
            await Task.WhenAll(metrics.ReportRunner.RunAllAsync()); // await task
        });
    scheduler.Start();
}
public void ConfigureScheduledReporting(IApplicationBuilder app)
{
    var metrics = app.ApplicationServices.GetService<IMetricsRoot>();
    var scheduler = new AppMetricsTaskScheduler(
        TimeSpan.FromSeconds(60),
        async () =>
        {
            await Task.WhenAll(metrics.ReportRunner.RunAllAsync()); // await task
        });
    scheduler.Start();
}
Public Sub ConfigureScheduledReporting(ByVal app As IApplicationBuilder)
	Dim metrics = app.ApplicationServices.GetService(Of IMetricsRoot)()
	Dim scheduler = New AppMetricsTaskScheduler(TimeSpan.FromSeconds(60), Async Sub()
			Await Task.WhenAll(metrics.ReportRunner.RunAllAsync()) ' await task
	End Sub)
	scheduler.Start()
End Sub
VB   C#

この設定では、メトリクスが60秒ごとに報告されるようになり、システムが連続的なデータロギングで圧倒されることなく、一貫したパフォーマンス監視が保証されます。

IronPDFとAppMetricsの統合

C#アプリケーションでメトリクスおよびPDF生成を操作する際、AppMetrics C#とIronPDFを組み合わせると非常に有効です。 この統合により、メトリクスデータから直接PDF形式のレポートを生成することができます。これは、パフォーマンスレビュー、クライアントプレゼンテーション、または内部監査に非常に役立ちます。

IronPDFの紹介

IronPDFは、開発者がC#を使用してPDF文書を作成、読み取り、および編集できる包括的なライブラリです。 IronPDFが際立っている点は、その能力です。IronPDFでHTMLをPDFに変換するウェブベースのレポート生成に特に価値があります。 この機能は、レポートの視覚的な側面が保存され、ウェブから印刷形式まで高い忠実度を提供することを保証します。

IronPdfとAppMetrics C#をマージする使用例

ステークホルダーにアプリケーションの月次パフォーマンスレポートを提供する必要があるシナリオを考えてみてください。 これらのレポートには、応答時間、エラー率、ユーザーセッションなどの指標が含まれます。 オープンソースのAppMetrics C#を使用すると、これらのメトリクスをシームレスにキャプチャできます。 この機能をIronPDFと統合することで、これらの指標を自動的に生成し、きれいにフォーマットされたPDFドキュメントで配布することができます。

使用例のコード例

以下は、これを実装するための完全な例です。 この例では、プロジェクトにIronPDFとAppMetrics C#の両方が既にセットアップされていることを前提としています。

using App.Metrics;
using App.Metrics.Formatters.Prometheus;
using IronPdf;
public class MetricsToPdfConverter
{
    private readonly IMetricsRoot _metrics;
    public MetricsToPdfConverter(IMetricsRoot metrics)
    {
        _metrics = metrics;
    }
    public void GeneratePdfReport(string outputPath)
    {
        // Step 1: Capture the metrics snapshot
        var metricsData = _metrics.Snapshot.Get();
        var formatter = new MetricsPrometheusTextOutputFormatter();
        using var stream = new MemoryStream();
        formatter.WriteAsync(stream, metricsData).Wait();
        // Step 2: Convert the metrics snapshot to string format
        stream.Position = 0;
        var reader = new StreamReader(stream);
        var metricsText = reader.ReadToEnd();
        // Step 3: Use IronPDF to convert the metrics text to a PDF document
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1> Metrics Report </h1> <pre>" + metricsText + "</pre>");
        // Step 4: Save the PDF document
        pdf.SaveAs(outputPath);
    }
}
// Usage
var metrics = new MetricsBuilder().Build();
var pdfConverter = new MetricsToPdfConverter(metrics);
pdfConverter.GeneratePdfReport("MonthlyPerformanceReport.pdf");
using App.Metrics;
using App.Metrics.Formatters.Prometheus;
using IronPdf;
public class MetricsToPdfConverter
{
    private readonly IMetricsRoot _metrics;
    public MetricsToPdfConverter(IMetricsRoot metrics)
    {
        _metrics = metrics;
    }
    public void GeneratePdfReport(string outputPath)
    {
        // Step 1: Capture the metrics snapshot
        var metricsData = _metrics.Snapshot.Get();
        var formatter = new MetricsPrometheusTextOutputFormatter();
        using var stream = new MemoryStream();
        formatter.WriteAsync(stream, metricsData).Wait();
        // Step 2: Convert the metrics snapshot to string format
        stream.Position = 0;
        var reader = new StreamReader(stream);
        var metricsText = reader.ReadToEnd();
        // Step 3: Use IronPDF to convert the metrics text to a PDF document
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1> Metrics Report </h1> <pre>" + metricsText + "</pre>");
        // Step 4: Save the PDF document
        pdf.SaveAs(outputPath);
    }
}
// Usage
var metrics = new MetricsBuilder().Build();
var pdfConverter = new MetricsToPdfConverter(metrics);
pdfConverter.GeneratePdfReport("MonthlyPerformanceReport.pdf");
Imports App.Metrics
Imports App.Metrics.Formatters.Prometheus
Imports IronPdf
Public Class MetricsToPdfConverter
	Private ReadOnly _metrics As IMetricsRoot
	Public Sub New(ByVal metrics As IMetricsRoot)
		_metrics = metrics
	End Sub
	Public Sub GeneratePdfReport(ByVal outputPath As String)
		' Step 1: Capture the metrics snapshot
		Dim metricsData = _metrics.Snapshot.Get()
		Dim formatter = New MetricsPrometheusTextOutputFormatter()
		Dim stream = New MemoryStream()
		formatter.WriteAsync(stream, metricsData).Wait()
		' Step 2: Convert the metrics snapshot to string format
		stream.Position = 0
		Dim reader = New StreamReader(stream)
		Dim metricsText = reader.ReadToEnd()
		' Step 3: Use IronPDF to convert the metrics text to a PDF document
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf("<h1> Metrics Report </h1> <pre>" & metricsText & "</pre>")
		' Step 4: Save the PDF document
		pdf.SaveAs(outputPath)
	End Sub
End Class
' Usage
Private metrics = (New MetricsBuilder()).Build()
Private pdfConverter = New MetricsToPdfConverter(metrics)
pdfConverter.GeneratePdfReport("MonthlyPerformanceReport.pdf")
VB   C#

Appmetrics C#(開発者向けの仕組み): 図2 - PDFレポート出力

この統合により、レポート生成のプロセスが自動化されるだけでなく、レポートが読みやすく、専門的にフォーマットされるため、ステークホルダーミーティングやアーカイブの用途に最適です。

結論

Appmetrics C#(開発者向けの働き方):図3 - ライセンス

要約すると、AppMetrics C#とIronPDFを.NETプロジェクトに組み合わせることで、アプリケーション性能の監視と高品質なPDFレポートの生成の両方に対応する強力なソリューションを提供します。 この統合により、AppMetrics で詳細なパフォーマンスデータをキャプチャし、それを IronPDF を使用して明瞭でプロフェッショナルな形式で提示することがシームレスに可能になります。

IronPDFは、アプリケーション内でPDFファイルを処理しようとするC#開発者にとって特に有益です。 それはPDFドキュメントの作成および操作を簡素化し、HTMLを直接PDFに変換する独自の機能を提供します。 IronPDFをプロジェクトに組み込むことを検討している場合、提供していますIronPDFの無料トライアルはじめに、ライセンスは$749から始まり、コスト効果の高い方法でドキュメント処理機能を強化することができます。

< 以前
C# デコンストラクタ (開発者向けの仕組み)
次へ >
Mathnet.Numerics C#(開発者向けの動作方法)