Как работает New Relic? - PullRequest
       55

Как работает New Relic?

20 голосов
/ 15 июля 2011

Как New Relic может подключиться к моему приложению с помощью простой установки? Откуда оно знает все методы, запросы и т. Д.

Работает для RoR, PHP и т. Д.

Кто-нибудь может объяснить технологию, стоящую за этим? Я заинтересован в том, чтобы подключиться к своему приложению Rails, но я хочу сделать это гладко, как New Relic.

Спасибо

Ответы [ 7 ]

12 голосов
/ 15 июля 2011

Прежде всего, вам не удастся продублировать функциональность NewRelic самостоятельно. Игнорируя серверную часть, rpm Gem является довольно сложным программным обеспечением, занимающимся многими вещами. Посмотрите на источник , если хотите увидеть, как он подключается к системе Rails. Источник стоит прочитать, так как он делает некоторые интересные вещи с точки зрения потоков и маршалинга данных перед отправкой обратно на свои серверы.

Если вам нужна замена, потому что Newrelic стоит дорого (и вполне справедливо, он удивителен тем, что он делает), тогда взгляните на проект FreeRelic на Github.

2 голосов
/ 30 апреля 2014

Они используют АСПЕКТНО-ОРИЕНТИРОВАННЫЕ КОНЦЕПЦИИ ПРОГРАММИРОВАНИЯ И Reflection в значительной степени для перехвата исходного вызова метода и добавления инструментария вокруг этого.

1 голос
/ 23 июля 2011

Для решения rails вы можете просто реализовать более подробный уровень ведения журнала (уровень разработки / отладки) и запросить файл production.log для конкретных событий, времени и т. Д.

0 голосов
/ 28 марта 2019
  • Если вы уже знакомы с мониторингом приложений New Relic тогда вы, вероятно, знаете об агентах New Relic, которые работают в процессе на веб-приложениях, собирая и сообщая всевозможные подробности о том, что происходит в приложении. RUM использует агентов для динамического внедрения JavaScript на страницы, как они построены. Внедренный JavaScript собирает информацию о времени в браузере и содержит детали, которые определить конкретное приложение и веб-транзакцию, обработанную на бэкэнд, а также сколько времени было потрачено в приложении на каждый запрос. Когда страница завершает загрузку в браузере конечного пользователя, информация отправляется обратно в New Relic асинхронно - поэтому она не время загрузки страницы эффекта.

    Вы можете включить / выключить RUM через настройки приложения в New Relic. Также вы можете включить / выключить RUM через файл конфигурации агента (newrelic.yml - флаг «browser_monitoring auto_instrument» был введены).

    Агенты были улучшены для автоматического внедрения JavaScript в HTML-страницы с использованием RUM так же просто, как установить флажок Новая панель управления Relic. Однако, если вы предпочитаете больше контроля, вы можете использовать API-интерфейс New Relic для генерации JavaScript и, таким образом, точно контролировать, когда и где находятся сценарии верхнего и нижнего колонтитула включен.

0 голосов
/ 16 января 2019

В общем, жемчужина New Relic вставляет своего рода промежуточное программное обеспечение в вашу веб-инфраструктуру и собирает данные с вашей конечной точки (представьте, как маршрут рельсов) до момента ее ответа. После каждого «времени уборки» (по умолчанию 60 секунд) он отправляет почтовый запрос в службы NR с этими данными. Вы также можете адаптировать нужные данные с помощью пользовательских метрик, пользовательских событий. Также возможно выполнять запросы с NRQL и строить графики с этим (как вы сделали бы в Graphana). У них также есть сервис настройки для Wordpress, но с самого начала он немного грязный. Некоторые опции, если вы хотите сэкономить немного денег, это настроить cloudwatch + datadog, но я бы дал шанс их сервису, если время безотказной работы имеет решающее значение для вашего приложения.

0 голосов
/ 19 июня 2016

Для Java они присоединяют агент Java к JVM, который перехватывает вызовы методов и отслеживает их.Вы можете использовать AspectJ для репликации того же поведения и регистрировать каждый вызов метода в любом месте, скажем, создавать собственные метрики Cloudwatch.

0 голосов
/ 18 февраля 2014

В случае Java это прием байт-кода.Они «взламывают» ключевые методы вашего сервера приложений и добавляют в них свой код.Затем они отправляют соответствующую информацию о транзакции на свой сервер, объединяя ее, и вы можете увидеть сводку.Это действительно сложный процесс, поэтому я не думаю, что один разработчик сможет его реализовать.

...