попасть внутрь акка и спрей
Kamon - это инструмент мониторинга JVM; он работает, проверяя / переплетая ваш код и профилируя его в режиме реального времени. Что отличает Kamon от visualVM и других инструментов JVM, так это то, что он отлично подходит для akka. Другие инструменты JVM позволяют глубоко анализировать потоки, выполняемые на виртуальной машине; они не подходят для мониторинга событийной и асинхронной системы, такой как akka .
На этом уровне нам нужен глубокий анализ сообщений, обрабатываемых потоком; akka не упаковывает расширение мониторинга; Камон спешит на помощь: D
Как работает Камон
Камон работает, используя аспектJ и контекст трассировки. Он использует аспектJ для запуска кода; он подключается к вызовам метода, выполняемым akka's actorSystem; с помощью этого хука Камон может отслеживать и собирать метрики в системе akka в реальном времени. Большим преимуществом этого инструментария является то, что он требует небольшого изменения кода в нашем приложении.
Теперь мы можем отслеживать наше приложение, цель которого - собрать локальные метрики для каждого актора и поток сообщений между акторами. Это дает нам более ясную картину того, что на самом деле происходит в системе акка. С помощью Kamon мы также можем отслеживать показатели JVM и системы.
Но почему мы должны отслеживать?
- Знайте общее состояние нашего приложения
- Проверить безопасность кода
- Проверить отказоустойчивость приложений
- Знайте производительность приложений
Что касается мониторинга акка, нас интересует поиск;
- Пропускная способность актера
- Задержка актера
- # обработанных сообщений
- Средний размер почтового ящика на актера
- Обработанных сообщений на актера
- Среднее время, потраченное на сообщение, находится в почтовом ящике - насколько быстро актер работает
Начало работы с Камоном
Обновите sbt и добавьте зависимости камона.
"io.kamon" %% "kamon-core" % kamonVersion, "io.kamon" %% "kamon-annotation" % kamonVersion, "io.kamon" %% "kamon-akka" % kamonVersion, "io.kamon" %% "kamon-statsd" % kamonVersion, "io.kamon" %% "kamon-spray" % kamonVersion, "io.kamon" %% "kamon-log-reporter" % kamonVersion, "io.kamon" %% "kamon-system-metrics" % kamonVersion, "org.aspectj" % "aspectjweaver" % "1.8.1",
Полная Build.scala здесь. Мы добавляем зависимость sbt (plugins.sbt) рядом, чтобы позволить нам загружать агент aspectJ при вызове run. Также важно, чтобы репортер журнала регистрировал каждую метрику, отправляемую в statsD (графит). И kamon-akka, и kamon-spray для работы нуждаются в зависимости aspectJ; другие модули используют трассировку, что позволяет использовать инструменты байт-кода для сбора показателей и выполнения распространения TraceContext на akka.
addSbtPlugin("com.typesafe.sbt" % "sbt-aspectj" % "0.10.0")
Затем мы обновляем наш application.conf и добавляем ключ kamon.
Затем мы должны запустить Kamon, чтобы опубликовать показатели, вызвав его метод start.
import kamon.Kamon Kamon.start
На ключе kamon мы добавляем бэкэнд statsD, где будем публиковать нашу статистику; и интервал, который мы хотим отслеживать. Полный application.conf здесь.
При сборке с sbt; вам нужно будет разработать стратегию слияния для конфликтов. Здесь есть образец файла слияния aop.
Настройка бэкэнда statsD и Grafana
Kamon-statsd использует statsD и графический сервер для публикации статистики; это делается по UDP; с очевидным преимуществом быть очень быстрым. Мы используем Grafana для визуализации этих показателей, которые публикует Камон. Благодаря ребятам из kamon у нас есть образ докера, который мы можем установить, этот образ объединяет statsD, graphite и Grafana и позволяет нам легко настроить.
Идеальная установка для мониторинга
Недостатки
Камон великолепен; Однако исправление обезьяны стоит дорого, и если некоторые части не будут отключены, ваша производительность резко снизится. Камон - молодой проект, но он растет.
«Помните, что получение трассировки стека при каждом использовании шаблона запроса не дается бесплатно. При использовании тяжелого режима Камон создает новое исключение и сохраняет трассировку своего стека в течение всего времени существования запроса, что потребует дополнительных ресурсов ЦП и памяти ». - Камон документы