2012-03-14 16 views
7

Nuestra aplicación de rieles de tamaño medio se ejecuta (en producción) en tres servidores. Acabamos de terminar un período de prueba, usando New Relic como una joya. Durante el período de prueba rastreamos los tres servidores, pero para continuar con una suscripción solo necesitamos (y solo tenemos el presupuesto) hacer un seguimiento de la aplicación1.Orientación de New Relic para que se ejecute solo en 1 (de 3) servidores de aplicaciones

Así que necesitamos desactivar la nueva reliquia en la aplicación2 y la aplicación3. En comunicación con su servicio al cliente, me dijeron que esto es posible y me han dirigido a la última entrada en this page, pero no puedo entender cómo me ayuda a desactivar el nuevo seguimiento de reliquias en los otros dos servidores, en particular porque hay no se menciona newrelic_rpm en environment.rb: es una gema, después de todo, y solo se menciona en el Gemfile.

Hay una opción booleana agent_enabled en newrelic.yml que pensé que podríamos establecer por servidor, pero no sé cómo hacer esto. ¿Hay alguna manera de averiguar en qué servidor estamos en rails, similar a la variable RAILS_ENV?

+0

¿Qué está utilizando para las implementaciones? capistrano? – iltempo

+0

Sí, a través de la gema de tapón. Tenemos un monitor en nuestro capfile que notifica una nueva reliquia cuando lo implementamos; de lo contrario, todo se configura a través de la gema y newrelic.yml – omnikron

Respuesta

11

El archivo newrelic.yml se representa con ERB antes de que el agente lea los valores de configuración. Por lo tanto, puede hacer esto:

monitor_mode: <%= 'app1' == Socket.gethostname ? 'true' : 'false' %> 

Esto permitirá que el agente informe a New Relic solo para ese host.

+0

Esto sería fantástico si funciona pero ha deshabilitado el seguimiento en todos los servidores, incluida la aplicación 1. ¿Cómo/dónde exactamente está teniendo lugar la representación de ERB? – omnikron

+0

Tenía una etiqueta de apertura ERB incorrecta. ¡Solucionado ahora!/facepalm – rkb

+0

Debería haber notado eso también ... estúpida HAML haciéndome olvidar cosas! – omnikron

1

Sugeriría que se vincule newrelic.yml solo en el servidor donde se necesita. Para que esto suceda, elimine el config/newrelic.yml de su repositorio completamente y colóquelo en el directorio shared en sus servidores.

A continuación, vincule este archivo solo para un determinado rol en capistrano nuevamente en config/newrelic.yml. Puede presentar un nuevo rol que solo contenga su servidor de aplicación1.

La nueva gema reliquia es de construcción segura contra fallas. Entonces está desactivado en ese caso.

+0

Al eliminar config/newrelic.yml, en conjunto hace que newrelic_rpm arroje un error cada vez que se carga, lo cual es bastante molesto. desarrollo. De lo contrario, esta sería una gran solución. Nuestro plan actual es tener dos archivos adicionales, newrelic_disabled/_enabled.yml, y sobrescribir newrelic.yml con estos al implementar. – omnikron

+0

¿Quiere decir una advertencia, verdad? Si ignora ese archivo a través de git an puesto ahí en su copia de desarrollo, también le daría la vuelta a la advertencia. – iltempo

+0

Sí, una advertencia, no es un error, lo siento. ¡Es un buen truco! Definitivamente lo tendré en cuenta para el futuro, siempre me sorprende recordar que los archivos pueden existir _al lado_ del repositorio git también :) En este caso, seguiremos con nuestro método de implementación para evitar tener que transferir archivos entre el equipo a la antigua usanza, podría convertirse en un dolor de cabeza más tarde. ¡Muchas gracias por su ayuda! – omnikron

Cuestiones relacionadas