Потоковая передача журналов hapi.js в Google Cloud

Я уже некоторое время использую Google Cloud Platform, развернул несколько приложений Node.js, используя Custom Runtime App Engine. Узел и GAE - это относительно новая комбинация, и, конечно же, есть преимущества и недостатки в использовании этого пути вместо традиционного GCE. Написание об этом опыте может быть хорошей идеей для моей следующей публикации, но на этот раз я хочу поделиться с вами, как в полной мере использовать GCP Logging с вашим приложением узла.

Меня всегда беспокоит, что готовое решение для ведения журналов, которое Google предоставляет для настраиваемой среды выполнения GAE, представляет собой простой агент Fluentd, который считывает журналы приложений в виде простого текста без возможности определения шаблона журнала. Таким образом, разработчики не могут анализировать свои журналы и выяснять, что происходит с их приложением. Недавно я начал работать над новым приложением и, как всегда, выбрал свой стек hapi.js поверх GAE. Единственная проблема заключается в том, что мне нужна была хорошая инфраструктура ведения журналов для мониторинга всех данных, которые передаются в мое приложение. Я разорвал сеть в поисках элегантного решения, как передавать мои журналы в GCP Logging без каких-либо указаний. Именно тогда я решил сделать шаг вперед и создать модуль, который передает журналы Good (модуль регистрации для hapi) в GCP Logging. Благодаря недавнему рефакторингу, выполненному Адамом Бретцем в версии 7, Good reporter - это просто объект stream, который очень легко реализовать. Используя модуль gcloud (модуль GCP api), я расширил класс Stream.Writable, чтобы создать поток, который отображает входящие данные Good в запись журнала GCP и отправляет это в облако. Теперь все журналы полностью структурированы в GCP Logging, и я могу создавать собственные показатели и получать информацию из моих журналов.

Этот модуль очень легко использовать, если вы уже знакомы с hapi.js (если нет, я рекомендую вам попробовать).

  • Установите модуль npm install good-gcloud
  • Добавьте good-gcloud в свой Хороший репортер в качестве конечного потока
  • Зарегистрируйтесь как обычно, используя server.log или request.log.
  • Анализируйте свои журналы с помощью GCP Logging

Для получения более подробных инструкций по настройке good-gcloud посетите страницу github.

Жду ваших отзывов и активности в репозитории!

P.S Я создал два других полезных потока для Добра

  • Good-separator - добавляет разделитель после каждого объекта в потоке. Используется для добавления разрыва строки после каждого объекта при потоковой передаче на стандартный вывод.
  • Good-requests-filter - фильтрует логирование запросов с помощью регулярного выражения. Используется для фильтрации запросов, связанных с чванством.