문제
루비 에이전트가 시작되지 않거나 뉴렐릭에 데이터를 보고하지 않습니다.
해결책
이 문제를 해결하려면:
Ruby 에이전트 버전 을 확인하고 필요한 경우 업데이트하십시오.
애플리케이션 환경에 newrelic_rpm Ruby gem이 필요한 경우 자동으로 모니터링을 시작하고 New Relic으로 측정항목 전송을 시작할지 아니면 비활성화된 상태로 유지할지 결정합니다.
프로덕션 및 스테이징: 에이전트는 일반적으로 이러한 환경에서 자동으로 모니터링하도록 구성됩니다.
테스트 및 개발: 에이전트는 일반적으로 이러한 환경에서 비활성화된 상태로 유지됩니다.
이 논리를 제어하려면
newrelic.yml의 각 환경 섹션에서monitor_mode구성 키를true또는false로 설정합니다.
에이전트의 자동 시작 논리를 재정의하는 가장 쉬운 메커니즘은 NEW_RELIC_AGENT_ENABLED=true 환경 변수를 설정하는 것입니다. 예를 들어:
$NEW_RELIC_AGENT_ENABLED=true rake assets:precompileRuby 에이전트 버전 3.6.1 이상을 실행하는 경우 에이전트가 시작을 거부하는 몇 가지 이유가 있습니다.
에이전트가 대화형 세션에 있음을 감지합니다. 예:
rails console또는irb세션.에이전트는 Rails의 내장 레이크 작업 중 하나에 있음을 감지합니다. 예:
assets:precompile또는db:migrate.Ruby 에이전트
newrelic.yml파일의 구성 변수를 사용하여 상수, 스크립트 이름 및 레이크 작업에 대한 자동 시작 동작을 사용자 지정할 수 있습니다.Variable
Description
상수
- 에이전트가 시작되지 않도록 해야 하는 Ruby 상수입니다. 쉼표로 구분된 목록을 허용합니다.
- 기본값은
"Rails::Console"입니다. Rails::Console이 환경에 있을 때 에이전트를 시작하도록 지시하려면""으로 설정합니다.
레이크 작업
- 에이전트가 모니터링하지 않을 작업을 긁어모으십시오. 예:
assets:precompile. 쉼표로 구분된 목록을 허용합니다. - 일반적으로
resque:work과 같은 작업이 모니터링되기 때문에 모든 레이크 작업에서 Ruby 에이전트를 비활성화하지 않습니다.
실행 파일
- 에이전트가 자동으로 시작되지 않도록 하는 스크립트 이름(예:
irb)의 목록입니다. 쉼표로 구분된 목록을 허용합니다. - 에이전트가 rake 작업에서 시작되지 않도록 하려면 이것을
"rake"으로 설정하고, rake 및 사용자 정의 스크립트에서 시작하지 않도록 하려면"rake,my_ruby_script.rb"로 설정하십시오.
문제
루비 에이전트는 시작하고 싶지 않은 상황에서 시작됩니다.
해결책
루비 에이전트는 대부분의 고객이 에이전트가 자동으로 시작되기를 원하는 컨텍스트에 대해 몇 가지 가정을 합니다.
이 동작을 사용자 정의하는 데 사용할 수 있는 세 가지 설정 옵션이 있습니다.
autostart.denylisted_constants이 목록에 있는 대부분의 상수는 모니터링을 통해 거의 이점을 얻지 못하는 작업을 수행하는 Rails 명령입니다.목록에는
rails db:*및rails solid_queue:start같은 명령과 Rake 작업과 관련된 기타 Rails 명령을 지원하는Rails::Command::RakeCommand가 포함되어 있지 않습니다.autostart.denylisted_executables이 설정은rspec및irb같은 실행 파일을 제어합니다.autostart.denylisted_rake_tasksRails 5.1 이전에는db:migrate과 같은 많은 명령에 대해thor대신rake가 사용되었습니다. 이 설정의 기본값에는 당시의 많은 명령이 나열되어 있습니다. 이 목록에 자신만의rake명령을 추가할 수도 있습니다.
NewRelic::Agent.manual_start API는 특정 컨텍스트에서 에이전트를 시작하는 데 사용할 수 있습니다. 구성 파일에서 :agent_enabled false 로 설정하거나 환경 변수 NEW_RELIC_AGENT_ENABLED=false 설정한 경우에도 이 API를 사용하여 수동으로 에이전트를 시작할 수 있습니다.
NewRelic::Agent.manual_start(agent_enabled: true)프로세스가 종료되기 전에 에이전트를 중지하려면 NewRelic::Agent.shutdown 호출하면 됩니다.