dotnet / dotnet/aspnetcore

Provide common IHealthCheckPublisher implementation

Open
#53,670 7 comments 0 reactions 0 assignees View on GitHub
area-healthchecks design-proposal
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 10h
Merged PRs (30d)
281

Description

## Summary

I want to have some general Health publisher's available which publish to common targets ie log file, System.Diagnostic.

## Motivation and goals

I want to make it as easy as possible for developers to be able record the results of the configured health checks and monitor them over time. It should not matter if on-premise or cloud software.

With this change I will be able to collect log files from site & to see what the health has been for a period of time. Note A key thing would be to ensure that appropriate log levels are used

## In scope

Release of new nuget package
- Microsoft.Extensions.Diagnostics.HealthChecks.Publishers.Logger which is used to write health info to logs during development & offline cases etc
- Microsoft.Extensions.Diagnostics.HealthChecks.Publishers.DiagnosticticSource which is used to write health info as metrics and can then be processed by other tools ie otel collectors

## Out of scope

Supporting any logger other Microsoft.Extensions.Logger

## Examples

The idea is to make it as simple for developer to enable and as such the idea would be:
```
builder.Services.AddHealthPublisherLogger();
```
Or

```
builder.Services.AddHealthPublisherDiagnosticSource();
```

Obviously it should be possible to define the HealthCheckPublisherOptions just like if it was explicitly added.

# Detailed design

To eliminate log spam The following mapping of the health status is needed.
- **Error** first instance of a failure
- **Warning** subsequent instance of a failed health check
- **Info** first instance of a service going healthy
- **Debug** subsequent instance of a healthy health check

For diagnostic source the key thing is all the attributes of report data are exposed as attributes.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.