Мониторинг производительности приложений в Swisscom Application Cloud

Я изучаю варианты мониторинга нашей установки в облачном хранилище Swisscom. Мои цели следующие:

  • контролировать показатели производительности для развернутого приложения (например, процессор, диск, память)
  • отслеживать показатели эффективности услуг (медленные запросы, количество запросов, в идеале также некоторые показатели по квотам)

Пока я понимаю, что варианты следующие (включая некоторые НО):

  1. Я использовал очень хороший TOP cf-plugin ( github). Это работает очень хорошо. Кажется, что он регистрируется, чтобы получить необходимые сопла пожарного рукава и потреблять данные.

Это очень полезно для отслеживания / специального мониторинга, но не очень хорошо для серьезного мониторинга инфраструктуры.

  1. Другой способ, который я нашел, - использовать решение firehose-syslog.

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

Проблема в том, что для этого требуется зарегистрированный клиент, поэтому он может аутентифицироваться с помощью конечной точки допплера. По какой-то причине top-cf-plugin делает это автоматически / другим способом.

  1. Последний вариант, который я рассматриваю, - это встроить сам мониторинг в приложение (используя специальный buildpack-пакет).

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

Я хотел бы проверить, есть ли кто-то (был) на аналогичной дороге, есть ли какие-то выводы.

В конце концов я хотел бы поднять следующие вопросы к поддержке сообщества swisscom:

  • Можно ли зарегистрировать клиент uaac, чтобы иметь возможность получать события через сопло пожарного шланга от внешнего сервиса? (это требует учетных данных администратора, если я правильно читал)
  • Есть ли альтернативный способ аутентификации с помощью сопла (например, с использованием специального пользователя и его токена аутентификации?)
  • Есть ли альтернатива для мониторинга развертывания CF в Swisscom? В конце концов, есть ли бумага, блог-пост или другая форма документации, которая будет полезна в этом отношении (также для других пользователей AppCloud)?

1 ответ

Решение

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

  1. CF API

    Вы можете получить основные метрики конкретного приложения, опросив CF API: https://apidocs.cloudfoundry.org/5.0.0/apps/get_detailed_stats_for_a_started_app.html

    Тем не менее, поскольку вы должны опросить (и для каждого приложения), это не рекомендуемый способ.

  2. Метрики в системном журнале

    CF позволяет разработчикам пересылать свои журналы в канализацию системного журнала; в более поздних версиях CF также отправляет метрики в этот сток системного журнала (см. https://docs.cloudfoundry.org/devguide/deploy-apps/streaming-logs.html). Например, вы можете использовать сервис Elasticsearch от Swisscom, чтобы сохранить эти метрики, а затем проанализировать их с помощью Kibana.

  3. Метрики с использованием loggregator (firehose)

    Firehose позволяет потоковую передачу журналов клиентам для двух типов ролей: потоковую передачу всех журналов администраторам (для чего требуется клиент UAA с разрешениями администратора) и потоковую передачу журналов и метрик приложений разработчикам с разрешениями в пространстве приложения. Это также то, что cf logs команда использует. cf top также работает таким образом (он перечисляет все приложения и потоковые журналы каждого приложения). Тем не менее, вы обнаружите, что большинство инструментов с открытым исходным кодом, которые используют firehose, работают только в режиме администратора, так как они написаны для оператора платформы.

Конечно, у вас также есть возможность контролировать свое приложение, применяя его (подход "белого ящика"), например, настраивая исполнительный механизм Spring в загрузочном приложении Spring или добавляя агента вашего любимого поставщика APM (Dynatrace, AppDynamics, ...)

Я думаю, что это самый распространенный подход; мы видели, как многие команды добились успеха, используя свои приложения. Тем более, что расширенный мониторинг в любом случае требует от вас создания собственных метрик, поскольку пожарный шланг, предоставляемый метриками ЦП / памяти, не так уж силен в мире микросервисов.

Тем не менее, вариант 2. также стоит попробовать, тем более что поддержка метрики стека ELK становится все лучше и лучше.

Другие вопросы по тегам