Domanda

Sto usando Nuovo Relic per Rails, ma solo bisogno di New Relic per monitorare il mio ambiente di una produzione. Tuttavia, ho un server di gestione temporanea che gestisce anche in modalità di produzione. Nuovo Relic rileva sia come esempi prod operativo della mia applicazione (come dovrebbe), ma io non voglio avere a pagare per il monitoraggio di due casi in cui solo voglio tenere d'occhio quello.

Nuovo Relic accetta una variabile di ambiente per la chiave di licenza:

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

E 'possibile rilevare il nome host nel file di ambiente (vale a dire config / ambienti / production.rb) in modo che posso definire questa variabile d'ambiente in modo dinamico?

Entrambi gli ambienti vengono distribuiti dallo stesso repository Git, stessa base di codice sorgente, quindi non posso davvero cambiare nel codice per ogni Deploy - sarebbe meglio essere in grado di definire la variabile d'ambiente in modo dinamico in qualche modo

Ogni pensiero sarebbe apprezzato! Grazie!

È stato utile?

Soluzione

L'agente di New Relic Rubino analizzerà il file di configurazione newrelic.yml come ERB prima analisi come YAML. Pertanto, è possibile fare un sacco di trucchetti, come ad esempio:

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

Questa analisi tutto accade in fase di avvio app.

Se il RAILS_ENV erano diversi da 'produzione' in quel server di gestione temporanea che viene eseguito "in modalità di produzione", allora si potrebbe utilizzare sezioni ambiente come suggerisce Steve Graham.

Altri suggerimenti

Avete creato un ambiente separato per la messa in scena? vale a dire sviluppo, test, produzione, e messa in scena? Vedi qui per le istruzioni ...

Dopo aver fatto questo, si può specificare il comportamento per tale ambiente in config/newrelic.yml

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

ecc, ecc

Il nome host è disponibile solo in un oggetto di richiesta, quindi no, non è disponibile quando le rotaie costruisce l'ambiente.

Vorrei solo impostare il proprio script deploy messa in scena da copiare production.rb per staging.rb e avviare l'applicazione in "messa in scena". Un'altra tecnica potrebbe essere quella di non tenere il newrelic.yml nel vostro scm e invece copiarlo, o collegarlo, da qualche altra parte per la directory deploy corrente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top