Облачные платформы, такие как 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
Панель инструментов дает вам краткий обзор ваших приложений. Это полезно для мониторинга в реальном времени , обнаружения аномалий, таких как сбои или изменения в потреблении ресурсов, и общих тенденций. Например, если вы развертываете новое приложение или обновляете существующее приложение, панель мониторинга может немедленно показать влияние на использование ресурсов и пропускную способность.
Просто войдите в систему, и вы увидите панель инструментов: она содержит полный обзор ваших приложений, ресурсов и дополнений. Он показывает активность динамо, показатели (агрегированные по типу процесса ), журналы и действия, влияющие на ваши приложения. Панель инструментов также может уведомлять вас о потенциальных проблемах и связывать вас с соответствующими документами.
На панели инструментов отображаются следующие показатели:
- Объем памяти и использование
- Загрузка процессора
- Инициированные пользователем события , такие как изменения конфигурации и перезапуск dyno
- События на платформе Heroku
История событий и использование оперативной памяти отображаются на приборной панели 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 .
После повторного развертывания приложения перенаправьте порт удаленной отладки на локальную систему, используя:
Оболочка
xxxxxxxxxx
1
$ heroku ps:forward <port>
2
Например, здесь мы используем код Visual Studio для отладки работающего Node.js dyno:
Отладка приложения Heroku в режиме реального времени с использованием кода Visual Studio.
Мониторинг с помощью дополнений
Если нативные решения не соответствуют вашим потребностям, вы можете выбрать один из сотен дополнений, которые предоставляют дополнительные функции мониторинга. Мы перечислим некоторые из них здесь.
логирование
Дополнения для ведения журналов предоставляют дополнительные функции управления журналами, такие как поиск, индексация, создание графиков и создание оповещений.
Есть несколько каротаж дополнений доступны из сторонних сервисов , таких как сумо Logic и logz.io . Кроме того, многие службы могут автоматически анализировать журналы Heroku, упрощая их поиск и отслеживание тенденций во времени с помощью пользовательских панелей мониторинга и оповещений. Например, SolarWinds Loggly предлагает предварительно сконфигурированную панель мониторинга для журналов Heroku , предоставляя вам визуальный обзор кодов состояния HTTP и путей, по которым отсутствуют ресурсы.
Диаграммы главных доменов, кодов состояния HTTP и путей, приводящих к 404 ошибкам в SolarWinds Loggly.
Мониторинг производительности приложений (APM)
Существует несколько надстроек для мониторинга от таких поставщиков, как New Relic APM и Scout . Эти дополнения позволяют собирать более подробные показатели производительности приложений, включая время отдельных транзакций, обращения к базе данных, попадания в кэш и время, затрачиваемое на различные компоненты. Это может помочь вам определить причину проблем с производительностью и ошибок.
Например, AppOptics показывает следующую разбивку для запроса, отслеживаемого через приложение Node.js, показывая разбивку времени, потраченного на ожидание в файловой системе по сравнению с маршрутизацией:
Отслеживание запроса Node.js в AppOptics для SolarWinds.
Заключение
Вы хотите, чтобы управление приложениями было максимально безболезненным. Существует несколько способов мониторинга приложений с помощью облачных провайдеров, таких как Heroku, с помощью подробных метрик инфраструктуры или журналов. Чтобы узнать больше, посетите Центр разработки Heroku .
Дальнейшее чтение
13 причин, почему вы должны использовать Heroku в вашем следующем проекте
Взгляд на облачный мониторинг: стратегия, типы и преимущества
4 метрики для мониторинга при увеличении и уменьшении в облаке