Compartilhar via


Diagnóstico de JournaledGrain

Monitorar erros de conexão

Por design, os provedores de consistência de log são resilientes a erros de conexão (incluindo conexões com armazenamento e conexões entre clusters). Mas apenas tolerar erros não é suficiente, pois os aplicativos geralmente precisam monitorar esses problemas e levá-los à atenção de um operador se forem sérios.

As subclasses JournaledGrain podem substituir os métodos a seguir para receber notificações quando houver erros de conexão observados e quando esses erros forem resolvidos:

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 é uma classe abstrata, com vários campos comuns descrevendo o problema, incluindo quantas vezes ele foi observado desde a última vez que a conexão foi bem-sucedida. O tipo real de problema de conexão é definido por subclasses. Os problemas de conexão são categorizados em tipos, como PrimaryOperationFailed ou NotificationFailed, e às vezes têm chaves extras (como RemoteCluster) que restringem ainda mais a categoria.

Se a mesma categoria de problema ocorre várias vezes (por exemplo, continuamos recebendo um NotificationFailed que segmenta o mesmo RemoteCluster), ele é relatado sempre por OnConnectionIssue. Uma vez que essa categoria de problema é resolvida (por exemplo, finalmente conseguimos enviar uma notificação para isso RemoteCluster), então OnConnectionIssueResolved é chamado uma vez, com o mesmo issue objeto que foi relatado pela última vez por OnConnectionIssue. Problemas de conexão e sua resolução, para categorias independentes, são relatados de forma independente.

Estatísticas simples

Atualmente, oferecemos suporte simples para estatísticas básicas (no futuro, provavelmente substituiremos isso por um mecanismo de telemetria mais padrão). A coleta de estatísticas pode ser habilitada ou desabilitada para um JournaledGrain chamando:

void EnableStatsCollection()
void DisableStatsCollection()

As estatísticas podem ser recuperadas chamando:

LogConsistencyStatistics GetStats()