問題
非 Rails フレームワーク (Sinatra など) 用の Kubernetes APM 自動アタッチを備えた New Relic Ruby エージェントを使用していますが、New Relic アカウントに 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このコードを追加した後、アプリケーションを再デプロイします。数分以内に New Relic にデータが表示され始めます。
原因
Kubernetes APM の自動アタッチは、 Bundler::Runtime#requireメソッドにパッチを適用してnewrelic_rpm gem をアプリケーションに挿入することによって機能します。
Rails アプリケーションは起動プロセス中にBundler.require自動的に呼び出しますが、他の多くのフレームワークでは呼び出しません。Bundler.requireが呼び出されない場合、New Relic エージェントはアプリケーションの環境にロードされません。この行を追加すると、エージェントが期待どおりにロードされるようになります。