Начните работу с мониторингом Prometheus и express.js за несколько минут

Сегодня я хочу уделить время очень близкой мне теме, Прометеям и экспортерам, в конечном счете мониторингу вообще. Во-первых, я хотел бы потратить некоторое время на чтение, чтобы объяснить, почему я выбираю Prometheus в качестве своего предпочтительного оружия, когда речь идет о программном обеспечении для мониторинга на хостинге.

Согласно prometheus.io, Prometheus — это…
… набор инструментов для системного мониторинга и оповещения с открытым исходным кодом, изначально созданный в SoundCloud. С момента его создания в 2012 году многие компании и организации приняли Prometheus, и проект имеет очень активное сообщество разработчиков и пользователей. Теперь это отдельный проект с открытым исходным кодом, который поддерживается независимо от какой-либо компании. Чтобы подчеркнуть это и прояснить структуру управления проектом, Prometheus присоединился к Cloud Native Computing Foundation в 2016 году в качестве второго хостера проекта после Kubernetes.

И лично для меня Prometheus настолько прост в использовании и работает в 99,99% случаев, как и ожидалось. Он использует собственный язык запросов под названием PromQL и считается очень простым в использовании. Для разработчиков нет ничего проще, чем отправлять метрики в систему, собирать метрики временных рядов с помощью модели извлечения через HTTP — это означает, что ваш сервис предоставляет конечную точку в виде открытого текста, а Prometheus собирает (вычищает) данные из нее. И это то, что мы собираемся сделать сегодня!

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

mkdir example-express-monitoring
cd example-express-monitoring
npm init
npm install express
npm install nodemon
express
npm install

После завершения установки зависимостей и, надеюсь, ваш терминал не заполнен только красными линиями, давайте запустим экспресс-сервер с помощью nodemon (чтобы он перезагружал браузер и код, работающий на сервере, каждый раз, когда вы вносите изменения).

нодмон старт

Откройте браузер и перейдите по адресу http://localhost:3000.

Вы должны увидеть что-то вроде следующего.

Я знаю, что на данный момент это не очень хороший вид, но мы уже на полпути, я бы сказал, что самая сложная часть более или менее закончена. Но как только вы запустите скелет приложения, давайте установим необходимые пакеты npm, чтобы убедиться, что все будет совместимо с Prometheus.

npm установить экспресс-пром-пакет prom-клиент

С этого момента мы начнем смешиваться с кодом, наконец, я знаю! Как я и обещал ранее, эта часть тоже не слишком сложная — нам просто нужно включить пакет npm «express-prom-bundle» в наш код и немного его настроить.

Добавьте следующее в свой app.js и убедитесь, что вы включили promBundle перед маршрутами, так как в этом случае promBundle подберет маршруты и покажет их как метрики.

Кроме того, вы можете установить несколько параметров конфигурации для вашего promBundle, таких как пользовательские метки и коды состояния. Полный список элементов конфигурации см. на https://github.com/jochen-schweizer/express-prom-bundle.

Перейдите по адресу http://localhost:3000/metrics, и вы прибыли.

Теперь вы можете увидеть, сколько раз пользователи переходили по другому маршруту в нашем приложении и в каком состоянии эти маршруты возвращались пользователям.

Удачного экспорта!