2009-11-02 73 views
3

我使用New Relic for Rails,但只需要New Relic來監控我的一個生產環境。不過,我有一臺也在生產模式下運行的登臺服務器。 New Relic檢測到兩者都是我的應用程序的運行產品實例(因爲它應該),但是我不想爲了監視兩個實例而付費,因爲我只想關注它。Rails - 基於主機名向插件提供許可證密鑰

New Relic的接受許可密鑰的環境變量:

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

是否可以檢測環境中的文件的主機名(即配置/環境/ production.rb),這樣我可以定義這個環境動態變量?

這兩個環境都是從同一個Git倉庫,相同的源代碼庫部署的,所以我不能在每個部署的代碼中真正更改它 - 最好能夠以某種方式動態定義環境變量。

任何想法,將不勝感激!謝謝!

+0

想要選擇一個答案? – 2009-12-08 22:32:29

回答

4

的New Relic的Ruby的代理將解析newrelic.yml配置文件作爲ERB解析之前它作爲YAML。因此,你可以做很多巧妙的技巧,如:

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

這解析所有發生在應用程序啓動時間。

如果您的RAILS_ENV與在「生產模式」下運行的分段服務器中的「生產」不同,那麼您可以使用Steve Graham建議的環境部分。

+0

感謝您的回覆並提醒我回到這個問題。我實際上最終做了一件非常相似的事情,增加了一個條件來檢查文件系統中是否存在一個目錄,儘管你也可以檢查'hostname'命令的輸出或類似的識別信息。欣賞輸入! – shedd 2012-01-09 23:09:27

0

主機名只能在請求對象中使用,所以不,在rails生成環境時不可用。

我只是設置你的staging部署腳本來將production.rb複製到staging.rb並在「分段」中啓動應用程序。另一種技術是不把newrelic.yml保存在scm中,而是將它從其他地方複製或鏈接到當前的部署目錄。

2

您是否爲分段創建了單獨的環境?即開發,測試,生產和分期? See here的說明...

已經這樣做了,我們可以在config/newrelic.yml

common: &default_settings 
    license_key: 'PASTE_YOUR_KEY_HERE' 
    … 

development: 
    enabled: false 
    … 

test: 
    enabled: false 
    … 

production: 
    enabled: true 
    … 

staging: 
    enabled: false 
    … 

對於環境的指定行爲等,等

+0

史蒂夫,謝謝你的見解。我沒有意識到你可以在newrelic yml文件中指定環境。有趣的是,當我問New Relic對這個問題的支持時,他們也沒有提到這個問題。我會給這個旋轉,看看它是如何工作的。謝謝! – shedd 2009-12-09 20:28:46