2009-11-02 3 views
3

레일즈 용 New Relic을 사용하고 있지만, 새 Relic 만 있으면 내 프로덕션 환경을 모니터링 할 수 있습니다. 그러나 프로덕션 모드에서도 실행되는 스테이징 서버가 있습니다. New Relic은 두 가지 모두를 내 응용 프로그램의 작동 인스턴스로 감지하지만 두 가지 인스턴스를 모니터링하기 위해 비용을 지불하지 않으려 고합니다.레일 - 호스트 이름을 기반으로 플러그인에 라이센스 키 제공

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

내가이 환경을 정의 할 수 있도록 환경 파일의 호스트 이름 (예 : 설정/환경/production.rb)를 검출 할 수있다 :

새로운 유물은 라이센스 키에 대한 환경 변수를 받아 들인다 변수가 동적으로?

두 환경 모두 동일한 Git 저장소, 동일한 소스 코드 기반에서 배포되므로 각 배포의 코드에서 실제로 변경할 수는 없습니다. 동적으로 환경 변수를 동적으로 정의 할 수있는 것이 가장 좋습니다.

의견을 보내 주시면 감사하겠습니다. 감사!

+0

멋진 답변을 원하십니까? –

답변

4

분석하기 전에 ERB로 newrelic.yml 구성 파일을 구문 분석하는 새로운 유물 루비 에이전트 그것 YAML. 따라서 다음과 같은 많은 유용한 트릭을 수행 할 수 있습니다.

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

이 구문 분석은 모두 응용 프로그램 부팅시 발생합니다.

RAILS_ENV가 "프로덕션 모드"로 실행되는 준비 서버에서 RAILS_ENV가 '프로덕션'과 다른 경우 Steve Graham이 제안한대로 환경 섹션을 사용할 수 있습니다.

+0

답장을 보내 주셔서 감사 드리며이 질문에 다시 회상 해 주시기 바랍니다. 필자는 사실상 비슷한 일을 실제로 끝내고 파일 시스템에 디렉토리가 존재하는지 확인하는 조건을 추가했다. 그러나'hostname' 명령 또는 유사한 식별 정보의 출력을 확인할 수도있다. 입력을 감사하십시오! – shedd

0

호스트 이름은 요청 객체에서만 사용할 수 있으므로, 레일스가 환경을 구축 할 때는 사용할 수 없습니다.

스테이징 배치 스크립트를 설정하여 production.rb를 staging.rb로 복사하고 "스테이징"에서 앱을 시작하십시오. 또 다른 방법은 scm에 newrelic.yml을 보관하지 않고 대신 다른 곳에서 현재 deploy 디렉토리로 복사하거나 링크하는 것입니다.

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

관련 문제