mirror of
https://github.com/bitwarden/server.git
synced 2025-07-02 00:22:50 -05:00

* health check services added * health check extension added * added get connection string * made changes to hrslth check method * Added database health check * added identity server health check * added identity server health check * Added logger publisher * latest changes * removed file * Added mail server check for dev * Added authorization to health check url path * commented * Added exception to switch * Removed exclude code coverage * Added health check for redis * Added todos * Added storage queue checks * Added checks for mail * Removed unused references and fixed linting issue * Lint issues * Moved healthchecks to sharedWeb project and exposed builder as a parameter to configure more health checks based on a project * Added health check to API project * dependencies updated * Removed ef core health check dependencies * Added checks to only add a health check when the connection string exists, moved health check from startup to extension class * Merged with master and fixed conflicts * Fixed lint issues * Added check for amazon ses * merged with master * fixed lint * Removed Amazon SES health check
61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
using System.Text;
|
|
using System.Text.Json;
|
|
using Bit.Core.Settings;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
|
|
|
namespace Bit.SharedWeb.Health;
|
|
|
|
public static class HealthCheckServiceExtensions
|
|
{
|
|
public static void AddHealthCheckServices(this IServiceCollection services, GlobalSettings globalSettings,
|
|
Action<IHealthChecksBuilder> addBuilder = null)
|
|
{
|
|
var builder = services.AddHealthChecks();
|
|
addBuilder?.Invoke(builder);
|
|
}
|
|
|
|
public static Task WriteResponse(HttpContext context, HealthReport healthReport)
|
|
{
|
|
context.Response.ContentType = "application/json; charset=utf-8";
|
|
|
|
var options = new JsonWriterOptions { Indented = true };
|
|
|
|
using var memoryStream = new MemoryStream();
|
|
using (var jsonWriter = new Utf8JsonWriter(memoryStream, options))
|
|
{
|
|
jsonWriter.WriteStartObject();
|
|
jsonWriter.WriteString("status", healthReport.Status.ToString());
|
|
jsonWriter.WriteStartObject("results");
|
|
|
|
foreach (var healthReportEntry in healthReport.Entries)
|
|
{
|
|
jsonWriter.WriteStartObject(healthReportEntry.Key);
|
|
jsonWriter.WriteString("status",
|
|
healthReportEntry.Value.Status.ToString());
|
|
jsonWriter.WriteString("description",
|
|
healthReportEntry.Value.Description ?? healthReportEntry.Value.Exception?.Message);
|
|
jsonWriter.WriteStartObject("data");
|
|
|
|
foreach (var item in healthReportEntry.Value.Data)
|
|
{
|
|
jsonWriter.WritePropertyName(item.Key);
|
|
|
|
JsonSerializer.Serialize(jsonWriter, item.Value,
|
|
item.Value?.GetType() ?? typeof(object));
|
|
}
|
|
|
|
jsonWriter.WriteEndObject();
|
|
jsonWriter.WriteEndObject();
|
|
}
|
|
|
|
jsonWriter.WriteEndObject();
|
|
jsonWriter.WriteEndObject();
|
|
}
|
|
|
|
return context.Response.WriteAsync(
|
|
Encoding.UTF8.GetString(memoryStream.ToArray()));
|
|
}
|
|
}
|