JF91.AppMetrics.InfluxDB2.Net7
1.0.0
ฉันได้สร้างแพ็คเกจนี้เพื่อให้คุณสามารถรวม App.Metrics เข้ากับ ASP WEB API ของคุณได้อย่างง่ายดายเพื่อส่งตัววัดที่รวบรวมไปยังเซิร์ฟเวอร์ InfluxDB2
การตั้งค่านั้นตรงไปตรงมามาก เพียงติดตั้งแพ็คเกจ Nuget เพิ่มส่วนการกำหนดค่าลงใน appsettings.json ของคุณ และแทรกบริการลงใน program.cs ของคุณ
โปรดปฏิบัติตามคำแนะนำอย่างระมัดระวัง
ติดตั้ง Nuget:
dotnet add package JF91.AppMetricsInfluxDB2 --version 1.2.0
appsettings.json
ของคุณและแก้ไขตามความต้องการของคุณ: "MetricsOptions": {
"DefaultContextLabel": "MyCustomContext",
"Enabled": true
},
"MetricsWebTrackingOptions": {
"ApdexTrackingEnabled": true,
"ApdexTSeconds": 0.1,
"IgnoredHttpStatusCodes": [ 404 ],
"IgnoredRoutesRegexPatterns": [],
"OAuth2TrackingEnabled": true
},
"MetricEndpointsOptions": {
"MetricsEndpointEnabled": true,
"MetricsTextEndpointEnabled": true,
"PingEndpointEnabled": true,
"EnvironmentInfoEndpointEnabled": true
},
"MetricsReportingInfluxDb2Options": {
"InfluxDb2": {
"BaseUri": "http://127.0.0.1:8086",
"Organization": "metrics",
"Bucket": "metrics",
"Token": "changeme"
},
"HttpPolicy": {
"BackoffPeriod": "0:0:30",
"FailuresBeforeBackoff": 5,
"Timeout": "0:0:40"
},
"ReportInterval": "0:0:1"
}
launchSettings.json
ของคุณ : "APPLICATION_NAME": "MyKickassApi"
builder.Build()
: builder.Services.AddMetricsServices();
builder.WebHost.AddInfluxDb2AppMetrics(builder.Configuration);
builder.Build()
: app.UseRequestsCounterMiddleware();
app.UseRequestsDurationMiddleware();
app.UseResponsesSizeMiddleware();
app.UseResponsesApdexMiddleware();
app.UseMetricsAllMiddleware();
app.UseMetricsAllEndpoints();
app.Run()
: app.UseHttpStatusCodesCounterMiddleware();
1 - สร้างมิดเดิลแวร์สกัดกั้น
2 - ฉีด IMetrics
;
public class MyNewMetricMiddleware
{
private readonly RequestDelegate _next;
private readonly IMetrics _metrics;
public MyNewMetricMiddleware(RequestDelegate next, IMetrics metrics)
{
_next = next;
_metrics = metrics;
}
public async Task InvokeAsync(HttpContext context)
{
try
{
await _next(context);
var tags = new MetricTags
(
new[] { "Tag1-Key", "Tag2-Key" },
new[] { "Tag1-Value, "Tag2-Value }
);
_metrics.Measure.Counter.Increment
(
new CounterOptions
{
Name = "my-new-metric",
Context = "my-new-context",
MeasurementUnit = Unit.Calls,
Tags = tags
}
);
}
catch (Exception ex)
{
}
}
}
3 - เพิ่มมิดเดิลแวร์ให้กับไปป์ไลน์ของแอป:
builder.UseMiddleware();
1 - ฉีด IMetrics
เข้าไปในคอนโทรลเลอร์:
public WeatherForecastController(ILogger logger, IMetrics metrics)
{
_logger = logger;
_metrics = metrics;
}
2 - ใช้ IMetrics
:
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable Get()
{
var tags = new MetricTags
(
new[] { "Tag1-Key", "Tag2-Key" },
new[] { "Tag1-Value, "Tag2-Value }
);
_metrics.Measure.Counter.Increment
(
new CounterOptions
{
Name = "my-new-metric",
Context = "my-new-context",
MeasurementUnit = Unit.Calls,
Tags = tags
}
);
return Enumerable.Range(1, 5).Select
(
index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
}
)
.ToArray();
}