Frage

Ich bin mit New Relic für Rails, aber nur New Relic muss meine eine Produktionsumgebung überwachen. Aber ich habe einen Staging-Server, auch in Produktionsmodus läuft. sowohl als Betriebs prod Instanzen meiner Anwendung New Relic erkennt (wie es sein sollte), aber ich will nicht zur Überwachung von zwei Instanzen zu zahlen haben, wenn ich ein Auge auf die man nur halten wollen.

New Relic nimmt eine Umgebungsvariable für den Lizenzschlüssel:

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

Ist es möglich, die Hostnamen in den Umgebungsdateien (das heißt config / Umgebungen / production.rb) zu erfassen, so dass ich dynamisch diese Umgebungsvariable definieren kann?

sind beide Umgebungen aus der gleichen Git-Repository, gleicher Quellcode Basis eingesetzt, so kann ich es nicht wirklich für jeden deploy im Code ändern - es wäre am besten in der Lage sein, um die Umgebungsvariable irgendwie dynamisch zu definieren

Alle Gedanken würden geschätzt! Dank!

War es hilfreich?

Lösung

Das New Relic Ruby-Agent wird die newrelic.yml Konfigurationsdatei als ERB analysieren, bevor sie als YAML Parsen. Daher können Sie viele nette Tricks, wie zum Beispiel:

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

Das Parsen geschieht alles bei ca. Booten.

Wenn Ihr RAILS_ENV unterscheidet sie von ‚Produktion‘ in diesem Staging-Server, „in dem Produktionsmodus“ läuft, dann könnte man nur die Umwelt Abschnitte verwenden, wie Steve Graham schlägt.

Andere Tipps

Haben Sie eine separate Umgebung für die Inszenierung geschaffen? das heißt Entwicklung, Test, Produktion und Inszenierung? Siehe hier Anweisungen ...

Nachdem das getan, ein Verhalten für die Umwelt in config/newrelic.yml angeben

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

etc, etc

Der Hostname ist nur in einem Request-Objekt zur Verfügung, so nein, es ist nicht möglich, wenn Schienen die Umwelt baut.

Ich würde nur Ihre Inszenierung deploy Skript einrichten kopieren production.rb staging.rb und die App in „staging“ zu starten. Eine andere Technik wäre nicht die newrelic.yml in Ihrem scm zu halten und es stattdessen kopieren, oder zu verknüpfen, von woanders zum aktuellen Verzeichnis deploy.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top