문제

레일에 새로운 유물을 사용하고 있지만 하나의 생산 환경을 모니터링하기 위해 새로운 유물 만 있으면됩니다. 그러나 생산 모드에서도 실행되는 준비 서버가 있습니다. 새로운 유물은 내 응용 프로그램의 작동 프로드 인스턴스로 두 가지를 감지하지만 (필요한대로), 하나만 주시하고 싶을 때 두 개의 인스턴스를 모니터링하는 데 비용을 지불하고 싶지 않습니다.

New Relic은 라이센스 키의 환경 변수를 수락합니다.

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

이 환경 변수를 동적으로 정의 할 수 있도록 환경 파일 (예 : 구성/환경/프로덕션 .rb)에서 호스트 이름을 감지 할 수 있습니까?

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

모든 생각은 감사 할 것입니다! 감사!

도움이 되었습니까?

해결책

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

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

이 모든 것이 앱 부팅 시간에 발생합니다.

Rails_env가 "생산 모드에서 실행되는 스테이징 서버의 '프로덕션'과 다르면 Steve Graham에서 제안한대로 환경 섹션을 사용할 수 있습니다.

다른 팁

준비를위한 별도의 환경을 만들었습니까? IE 개발, 테스트, 생산 및 준비? 여기를 봐 지침을 위해…

그렇게 한 후에는 해당 환경에 대한 동작을 지정할 수 있습니다. config/newrelic.yml

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

기타 등

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

스테이징 배포 스크립트를 설정하여 Production.rb를 Staging.rb에 복사하고 "준비"에서 앱을 시작합니다. 또 다른 기술은 SCM에 NewRelic.yml을 유지하지 않고 대신 다른 곳에서 현재 배포 디렉토리에 복사하거나 연결하지 않는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top