問題
New Relic の .NET エージェントを Linux にインストールした後、データが表示されない、データが欠落していることに気づく、ログが表示されないなどの問題が発生します。
解決
重要
- 続行するためには、ホストの管理者権限が必要です。
- インストールと実行の手順が守られていることを確認する (インストールガイド)
ステップ1:アプリケーションのエージェントログの確認
ヒント
- .NET Core 用のエージェントをインストールした場合、または
NewRelic.Agent
NuGet パッケージを使用していずれかのエージェントをインストールした場合は、システムでエージェントが抽出されたディレクトリにlogs
フォルダがあります。 - Linuxの一部のインストール方法では、デフォルトで
/usr/local/newrelic-dotnet-agent
(エージェントバージョン10.0.0以降)または/usr/local/newrelic-netcore20-agent
(エージェントバージョン9.9.0以下)になります。
- 現在のデータを見ていることを確認してください。生成するログがシステムの現在の状態を確実に反映するように、logs ディレクトリ内の既存のファイルを削除または移動します。
- アプリケーションを再起動します。
- New Relic アカウントに表示されることが予想されるトラフィックを生成する方法で、アプリケーションを少なくとも 1 分間実行します。
- アプリケーションが実行されているプロセスID(PID)をメモして、そのプロセスのログが作成されているかどうかを確認できるようにします。PIDは、コマンドラインから次のコマンドのいずれかを使用して見つけることができます:
pidof dotnet
またはpidof the_process_name
。 - エージェントのログディレクトリに戻り、アプリケーションのプロセスIDを含む名前(たとえば、
NewRelic.Profiler.[PID].log
)のログファイルを探します。 - ログディレクトリにその
profiler log
ファイルが表示されている場合は、対応するエージェントログがあるかどうかも確認してください。 - プレフィックスが
newrelic_agent
の別のファイルを探します。ホストで複数の.NETアプリケーションを実行している場合は、これらが複数存在する可能性があります。1つ以上が表示された場合は、監視しようとしているアプリケーションに対応するものを判別する必要があります。 - エージェントログで文字列
(pid [your PID])
を検索します(例:(pid 1573)
。ログファイルでその文字列を見つけた場合は、それがアプリケーションに関連付けられているエージェントログであることがわかります。
ステップ 2: エージェント プロファイラーがアプリケーションのプロセスに読み込まれているかどうかを確認する
コンソールで、 pid
をプロセスIDに置き換えて、以下を実行します。
bash
$sudo cat /proc/PID/maps | grep "libNewRelicProfiler.so"
出力結果に基づいて、あなたがすべきことは以下の通りです。
- そのコマンドから結果が得られない場合は、次の手順に進みます。
- 結果が出た場合は、 ステップ4 (許可)に読み飛ばしてください。
Step 3: 必要な環境変数を確認します。
PID
をプロセスIDに置き換えて、以下を実行します。
bash
$xargs --null --max-args=1 < /proc/PID/environ | grep "CORECLR_"
出力結果に基づいて、あなたがすべきことは以下の通りです。
結果が出ない場合は、 環境変数 を設定し、アプリケーションを再起動してから、ステップ1に戻ってください。
結果が出た場合は、4つの必須変数がすべて設定され、有効な値を持っていることを確認してください。
CORECLR_ENABLE_PROFILING
:常に1に設定する必要があります。CORECLR_PROFILER
: 常に{36032161-FFC0-4B61-B559-F6C5D41BAE5A}
に設定する必要があります。CORECLR_NEWRELIC_HOME
: .NET Core のエージェント ディレクトリ (newrelic.config
、libNewRelicProfiler.so
、および拡張機能ディレクトリが配置されているディレクトリ) への完全修飾パスに設定する必要があります。CORECLR_PROFILER_PATH
: ファイルlibNewRelicProfiler.so
への完全修飾パスに設定する必要があります。これはほとんどの場合、CORECLR_NEWRELIC_HOME
+/libNewRelicProfiler.so
に等しくなります。
環境変数に変更を加えた場合は、アプリを再起動し、 Step 1 に戻ってください。
これらの変数の詳細については 、.NET エージェントの環境変数についてを参照してください。
ステップ4:パーミッションの確認
以下のパーミッションタスクを確認してください。
- アプリケーション プロセスを実行しているユーザーが、システム上で .NET Core 用の .NET エージェントが抽出されたディレクトリ (
CORECLR_NEWRELIC_HOME
) とそのすべてのサブディレクトリに対する読み取り/書き込み/実行権限を持っていることを確認してください。 - 変更があった場合は、アプリを再起動して、 ステップ1 に戻ってください。
上記の手順で問題が解決されなかった場合は、サポート フォーラムの ask for help でサポートに連絡することをお勧めします。