TraceView от AppNeta обеспечивает глубокий мониторинг производительности веб-приложений.
Это дает вам представление о производительности вашего веб-приложения, например:
и детализация каждого запроса, показывающая подробные сведения о том, сколько времени затрачивается на отдельные запросы (в натуральную величину ):
и даже мониторинг конечного пользователя:
Я запускаю его на Gameface и PasswordPusher — это важный инструмент для выявления проблемных областей, узких мест в производительности и просто неэффективного кода. (Читайте: ActionView)
Отказ от ответственности: я создал инструментарий Ruby для Traceview, поэтому я могу быть немного предвзятым. … Но не без оснований!
Установка
Установка TraceView состоит из двух частей: 1) установка системного демона на вашем хосте и 2) установка гема Ruby в вашем приложении.
Почему системный демон? TraceView использует системный демон для сбора инструментария из источников за пределами кода приложения, таких как метрики хоста, Apache или Resque.
Системный демон устанавливается с помощью двух команд, которые можно вставить в вашу оболочку. Версия этих команд для конкретной учетной записи доступна на панели инструментов TraceView после создания учетной записи. (В разделе «Настройки»; «Настройка приложения»; «Отслеживать новые хосты»)
И гем для вашего приложения Gemfile доступен на RubyGems :
gem 'oboe'
Настроить
TraceView функционирует, отбирая подмножество всех запросов, которые проходят через ваше веб-приложение. Эта частота дискретизации должна быть установлена в точке входа запросов в вашем приложении. Это может быть балансировщик нагрузки, Apache / nginx или сам Ruby. Последовательные хосты и программные стеки, через которые проходят запросы, будут действовать соответствующим образом в соответствии с настройками восходящего потока.
Да. Это означает, что запросы могут отслеживаться между хостами, программные стеки даже отслеживают внутренние вызовы API через HTTP / SOAP / REST, что обеспечивает захватывающее понимание приложения. Но это еще один пост в другой раз.
В этом пошаговом руководстве предполагается, что вы используете приложение Ruby on Rails с Unicorn, Thin, Puma или любым другим веб-сервером Ruby на основе Rack.
Вместо этого настройте Apache / nginx в качестве точки входа, см. Здесь .
Рубин как точка входа
Если вы установили Apache или nginx в качестве точки входа, вы можете полностью пропустить эту часть. oboe
Камень будет принимать это калькой инструкции от верховий автоматически.
Когда oboe
гем установлен в вашем приложении, он делает доступным Oboe::Config
вложенный хэш параметров конфигурации, которые влияют на инструментарий вашего приложения.
К счастью, значения по умолчанию очень разумны, и необходимо настроить только пару начальных значений.
Два обязательных значения:
Oboe::Config[:tracing_mode] = 'always'
Oboe::config[:sample_rate] = 100000 # 10% of incoming requests
Эти значения включают трассировку (: tracing_mode) и устанавливают частоту дискретизации 10% (: sample_rate). sample_rate
Рассчитывается по величине из одного миллиона. например, 300000 будет соответствовать 30% частоты выборки, что означает, что 3 из 10 запросов будут выбраны. (Для сайтов с низким трафиком, вы можете установить эти значения выше.)
Эти значения обычно устанавливаются в инициализаторе Rails для Ruby on Rails. Смотрите раздел « Optional Rails Initializer » на этой странице . Полный список всех параметров конфигурации для Oboe::Config
здесь .
Получение данных о производительности
Вот и все. Теперь к хорошему.
Если вы хотите проверить работоспособность гобойного гема, запустите консоль Rails, вы должны увидеть сообщение, stdout
похожее на:
Tracelytics oboe gem 1.4.0.2 successfully loaded.
Обратите внимание, что на хостах, на которых не установлен системный демон, гем гобой отключается и выдает сообщение об этом факте.
Unsupported Tracelytics environment (no libs). Going No-op.
Разверните / перезапустите приложение, и через несколько минут вы должны увидеть следы на панели мониторинга TraceView.
Резюме
Установка и настройка TraceView для вашего приложения — это простой двухэтапный процесс, который можно выполнить за 10 минут или меньше. Traceview дает уникальное всестороннее представление запросов, даже когда они пересекают хосты и программные стеки.
Вещи быстро развиваются для инструментария языка Ruby в TraceView. Мы уже поддерживаем трассировку memcache-client, memcached, dalli, mongo, moped, mongoid, mongomapper, cassandra, ActiveRecord (postgres, mysql, mysql2) и многое другое. Совсем недавно мы добавили поддержку трассировки Rack и Resque. Полный список поддерживаемых библиотек см. В верхней части этой статьи .
Если вы еще не опробовали TraceView , попробуйте . Вы не будете разочарованы.
Дополнительно: Некоторые Случайные диаграммы Porn
Скриншот, который я отправил Линоде, когда производительность неожиданно упала:
Linode migrated my VPS to a lesser utilized host with evident results (Thanks Linode):
An older issue that Gameface had with atrocious rendering times:
Ruby 2.0 Released: Let the tracing begin!
Monitoring Background Jobs in Ruby’s Resque
Instrumenting Ruby on Rails with TraceView in under 10 minutes (source)