在ASP.NET Core中,我们可以使用Microsoft.Extensions.Diagnostics.HealthChecks和Microsoft.AspNetCore.Diagnostics.HealthChecks这两个包来获取指标值。以下是一个使用这些包获取指标值的示例:
services.AddHealthChecks();
services.AddHealthChecks()
.AddCheck
public class CustomHealthCheck : IHealthCheck
{
public Task
// return the value you want to expose as metric
return Task.FromResult(result);
}
}
[ApiController] [Route("[controller]")] public class MetricsController : ControllerBase { private readonly IHealthChecksBuilder healthChecksBuilder;
public MetricsController(IHealthChecksBuilder healthChecksBuilder)
{
this.healthChecksBuilder = healthChecksBuilder ?? throw new ArgumentNullException(nameof(healthChecksBuilder));
}
[HttpGet]
public async Task Get()
{
var result = await healthChecksBuilder.CheckHealthAsync();
return Ok(result.Entries["custom_check"].Status);
}
}
一旦以上代码完成,可以通过访问“/Metrics”端点来获取自定义指标返回的值。在此示例中,我们只公开了一个指标,但是可以添加任意多个自定义检查来确定指标中的更多值。