在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
AppMetrics C#是一款功能强大的工具,旨在简化应用程序监控和性能分析。 有了 App Metrics 摘要,就能简化跟踪应用程序各个方面所涉及的复杂性。 无论您使用的是 .NET Core 还是 .NET Framework,这个 .NET 库都能让您高效地记录度量类型。 您可以检索指标并利用 App Metrics 支持的指标类型来获得全面的见解。
.NET库支持检索指标,并允许您以指定的时间间隔刷新指标,确保及时收集数据。 它还提供了一种扩展方法,为增强灵活性提供了可扩展点。 作为一种跨平台解决方案,AppMetrics 适用于各种环境,并能确保一致的性能监控。
IronPDF:面向 C# 开发人员的高级 PDF 库是 C# 开发人员的另一个必备库,尤其是在处理 PDF 文档时。 它可以在 .NET Core 应用程序中直接创建、编辑和提取 PDF 文件。 这在您需要从应用程序生成报告、发票或其他 PDF 格式文件的情况下尤其有用。
要将跨平台 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
该命令将所有必要的依赖项添加到您的项目中,使您可以开始配置 AppMetrics。
以下是如何使用 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
接下来,在同一文件的配置方法中,确保添加 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
此设置会自动开始捕获有关传入应用程序的 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
在这段代码中,每次调用 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
该计时器记录了 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
监控系统内存使用情况对于性能调整至关重要。 以下是如何跟踪免费内存:
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
该工具可测量应用程序的可用内存,帮助您了解内存消耗模式。
可以对 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
该配置将指标设置为每 60 秒报告一次,确保了性能监控的一致性,而不会因持续的数据记录而使系统不堪重负。
在您的 C# 应用程序中处理度量和 PDF 生成时,将 AppMetrics C# 与 IronPDF 结合使用将大有裨益。 通过这一集成,您可以直接根据度量数据生成 PDF 格式的报告,这对于绩效考核、客户演示甚至内部审计都非常有用。
IronPDF 是一个综合库,使开发人员能够使用 C# 创建、阅读和编辑 PDF 文档。 IronPDF 的与众不同之处在于它能够使用 IronPDF 将 HTML 转换为 PDF此外,译文还必须具有可读性,使其对基于网络的报告生成尤其有价值。 这种能力可确保保留报告的视觉效果,提供从网页到印刷形式的高度保真度。
假设您需要向利益相关者提供应用程序的月度性能报告。 这些报告包括响应时间、错误率、用户会话等指标。 使用开源 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")
这种集成不仅能使报告生成过程自动化,还能确保报告易于阅读且格式专业,非常适合任何利益相关者会议或存档之用。
总之,在您的 .NET 项目中将 AppMetrics C# 与 IronPDF 结合使用,可为监控应用程序性能和生成高质量 PDF 报告提供强大的解决方案。 通过这种集成,您可以从使用 AppMetrics 采集详细的性能数据无缝过渡到使用 IronPDF 以清晰、专业的格式展示这些数据。
IronPdf 尤其适合希望在应用程序中处理 PDF 文件的 C# 开发人员。 它简化了 PDF 文档的创建和操作,并提供将 HTML 直接转换为 PDF 的独特功能。 如果您正在考虑将 IronPDF 纳入到您的项目中,他们会提供一个免费试用 IronPDF许可证起价为 749 美元,是提高文档处理能力的经济高效的方法。