Мониторинг производительности приложений в Swisscom Application Cloud
Я изучаю варианты мониторинга нашей установки в облачном хранилище Swisscom. Мои цели следующие:
- контролировать показатели производительности для развернутого приложения (например, процессор, диск, память)
- отслеживать показатели эффективности услуг (медленные запросы, количество запросов, в идеале также некоторые показатели по квотам)
Пока я понимаю, что варианты следующие (включая некоторые НО):
- Я использовал очень хороший TOP cf-plugin ( github). Это работает очень хорошо. Кажется, что он регистрируется, чтобы получить необходимые сопла пожарного рукава и потреблять данные.
Это очень полезно для отслеживания / специального мониторинга, но не очень хорошо для серьезного мониторинга инфраструктуры.
- Другой способ, который я нашел, - использовать решение firehose-syslog.
Это может быть развернуто как приложение, чтобы (насколько я понимаю) сделать работу аналогичным образом, как плагин TOP cf.
Проблема в том, что для этого требуется зарегистрированный клиент, поэтому он может аутентифицироваться с помощью конечной точки допплера. По какой-то причине top-cf-plugin делает это автоматически / другим способом.
- Последний вариант, который я рассматриваю, - это встроить сам мониторинг в приложение (используя специальный buildpack-пакет).
Это может быть сделано, например, с помощью Datadog. Но, похоже, для регистрации Nozzle также требуется выделенный клиент uaa.
Я хотел бы проверить, есть ли кто-то (был) на аналогичной дороге, есть ли какие-то выводы.
В конце концов я хотел бы поднять следующие вопросы к поддержке сообщества swisscom:
- Можно ли зарегистрировать клиент uaac, чтобы иметь возможность получать события через сопло пожарного шланга от внешнего сервиса? (это требует учетных данных администратора, если я правильно читал)
- Есть ли альтернативный способ аутентификации с помощью сопла (например, с использованием специального пользователя и его токена аутентификации?)
- Есть ли альтернатива для мониторинга развертывания CF в Swisscom? В конце концов, есть ли бумага, блог-пост или другая форма документации, которая будет полезна в этом отношении (также для других пользователей AppCloud)?
1 ответ
Так как для этого требуются права администратора, мы не можем выдавать клиентов UAA за пожарный рукав. Тем не менее, существуют разные способы получения метрик в контексте пользователя.
CF API
Вы можете получить основные метрики конкретного приложения, опросив CF API: https://apidocs.cloudfoundry.org/5.0.0/apps/get_detailed_stats_for_a_started_app.html
Тем не менее, поскольку вы должны опросить (и для каждого приложения), это не рекомендуемый способ.
Метрики в системном журнале
CF позволяет разработчикам пересылать свои журналы в канализацию системного журнала; в более поздних версиях CF также отправляет метрики в этот сток системного журнала (см. https://docs.cloudfoundry.org/devguide/deploy-apps/streaming-logs.html). Например, вы можете использовать сервис Elasticsearch от Swisscom, чтобы сохранить эти метрики, а затем проанализировать их с помощью Kibana.
Метрики с использованием loggregator (firehose)
Firehose позволяет потоковую передачу журналов клиентам для двух типов ролей: потоковую передачу всех журналов администраторам (для чего требуется клиент UAA с разрешениями администратора) и потоковую передачу журналов и метрик приложений разработчикам с разрешениями в пространстве приложения. Это также то, что
cf logs
команда использует.cf top
также работает таким образом (он перечисляет все приложения и потоковые журналы каждого приложения). Тем не менее, вы обнаружите, что большинство инструментов с открытым исходным кодом, которые используют firehose, работают только в режиме администратора, так как они написаны для оператора платформы.
Конечно, у вас также есть возможность контролировать свое приложение, применяя его (подход "белого ящика"), например, настраивая исполнительный механизм Spring в загрузочном приложении Spring или добавляя агента вашего любимого поставщика APM (Dynatrace, AppDynamics, ...)
Я думаю, что это самый распространенный подход; мы видели, как многие команды добились успеха, используя свои приложения. Тем более, что расширенный мониторинг в любом случае требует от вас создания собственных метрик, поскольку пожарный шланг, предоставляемый метриками ЦП / памяти, не так уж силен в мире микросервисов.
Тем не менее, вариант 2. также стоит попробовать, тем более что поддержка метрики стека ELK становится все лучше и лучше.