Статьи

Наблюдаемость в Heroku: как контролировать приложения в управляемой инфраструктуре

Облачные платформы, такие как Heroku, упрощают размещение приложений: просто загрузите свой код, и они развернут его для вас. Но распространенное заблуждение заключается в том, что, поскольку вы не владеете инфраструктурой, вы не можете реально контролировать свои приложения или видеть их изнутри.

К счастью, Heroku дает вам полную наблюдаемость над вашими приложениями. Вы можете получить доступ к важным метрикам, включая использование ЦП и ОЗУ, журналы, запросы HTTP и метрики времени выполнения, используя ряд инструментов ведения журналов и отладки, таких как Heroku Dashboard, Logplex и удаленная отладка in-dyno. Вы даже можете расширить свои возможности мониторинга с помощью сторонних надстроек, которые варьируются от служб мониторинга ошибок до комплексных решений для мониторинга производительности приложений (APM).

Вам также может понравиться: Как анализировать новые метрики времени выполнения Heroku

Наблюдение и отладка с использованием встроенных инструментов Heroku

 Следующие методы встроены в платформу Heroku и доступны для всех приложений:

Агрегированные  журналы

Журналы предоставляют подробные записи о ваших приложениях и инфраструктуре. Они полезны для извлечения данных из приложений для устранения неполадок и отладки, мониторинга операций и отслеживания запросов. Журналы также обычно используются для аудита и соответствия нормативным требованиям. Logplex, средство маршрутизации журналов Heroku, хранит журналы продолжительностью до одной недели, но вы можете использовать надстройку журналов или приемник журналов для автоматического экспорта журналов.

Heroku объединяет журналы, созданные с помощью запущенных приложений и самой платформы Heroku. Они включают:

  • Журналы сборки
  • Журналы приложений распечатываются в stdout или stderr, через все работающие dynos (контейнеры)
  • Системные журналы, сгенерированные платформой Heroku, такие как перезапуск или сбой приложения
  • Журналы API, которые представляют собой административные действия, выполняемые вами или другими пользователями
  • Журналы от дополнительных служб, таких как присоединенная база данных

Вы можете получить доступ к журналам через панель инструментов Heroku, интерфейс командной строки Heroku или использовать журналы напрямую через Logplex .

Heroku Dashboard 

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

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

На панели инструментов отображаются следующие показатели:

 

История событий и использование оперативной памяти отображаются на приборной панели Heroku.  

Вы можете получить еще более конкретные показатели в зависимости от типа вашего процесса. Например, приложения, которые используют тип веб-процесса, показывают время ответа HTTP и пропускную способность :

 

Метрики для веб-динамов на панели инструментов Heroku.

 

Метрики выполнения языка

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

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

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

Подмножество метрик времени выполнения Node.js, собранных Heroku.

 

Heroku Exec

Heroku Exec полезен для устранения проблем, которые не могут быть воспроизведены локально. Он создает SSH-туннель в dyno, позволяя вам запускать команды и открывать сеансы удаленной отладки . Для проблем, которые не могут быть решены с помощью журналов или метрик, Heroku Exec позволяет вам перейти непосредственно к источнику.

Чтобы включить удаленную отладку для приложений Node.js, вы можете открыть порт удаленной отладки, добавив этот   --inspect=<port>параметр в ваш Procfile. Для приложений Java вам нужно будет включить протокол отладки проводов Java (JDWP) . Вы также можете использовать Java-плагин Heroku CLI для запуска средств отладки, таких как VisualVM, jmap и jstack. Для получения подробных инструкций см. Документацию Heroku Exec .

После повторного развертывания приложения перенаправьте порт удаленной отладки на локальную систему, используя:


Оболочка