Внедрение системы мониторинга метрик в серверное приложение на Node.js | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Технические науки

Опубликовано в Молодой учёный №49 (183) декабрь 2017 г.

Дата публикации: 10.12.2017

Статья просмотрена: 1168 раз

Библиографическое описание:

Бушев, Ю. В. Внедрение системы мониторинга метрик в серверное приложение на Node.js / Ю. В. Бушев. — Текст : непосредственный // Молодой ученый. — 2017. — № 49 (183). — С. 38-41. — URL: https://moluch.ru/archive/183/46994/ (дата обращения: 03.05.2024).



Для успешного управления сервисом, написанным на платформе Node.js, зачастую важно понимать и быстро находить “узкие”, с точки производительности, места в исходном коде продукта, а также, следить за стабильностью приложения и вовремя реагировать на внештатные ситуации.

Как многим известно, Node.js это платформа асинхронного выполнения кода. [1] Практически ни одно действие не обходится без взаимодействия с Event Loop. Event Loop (Цикл событий) — это то, что позволяет Node.js выполнять неблокирующие операции ввода/вывода (несмотря на то, что JavaScript является однопоточным языком программирования) путем выгрузки операций в ядро системы, когда это возможно. На Рис. 1 представлена схема взаимодействия внутренних компонент платформы Node.js. Чем меньше время задержки Event Loop тем фактически быстрее работает программа. Исходя из вышесказанного, одной из наиболее важных метрик для мониторинга будет Event Loop Lag (время задержки Event Loop).

Рис. 1. Схема взаимодействия внутренних компонент Node.js

Разумеется, существуют и другие (более общие) метрики процессов, выполняющихся под контролем операционной системы. В данной статье мы рассмотрим процесс сбора и мониторинга следующих метрик:

  1. Uptime — время жизни Node.js процесса;
  2. CPU Usage, user — время, в течение которого процессор занят выполнением кода в пользовательском пространстве;
  3. CPU Usage, system — время, затрачиваемое процессором на функции операционной системы, связанные с Node.js процессом;
  4. Memory Usage, rss — часть занимаемой процессом памяти, которая хранится в основной памяти (ОЗУ);
  5. Memory Usage, heap total — общий размер сегмента памяти, предназначенного для хранения ссылочных типов, таких как объекты, строки и замыкания;
  6. Memory Usage, heap used — размер занятой памяти. Более подробно, области памяти процесса показаны на Рис. 2;
  7. Memory Usage, external — использование памяти объектов C++, привязанных к объектам JavaScript, управляемым V8.

Рис. 2. Области памяти Node.js процесса

Мы будем использовать специальную библиотеку на Node.js, которая позволяет собрать все важный нам метрики в JSON формате, как показано на Рис. 3.

Рис. 3. Собираемые метрики в формате JSON

Для анализа собираемых данных чаще всего используются специальные системы мониторинга. Одной из таких систем является Zabbix. [3] Он предназначен для мониторинга и отслеживания состояния различных сетевых сервисов, серверов и другого сетевого оборудования. Данные будут отправляться при помощи специальной утилиты — nodejs-zabbix-sender. Рассмотрим процесс отправки данных (Рис. 4). Мы будем отправлять актуальные данные процесса каждую минуту.

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

В случае если данные метрик памяти приходят в Байтах, а мы хотим отображать их на графиках в Мегабайтах, можно выполнять обработку входящих данных согласно правилам.

Рис. 4. Фрагмент исходного кода для отправки данных на Zabbix сервер

Такая информация, как время жизни процесса, позволит Zabbix серверу понять когда процесс был перезапущен (например в случае критического сбоя) и сообщить об этом администратору системы.

На обнаружение проблем, характерных для системы, могут быть настроены разные обработчики (триггеры). При срабатывании триггера создается “проблема” и информация о ней незамедлительно становится доступной в Zabbix. Для каждого триггера, возможно указать специальное условие, при котором проблема считается более не актуальной. Именно это позволяет с высокой точностью детектировать момент решения проблемы, и избегать ложных срабатываний.

Помимо сбора информации о Node.js приложении, можно установить и настроить Zabbix Agent, который по умолчанию умеет собирать множество метрик об операционной системе в целом. Включая использование памяти, процессора, и время задержки операций ввода-вывода.

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

Рис. 5. Сводный отчет о последних проблемах в система мониторинга Zabbix

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

Литература:

  1. Node.js. // About Node.js®. URL: https://nodejs.org/en/about/ (дата обращения: 06.12.2017).
  2. Event Loop. // The Node.js Event Loop, Timers, and process.nextTick() URL: https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/ (дата обращения: 02.11.2017)
  3. Zabbix. // Product Overview. URL: https://www.zabbix.com/product (дата обращения: 23.11.2017)
Основные термины (генерируются автоматически): CPU, JSON, операционная система, время задержки, данные, использование памяти, метрика, процесс, схема взаимодействия.


Похожие статьи

Сравнительный анализ программного обеспечения систем...

Zabbix-сервер соединен с агентами, которые реализованы для многих операционных систем.

Точки на графике отображают используемый объем оперативной памяти в узле в некоторый момент времени.

Отчет по использованию оперативной памяти.

Эффективность применения CRM-системы | Статья в журнале...

Повышение эффективности использования рабочего времени.

За счет автоматизации процесса взаимодействия с клиентом все документы могут быть переведены в электронный вид.

Операционные CRM системы осуществляют обработку различных наборов данных...

Построение имитационной модели JavaEE веб-приложения по...

Кроме того, с сервера получались данные об используемой памяти и используемом процессорном времени

После этого было рассчитано среднее время задержки, проведено

Общее количество рабочих мест в системе ограничено. Процессы поступления на сервер...

Оптимальный алгоритм взаимодействия информационного...

В последнее время каждый человек должен оставаться в курсе последних событий.

Весь процесс взаимодействия клиентской и серверной частей приложения укладывается в

Рис. 4. Схема взаимодействия мобильного приложения с корпоративной информационной системой.

Современные технологии управления фоновыми потоками...

При нехватке памяти в системе, ОС Android может завершить процесс приложения для освобождения ресурсов.

На рис 2 изображена схема взаимодействия трех объектов.

В примере возвращаемый объект типа Json.

Обзор систем обмена сообщениями | Статья в журнале...

1) Пропускная способность; 2) Задержка сообщений.

Сообщение — это полезный для некоего процесса комплект данных, тогда как тема — это категория, в соответствии с которой публикуется то или иное сообщение.

Программно-аппаратная масштабируемая система контроля...

Рассмотрен процесс анализа данных и принятия решений о текущей работоспособности системы. Показан пример взаимодействия между компонентами и управляющим контроллером.

Рис. 1. Схема подключения нескольких майнинг ферм к контроллеру.

Оптимизация бизнес-процессов IT-отдела на примере ЗАО...

- создать эффективную систему мотивации сотрудников. На рисунке 1 представлена схема взаимодействия двух процессов, обратная связь между

Точка контроля должна содержать в себе измеряемые показатели производительности, стоимости, времени выполнения и т. д.

Основы параллельной работы программ | Статья в журнале...

Ключевые слова: параллельная работа программ, параллелизм, вычислительная система, процесс, поток

Чем сильнее потоки независимы друг от друга, тем меньше времени тратится на задержки

Тем не менее, при использовании общей памяти и нескольких устройств...

Похожие статьи

Сравнительный анализ программного обеспечения систем...

Zabbix-сервер соединен с агентами, которые реализованы для многих операционных систем.

Точки на графике отображают используемый объем оперативной памяти в узле в некоторый момент времени.

Отчет по использованию оперативной памяти.

Эффективность применения CRM-системы | Статья в журнале...

Повышение эффективности использования рабочего времени.

За счет автоматизации процесса взаимодействия с клиентом все документы могут быть переведены в электронный вид.

Операционные CRM системы осуществляют обработку различных наборов данных...

Построение имитационной модели JavaEE веб-приложения по...

Кроме того, с сервера получались данные об используемой памяти и используемом процессорном времени

После этого было рассчитано среднее время задержки, проведено

Общее количество рабочих мест в системе ограничено. Процессы поступления на сервер...

Оптимальный алгоритм взаимодействия информационного...

В последнее время каждый человек должен оставаться в курсе последних событий.

Весь процесс взаимодействия клиентской и серверной частей приложения укладывается в

Рис. 4. Схема взаимодействия мобильного приложения с корпоративной информационной системой.

Современные технологии управления фоновыми потоками...

При нехватке памяти в системе, ОС Android может завершить процесс приложения для освобождения ресурсов.

На рис 2 изображена схема взаимодействия трех объектов.

В примере возвращаемый объект типа Json.

Обзор систем обмена сообщениями | Статья в журнале...

1) Пропускная способность; 2) Задержка сообщений.

Сообщение — это полезный для некоего процесса комплект данных, тогда как тема — это категория, в соответствии с которой публикуется то или иное сообщение.

Программно-аппаратная масштабируемая система контроля...

Рассмотрен процесс анализа данных и принятия решений о текущей работоспособности системы. Показан пример взаимодействия между компонентами и управляющим контроллером.

Рис. 1. Схема подключения нескольких майнинг ферм к контроллеру.

Оптимизация бизнес-процессов IT-отдела на примере ЗАО...

- создать эффективную систему мотивации сотрудников. На рисунке 1 представлена схема взаимодействия двух процессов, обратная связь между

Точка контроля должна содержать в себе измеряемые показатели производительности, стоимости, времени выполнения и т. д.

Основы параллельной работы программ | Статья в журнале...

Ключевые слова: параллельная работа программ, параллелизм, вычислительная система, процесс, поток

Чем сильнее потоки независимы друг от друга, тем меньше времени тратится на задержки

Тем не менее, при использовании общей памяти и нескольких устройств...

Задать вопрос