在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
AppMetrics C#是一個強大的工具,專為簡化應用程式監控和性能分析而設計。 透過應用程式度量抽象,它簡化了追蹤應用程式各個方面的複雜性。 無論您使用的是 .NET Core 還是 .NET Framework,這個 .NET 庫都能讓您有效地記錄度量類型。 您可以檢索指標並利用 App Metrics 支援的指標類型來獲得全面的見解。
該.NET庫支持檢索指標,並允許您在指定的時間間隔内刷新指標,以確保及時收集數據。 它還提供了一個擴充方法,提供延展性點以增強靈活性。 作為跨平台解決方案,AppMetrics 適合多種環境,並確保一致的性能監控。
IronPDF:C# 開發者的先進 PDF 庫是 C# 開發人員的另一個重要程式庫,尤其是在處理 PDF 檔案時。 它能夠在 .NET Core 應用程式中直接建立、編輯和提取 PDF 檔案。 這在需要從您的應用程式生成報告、發票或任何其他 PDF 格式文件的情況下特別有用。
要將跨平台應用程式指標整合到您的 .NET 專案中,首先需要安裝 AppMetrics 庫。 您可以使用 NuGet 套件,這是 .NET 的套件管理工具。 在您的專案中,在 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
接下來,在相同檔案的 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
此設定會自動開始捕捉關於進入您應用程式的 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 起,提供經濟實惠的方式來增強您的文件處理能力。