mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-14 10:36:54 -07:00
fix(healthchecks): Removed redundant ping check
This commit is contained in:
parent
de4baade9f
commit
1751305064
4 changed files with 1 additions and 95 deletions
|
@ -1,47 +0,0 @@
|
|||
using HealthChecks.Network;
|
||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ombi.HealthChecks.Checks
|
||||
{
|
||||
public class OmbiPingHealthCheck
|
||||
: IHealthCheck
|
||||
{
|
||||
private readonly OmbiPingHealthCheckOptions _options;
|
||||
public OmbiPingHealthCheck(OmbiPingHealthCheckOptions options)
|
||||
{
|
||||
_options = options ?? throw new ArgumentNullException(nameof(options));
|
||||
}
|
||||
public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var configuredHosts = _options.ConfiguredHosts.Values;
|
||||
|
||||
try
|
||||
{
|
||||
foreach (var (host, timeout, status) in configuredHosts)
|
||||
{
|
||||
using (var ping = new Ping())
|
||||
{
|
||||
var pingReply = await ping.SendPingAsync(host, timeout);
|
||||
|
||||
if (pingReply.Status != IPStatus.Success)
|
||||
{
|
||||
return new HealthCheckResult(status, description: $"Ping check for host {host} is failed with status reply:{pingReply.Status}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return HealthCheckResult.Healthy();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new HealthCheckResult(context.Registration.FailureStatus, exception: ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ombi.HealthChecks.Checks
|
||||
{
|
||||
public class OmbiPingHealthCheckOptions
|
||||
{
|
||||
internal Dictionary<string, (string Host, int TimeOut, HealthStatus status)> ConfiguredHosts { get; } = new Dictionary<string, (string, int, HealthStatus)>();
|
||||
|
||||
public OmbiPingHealthCheckOptions AddHost(string host, int timeout, HealthStatus status)
|
||||
{
|
||||
ConfiguredHosts.Add(host, (host, timeout, status));
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -27,7 +27,7 @@ namespace Ombi.HealthChecks.Checks
|
|||
var settings = await settingsProvider.GetSettingsAsync();
|
||||
if (settings == null)
|
||||
{
|
||||
return HealthCheckResult.Healthy("Plex is not confiured.");
|
||||
return HealthCheckResult.Healthy("Plex is not configured.");
|
||||
}
|
||||
|
||||
var taskResult = new List<Task<PlexStatus>>();
|
||||
|
|
|
@ -18,39 +18,8 @@ namespace Ombi.HealthChecks
|
|||
builder.AddCheck<RadarrHealthCheck>("Radarr", tags: new string[] { "DVR" });
|
||||
builder.AddCheck<CouchPotatoHealthCheck>("CouchPotato", tags: new string[] { "DVR" });
|
||||
builder.AddCheck<SickrageHealthCheck>("SickRage", tags: new string[] { "DVR" });
|
||||
builder.AddOmbiPingHealthCheck(options =>
|
||||
{
|
||||
options.AddHost("www.google.co.uk", 5000, HealthStatus.Unhealthy);
|
||||
options.AddHost("www.google.com", 3000, HealthStatus.Degraded);
|
||||
}, "External Ping", tags: new string[] { "System" });
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add a health check for network ping.
|
||||
/// </summary>
|
||||
/// <param name="builder">The <see cref="IHealthChecksBuilder"/>.</param>
|
||||
/// <param name="setup">The action to configure the ping parameters.</param>
|
||||
/// <param name="name">The health check name. Optional. If <c>null</c> the type name 'ping' will be used for the name.</param>
|
||||
/// <param name="failureStatus">
|
||||
/// The <see cref="HealthStatus"/> that should be reported when the health check fails. Optional. If <c>null</c> then
|
||||
/// the default status of <see cref="HealthStatus.Unhealthy"/> will be reported.
|
||||
/// </param>
|
||||
/// <param name="tags">A list of tags that can be used to filter sets of health checks. Optional.</param>
|
||||
/// <param name="timeout">An optional System.TimeSpan representing the timeout of the check.</param>
|
||||
/// <returns>The <see cref="IHealthChecksBuilder"/>.</returns></param>
|
||||
public static IHealthChecksBuilder AddOmbiPingHealthCheck(this IHealthChecksBuilder builder, Action<OmbiPingHealthCheckOptions> setup, string name = default, HealthStatus? failureStatus = default, IEnumerable<string> tags = default, TimeSpan? timeout = default)
|
||||
{
|
||||
var options = new OmbiPingHealthCheckOptions();
|
||||
setup?.Invoke(options);
|
||||
|
||||
return builder.Add(new HealthCheckRegistration(
|
||||
name,
|
||||
sp => new OmbiPingHealthCheck(options),
|
||||
failureStatus,
|
||||
tags,
|
||||
timeout));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue