Add BizTalk endpoint reachability monitoring
This commit is contained in:
@@ -101,6 +101,8 @@ namespace BizTalkCheckmkPulse
|
||||
Applications = new List<ApplicationRuntimeState>();
|
||||
SqlTargets = new List<SqlAccessState>();
|
||||
EventLog = new EventLogState();
|
||||
EndpointCandidates = new List<EndpointCandidate>();
|
||||
EndpointConnectivity = new EndpointConnectivityState();
|
||||
}
|
||||
|
||||
public List<ProbeDiagnostic> Diagnostics { get; private set; }
|
||||
@@ -114,6 +116,8 @@ namespace BizTalkCheckmkPulse
|
||||
public string ExecutionIdentity { get; set; }
|
||||
public string NetworkIdentityHint { get; set; }
|
||||
public EventLogState EventLog { get; private set; }
|
||||
public List<EndpointCandidate> EndpointCandidates { get; private set; }
|
||||
public EndpointConnectivityState EndpointConnectivity { get; private set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -236,4 +240,116 @@ namespace BizTalkCheckmkPulse
|
||||
public DateTime Since { get; set; }
|
||||
public string Failure { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rohdaten eines BizTalk-Transports aus einer bereits ausgefuehrten Runtime-Abfrage.
|
||||
/// Vollstaendige URIs werden nur im Speicher gehalten und weder persistiert noch ausgegeben.
|
||||
/// </summary>
|
||||
internal sealed class EndpointCandidate
|
||||
{
|
||||
public string ArtifactType { get; set; }
|
||||
public string ApplicationName { get; set; }
|
||||
public string ArtifactName { get; set; }
|
||||
public string TransportRole { get; set; }
|
||||
public string AdapterName { get; set; }
|
||||
public string Address { get; set; }
|
||||
public bool Active { get; set; }
|
||||
public bool Dynamic { get; set; }
|
||||
|
||||
public string Key
|
||||
{
|
||||
get
|
||||
{
|
||||
return EndpointCatalogEntry.BuildKey(
|
||||
ArtifactType,
|
||||
ApplicationName,
|
||||
ArtifactName,
|
||||
TransportRole);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ein geheimnisfreier, lokal persistierbarer Netzwerk-Endpunkt.
|
||||
/// </summary>
|
||||
internal sealed class EndpointCatalogEntry
|
||||
{
|
||||
public string Key { get; set; }
|
||||
public string ArtifactType { get; set; }
|
||||
public string ApplicationName { get; set; }
|
||||
public string ArtifactName { get; set; }
|
||||
public string TransportRole { get; set; }
|
||||
public string AdapterName { get; set; }
|
||||
public string Protocol { get; set; }
|
||||
public string Host { get; set; }
|
||||
public int Port { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public bool AutoDiscovered { get; set; }
|
||||
|
||||
public static string BuildKey(string artifactType, string applicationName, string artifactName, string transportRole)
|
||||
{
|
||||
return NormalizeKeyPart(artifactType)
|
||||
+ "|" + NormalizeKeyPart(applicationName)
|
||||
+ "|" + NormalizeKeyPart(artifactName)
|
||||
+ "|" + NormalizeKeyPart(transportRole);
|
||||
}
|
||||
|
||||
private static string NormalizeKeyPart(string value)
|
||||
{
|
||||
return (value ?? string.Empty).Trim().ToUpperInvariant();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Versionierter Inhalt der automatisch gepflegten lokalen Endpoint-Konfiguration.
|
||||
/// </summary>
|
||||
internal sealed class EndpointCatalog
|
||||
{
|
||||
public EndpointCatalog()
|
||||
{
|
||||
Entries = new List<EndpointCatalogEntry>();
|
||||
}
|
||||
|
||||
public DateTime SynchronizedUtc { get; set; }
|
||||
public string MachineName { get; set; }
|
||||
public string EnvironmentName { get; set; }
|
||||
public int ActiveCandidates { get; set; }
|
||||
public int UnsupportedCandidates { get; set; }
|
||||
public List<EndpointCatalogEntry> Entries { get; private set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ergebnis einer einzelnen TCP- beziehungsweise UDP-Netzwerkprobe.
|
||||
/// </summary>
|
||||
internal sealed class EndpointProbeResult
|
||||
{
|
||||
public EndpointCatalogEntry Endpoint { get; set; }
|
||||
public bool Available { get; set; }
|
||||
public long DurationMilliseconds { get; set; }
|
||||
public string Failure { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggregierter Zustand des Endpoint-Katalogs und aller aktiven Netzwerkprobes.
|
||||
/// </summary>
|
||||
internal sealed class EndpointConnectivityState
|
||||
{
|
||||
public EndpointConnectivityState()
|
||||
{
|
||||
Results = new List<EndpointProbeResult>();
|
||||
}
|
||||
|
||||
public bool Disabled { get; set; }
|
||||
public bool CatalogAvailable { get; set; }
|
||||
public bool RuntimeStateAvailable { get; set; }
|
||||
public bool RefreshRequired { get; set; }
|
||||
public bool RefreshSucceeded { get; set; }
|
||||
public DateTime? CatalogSynchronizedUtc { get; set; }
|
||||
public int Configured { get; set; }
|
||||
public int Active { get; set; }
|
||||
public int SkippedInactive { get; set; }
|
||||
public int UnsupportedActive { get; set; }
|
||||
public string Failure { get; set; }
|
||||
public List<EndpointProbeResult> Results { get; private set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user