2009-11-02 8 views
3

J'utilise New Relic for Rails, mais j'ai seulement besoin de New Relic pour surveiller mon environnement de production. Cependant, j'ai un serveur de transfert qui fonctionne également en mode Production. New Relic détecte à la fois les instances opérationnelles de mon application (comme il se doit), mais je ne veux pas payer pour surveiller deux instances alors que je veux seulement garder un œil sur celui-ci.Rails - Fournir une clé de licence pour le plugin basé sur le nom d'hôte

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 (config/environnements/production.rb) afin que je puisse définir cet environnement variable dynamiquement?

Les deux environnements sont déployés à partir du même référentiel Git, même base de code source, donc je ne peux pas vraiment le modifier dans le code pour chaque déploiement - il serait préférable de pouvoir définir dynamiquement la variable d'environnement.

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

+0

Envie de choisir une réponse? –

Répondre

4

L'agent New Relic Ruby analysera le fichier de configuration newrelic.yml comme ERB avant l'analyse syntaxique 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 syntaxique tout se passe au démarrage de l'application. Si votre RAILS_ENV était différent de «production» dans ce serveur de transfert qui s'exécute «en mode Production», vous pouvez simplement utiliser les sections d'environnement comme le suggère Steve Graham.

+0

Merci pour la réponse et pour me rappeler de revenir à cette question. En fait, j'ai fini par faire quelque chose de très similaire, en ajoutant une condition pour vérifier la présence d'un répertoire sur le système de fichiers, bien que vous puissiez aussi vérifier la sortie de la commande 'hostname' ou des informations d'identification similaires. Appréciez l'entrée! – shedd

0

Le nom d'hôte est uniquement disponible dans un objet de requête, donc non, il n'est pas disponible lorsque les rails construisent l'environnement. Je voudrais juste configurer votre script de déploiement de transfert pour copier production.rb à staging.rb et démarrer l'application dans "mise en scène". Une autre technique consisterait à ne pas conserver le fichier newrelic.yml dans votre fichier scm et à le copier ou le lier à partir d'un autre emplacement dans le répertoire de déploiement actuel.

2

Avez-vous créé un environnement séparé pour la mise en scène? c'est-à-dire développement, test, production et mise en scène? See here pour les 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

+0

Steve, merci pour vos idées. Je n'ai pas réalisé que vous pouviez spécifier des environnements dans le fichier yrelic newrelic. Il est intéressant de noter que lorsque j'ai demandé à New Relic de me parler de cette même question, ils n'en ont pas parlé non plus. Je vais faire un tourbillon et voir comment ça marche. Merci! – shedd

Questions connexes