问题标签 [health-check]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何@Inject 实现到接口(CDI)
我正在开发一个 API(后端项目),它使用一些包含共享源代码的公共/共享库。所以,我正在开发一个将添加到我们所有后端的功能,这都是我的上下文。
此 API 基于 Jersey 2.x、Jackson、CDI 1.2、JPA、Hibernate 等,配置为部署在 Weblogic 12c 上,并且该项目是使用 Maven 创建的。
所以,我正在研究一个简单的案例:我在适当的公共库 (ref-common) 中创建了一个“接口”(以确保我们的 API 实现相同的接口)并在 API 中创建了实现(war)。
界面(位于库中):
实现(位于战争中):
第二次,我创建了一种基于 dropwizard 的 healthCheck,它将被我们所有的 API(位于库中)使用:
配置(位于 API 中):
部署 API 时出现问题:
API 的 pom.xml 提取(ref-common 包含接口和运行状况检查):
基本上,API 与共享库一起打包并部署在 weblo 上。
考虑到,我在没有@nnotation 的情况下发布了“ApplicationPropertiesImpl”,因为我尝试了@ApplicationScope 和@Singleton,但是因为两者都不起作用,所以我尝试了没有任何@annotation。
那么,您能否解释一下为什么在部署 API 时会出现此错误,因为我不明白我的错误。
提前致谢。
c# - 请参阅 .NET 健康检查详细信息
我已.NET Health Checks
在我的应用程序上启用。我给支票起一个名字,并根据支票的结果添加一条消息。下面的示例显示了调用的检查以及返回健康结果时Test Health Check
的消息。Server Is Healthy!
当我访问 api 端点时,我只看到Healthy
. 我在哪里可以看到有关支票的更多详细信息?
amazon-web-services - 如何添加运行状况检查以检查我在 aws autoscale 中的实例是否与另一个独立实例建立了成功连接
目前,我有多个实例在 AWS 自动缩放组下运行,该组轮询来自 AWS SQS 的消息。我的实例需要在开始处理传入消息之前与另一个实例建立连接。
有时会发生我的一个实例无法建立连接,我想在这里添加一个健康检查来监控连接状态并以此终止实例。我认为默认的 EC2 运行状况检查无法解决这种情况。
有什么方法可以添加运行状况检查来处理上述情况。
c# - 根据标签运行某些 .NET Core 运行状况检查
我将 .NET Core Health Checks 添加到我的应用程序中。
如果它是基本检查或所有检查,我想使用标签只运行一次检查以进行更详细的检查。
这就是我所拥有的:
我认为我的 URL 应该是这样的:
或者
但情况似乎并非如此。如何运行每项检查?
c# - ASP.NET Core 运行状况检查:返回预评估结果
我正在评估使用Microsoft Health Checks来改进我们内部负载均衡器的路由。到目前为止,我对这个特性和它周围的社区所提供的功能非常满意。但是,我还没有找到一件事,想问一下是否可以开箱即用:
健康检查似乎会在收到请求后立即检索自己的状态。但是因为我们的服务在特定时刻可能很难处理大量请求,所以对 SQL Server 等第三方组件的查询可能需要时间来响应。因此,我们希望定期(例如每隔几秒)预先评估健康检查,并在调用健康检查 api 时返回该状态。
原因是,我们希望我们的负载均衡器尽快获得健康状态。对于我们的用例来说,使用预先评估的结果似乎已经足够了。
现在的问题是:是否可以在 ASP.NET Core 健康检查中添加一种“轮询”或“自动更新”机制?或者这是否意味着我必须从定期预先评估结果的后台服务执行我自己的健康检查返回值?
请注意,我想对每个请求使用预先评估的结果,而不是 HTTP 缓存,其中为下一个请求缓存实时结果。
asp.net-core - 如何在 Controller 中调用 DotNet Core API HealthCheck 探针,而不是在 Ctartup.cs 中设置
我想设置 Microsoft.Extensions.Diagnostics.HealthChecks 以便我可以在控制器中设置响应主体,而不是在 Startup.cs 中设置标准设置。这可能吗?如果是这样,我怎样才能做到这一点?
这里的想法是我想控制响应负载设置器逻辑,并在控制器操作/方法中执行此操作。
在线包含有关如何设置健康检查探针的明确说明,但所有示例都显示了在 Startup.cs 中进行的设置。
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks?view=aspnetcore-3.1
探针是否仅在启动时严格设置?这是一个约束吗?
我的理解是,healthcheck 库是中间件,它将终止请求,使其不再进入中间件管道,并且可能删除中间件意味着在启动时设置的任何内容现在都必须在控制器操作方法中设置。
google-cloud-platform - 如何查看 GCP HealthCheck 日志
我在我的 GCP 项目中为 http 流量创建了一个运行状况检查。我想查看 Cloud Logging 中的日志,但我看不到任何与创建的 HealthCheck 相关的日志。我在 HealthCheck 中启用了日志记录。谁能帮我?
spring-boot - Kafka消费者健康检查和重新创建
我们在一个项目中使用 Spring Kafka Client。最近我们注意到,如果一个 Kafka Consumer 因 OutOfMemoryError 而死,服务继续正常运行并且没有新的消费者被创建。解决此问题的唯一方法是在日志中监控 OOM 并手动重新启动服务。我们正在寻找一种使消费者娱乐自动化的方法,例如:
- 强制 Spring(以某种方式)检测死亡的消费者并在运行时创建新的消费者。
- 如果消费者线程中的 OOM 会杀死整个服务,以便 AWS 自动缩放组可以创建该服务的新实例。
任何建议或想法表示赞赏。谢谢!
azure - Azure 上的 Kubernetes - 活跃度和就绪度探测失败 - 活跃度探测失败并连接:连接被拒绝
我是 Azure 部署、kubernetes 和 HA 实现的菜鸟。当我将运行状况探测作为应用程序部署的一部分实施时,运行状况探测失败,当我尝试通过 URL 访问应用程序时出现 503(内部服务器错误)或 502(错误网关)错误。当我删除运行状况探测时,我可以使用其 URL 成功访问该应用程序。
在实施 Azure devops 管道使用的运行状况探测时,我使用以下 yaml 部署配置。该应用程序在 5 分钟内即可使用,因此我将initialDelaySeconds
运行状况探测的设置为300s
.
当我执行部署并描述 pod 时,我会在输出底部的“事件”下看到以下内容:
(这令人困惑,因为它将年龄声明为 2m1s - 但initialDelaySeconds
大于这 - 所以我不确定它为什么将其报告为年龄)
就绪探测随后失败并出现相同的错误。IP 号与我的 pod 的 IP 匹配,我Containers
在 pod 描述中看到了这一点:
liveness 和 readiness 探针的失败会导致 Pod 不断地被终止和重新启动。
该应用程序有一个默认index.html
页面,所以我相信如果健康探测能够连接,它应该会收到 200 响应。
由于运行状况探测失败,因此 pod IP 不会分配给端点对象,因此不会分配给服务。
如果我从部署中注释掉readinessProbe
and livenessProbe
,当我通过浏览器使用 URL 时,应用程序会成功运行,并且 pod IP 会成功分配为服务可以与之通信的端点。端点地址的格式为 10.123.1.23:5000 - 即端口 5000 似乎是 pod 的正确端口。
我不明白为什么健康探测器无法连接?对我来说,它应该尝试连接一个看起来像 10.123.1.23:5000 的 IP,这看起来是正确的。
端口可能需要超过 300 秒才能打开,但我不知道有什么方法可以检查。如果我在 pod 上输入 bash 会话,watch
则不可用(我读到它watch ss -lnt
可用于检查端口可用性)。
以下答案建议增加initialDelaySeconds
,但我已经尝试过 - https://stackoverflow.com/a/51932875/1549918
我看到了这个问题 - 但资源利用率(例如 CPU/RAM)不是问题 活跃度和就绪性探测连接被拒绝
更新
如果我从 pod 的副本 curl 到https://10.123.1.23:5000,我会收到类似的错误 ( Failed to connect to ...the IP.. port 5000: Connection refused
)。为什么这会失败?我读到了一些内容,表明尝试从另一个 pod 进行此连接也可能表明运行状况探测的可达性。