Какова самая важная особенность вашего приложения Node.js? Как вы думаете, у него есть модная нечеткая логика для вашего полнотекстового поиска или, возможно, с помощью сокетов для чатов в реальном времени? Кому ты рассказываешь. Какая любимая, самая удивительная и сексуальная функция, которую вы можете добавить в приложение Node.js?
Хотите знать мой? Высокая производительность без простоя Отказ Имеянные приложения должны делать три вещи хорошо.
- Обеспечить минимальное время простоя
- Иметь предсказуемое использование ресурсов
- Оценка эффективно на основе нагрузки
В части 1, Node.js ключевые метрики для мониторинга, мы говорили о ключевых метриках Node.js, которые вы должны следить за тем, чтобы понять здоровье вашего приложения. Я также объяснил плохие практики в Node.js, вам следует избегать, например, блокируя нить и создавая утечки памяти, но и несколько аккуратных хитростей, которые вы можете использовать для повышения производительности вашего приложения, например, использование модуля кластера для создания рабочих процессов и Выполнение долгосрочных процессов, чтобы работать отдельно от основной нити.
В этой статье я объясню, как добавить мониторинг на приложение вашего Node.js с 5 различными инструментами с открытым исходным кодом. Они могут не иметь полноценные функции, такие как Сематест или Datadog, но имейте в виду, что они имеют продукты с открытым исходным кодом и могут держать себя в себе просто в порядке.
Node.js Мониторинг с AppMetrics
Узел приложение Metrics Dashboard Показывает показатели производительности вашего бегового приложения Node.js. Это простой модуль, который вы устанавливаете и требуете в верхней части основного исходного файла Node.js. Вы Установите модуль из NPM Запустив следующую команду в вашем терминале.
$ npm install appmetrics-dash
AppMetrics Обеспечивает очень простое в использовании веб-панелью приборной панели. Все, что вам нужно сделать, чтобы получить панель инструментов для всех HTTP-серверов, созданных вашим приложением, вы добавляете этот фрагмент в файл App.js, или все, что вы называете основным исходным файлом.
// Before all other 'require' statements require('appmetrics-dash').attach()
Теперь у вас будет новый серверный маршрут /appmetrics-dash
Где вы можете увидеть множество полезных метрик.
- Профилирование CPU
- HTTP входящие запросы
- Http пропускная способность
- Среднее время отклика (топ 5)
- Процессор
- объем памяти
- Куча
- Время контура событий
- Среда
- Другие запросы
- HTTP исходящие запросы
Этот инструмент не только отображает метрики. Он позволяет создавать отчеты узлов и снимки кучи непосредственно с помощью приборной панели. Кроме того, у вас есть доступ к графам пламени. Довольно круто для инструмента с открытым исходным кодом.
Мониторинг Node.js с монитором Express Status
Express.js Является ли рамки де-факто для выбора для разработчиков Node.js. Экспресс монитор состояния Это невероятно простой, самосведомленный модуль, вы добавляете в свой экспресс-сервер. Это подвергает /положение дел
Маршрут, который сообщает метрики сервера в режиме реального времени с помощью Socket.io и Chart.js Отказ
Установка инструмента из NPM так же просто, как это.
$ npm install express-status-monitor
После того, как у вас установлен модуль, вам нужно добавить его перед любым другим промежуточным программным обеспечением или маршрутизатором.
app.use(require('express-status-monitor')())
Как только вы запустите свой сервер, перейдите к /положение дел
Маршруйте и ознакомьтесь с метриками Node.js.
Мониторинг Node.js с Prometheus
Если вы не живете под скалой, вы, должно быть, слышали о Prometheus Отказ Это самый заметной и знаменитый инструмент мониторинга с открытым исходным кодом, который вы можете использовать сегодня. PROMETHEUS — 100% открытый источник и, управляемый сообществом. Все компоненты доступны под Лицензия Apache 2 на Github Отказ Это также Окончил проект-член из Облачный родной вычислительный фонд наряду с проектами, как Кубернаны и Fluentd Отказ
Чтобы начать мониторинг с Premetheus, вам нужно Скачать последний выпуск и установить его.
$ tar xvfz prometheus-\*.tar.gz $ cd prometheus-\*
Затем вы начинаете его, запустив файл исполняемого файла, но перед запуском этой команды необходимо создать файл PROMETHEUS.YML. Это файл конфигурации для сбора метрик от мониторированных целей, соскребая конечные точки HTTP Metrics на этих целях.
# prometheus.yml scrape_configs: - job_name: 'prometheus' scrape_interval: 1s static_configs: - targets: ['127.0.0.1:3000'] labels: service: 'test-prom' group: 'production'
Теперь вы можете запустить Prometheus.
$ ./prometheus --config.file=prometheus.yml
Тем не менее, я достаточно ленивый, и мне нравится Докер много. Так что я делаю это, это управлять Официальный Premetheus Docker Image И избегайте все хлопоты загрузки.
Мониторинг Node.js с Prometheus и Docker
Прежде всего, перейдите к корневому каталогу вашего Node.js приложения. Здесь вы создадите PROMETHEUS-DATA
каталог и поместите PROMETHEUS.YML
Файл в нем. Как только вы сделали это, продолжайте и двигайтесь, чтобы запустить контейнер Prometheus Docker.
Вы получите официальное изображение PROMETHEUS DOCKER и запустите контейнер с командой Docker Run.
$ docker run -d \ --name prometheus \ --network="host" \ -v "$(pwd)/prometheus-data":/prometheus-data \ prom/prometheus \ -config.file=/prometheus-data/prometheus.yml
Я решил запустить контейнер с --Network = "Host"
Чтобы контейнер Prometheus доступа к локальному хосту моего хоста, и при этом он настолько, открытая конечная точка приложения Node.js. В противном случае, если у вас работают как PROMETHEUS, так и Node.js в контейнерах, вы настроили сеть между двумя, чтобы быть видимым только между собой.
-В
Флаг будет сопоставлять PROMETHEUS-DATA
Справочник от хоста до идентично именованного каталога внутри контейнера.
При запуске контейнера PROMETHEUS вы можете двигаться дальше, чтобы добавить необходимую конфигурацию в приложении Node.js, чтобы открыть конечную точку метрик. Вам нужно установить Prometheus Client для Node.js от NPM первый.
$ npm install prom-client
Затем вы добавите базовую конфигурацию для PROMETHEUS.
// after all 'require' statements const client = require('prom-client') const collectDefaultMetrics = client.collectDefaultMetrics collectDefaultMetrics({ timeout: 1000 }) app.get('/metrics', (req, res) => { res.set('Content-Type', client.register.contentType) res.end(client.register.metrics()) })
Что осталось, это запустить сервер Node.js и открыть http://localhost: 9090/График
Для доступа к графикам прометея.
Мониторинг Node.js Performance с Clinic.js
Clinic.js Включает в себя три инструмента, которые помогут диагностировать и точно определять проблемы с производительностью Node.js. Это удивительно легко в использовании. Все, что вам нужно сделать, это установить Модуль от NPM и запустить его. Это будет генерировать отчеты для вас, которые сделают поиск неполадок намного проще.
Чтобы установить Clinic.js Запустите эту команду в вашем терминале.
$ npm install clinic
Как только у вас установлено, это все, что выбираете, какой отчет генерируется. Вы можете выбрать между тремя.
- Доктор
- Собирает метрики путем инъекционных зондов
- Оценить здоровье и эвристика
- Создает рекомендации
BubbleProf — новый, полностью уникальный подход к профилированию вашего кода Node.js
- Собирает метрики с помощью Async_Hooks
- Отслеживает задержку между операциями
- Создает пузырьковые графики
Пламя — раскрывает узкие места и горячие пути в вашем коде с помощью Flamegraphs
- Собирает метрики от дискретизации процессора
- Отслеживает верхнюю часть стопки
- Создает графики пламени
Давайте начнем с запуска доктора и нагрузки на тестирование приложения Node.js.
$ clinic doctor -- node app.js
Хотя он работает, запустите тест нагрузки с желаемым инструментом.
$ loadtest -n 1000 -c 100 [http://localhost:3000/api](http://localhost:3000/api)
После того, как это сделано работает, остановите сервер и Clinic.js доктор откроет отчет, который вы можете проверить.
Используя этот же подход, вы можете запустить либо BubbleProf или Flame, и получить графики для соответствующих инструментов.
Мониторинг Node.js с PM2
Запуск приложений Node.js в производстве становится намного проще с PM2. Это менеджер процесса, который легко позволяет запустить приложения в режиме кластера. Или, на английском языке, это появится процесс для каждого CPU Core вашего хозяина.
Начните с установки PM2 Отказ
$ npm install pm2 -g
Как только он установлен, вы порождаете демон PM2, запустив эту команду в вашем терминале, если ваш главный исходный файл является App.js.
$ pm2 start app.js -i 0
-Я 0
Флаг стоит для экземпляров. Это запускает ваше приложение Node.js в режиме кластера, где 0 обозначает количество сердечников CPU. Вы можете вручную поставить любой номер, который вы хотите, но отпустить PM2 подсчитать ядра и порождать, что количество работников намного проще.
Мониторинг Node.js с PM2 так же просто.
$ pm2 monit
Эта команда откроет приборную панель в терминале. Здесь вы можете отслеживать процессы, журналы, задержку цикла, память процесса и процессором.
Удаление мониторинга Node.js с инструментами с открытым исходным кодом
Метрики производительности имеют решающее значение для хранения ваших пользователей счастливыми. В этой статье я показал вам, как добавить мониторинг на свой приложение Node.js с 5 различными инструментами с открытым исходным кодом. После изучения Node.js Ключевые метрики для мониторинга В части 1 этой серии добавляют инструменты для мониторинга ваших приложений в реальной жизни — это естественная прогрессия обучения. Последняя часть серии будет покрывать Производство готовы к мониторингу Node.js с sematext Отказ
Если вы хотите проверить пример код, Вот репо со всеми образцами. Вы также можете клонировать репо и выбирать любой из инструментов сразу.
Если вам нужен наблюдаемость полной стопки для вашего программного стека, проверьте Сематест Отказ Мы нажав на Открытый исходный код наши продукты и оказать влияние.
Надеюсь, вы, ребята, и девочки наслаждались, читая это так сильно, как мне нравилось писать. Если вам понравилось, нажмите кнопку Tiny Share, чтобы все люди увидят этот учебник. До следующего раза, будь любопытно и повеселиться.
Оригинал: «https://dev.to/sematext/node-js-open-source-monitoring-tools-440a»