Question

J'utilise New Relic pour Rails, mais seulement besoin New Relic pour surveiller mon un environnement de production. Cependant, j'ai un serveur intermédiaire qui fonctionne également en mode de production. New Relic détecte à la fois comme des instances de prod d'exploitation de mon application (comme il se doit), mais je ne veux pas avoir à payer pour surveiller deux cas quand je veux seulement garder un oeil sur celui-là.

New Relic accepte une variable d'environnement pour la clé de licence:

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

Est-il possible de détecter le nom d'hôte dans les fichiers d'environnement (à savoir config / environnements / production.rb) afin que je puisse définir cette variable d'environnement dynamique?

Les deux environnements sont déployés à partir du même dépôt Git, la base même code source, donc je ne peux vraiment changer dans le code pour chaque deploy - il serait préférable d'être en mesure de définir la variable d'environnement dynamique en quelque sorte

Toutes les pensées seraient appréciés! Merci!

Était-ce utile?

La solution

Le nouvel agent Relic Ruby va analyser le fichier de configuration de newrelic.yml comme ERB avant l'analyse comme YAML. Par conséquent, vous pouvez faire beaucoup de tours soignées, tels que:

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

Cette analyse tout se passe au démarrage de l'application.

Si votre RAILS_ENV était différent de la « production » dans le serveur de mise en scène qui fonctionne « en mode de production », alors vous pouvez utiliser les sections de l'environnement comme Steve Graham suggère.

Autres conseils

Avez-vous créé un environnement distinct pour la mise en scène? à savoir le développement, le test, la production et la mise en scène? Voir pour obtenir des instructions ...

Après avoir fait cela, on peut spécifier le comportement pour cet environnement dans 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

Le nom d'hôte est disponible uniquement dans un objet de requête, donc non, ce n'est pas disponible lorsque rails construit l'environnement.

Je voudrais juste mettre en place votre script deploy mise en scène pour copier production.rb à staging.rb et démarrer l'application dans « mise en scène ». Une autre technique serait de garder pas le newrelic.yml dans votre scm et la copie au lieu, ou le lier, d'ailleurs dans le répertoire deploy en cours.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top