С увеличением масштабов проекта СЭД DIRECTUM растет количество объектов, за состоянием которых нужно следить, и, как следствие, растет количество логируемой информации. В инфраструктуре крупного проекта нередко можно наблюдать примерно такую картину:
Все эти объекты генерируют огромное количество логов, расположенных в разных местах, и со временем становится непонятно, что со всем этим делать.
При сопровождении СЭД DIRECTUM анализу подлежат следующие виды логов:
Прежде чем внедрять решение по мониторингу производительности системы DIRECTUM, следует навести порядок в текущей инфраструктуре лог-файлов. В рамках подготовки системы DIRECTUM к внедрению подсистемы мониторинга производительности были произведены следующие настройки:
Что ж, пожалуй, теперь система готова к настройке мониторинга производительности. Итак, начнем.
Чтобы не было недопонимания в терминологии, определимся с неоднозначными понятиями.
ELK Stack – по первым буквам Elasticsearch, Logstash и Kibana.
Виджет – отдельный элемент, визуально представляющий некоторый набор логов, полученный по определенному запросу.
Дэшборд – произвольный набор виджетов на одном экране в браузере.
Индекс – в Elasticsearch это аналог таблицы БД.
Логи профайлинга – логи профайлинга, которые записываются стандартными средствами DIRECTUM. Настройка записи этих логов производится в справочнике Настройки профайлинга.
После исследования нескольких open source и платных решений (ELK Stack, Graylog, TICK Stack, Prometheus + Grafana), было решено использовать open source продукт ELK Stack в такой конфигурации:
ElasticSearch – мощный инструмент для хранения и поиска больших объемов информации. Внутри себя использует движок Lucene.
LogStash – умный транспорт для доставки лог-файлов в ElasticSearch. Быстро обрабатывает переданные ему логи, преобразовывает их по заданным правилам и передает в ElasticSearch.
FileBeat – «легкий» собиратель логов. Устанавливается на удаленные машины, собирает логи и передает их в Logstash.
Kibana – удобный интерфейс для компоновки и визуализации данных.
Компоненты используют движок JVM, так называемую виртуальную машину Java. На первый взгляд, LogStash и FileBeat делают одно и то же: транспортируют логи, но разница все же есть – FileBeat существенно легче, его можно установить на конечные производители логов, и он не будет потреблять много ресурсов.
Установить ELK Stack можно как на ОС Windows, так и на Linux, причем на Linux с теми же показателями системы он будет себя чувствовать просторнее за счет того, что меньше ресурсов используется для поддержания работоспособности самой ОС. У нас же все было настроено на Windows Server 2012 с 64 гигабайтами оперативной памяти.
Вот некоторые полезные «что можно мониторить» в СЭД:
А вот некоторые полезные «что можно мониторить» за пределами СЭД:
И немного о «невозможностях» open source решения:
Эти возможности есть в платной версии продукта, а именно: в расширении X-Pack.
Немного пошаманив с настройками, мы загрузили в ElasticSearch логи клиентских рабочих мест DIRECTUM, логи служб, а также логи профайлинга. Для каждой группы логов были настроены дэшборды для удобства визуального анализа информации, представленной в логах. Настройка визуализации логов профайлинга показала, что действительно информативные блоки выглядят так себе, поэтому было решено добавить на дэшборд красивых картинок для привлечения внимания (количество входов в систему за период времени, количество обращений к документам, количество обращений к справочникам, топ активных пользователей, топ наиболее длительных операций и т.д.).
В процессе настройки ELK Stack были выявлены следующие особенности:
Тут уместно написать про объемы генерируемой информации. Данные приведены для одновременно используемых 1700-1800 лицензий.
А теперь немного о доработке продукта «напильником»:
Другой способ обойти эти два ограничения – дополнительно поднять еще одно open source решение Prometheus+Grafana, у которого присутствуют эти функции в коробке.
ELK Stack не только умный, но и красивый. Компонента Kibana предоставляет доступ к визуальному представлению всей хранимой в ElasticSearch информации. Данные можно компоновать произвольным образом и выводить в виде графиков, диаграмм, таблиц и т.д. Набор типов виджетов достаточно разнообразный.
На нескольких следующих скриншотам мы постарались воспроизвести минимально необходимый набор виджетов для слежения за состоянием системы DIRECTUM.
На первом скриншоте продемонстрирован дэшборд по визуализации логов профайлинга. Информативная часть виджетов, выделенная на скриншоте желтым цветом, выглядит достаточно сухо. Поэтому сверху и снизу были добавлены красивые картинки для привлечения внимания, как уже упоминалось ранее.
Второй скриншот демонстрирует аналитику по клиентским логам: временные ряды, сравнивающие количество ошибок за равнозначные периоды времени (текущая неделя, предыдущая неделя и две недели назад), наиболее часто встречающиеся ошибки, а также пользователи с наибольшим количеством ошибок:
На третьем скриншоте показаны данные по событиям в логах службы Workflow: общее количество событий за период, временные ряды за последние три недели, а также наиболее частые события за период:
В отдельный индекс были загружены логи службы сервера сеансов из файла, настроенного в параметре ClientConnectionLog в файле SBSessionSrvSettings.xml. Так появился четвертый скриншот. Он дает понимание, сколько максимально используется лицензий за период и сколько еще есть свободных, прежде, чем пользователям будет отказано в доступе по причине нехватки лицензии.
Как показала практика, информации на этих дэшбордах достаточно для того, чтобы выявить отклонения в работе системы. Дальнейший анализ следует проводить по отфильтрованному списку событий. Это выглядит примерно так:
Бонусы от применения решения оказались существенными уже на этапе тестирования.
Бонус №1. С ростом масштабов использования DIRECTUM на крупном предприятии стала существенно расти нагрузка на серверы, вследствие чего стали появляться необычные ошибки, например, ошибка EOSError с номером 10061, которая «подвешивала» систему DIRECTUM у пользователей минуты на полторы и вызывала много вопросов как со стороны рядовых пользователей, так и со стороны руководства заказчика. Система мониторинга помогла проанализировать частоту появления ошибки, принять меры по ее устранению, а также продемонстрировать заказчику эффективность принятых мер:
Бонус №2. В процессе тестовой настройки были использованы реальные логи клиентских рабочих мест. При анализе этих данных в Kibana в топе ошибок оказалась ошибка ESBHelpServerNotFound, нам стало стыдно, и мы наконец-таки подняли у заказчика сервер веб-справки.
Бонус №3. Была проанализирована скорость выполнения операций, и в отношении наиболее длительных операций были приняты соответствующие меры:
А также были выявлены пользователи с большим количеством задач в папках Входящие, Исходящие, и выданы рекомендации по очистке этих папок.
Планы на будущее:
И самое главное – продвигать культуру проактивного мониторинга СЭД в процессе внедрения проектов, разворачивать ELK Stack уже в рамках проекта и обучать ответственных технических специалистов заказчика нехитрым премудростям мониторинга.
После проведенных исследований и проделанной работы, были сделаны следующие выводы:
Всем хороших показателей на дэшбордах. Спасибо за внимание!
Обсудите реализацию с экспертом Directum
Комментарии (6)
Ну, наконец-то, разработчики начали реально думать о пользователях и удобстве их работы !!!
Да, интересное решение - начальник отдела ИТ как без рук без этого инструментария.
Юлия, поздравляем вас! Вы в числе активных и получивших признание от сообщества, ваша заявка набрала более 15 лайков, а значит вы получаете приз. В ближайшее время с вами свяжутся, чтобы уточнить детали, как получить приз.
Отличное решение!
У нас в свою очередь используется Grafana + Influxdb.
Но нотификации и счётчики по Windows/SQL Server осуществляются через SCOM.
Также в этой связке для снятия метрик SQL Server отлично подходит influxdata/telegraf. Вот такая красота sql server.
Роман, а Influxdb умеет агрегировать логи так же как Elastic? Хранить, делать поиск по ним? Рассматривали так же его на этапе выбора решения, но Influxdb позиционируется как Time Series Database. И примеров реализации агрегации логов на нем не видели.
А мы анализ логов в нём не производим пока что. Мы использовали для снятия метрик: кол-во пользователей в базе (через выгрузку SASessionSrvInfo.exe), оттуда же заблокированные элементы по типам, кол-во задач в Workflow на различных серверах (была проблема в 5.0 с кэшированными справочниками cfg и гонка процессов за доступ к ним), состояние служб - работает/не работает, кол-во пакетов DICS в обработке (но тут потом отдельная разработка появилась), и др.
В принципе связка очень удобная для визуализации любых метрик, опять же отправить запрос в базу можно из любого объекта системы где есть разработка через обычный post запрос.
До массового анализа логов руки так и не дошли. Но как-то даже смотрели Clickhouse для этого дела.
Удобство Графаны в том, что она работает с любыми источниками данных, причём одновременно. Первоначально вообще использовался Graphite, но не с Директумом.
Авторизуйтесь, чтобы написать комментарий