Freigeben über


JournaledGrain-Diagnosen

Überwachen von Verbindungsfehlern

Protokollkonsistenzanbieter sind bei Verbindungsfehlern standardmäßig resilient. Das gilt sowohl für Verbindungen mit Speicher als für Verbindungen zwischen Clustern. Es reicht aber nicht, Fehler einfach nur zu tolerieren, da Anwendungen solche Probleme in der Regel überwachen und Operator*innen auf sie aufmerksam machen müssen, wenn es sich um schwerwiegende Probleme handelt.

JournaledGrain-Unterklassen können die folgenden Methoden außer Kraft setzen, um Benachrichtigungen zu erhalten, wenn Verbindungsfehler festgestellt bzw. 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 gängigen Feldern zur Beschreibung des Problems (beispielsweise, wie oft es seit der letzten erfolgreichen Verbindung festgestellt wurde). Die tatsächliche Art des Verbindungsproblems wird durch Unterklassen definiert. Verbindungsprobleme werden in Typen wie PrimaryOperationFailed oder NotificationFailedkategorisiert und besitzen manchmal zusätzliche Schlüssel (z. B. RemoteCluster), die die Kategorie weiter eingrenzen.

Wenn die gleiche Art von Problem mehrmals auftritt – etwa, wenn immer wieder NotificationFailed für den gleichen Remotecluster (RemoteCluster) zurückgegeben wird –, wird dies jedes Mal von OnConnectionIssue gemeldet. Nach Behebung dieser Art von Problem (wenn also beispielsweise letztendlich eine Benachrichtigung an RemoteCluster gesendet werden konnte) wird einmal OnConnectionIssueResolved mit dem gleichen issue-Objekt aufgerufen, das zuletzt von OnConnectionIssuegemeldet wurde. Verbindungsprobleme für unabhängige Kategorien sowie deren Behebung werden unabhängig voneinander gemeldet.

Einfache Statistiken

Wir bieten derzeit eine einfache Unterstützung grundlegender Statistiken. (Dies wird später voraussichtlich durch einen stärker standardisierten Telemetriemechanismus ersetzt.) Die Statistiksammlung kann für ein journalisiertes Grain durch Aufrufen von Folgendem aktiviert oder deaktiviert werden:

void EnableStatsCollection()
void DisableStatsCollection()

Zum Abrufen der Statistiken können Sie Folgendes aufrufen:

LogConsistencyStatistics GetStats()