New Relic eBPFエージェントは、従来のフォワーダーのようにログファイルを"tailing"する代わりに、カーネルレベルの可視性を使用して、APMおよびネットワークテレメトリーをすでに収集しているのと同じホストまたはコンテナから直接アプリケーションログを収集できるようになりました。これにより、以下のことが可能になります:
- 自動メタデータエンリッチメント: デフォルトで、キャプチャされたログにNew Relicのメタデータをエンリッチします。これにより、顧客の設定を必要とせずに、同じエージェントのAPMおよびネットワークテレメトリーとともにトラブルシューティングのコンテキストが提供されます。
- 管理するエージェントを1つ削減 : eBPFエージェントと並行して専用のログフォワーダー(Fluent Bitなど)を実行することによるリソースの競合、相関関係のギャップ、およびメンテナンスのオーバーヘッドを排除します。
- アタックサーフェスの縮小 : 別のフォワーダーが依存するプラグインベースのロギングミドルウェアを削除し、CVEへの露出とサードパーティのログ転送プラグインへの依存関係の両方を削減します。
eBPFログのセットアップ
重要
eBPFログはセルフサービス機能です。eBPFログを通じて取り込まれたすべてのログは、適用される注文に従って課金対象となります。
機密情報のデータ難読化およびドロップは、OpenTelemetry Transformation Language(OTTL)を使用して、Pipeline Control Gateway(PCG)経由でのみ利用可能です。eBPFからNew Relicへの直接のデータフローには、組み込みの難読化は含まれていません。注文にPCGを追加するには、アカウント担当者にお問い合わせください。
New Relicのログ取り込みパイプラインは、PCGに依存せず、すべてのアカウントのmessageフィールドにあるクレジットカード番号と社会保障番号を自動的に難読化します。その他の機密データについては、取り込み前にマスキングするようにPCGルーティングを設定してください。たとえば、この設定ではeBPFログメッセージからpasswordフィールドをマスキングします:
transform/Logs: log_statements: - statements: - replace_pattern(log.body, "password:[^,]+", "password:***") conditions: - IsMatch(log.body, "password:")この例では、示されているpasswordパターンのみをマスキングします。追加の、またはカスタマイズ可能な難読化およびドロップルールについては、PCGで直接サポートされているOTTL Transformプロセッサを設定してください。その他の例については、Redact PIIを参照してください。
次の手順を完了して、eBPFログをオンにします:
eBPFエージェントをバージョン1.5.0以降にアップデートしてください。これは、New Relicがログレポートに推奨しているバージョンです。
- Kubernetesについては、eBPFエージェントのアップグレードを参照してください。
- Linuxホストの場合は、eBPFエージェントのアップグレードを参照してください。
次のパラメーターを設定します:
reportLogs: ログ収集をオンにするには、"auto"または"true"に設定します(各値の機能については、以下の自動検出とバックオフを参照してください)。logDataFilters.applicationLogReporting.enabled:これがtrue(デフォルト値)であることを確認するか、設定をカスタマイズしている場合は明示的に設定してください。
ログ関連のパラメーターの完全なリストについては、LinuxインストレーションまたはKubernetesインストレーションガイドの「設定パラメーター」セクションを参照してください。
eBPFエージェントを再起動します。
自動検出とバックオフ
重複するテレメトリーの送信を避けるため、eBPFエージェントは、別のエージェントがすでにエンティティのログを報告しているかどうかを自動的に検出し、それに応じてバックオフすることができます。これは、APMデータおよびネットワークメトリクスにすでに使用されているのと同じパターンです。
reportLogsパラメーターは以下を受け入れます:
"auto": eBPFエージェントの動作は、アタッチされたエージェントのタイプによって異なります:- New Relic APMエージェント : APMエージェントがログをアクティブに収集または転送していない場合にのみ、eBPFエージェントはログを収集してレポートします。APMエージェントからのアクティブなログ収集を検出した場合、重複を避けるために自身の収集を抑制します。
- OpenTelemetryエージェント: OpenTelemetryエージェントがアタッチされている場合、eBPFエージェントはログ収集を完全に抑制します。
"true": 他のエージェントが存在するかどうかにかかわらず、eBPFエージェントは常にログを収集して報告します。"false"(デフォルト) : eBPFエージェントはログを収集またはレポートしません。
これは、eBPF APMおよびネットワークメトリクスに対するreportApmDataとreportNetworkMetricsの動作を反映しています。ネットワークメトリクスに適用される同等のパターンについては、ネットワークメトリクス専用モードの有効化を参照してください。
eBPFログデータの表示
New Relic UIでeBPFログを表示できます:
- one.newrelic.com > APM & Servicesに移動します。
- ログを表示するエンティティを選択します。
- Logs [ログ] タブをクリックします。
ヒント
eBPF エージェントは、環境に基づいてエンティティ名を自動的に生成します。
- ホストまたはDockerの場合: 名前は、プロセス名、ディレクトリパスまたはコンテナID、およびリスニングポートを組み合わせたものです。たとえば、
ruby:/home/ubuntu/app:[5678]またはjava:f4aead533895:[8080]です。 - Kubernetesの場合 : 名前はサービス名から派生します(例:
mysql-database-service)。
eBPFログは現在、インフラストラクチャログではなく、アプリケーションログのみをキャプチャします。