2012-04-26 2 views
3

Я использую newrelic ruby ​​agent, и он вставляет некоторый js-код в каждый hmtl-ответ от моего приложения, например в голове: var NREUMQ = []; NREUMQ.push (["mark", "firstbyte", new Date(). getTime()]);Strip newrelic rum.js скрипты для определенных маршрутов в rails

Проблема в том, что мы разрешаем пользователям размещать контент, а иногда и размещать html-файлы. Затем newrelic вставляет эти строки в свой html, когда они нажимают на загрузку ...

Пример html, загружаемый через сайт с новыми дополнениями. Любые советы о том, как разделить материал newrelic только для определенных маршрутов или любых других методов, которые мы можем использовать только для определенных кодов кода?

HTTP/1.1 200 OK 
Server: nginx/1.1.8 
Date: Thu, 26 Apr 2012 19:25:54 GMT 
Content-Type: text/html; charset=utf-8 
Content-Length: 1176 
Connection: keep-alive 
Vary: Accept-Encoding 
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11 
X-UA-Compatible: IE=Edge,chrome=1 
Content-Transfer-Encoding: binary 
X-Runtime: 0.340155 
Progma: cache 
Content-Disposition: attachment; filename="404.html" 
Expires: 0 
Cache-Control: private 
Set-Cookie: ;) 
Status: 200 

<!DOCTYPE html> 
<html> 
<head><script>var NREUMQ=[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script> 
    <title>The page you were looking for doesn't exist (404)</title> 
    <style type="text/css"> 
    body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; } 
    div.dialog { 
     width: 25em; 
     padding: 0 4em; 
     margin: 4em auto 0 auto; 
     border: 1px solid #ccc; 
     border-right-color: #999; 
     border-bottom-color: #999; 
    } 
    h1 { font-size: 100%; color: #f00; line-height: 1.5em; } 
    </style> 
</head> 

<body> 
    <!-- This file lives in public/404.html --> 
    <div class="dialog"> 
    <h1>The page you were looking for doesn't exist.</h1> 
    <p>You may have mistyped the address or the page may have moved.</p> 
    </div> 
<script>(function(){var d=document;var e=d.createElement("script");e.async=true;e.src="https://d1ros97qkrwjf5.cloudfront.net/30/eum/rum.js";var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(e,s);})();NREUMQ.push(["nrf2","beacon-1.newrelic.com","9dfe439095",309309,"blablabla==",0,336,new Date().getTime()])</script></body> 
</html> 

Я попытался с помощью: включают NewRelic :: Agent :: Измерительные приборы :: ControllerInstrumentation newrelic_ignore: только => "загрузить" В мой контроллер, но это, кажется, не имеют никакого эффекта.

Когда я перезагрузить мой пассажир, код не добавляется к любой странице на короткое время, после того, что она ко всем страницам, даже те, которые имеют newrelic_ignore

ответ

5

Вы можете отключить автоматическую аппаратуру для New Relic RUM - это то, что автоматически вставляет JS на ваши страницы. В newrelic.yml есть настройка, которая включает и выключает авто-RUM. Подробности см. На странице documentation for RUM in Ruby.

После того, как вы это сделали, вы можете вручную добавить инструментальные средства для действий, которые вы хотите измерить для времени загрузки страницы конечного пользователя. Как это сделать, также описано в документах - вы вызываете методы API агента Ruby, чтобы вставлять верхний и нижний колонтитулы на свои страницы.

+4

после разговора с New Relic Customer Support, это может быть выполнено только на глобальном уровне, а затем добавлено отдельно. – Michael

+0

Похоже, вы можете использовать черный список для контроллера, используя [newrelic_ignore_enduser] (https://docs.newrelic.com/docs/agents/ruby-agent/installation-configuration/ignoring-specific-transactions#page-load-timing-rum) – Arth