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

Современные приложения Node являются модульными и распределенными, а запросы проходят через ряд распределенных сервисов, веб-фреймворков, кэшей, очередей и баз данных. Когда производительность таких запросов нарушает целевые показатели уровня обслуживания (SLO), SRE и владельцы служб должны понимать ряд основных проблем, чтобы определить основную причину и восстановить индикаторы уровня обслуживания (SLI), такие как:

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

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

  1. Автоинструментарий для большинства популярных фреймворков и пакетов
  2. Пользовательские инструменты, совместимые с OpenTracing
  3. Пользовательские метрики для записи и анализа ключевых показателей эффективности инфраструктуры, приложений или бизнеса.

Представляем библиотеку трассировки SignalFx для JavaScript: автоматическое инструментирование для приложений Node.js

Чтобы ускорить внедрение распределенной трассировки для наших клиентов, мы делаем библиотеку трассировки JavaScript SignalFx доступной в бета-версии. Эта библиотека предоставляет трассировщик, совместимый с OpenTracing, и автоматически настраиваемые инструменты для многих популярных серверных библиотек и фреймворков JavaScript.

Современные приложения Node используют десятки модулей, поскольку транзакции проходят через распределенные службы, кэши, очереди или базы данных. Инструментирование вручную обременительно и непрактично, когда вам нужно в режиме реального времени видеть, как эти платформы влияют на производительность службы. Библиотека SignalFx для Node.js может автоматически оснащать многие популярные модули, такие как Express, MySQL или Redis и т. д. Полный список поддерживаемых модулей см. в документации.

Установка:

Библиотеку трассировки SignalFx для JavaScript можно установить за один шаг с помощью диспетчера пакетов:

$ npm install signalfx-tracing

Использование автоматического инструментария:

Чтобы начать использовать автоматическое инструментирование, необходимо инициализировать Tracer перед импортом любого целевого пакета:

Полные примеры того, как использовать автоматическое инструментирование для Express и Mongo DB в ваших приложениях Node, доступны в нашем репозитории Github.

Пользовательские инструменты, совместимые с OpenTracing

Библиотека автоинструментации SignalFx автоматически настроит ключевые модули в вашем приложении, но также может быть настроена на основе вашей бизнес-логики. Вы можете захватывать не только теги span, но и события ошибок и их описания. В Спецификации OpenTracing перечислены все стандартные теги span и события журнала. Фрагмент кода ниже показывает, как запустить диапазон и отправить теги диапазона:

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

Мониторинг услуг «из коробки»

SignalFx предоставляет готовые панели мониторинга услуг с такими характеристиками производительности, как показатели частоты, ошибки и продолжительности (RED). SignalFx NoSample™ Distributed Tracing анализирует каждую транзакцию, поэтому характеристики производительности всегда точны

Визуализация трассировки и промежутка

Теперь вы можете визуализировать трассы с тысячами отрезков, используя возможности карт Google, чтобы быстро увеличивать и уменьшать масштаб и отображать только отрезки между службами, чтобы изолировать правильные трассы. Уровень автоматической инструментации отображает детализированную информацию из инструментированных модулей, таких как запросы MySQL, ошибки, Redisconnected_clients и т. д.

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

Корреляция инфраструктуры и приложений

SignalFx обеспечивает единое единое представление об инфраструктуре и мониторинге приложений — все контекстуализировано и полностью коррелировано. Быстро визуализируя показатели хоста, такие как использование ЦП, памяти, сети и диска, наряду с показателями RED приложений, как показано на панели выше, команды DevOps могут быстро определить, как производительность инфраструктуры влияет на производительность приложений.

Управляемое устранение неполадок

SignalFx Outlier Analyzer™ упрощает процесс устранения неполадок, автоматически обнаруживая закономерности в аномальных трассировках, что позволяет командам SRE с предписывающим устранением неполадок сократить MTTR.

Используйте клиентскую библиотеку SignalFx для Node.js для сбора пользовательских метрик

Клиентская библиотека SignalFx для Node.js — это программируемый интерфейс, который позволяет вам получать доступ к метаданным SignalFx и использовать API. Вы можете использовать клиентскую библиотеку Node.js для сбора показателей приложения или бизнеса, таких как размещенные заказы, входы в систему из определенного места, брошенные корзины и т. д., для анализа и визуализации в SignalFx.

Установка:

Клиентскую библиотеку SignalFx для Node.js можно установить с помощью одношагового установщика npm:

$ npm install signalfx

Использование клиентской библиотеки

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

Вы можете связать панель мониторинга ключевых показателей эффективности бизнеса с картами услуг, чтобы в реальном времени получать корреляцию о том, как производительность приложений влияет на эффективность бизнеса. Более подробная информация о том, как принимать пользовательские типы метрик, доступна в клиентской библиотеке SignalFx для Node.js сайт документации и репозиторий Github.

Начните работу с SignalFx:

SignalFx — это единственное решение, которое анализирует каждую транзакцию в распределенных службах и обеспечивает направленное устранение неполадок, чтобы значительно сократить MTTR, обеспечивая при этом полную гибкость инструментов, чтобы наши клиенты могли оставаться нейтральными к поставщику. Начните с подписки на бесплатную пробную версию SignalFx или присоединяйтесь к нашей еженедельной живой демонстрации, чтобы увидеть платформу в действии.

Первоначально опубликовано на www.signalfx.com.