문제
Rails가 아닌 프레임워크(예: Sinatra)에 대해 Kubernetes APM 자동 연결과 함께 뉴렐릭 루비 에이전트를 사용하고 있지만 뉴렐릭 계정에 APM 데이터가 표시되지 않습니다.
해결책
애플리케이션 시작 프로세스 초기에 Bundler.require 명시적으로 호출합니다.
많은 프레임워크의 경우 애플리케이션 클래스를 정의하기 전에 기본 애플리케이션 파일이나 config.ru 파일에 이를 추가하여 이를 수행할 수 있습니다.
예(config.ru 또는 app.rb):
# config.ru
require 'bundler'Bundler.require
# ... rest of your application's startup coderequire_relative './my_sinatra_app'run MySinatraApp이 코드를 추가한 후 애플리케이션을 다시 배포하세요. 몇 분 안에 뉴렐릭에 데이터가 나타나기 시작할 것입니다.
원인
Kubernetes APM 자동 연결은 Bundler::Runtime#require 메서드를 패치하여 newrelic_rpm gem을 애플리케이션에 주입하는 방식으로 작동합니다.
Rails 애플리케이션은 부팅 과정에서 자동으로 Bundler.require 호출하지만 다른 많은 프레임워크는 그렇지 않습니다. Bundler.require 이 호출되지 않으면 뉴렐릭 에이전트가 사용자 환경에 로드되지 않습니다. 이 줄을 추가하면 에이전트가 예상대로 로드됩니다.