mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 12:59:39 -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();
|
var settings = await settingsProvider.GetSettingsAsync();
|
||||||
if (settings == null)
|
if (settings == null)
|
||||||
{
|
{
|
||||||
return HealthCheckResult.Healthy("Plex is not confiured.");
|
return HealthCheckResult.Healthy("Plex is not configured.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var taskResult = new List<Task<PlexStatus>>();
|
var taskResult = new List<Task<PlexStatus>>();
|
||||||
|
|
|
@ -18,39 +18,8 @@ namespace Ombi.HealthChecks
|
||||||
builder.AddCheck<RadarrHealthCheck>("Radarr", tags: new string[] { "DVR" });
|
builder.AddCheck<RadarrHealthCheck>("Radarr", tags: new string[] { "DVR" });
|
||||||
builder.AddCheck<CouchPotatoHealthCheck>("CouchPotato", tags: new string[] { "DVR" });
|
builder.AddCheck<CouchPotatoHealthCheck>("CouchPotato", tags: new string[] { "DVR" });
|
||||||
builder.AddCheck<SickrageHealthCheck>("SickRage", 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;
|
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