Phi*_*l S 4 c# azure azure-functions health-check dotnet-isolated
我正在努力寻找有关如何在 Azure 中为 .NET 6 Core 功能应用程序设置运行状况检查的任何最新文档。
该应用程序在应用程序服务计划(而不是消耗)内以 DOTNET-ISOLATED 运行。
本文档解释了如何在 Azure 中设置运行状况检查部分(足够简单)。
但它没有从代码角度解释任何地方需要在函数应用程序端运行什么。有各种各样的健康检查东西可用,但它们似乎都是针对 WebApi 的,或者没有 .NET 6 的示例。
对于 WebApi 来说这很容易做到(只需几句俏皮话),但对于他们自己的函数应用程序却不是这样,这似乎很愚蠢?
这看起来很简单,但似乎只适用于消费计划?
我已经查看了一些关于 .NET 5 的文章和答案,包括这篇文章和答案,但它缺乏细节,并且似乎不是对 .NET 6 的明显翻译?
有人有一些工作代码的示例吗?健康检查需要多深入?我可以只编写一个返回 200 并将 Azure 指向它的简单函数吗?
经过相当多的摸索之后,我最终想出了这个,这似乎可以完成工作。
首先,安装nuget包:
Microsoft.Extensions.Diagnostics.HealthChecks
版本 6.0.15
将其添加到您的启动/HostBuilder
services.AddHealthChecks();
Run Code Online (Sandbox Code Playgroud)
然后添加一个类似这样的函数:
using Microsoft.AspNetCore.Routing;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Grpc.Core;
namespace MyFunctionAppNameSpace
{
public class HealthCheck
{
private readonly HealthCheckService _healthCheck;
public HealthCheck(HealthCheckService healthCheck)
{
_healthCheck = healthCheck;
}
[Function(nameof(HealthCheck))]
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "health")] HttpRequestData req,
FunctionContext context)
{
var healthStatus = await _healthCheck.CheckHealthAsync();
return new OkObjectResult(Enum.GetName(typeof(HealthStatus), healthStatus.Status));
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,在 Azure 中设置运行状况检查(部署代码后,如果使用插槽,请多次设置):
希望这可以避免其他人的麻烦......
| 归档时间: |
|
| 查看次数: |
2786 次 |
| 最近记录: |