【发布时间】:2020-12-11 04:36:21
【问题描述】:
我有 2 个托管服务,必须检查彼此的健康状况。 如何在 C# 控制台应用程序(托管服务)中实现健康检查。 检查托管服务的健康状况的参数是什么。
【问题讨论】:
标签: c# asp.net-core-hosted-services health-check
我有 2 个托管服务,必须检查彼此的健康状况。 如何在 C# 控制台应用程序(托管服务)中实现健康检查。 检查托管服务的健康状况的参数是什么。
【问题讨论】:
标签: c# asp.net-core-hosted-services health-check
如果您可以选择通过 HTTP 进行健康检查,我建议您查看 .Net Core 的内置健康检查功能。它在您的应用程序中设置了一个 REST 端点,您还可以在其中实现自定义健康检查行为。
见:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?view=aspnetcore-3.1
从技术上讲,您可以通过另一个托管服务调用暴露的健康检查 API。
您可以将健康检查端点添加到您的每个托管服务。然后每个服务都可以访问,为什么 HTTP/REST 和服务 A 可以调用服务 B 的健康检查 API,反之亦然。
例如然后服务 B 向 http://service-a-base-url/health 和服务 A 向 http://service-b-base-url/health 发出 http 请求
如果两个服务都在同一主机上运行,您可以使用端口过滤,以便每个服务运行状况检查端点侦听不同的端口。在这两种情况下,您也可以使用 localhost 作为主机名,只是使用不同的端口。另请参阅此答案:https://stackoverflow.com/a/57906886/7730554
注意:如果这是关于监控您的应用程序,我建议考虑使用一些监控服务来集中监控方法,而不是让您自己的应用程序进行健康检查以进行监控。
【讨论】: