Статьи

Инструментирование Ruby on Rails с TraceView менее чем за 10 минут

Источник

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: образ

Related Articles

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)