Pregunta

Estoy usando nueva reliquia de los carriles, pero sólo necesitará Nueva Relic para controlar mi entorno de una producción. Sin embargo, tengo un servidor de ensayo que también se ejecuta en el modo de producción. Nueva Relic detecta tanto como instancias prod operativo de mi solicitud (como debería), pero no quiero tener que pagar por el seguimiento de dos casos en los que sólo quiero mantener un ojo en el uno.

New Relic acepta una variable de entorno para la clave de licencia:

license_key: <%= ENV['NEWRELIC_ACCOUNT_KEY'] %>

¿Es posible detectar el nombre de host en los archivos de entorno (es decir config / ambientes / production.rb) de modo que pueda definir esta variable de entorno de forma dinámica?

Los dos ambientes están desplegados desde el mismo repositorio Git, misma base de código fuente, así que realmente no puede cambiarlo en el código para cada implementar - que sería mejor que ser capaz de definir la variable de entorno dinámicamente alguna manera

Cualquier idea sería apreciada! Gracias!

¿Fue útil?

Solución

El agente de New Relic Ruby analizar el archivo de configuración newrelic.yml como ERB antes de analizarlo como YAML. Por lo tanto, se puede hacer un montón de truquitos, como por ejemplo:

production:
  license_key: <%= Socket.gethostname == 'mission-critical.example.com' ? 'PAID_ACCOUNT_LICENSE_KEY' : 'FREE_LITE_ACCOUNT_LICENSE_KEY' %>

Todo esto sucede de análisis durante el arranque de aplicaciones.

Si su RAILS_ENV eran diferentes de 'producción' en ese servidor de ensayo que funciona "en el modo de producción", entonces es posible que utilices las secciones del medio ambiente como sugiere Steve Graham.

Otros consejos

¿Ha creado un entorno separado para la estadificación? es decir, el desarrollo, prueba, producción y puesta en escena? Vea aquí para obtener instrucciones ...

Una vez hecho esto, se puede especificar el comportamiento de dicho medio en las config/newrelic.yml

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

etc, etc

El nombre de host sólo está disponible en un objeto de petición, así que no, que no está disponible cuando los disipadores construye el medio ambiente.

Me acaba de crear la secuencia de comandos de despliegue puesta en escena para copiar production.rb a staging.rb y puesta en marcha de la aplicación de "puesta en escena". Otra técnica sería la de no mantener el newrelic.yml en su SMC y en lugar de copiarlo o enlazarlo, de otra parte al directorio de despliegue actual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top