Aspire 9.1服务返回Unhealthy状态,Aspire仪表盘未同步显示
问题原因及解决办法
核心原因
Aspire仪表盘默认基于**就绪检查(ready标签)**判定服务健康状态,而你修改的健康检查仅绑定了["live"](存活检查)标签。存活检查主要用于判断服务是否仍在运行(比如K8s的存活探针场景),但Aspire仪表盘默认不将其作为服务健康状态的判定依据,所以即便/alive接口返回Unhealthy,仪表盘依然会显示绿色健康状态。
解决步骤
给自定义健康检查添加
ready标签
修改代码,让标签数组同时包含live和ready:.AddCheck("self", static () => HealthCheckResult.Unhealthy(), ["live", "ready"]);这样Aspire仪表盘就能采集到该检查的结果,从而正确显示服务的不健康状态。
调整Aspire健康检查采集规则(可选)
如果不想修改检查标签,可在服务的健康检查配置中指定Aspire采集live标签的结果:builder.Services.AddAspireHealthChecks() .AddCheck("self", static () => HealthCheckResult.Unhealthy(), ["live"]) .AddHealthChecksPublisher<AspireHealthCheckPublisher>(options => { options.HealthStatusCheckTags = new[] { "live" }; });
补充说明
你调用/health或/alive能返回正确状态,是因为这两个接口的逻辑不同:
/health默认返回所有健康检查的结果(包含live标签的检查)/alive仅返回带有live标签的检查结果
但Aspire仪表盘的状态展示逻辑独立于这些接口,它默认依赖ready标签的检查结果来更新服务状态。
内容的提问来源于stack exchange,提问作者Iaman Swtrse
相关产品推荐
相关产品推荐

