Diagnostica JournaledGrain
Monitorare gli errori di connessione
Per impostazione predefinita, i provider di coerenza dei log sono resilienti in caso di errori di connessione, includendo sia le connessioni alla risorsa di archiviazione sia le connessioni tra cluster. Tuttavia limitarsi a tollerare gli errori non è sufficiente, poiché le applicazioni in genere devono monitorare tali problemi e, se gravi, portarli all'attenzione di un operatore.
Le sottoclassi JournaledGrain possono eseguire l'override dei metodi seguenti per ricevere notifiche quando si rilevano errori di connessione e quando tali errori vengono risolti:
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 è una classe astratta, con diversi campi comuni che descrivono il problema, incluso il numero di volte in cui è stato osservato dall'ultima connessione riuscita. Il tipo effettivo del problema di connessione è definito dalle sottoclassi. I problemi di connessione vengono classificati in tipi, ad esempio PrimaryOperationFailed o NotificationFailed, e talvolta hanno chiavi aggiuntive (ad esempio RemoteCluster) che restringono ulteriormente la categoria.
Se la stessa categoria di problema si verifica più volte (ad esempio, si continua a ottenere NotificationFailed
che ha come destinazione RemoteCluster
), ogni volta viene segnalato da OnConnectionIssue. Dopo aver risolto questa categoria di problema (ad esempio si riesce a inviare una notifica a RemoteCluster
), OnConnectionIssueResolved viene chiamato una sola volta con lo stesso oggetto issue
che era stato segnalato da OnConnectionIssue
. I problemi di connessione e la relativa risoluzione, per categorie indipendenti, vengono segnalati in modo indipendente.
Statistiche semplici
Attualmente è disponibile un supporto semplice per le statistiche di base (in futuro, probabilmente sarà sostituito con un meccanismo di telemetria più standard). La raccolta di statistiche può essere abilitata o disabilitata per un JournaledGrain chiamando:
void EnableStatsCollection()
void DisableStatsCollection()
È possibile recuperare le statistiche chiamando:
LogConsistencyStatistics GetStats()