Обзор системы мониторинга Zidium

Сегодня хочу рассказать о сервисе мониторинга Zidium. Сервис появился недавно, создан он для проверки работоспособности приложений, ведения логирования и обработки (мониторинга) исключительных ситуаций.

Я протестировал этот сервис некоторое время и его функционал оказался для меня полезным. В статье я опишу как начать пользоваться проектом и когда он может быть действительно полезен. Кратко основные моменты:

Панель управления представляет из себя следующее:

На странице «Старт» можно увидеть состояние компонентов, перейти в документацию и получить .dll для работы с API. К сожалению, из NuGet пакеты пока не доступны, но по словам создателей это очень скоро поправят.
Сейчас пакеты доступны в NuGet по ссылке: https://www.nuget.org/packages/Api.Zidium.Net и это радует, что имеющиеся минусы закрываются с такой скоростью.

На странице «Аналитика» можно увидеть более подробный отчет о состоянии используемых компонентов.

Компоненты в Zidium — это древовидная структура, которая позволяет следить за множеством проектов, которые в свою очередь могут иметь свою систему и иерархию. Например, у меня много проектов, один из них пусть будет flash2048. В нём есть несколько компонентов:

  • Ошибки на сервисе – я могу отслеживать все полученные ошибки. При желании, я могу усложнить иерархию и следить за более мелкими компонентами.
  • 404 — я хочу понимать какие не существующие страницы ищут на моём сервисе. Это поможет сделать сайт более дружественным для поисковиков.
  • Прочие ошибки — все остальные ошибки сайта.
  • Комментарий в статьях — я логирую получения комментариев.
  • Ключевые статьи — то что наиболее важно для меня нужно выделить дополнительно.

Данную структуру можно расширять до состояния настоящих «монстров». Так что даже самые крупные проекты можно корректно обрабатывать.

На странице «События» можно работать с различными событиями и ошибками.

Как работать с событиями можно прочитать здесь: http://zidium.net/wiki/how-to/events

При возникновении событий можно получить оповещение. Есть оповещения по email, СМС и http запросы.

Я проверял работу с СМС с мобильными операторами России и Беларуси, скорее всего, поддерживаются и другие стра��ы.

Раздел «Метрики» позволяет следить за нужными целевыми показателями. Значения метрик должно отправлять приложение, которое работает с Zidium. Чтобы начать работать с метрикой необходимо добавить тип новой метрики и создать саму метрику. Подробнее о метриках можно прочитать здесь: http://zidium.net/wiki/work-principle/metrics

«Проверки» позволяют через определённое время производить проверку работоспособности компонентов вашего проекта, чтобы вовремя решать проблемы или не допускать их.

Сейчас доступны следующие типы проверок:

  • Http — проверяет успешность выполнения http запроса;
  • Ping — проверяет успешность выполнения ping-запроса;
  • Sql — выполняет проверку данных в БД через sql-запрос;
  • Domain — выполняет проверку количества дней, которые остались до окончания срока оплаты домена;
  • Ssl — выполняет проверку валидности ssl-сертификата сайта.

Можно придумать множество сценариев, когда эти данные проверки будут полезны:

Не всегда регистраторы доменов напоминают о необходимости их продления, тем более если вы используете множество регистраторов и большое количество доменов. А в данном случае можно будет следить за всеми сайтами и получать напоминания своевременно. Тоже можно сказать и о SSL сертификатах, так как забыть о их продлении легко, а работа без них на некоторых проектах невозможна.

На странице «Лог» можно наблюдать за своими логами. При работе с логами необходимо учитывать, что их работа не влияет на статус компонента. То есть при записи лога типа «Error» в компонент, на котором установлено оповещение, само оповещения не произойдёт, так как статус компонента не изменится.

На вкладке «Управление» можно работать с различными настройками на вашем аккаунте:

Здесь обязательно следует обратить внимание на раздел «Подписки», именно здесь настраивается оповещение для отдельных компонентов.

Для добавления/удаления оповещения, необходимо выбрать пользователя, канал оповещения, для целевого компонента выбрать включено оповещение или нет и выбрать минимальный уровень важности события для оповещения.

Добавлять пользователей и их контакты можно в разделе «Пользователи»

Важный момент! Сервис позволяет получать оповещение, когда на сервисе происходит ошибка и когда проблема исчезает «когда сервису стало лучше». Это можно настроить при редактировании подписки, используя параметр «Уведомлять, если стало лучше»


Теперь перейдём непосредственно к тестированию сервиса.

Для начала необходимо подключить API Zidium к проекту, дальнейшие действия отличаются от типа проекта. Работа с ASP.NET MVC достаточно хорошо описана на сайте самого проекта http://zidium.net/wiki/usage-examples/dot-net/monitoring-asp-net-mvc

Я покажу более общий случай на примере консольного приложения. Создам класс ZidiumHelper:
using Zidium.Api;
using Zidium.Api.XmlConfig;

namespace Zidium.Helpers
{
    public class ZidiumHelper
    {
        private static IClient _client;
        private static IComponentControl _systemComponent;
        public static IClient GetClient()
        {
            if (_client == null)
            {
                var zidiumConfig = ConfigHelper.LoadFromXmlOrGetDefault();
                zidiumConfig.Access.AccountName = "";//Имя аккаунта
                zidiumConfig.Access.SecretKey = ""; //Секретный ключ API
                _client = new Client(zidiumConfig);
            }
            return _client;
        }

        public static IComponentControl GetControl()
        {
            if (_systemComponent == null)
            {
                var parent = GetClient().GetRootComponentControl();
                _systemComponent = parent.GetOrCreateChildComponentControl("ZidiumTest", "NecessaryToInform");
            }
            return _systemComponent;
        }
    }
}

В GetControl мы получаем компоненту, которую хотим использовать. Создавать её на сайте сервиса перед использованием не обязательно, если она отсутствует, то будет создана при первом вызове.

Для начала, создам некое «нагрузочное» тестирование записи логов. Для этого я вызвал следующий код:
var component = ZidiumHelper.GetControl();
for (int i = 0; i < 3000; i++)
{
    component.Log.Info($"Log for flash2048 {i}!");
}

3000 логов записалось без проблем, с этих проблем не возникло.

Нужно учитывать один момент. На странице логов отображает сразу не более 1000 элементов, для кого важен этот момент, думаю, можно написать разработчиком и это изменят. При наличии огромного числа логов, можно задавать конкретные интервалы времени. (Это ограничение создано для того, чтобы пользователи искали именно конкретные записи во времени. Это позволяет увеличить скорость работы сервиса, а пользователей заставляет более рационально использовать своё время.)

Теперь проверим обработку исключительных ситуаций, я создам 100 ошибок, для простоты это будут деления на 0.
for (int i = 0; i < 100; i++)
{
    try
    {
        var x = i/0;
    }
    catch (Exception e)
    {
        var component = ZidiumHelper.GetControl();
        var error = component.CreateApplicationError(e);
        error.Add();
    }
   
}

Можно увидеть, что одинаковые ошибки объединились в одну группу. Чтобы не усложнять процесс их анализа.

Конкретно настроив под свой проект можно добиться удобного и быстрого анализа ошибок и их исправления. При работе с событиями можно добавить заполнение определённых параметров, при работе с web приложением, например, это могут быть: Login, IP, Url, UserAgent, UrlReferrer.

Поработав некоторое время с этим сервисом, я выделил следующие плюсы и минусы.

Плюсы:

  • Наличие СМС и email оповещения — помогает реагировать на очень важные события
  • Удобное логирование и обработка исключительных ситуаций.
  • Наличие автоматических проверок важных параметров — проверка регистрации доменов, SSL сертификатов, размеров баз данных и т.д.
  • Быстрая работа поддержки — при работе у меня возникали вопросы, и я нашел на сервисе несколько ошибок. Мне отвечали очень быстро, учитывая, что писал я в выходные. Ошибки также исправляли очень быстро.
  • Древовидная структура компонентов — удобно работать со множеством проектов и с большими проектами.

Минусы:

  • Отсутствие пакетов в NuGet — как писал выше, это обещали поправить в ближайшее время. Это больше не актуально!
  • Отсутствие версии на английском — обещают скоро добавить.

Как итог, если вам нужно обрабатывать возможные ошибки ваших проектов, следить за логами, получать оповещения при возникновении важных событий, то я рекомендую присмотреться с данному сервису, со своей задачей он справляется...

Приятного программирования.

Добавить комментарий