.NET 帮助

Appmetrics C#(开发人员如何使用)

发布 2024年七月1日
分享:

AppMetrics C#是一款功能强大的工具,旨在简化应用程序监控和性能分析。 有了 App Metrics 摘要,就能简化跟踪应用程序各个方面所涉及的复杂性。 无论您使用的是 .NET Core 还是 .NET Framework,这个 .NET 库都能让您高效地记录度量类型。 您可以检索指标并利用 App Metrics 支持的指标类型来获得全面的见解。

.NET库支持检索指标,并允许您以指定的时间间隔刷新指标,确保及时收集数据。 它还提供了一种扩展方法,为增强灵活性提供了可扩展点。 作为一种跨平台解决方案,AppMetrics 适用于各种环境,并能确保一致的性能监控。

IronPDF:面向 C# 开发人员的高级 PDF 库是 C# 开发人员的另一个必备库,尤其是在处理 PDF 文档时。 它可以在 .NET Core 应用程序中直接创建、编辑和提取 PDF 文件。 这在您需要从应用程序生成报告、发票或其他 PDF 格式文件的情况下尤其有用。

开始使用 AppMetrics

要将跨平台 App Metrics 集成到 .NET 项目中,首先要安装 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 方法中添加以下代码:

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#

接下来,在同一文件的配置方法中,确保添加 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 请求的指标,如请求计数、请求持续时间和错误率。

实施 App Metrics 的功能

记录自定义指标

要创建和记录自定义指标或测量应用程序中的内容,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 秒报告一次,确保了性能监控的一致性,而不会因持续的数据记录而使系统不堪重负。

将 AppMetrics 与 IronPDF 集成

在您的 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 - 许可

总之,在您的 .NET 项目中将 AppMetrics C# 与 IronPDF 结合使用,可为监控应用程序性能和生成高质量 PDF 报告提供强大的解决方案。 通过这种集成,您可以从使用 AppMetrics 采集详细的性能数据无缝过渡到使用 IronPDF 以清晰、专业的格式展示这些数据。

IronPdf 尤其适合希望在应用程序中处理 PDF 文件的 C# 开发人员。 它简化了 PDF 文档的创建和操作,并提供将 HTML 直接转换为 PDF 的独特功能。 如果您正在考虑将 IronPDF 纳入到您的项目中,他们会提供一个免费试用 IronPDF许可证起价为 749 美元,是提高文档处理能力的经济高效的方法。

< 前一页
C# 析构器(开发者如何使用)
下一步 >
Mathnet.Numerics C#(它是如何为开发者工作的)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >