CHRONOS: современный мониторинг работоспособности приложений

Chronos  —  это бесплатный инструмент разработчика с открытым исходным кодом для мониторинга работоспособности и сведений о передаче данных серверов, кластеров Kubernetes и Kafka, микросервисов и контейнеров.

Для чего нужен Chronos?

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

Когда приложение масштабируется и надежность находится под угрозой, нельзя придерживаться подхода «установил и забыл». Даже всемогущим балансировщиком нагрузки AWS всего не исправить. Чтобы эффективно реагировать на меняющиеся со временем потребности, разработчики должны постоянно мониторить приложение в своих целях и для его пользователей.

Инструменты вроде Grafana хороши для визуализации метрик приложения, но не «умеют» их генерировать сами: необходимо подключаться к базе данных с уже имеющимися метриками. А еще эти инструменты нельзя подключить к БД, чтобы указать, какие метрики записываются.

Это особенно проблематично с учетом того, что в Prometheus на каждом интервале их собираются тысячи. Когда мы сохраняли все собранные метрики, БД всего за час заполнялась большим объемом данных. Удивительно, ведь данные состояли всего из нескольких примитивных типов. Чтобы уменьшить «разбухание» БД, приходилось настраивать инструмент мониторинга.

Но теперь есть Chronos. Это бесплатный Open Source инструмент разработки, в котором метрики отслеживаются, записываются и отображаются с использованием привычного npm-пакета.

В Chronos имеются метрики для серверов, микросервисов (с контейнеризацией и без), кластеров Kubernetes и Kafka, реализована отправка автоматических уведомлений через Slack и электронную почту.

Как использовать Chronos?

Чтобы внедрить мониторинг Chronos в приложение, загрузите npm-пакет и вызовите желаемый метод мониторинга. Чтобы отслеживать жизненные циклы запросов/ответов на сервере, вызовите chronos.track(): вернется промежуточный слой между запросами/ответами внутри сервера. Так вы получите метрики работоспособности приложения и запишете метрики для каждого запроса и ответа сервера.

Чтобы иметь подробные сведения о приложении и его изменениях с течением времени, визуализируйте эти метрики в настольном приложении Chronos. В нем же выберите отслеживаемые метрики, чтобы не перегружать БД бесполезными.

Получить эти сведения без Chronos намного сложнее.

Ключевые характеристики

  • В микросервисных приложениях активирована распределенная трассировка.
  • Совместимость с GraphQL.
  • Платформенно-независимое настольное приложение.
  • Поддержка PostgreSQL и MongoDB.
  • Показ статистики памяти, температуры, скорости, задержки в режиме реального времени.
  • Отображение и сравнение микросервисных метрик на графиках.
  • Мониторинг кластера Apache Kafka с помощью JMX-экспортера Prometheus.
  • Отслеживание метрик кластера Kubernetes по данным с сервера Prometheus.

После того как NPM-пакет Chronos установлен и развернут, в приложении остается добавить URI базы данных и выбрать ее тип. Сейчас в Chronos поддерживаются Kubernetes, Kafka, микросервисы, PostgreSQL и MongoDB.

С легкостью интегрируйте БД через дашборд Chronos:

Выбирайте сохраняемые в БД метрики:

И отображаемые на графиках тоже:

Как получить Chronos?

В репозитории GitHub и README можно найти простой набор инструкций по пошаговому внедрению Chronos в приложение. Настройте конфигурационный файл, добавьте URI БД. Теперь вы готовы стать еще более ответственным родителем своего приложения.

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

  • сделать больше метрик;
  • автоматизировать процесс настройки;
  • внедрить текстовые оповещения для важных метрик работоспособности.

Подробности  —  на сайте, NPM и официальной странице OSLabs Chronos на Github.

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Josh James: CHRONOS: Application Health Monitoring for the Modern Era

Предыдущая статьяОшибка дублированного класса в Android для Kotlin
Следующая статья7 полезных репозиториев GitHub для JS-программистов