Freigeben über


JournaledGrain-Diagnostik

Überwachen von Verbindungsfehlern

Standardmäßig sind Protokollkonsistenzanbieter unter Verbindungsfehlern (einschließlich Verbindungen mit Speicher und Verbindungen zwischen Clustern) widerstandsfähig. Das bloße Tolerieren von Fehlern reicht jedoch nicht aus. Anwendungen müssen diese Probleme in der Regel überwachen und sie bei schwerwiegenden Problemen auf einen Betreiber aufmerksam machen.

JournaledGrain Unterklassen können die folgenden Methoden überschreiben, um Benachrichtigungen zu empfangen, wenn Verbindungsfehler beobachtet werden und wenn diese Fehler behoben werden:

protected override void OnConnectionIssue(
    ConnectionIssue issue)
{
    /// handle the observed error described by issue
}

protected override void OnConnectionIssueResolved(
    ConnectionIssue issue)
{
    /// handle the resolution of a previously reported issue
}

ConnectionIssue ist eine abstrakte Klasse mit mehreren allgemeinen Feldern, die das Problem beschreiben, einschließlich der Anzahl der Male, die es seit der letzten erfolgreichen Verbindung beobachtet wurde. Unterklassen definieren den tatsächlichen Verbindungstyp. Verbindungsprobleme werden in Typen wie PrimaryOperationFailed oder NotificationFailed kategorisiert und weisen manchmal zusätzliche Schlüssel (wie RemoteCluster) auf, die die Kategorie weiter einschränken.

Wenn dieselbe Problemkategorie mehrmals auftritt (z. B. erhalten Sie immer wieder eine NotificationFailed Zielbestimmung RemoteCluster), meldet Orleans sie jedes Mal über OnConnectionIssue. Sobald diese Problemkategorie behoben ist (z. B. gelingt es Ihnen schließlich, eine Benachrichtigung an diese RemoteCluster zu senden), ruft Orleans einmal OnConnectionIssueResolved auf, mit demselben issue Objekt, das zuletzt von OnConnectionIssue gemeldet wurde. Verbindungsprobleme und deren Auflösungen für unabhängige Kategorien werden unabhängig voneinander gemeldet.

Einfache Statistiken

Wir bieten derzeit einfache Unterstützung für grundlegende Statistiken (in Zukunft werden wir dies wahrscheinlich durch einen standardmäßigen Telemetriemechanismus ersetzen). Sie können die Statistiksammlung für ein JournaledGrain aktivieren oder deaktivieren, indem Sie Folgendes aufrufen:

void EnableStatsCollection()
void DisableStatsCollection()

Rufen Sie die Statistiken durch Aufrufen ab:

LogConsistencyStatistics GetStats()