За последнее десятилетие JavaScript превратился из языка сценариев, ориентированного на браузер, в отличный язык программирования общего назначения, подходящий для выполнения на стороне сервера. Управляемая и поддерживаемая основой Node.js, отраслевым консорциумом с открытой моделью управления, Node.js представляет собой асинхронную среду выполнения JavaScript, управляемую событиями.
Современные приложения Node являются модульными и распределенными, а запросы проходят через ряд распределенных сервисов, веб-фреймворков, кэшей, очередей и баз данных. Когда производительность таких запросов нарушает целевые показатели уровня обслуживания (SLO), SRE и владельцы служб должны понимать ряд основных проблем, чтобы определить основную причину и восстановить индикаторы уровня обслуживания (SLI), такие как:
- Через какие сервисы проходили запросы?
- Какие операции были выполнены?
- Какой сервис вызвал снижение производительности?
- Что отличалось в пути выполнения для трассировок выбросов?
- Произошло ли снижение производительности из-за выполнения кода, пограничного состояния, события времени выполнения, т. е. сборки мусора или проблемы с инфраструктурой, т. е. контейнера, работающего в горячем режиме, или дискового пространства, достигшего предела?
В предыдущих блогах мы показали, как традиционные подходы APM больше не обеспечивают надежную видимость в современных распределенных средах. Вам нужно переосмыслить, как отслеживать производительность микросервисов и устранять неполадки. В следующих разделах мы рассмотрим различные инструментальные подходы к построению надежной стратегии наблюдаемости для ваших приложений Node:
- Автоинструментарий для большинства популярных фреймворков и пакетов
- Пользовательские инструменты, совместимые с OpenTracing
- Пользовательские метрики для записи и анализа ключевых показателей эффективности инфраструктуры, приложений или бизнеса.
Представляем библиотеку трассировки 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.