Support for degraded health
HealthCheckService only return if a server is only healthy or unhealthy.
degraded is a status which a server is able to receive traffic but it is slow or unstable.
https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.diagnostics.healthchecks.healthstatus?view=net-8.0#fields
https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/degraded
For example, we may regard a server as degraded if CPU hits over a certain usage. This option will be useful when the health check is successful but the node has a problem and should be excluded from the service cluster.
I've made a PR for above issue. It's not fully complete so we may add more ideas on top of the it. 😄