Udostępnij za pośrednictwem


Diagnostyka JournaledGrain

Monitorowanie błędów połączeń

Zgodnie z projektem dostawcy spójności dzienników są odporni na błędy połączenia (w tym połączenia z magazynem i połączenia między klastrami). Ale po prostu tolerowanie błędów nie wystarczy, ponieważ aplikacje zwykle muszą monitorować wszelkie takie problemy i zwracać im uwagę operatora, jeśli są one poważne.

Podklasy JournaledGrain mogą zastąpić następujące metody odbierania powiadomień, gdy występują błędy połączenia i kiedy te błędy są rozwiązywane:

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 jest klasą abstrakcyjną z kilkoma typowymi polami opisującym problem, w tym liczbę obserwowanych przypadków ostatniego nawiązania połączenia. Rzeczywisty typ problemu z połączeniem jest definiowany przez podklasy. problemy z Połączenie ion są podzielone na typy, takie jak PrimaryOperationFailed lub NotificationFailed, a czasami mają dodatkowe klucze (takie jak RemoteCluster), które dodatkowo zawężają kategorię.

Jeśli ta sama kategoria problemu występuje kilka razy (na przykład ciągle otrzymujemy tę samą wartość docelowąNotificationFailed), jest ona zgłaszana za każdym razem przez OnConnectionIssue .RemoteCluster Po rozwiązaniu tej kategorii problemu (na przykład w końcu zakończymy się pomyślnie wysłaniem powiadomienia do tego RemoteClusterobiektu ), zostanie wywołana OnConnectionIssueResolved raz z tym samym issue obiektem, który został ostatnio zgłoszony przez OnConnectionIssue. problemy z Połączenie ion i ich rozwiązanie w przypadku niezależnych kategorii są zgłaszane niezależnie.

Proste statystyki

Obecnie oferujemy prostą obsługę podstawowych statystyk (w przyszłości prawdopodobnie zastąpimy to bardziej standardowym mechanizmem telemetrii). Zbieranie statystyk można włączyć lub wyłączyć dla elementu JournaledGrain, wywołując polecenie:

void EnableStatsCollection()
void DisableStatsCollection()

Statystyki można pobrać, wywołując następujące wywołanie:

LogConsistencyStatistics GetStats()