JournaledGrain диагностика
Мониторинг ошибок подключения
По проектированию поставщики согласованности журналов устойчивы при ошибках подключения (включая подключения к хранилищу и подключения между кластерами). Но просто терпимые ошибки недостаточно, так как приложения обычно должны отслеживать любые такие проблемы, и привлечь их в внимание оператора, если они серьезно.
Подклассы JournaledGrain могут переопределить следующие методы для получения уведомлений при обнаружении ошибок подключения, а также при устранении этих ошибок:
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 является абстрактным классом, с несколькими общими полями, описывающими проблему, в том числе сколько раз оно наблюдалось с момента последнего успешного подключения. Фактический тип проблемы подключения определяется подклассами. Подключение проблемы классифицируются по типам, таким как PrimaryOperationFailed илиNotificationFailed, иногда, имеют дополнительные ключи (напримерRemoteCluster), которые еще больше сузят категорию.
Если одна и та же категория проблемы происходит несколько раз (например, мы продолжаем получать NotificationFailed
то же RemoteCluster
самое), оно сообщается каждый раз OnConnectionIssue . После устранения этой категории проблемы (например, мы, наконец, успешно отправляем уведомление в это RemoteCluster
), после чего OnConnectionIssueResolved вызывается один раз с тем же issue
объектом, который последний раз сообщался OnConnectionIssue
. Подключение проблемы и их решение для независимых категорий сообщаются независимо.
Простая статистика
В настоящее время мы предлагаем простую поддержку базовой статистики (в будущем мы, вероятно, заменим это более стандартным механизмом телеметрии). Сбор статистики можно включить или отключить для journaledGrain путем вызова:
void EnableStatsCollection()
void DisableStatsCollection()
Статистику можно получить путем вызова:
LogConsistencyStatistics GetStats()