【解決】 New Relic: Agent not reporting の解決方法と原因 | New Relic トラブルシューティング

New Relicをお使いの皆さん、アプリケーションの監視が「Agent not reporting」と表示されて停止していると、非常にご不安になりますよね。しかしご安心ください、この問題は多くの場合、シンプルな手順で解決できます。この記事では、Windowsユーザーの皆さんがNew Relicエージェントがデータを送信しない問題を迅速に解決できるよう、具体的な手順とコマンドを交えて解説します。読み進めることで、すぐに解決策を見つけ、安心して監視を再開できるようになります。

1. New Relic: Agent not reporting とは?(概要と緊急度)

「New Relic: Agent not reporting」というメッセージは、あなたのシステムにインストールされているNew Relicエージェントが、何らかの理由でNew RelicのAPM(Application Performance Monitoring)サーバーにパフォーマンスデータを送信できていない状態を示します。

この状態では、アプリケーションの稼働状況、パフォーマンスメトリクス、エラー情報などがNew Relicのダッシュボードに表示されず、システムの健全性を把握できません。つまり、アプリケーションの監視が完全に停止していることを意味します。

緊急度:高

アプリケーションの「目」が閉じている状態ですので、迅速な対応が求められます。早急に原因を特定し、データを再度報告できるようにすることが重要です。幸い、多くのケースでは以下に示す簡単な手順で解決可能です。

2. 【最速】今すぐ試すべき解決策

まずは、最も効果的で簡単な解決策から順に試していきましょう。ほとんどの場合、これらの手順で問題は解決します。

解決策1:New Relicエージェントサービスの再起動

エージェントプロセスが一時的に停止している、または不安定になっている可能性があります。サービスを再起動することで、問題が解決することが非常に多いです。

手順:

  1. 管理者権限でPowerShellまたはコマンドプロンプトを開きます。
  2. 以下のコマンドを実行し、New Relic関連のサービスを再起動します。
# New Relic関連のサービスを特定して再起動します。
# サービス名はNew Relicの製品(.NET, Javaなど)によって異なる場合があります。
# 一般的なサービス名例: "New Relic .NET Agent" や "New Relic Infrastructure Agent"

# 実行中のNew Relicサービスを全て停止し、その後起動する例:
Get-Service -Name "NewRelic*" | Stop-Service -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 5 # サービス停止を待つ
Get-Service -Name "NewRelic*" | Start-Service -ErrorAction SilentlyContinue

# 特定のサービス名が分かっている場合は、直接指定することもできます。
# 例: Restart-Service -Name "New Relic .NET Agent"
# 例: Restart-Service -Name "New Relic Infrastructure Agent"

サービス再起動後、数分待ってからNew RelicのUIを確認し、データが報告されているか確認してください。

解決策2:New Relic設定ファイル内のライセンスキーの確認

New RelicエージェントがAPMサーバーにデータを送信するためには、正しいライセンスキーが必要です。ライセンスキーが間違っているか、設定ファイルに存在しない場合、「Agent not reporting」となります。

手順:

    1. New Relicエージェントの設定ファイルを開きます。
      • .NETエージェント: 通常は C:\ProgramData\New Relic\.NET Agent\newrelic.config
      • Infrastructureエージェント: 通常は C:\ProgramData\New Relic\Infrastructure\newrelic-infra.yml
      • Javaエージェント: 通常はJavaアプリケーションのルートディレクトリ、または指定された場所にある newrelic.yml
      • PHPエージェント: 通常は C:\ProgramData\New Relic\php_agent\newrelic.ini
    2. テキストエディタ(メモ帳、VS Codeなど)でファイルを開き、license_key (または newrelic.license) の項目を探します。
    3. New Relicアカウントのライセンスキーと、設定ファイルに記載されているキーが完全に一致していることを確認します。

ライセンスキーの確認方法: New Relic UIにログインし、画面右上のアカウントメニューから「Account settings」または「API keys」を選択して確認できます。

  1. もしキーが異なっていたり、欠落していたりした場合は、正しいライセンスキーに修正してファイルを保存します。
  2. ファイルを保存したら、解決策1で示したエージェントサービスの再起動を再度実行してください。

解決策3:New Relic APMエンドポイントへのネットワーク接続確認

エージェントがサーバーにデータを送信するには、インターネット経由でNew RelicのAPMエンドポイントに接続できる必要があります。ファイアウォール、プロキシ、またはネットワーク経路の問題が原因である可能性があります。

手順:

  1. 管理者権限でPowerShellを開きます。
  2. 以下のコマンドを実行し、New Relicのデータコレクターへの接続性を確認します。
# New Relicのデータコレクターエンドポイントは地域によって異なる場合がありますが、
# 一般的には 'collector.newrelic.com' または 'infra-api.newrelic.com' などが使われます。
# ポートはHTTPSの443番です。

# APMデータコレクターへの接続テスト (共通)
Test-NetConnection -ComputerName collector.newrelic.com -Port 443

# InfrastructureエージェントAPIエンドポイントへの接続テスト (Infrastructureエージェントの場合)
Test-NetConnection -ComputerName infra-api.newrelic.com -Port 443

結果の確認:

  • TcpTestSucceeded : True と表示されれば、ネットワーク接続は問題ありません。
  • TcpTestSucceeded : False と表示された場合は、以下の点を確認してください。
    • ファイアウォール: Windows Defender Firewall や、社内ネットワークのファイアウォールが、collector.newrelic.cominfra-api.newrelic.com へのポート443 (HTTPS) のアウトバウンド接続をブロックしていないか確認します。必要であれば、例外ルールを追加してください。
    • プロキシサーバー: プロキシサーバー経由でインターネットに接続している場合、New Relicエージェントがプロキシ設定を正しく使用しているか確認します。エージェントの設定ファイルにプロキシ情報を追加する必要がある場合があります(例: proxy_host, proxy_port)。
    • DNS解決: ping collector.newrelic.com を実行し、IPアドレスが正しく解決されるか確認します。

3. New Relic: Agent not reporting が発生する主要な原因(複数)

上記で解決しない場合、以下の複数の原因が組み合わさっている可能性があります。

  • 無効または誤ったライセンスキー: 最も一般的な原因。エージェントがNew Relicアカウントを特定できません。
  • ネットワーク接続の問題:
    • ファイアウォール(OSレベル、ネットワークレベル)がNew Relicのエンドポイントへの通信をブロックしている。
    • プロキシサーバー設定がエージェントに適用されていない、または間違っている。
    • DNS解決の問題により、New Relicのエンドポイントに到達できない。
    • 一時的なネットワーク障害。
  • エージェントプロセスが停止またはクラッシュしている: エージェントサービスが起動していないか、エラーにより停止しています。
  • 設定ファイルの問題:
    • newrelic.ymlnewrelic.config などの設定ファイルに構文エラーがある。
    • 必要な設定項目が欠落している。
    • 設定ファイルのパスが誤っている。
  • エージェントのログレベルとログファイルの確認: エージェントのログファイル(通常はエージェントの設定ファイルと同じディレクトリまたはサブディレクトリにあります)を確認すると、問題解決のヒントが見つかることがあります。ログレベルを一時的にdebugに上げて、詳細な情報を取得することも有効です。
  • エージェントのバージョン互換性/バグ: ごく稀に、エージェントのバージョンが古すぎたり、特定の環境でバグが発生している場合があります。最新の安定版へのアップデートを検討してください。
  • ホストリソース不足: メモリやCPUが不足している場合、エージェントが正常に動作できないことがあります。

4. New Relicで恒久的に再発を防ぐには

「Agent not reporting」の再発を防ぐためには、以下のベストプラクティスを導入することをお勧めします。

  • 設定の一元管理とバージョン管理:New Relicエージェントの設定ファイル(特にライセンスキーやプロキシ設定など)は、Gitなどのバージョン管理システムで管理し、CI/CDパイプラインを通じてデプロイすることで、誤設定を防ぎます。
  • エージェントプロセス自体の監視:New Relicで監視しているアプリケーションの他に、エージェントプロセス(例:newrelic-infra.exedotnet.exe の中のNew Relicプロセス)が正常に稼働しているかを監視システム(Windowsのイベントログ、別の監視ツールなど)でチェックし、異常があればアラートを出すように設定します。
  • ネットワーク要件の徹底確認:New Relicの公式ドキュメントで推奨されているネットワーク要件(必要なエンドポイントとポート)を定期的に確認し、ファイアウォールやプロキシ設定が常に準拠していることを確認します。
  • エージェントログの定期的な確認とアラート設定:エージェントが出力するログファイル(例:newrelic_agent.log, newrelic-infra.log)をログ収集・分析ツール(New Relic Logsなど)で監視し、エラーや警告が記録された際にアラートが上がるように設定することで、早期に問題を検知できます。
  • 定期的なエージェントのアップデート:New Relicエージェントは常に改善されており、バグ修正やパフォーマンス向上が行われています。定期的に安定版の最新バージョンにアップデートすることで、予期せぬ問題を未然に防ぎます。
  • 公式ドキュメントとサポートの活用:New Relicの公式ドキュメントは非常に充実しており、トラブルシューティングガイドも提供されています。問題が解決しない場合は、公式サポートへの問い合わせも検討しましょう。

これらの対策を講じることで、「Agent not reporting」の問題は最小限に抑えられ、あなたのアプリケーション監視がより安定したものになるでしょう。