Linux でのMicrosoft Defender for Endpointのパフォーマンスに関する問題のトラブルシューティング
適用対象:
- Microsoft Defender for Endpoint Server
- サーバーのMicrosoft Defender
Defender for Endpoint を試す場合は、 無料試用版にサインアップしてください。
このドキュメントでは、利用可能な診断ツールを使用して、Defender for Endpoint on Linux に関連するパフォーマンスの問題を絞り込み、既存のリソース不足とシステムをそのような状況に陥れるプロセスを理解して軽減する方法について説明します。 パフォーマンスの問題は、主に、システム上のリソース使用率のプロファイルに応じて、1 つ以上のハードウェア サブシステムのボトルネックによって発生します。 場合によっては、アプリケーションがディスク I/O リソースに敏感であり、CPU 容量が増える必要がある場合や、一部の構成が持続可能でなく、新しいプロセスが多すぎるトリガーやファイル記述子の開き方が多すぎる場合があります。
実行しているアプリケーションとデバイスの特性によっては、Linux 上で Defender for Endpoint を実行するときに最適でないパフォーマンスが発生する可能性があります。 特に、CPU、ディスク、メモリなどの多くのリソースに短時間でアクセスするアプリケーションまたはシステム プロセスは、Linux 上の Defender for Endpoint のパフォーマンスの問題につながる可能性があります。
警告
開始する前に、 他のセキュリティ製品が現在デバイス上で実行されていないことを確認してください。 複数のセキュリティ製品が競合し、ホストのパフォーマンスに影響を与える可能性があります。
リアルタイム保護統計を使用したパフォーマンスの問題のトラブルシューティング
適用対象:
- ウイルス対策に関連するパフォーマンスの問題のみ
リアルタイム保護 (RTP) は、脅威からデバイスを継続的に監視および保護する Defender for Endpoint on Linux の機能です。 ファイルとプロセスの監視とその他のヒューリスティックで構成されます。
次の手順を使用して、これらの問題のトラブルシューティングと軽減を行うことができます。
次のいずれかの方法を使用してリアルタイム保護を無効にし、パフォーマンスが向上するかどうかを確認します。 この方法は、Defender for Endpoint on Linux がパフォーマンスの問題に貢献しているかどうかを絞り込むのに役立ちます。 デバイスがorganizationによって管理されていない場合は、コマンド ラインからリアルタイム保護を無効にすることができます。
mdatp config real-time-protection --value disabled
Configuration property updated
デバイスがorganizationによって管理されている場合は、「Linux 上の Defender for Endpoint の基本設定を設定する」の手順を使用して、管理者がリアルタイム保護を無効にすることができます。
注:
リアルタイム保護がオフになっている間にパフォーマンスの問題が解決しない場合、問題の原因はエンドポイント検出と応答 (EDR) コンポーネントである可能性があります。 この場合は、この記事の「Microsoft Defender for Endpoint Client Analyzer を使用したパフォーマンスの問題のトラブルシューティング」セクションの手順に従ってください。
最も多くのスキャンをトリガーしているアプリケーションを見つけるには、Linux 上の Defender for Endpoint によって収集されたリアルタイム統計を使用できます。
注:
この機能は、バージョン 100.90.70 以降で使用できます。
この機能は、
Dogfood
およびInsiderFast
チャネルで既定で有効になっています。 別の更新チャネルを使用している場合は、コマンド ラインからこの機能を有効にすることができます。mdatp config real-time-protection-statistics --value enabled
この機能では、リアルタイム保護を有効にする必要があります。 リアルタイム保護の状態をチェックするには、次のコマンドを実行します。
mdatp health --field real_time_protection_enabled
real_time_protection_enabled
エントリがtrue
されていることを確認します。 それ以外の場合は、次のコマンドを実行して有効にします。mdatp config real-time-protection --value enabled
Configuration property updated
現在の統計を収集するには、次を実行します。
mdatp diagnostic real-time-protection-statistics --output json
注:
--output json
(二重ダッシュに注意) を使用すると、出力形式を解析する準備が整います。このコマンドの出力には、すべてのプロセスとそれに関連するスキャン アクティビティが表示されます。
Linux システムで、 コマンドを使用してサンプル Python パーサー high_cpu_parser.py をダウンロードします。
wget -c https://raw.githubusercontent.com/microsoft/mdatp-xplat/master/linux/diagnostic/high_cpu_parser.py
このコマンドの出力は、次のようになります。
--2020-11-14 11:27:27-- https://raw.githubusercontent.com/microsoft.mdatp-xplat/master/linus/diagnostic/high_cpu_parser.py Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.xxx.xxx Connecting to raw.githubusercontent.com (raw.githubusercontent.com)| 151.101.xxx.xxx| :443... connected. HTTP request sent, awaiting response... 200 OK Length: 1020 [text/plain] Saving to: 'high_cpu_parser.py' 100%[===========================================>] 1,020 --.-K/s in 0s
次のコマンドを入力します。
mdatp diagnostic real-time-protection-statistics --output json | python high_cpu_parser.py
上記の出力は、パフォーマンスの問題に対する上位のコントリビューターの一覧です。 最初の列はプロセス識別子 (PID)、2 番目の列はプロセス名、最後の列はスキャンされたファイルの数で、影響で並べ替えられます。 たとえば、コマンドの出力は次のようになります。
... > mdatp diagnostic real-time-protection-statistics --output json | python high_cpu_parser.py | head 27432 None 76703 73467 actool 1249 73914 xcodebuild 1081 73873 bash 1050 27475 None 836 1 launchd 407 73468 ibtool 344 549 telemetryd_v1 325 4764 None 228 125 CrashPlanService 164
Linux 上の Defender for Endpoint のパフォーマンスを向上させるには、
Total files scanned
行の下に最も多い番号の 1 つを見つけて、除外を追加します。 詳細については、「 Linux 上の Defender for Endpoint の除外を構成して検証する」を参照してください。注:
アプリケーションは、統計をメモリに格納し、ファイル アクティビティが開始され、リアルタイム保護が有効になってからのみ追跡します。 リアルタイム保護がオフだった前または期間中に起動されたプロセスはカウントされません。 さらに、スキャンをトリガーしたイベントのみがカウントされます。
Microsoft Defender for Endpoint Client Analyzer を使用したパフォーマンスの問題のトラブルシューティング
適用対象:
- AV や EDR などの使用可能なすべての Defender for Endpoint コンポーネントのパフォーマンスの問題
Microsoft Defender for Endpoint クライアント アナライザー (MDECA) は、Linux 上のオンボード デバイスのパフォーマンスの問題をトラブルシューティングするために、トレース、ログ、診断情報を収集できます。
注:
- Microsoft Defender for Endpoint クライアント アナライザー ツールは、(ただしこれに限定されません) IP アドレス、Microsoft Defender for Endpointで発生する可能性がある問題のトラブルシューティングに役立つ PC 名などの情報を収集するために、Microsoft カスタマー サポート サービス (CSS) によって定期的に使用されます。 プライバシーに関する声明の詳細については、「 Microsoft のプライバシーに関する声明」を参照してください。
- 一般的なベスト プラクティスとして、Microsoft Defender for Endpoint エージェントを最新の使用可能なバージョンに更新し、さらに調査する前に問題がまだ解決することを確認することをお勧めします。
パフォーマンスの問題のトラブルシューティングのためにクライアント アナライザーを実行するには、「 macOS と Linux でクライアント アナライザーを実行する」を参照してください。
パフォーマンスを向上させるためにグローバル除外を構成する
パフォーマンスの問題に影響するプロセスまたはディスクの場所を除外して、Linux 上のMicrosoft Defender for Endpointを構成します。 詳細については、「Linux 用の Microsoft Defender for Endpoint の除外を構成および検証する」 を参照してください。 それでもパフォーマンスの問題が解決しない場合は、詳細な手順と軽減策についてサポートにお問い合わせください。
AuditD のパフォーマンスに関する問題のトラブルシューティング
バックグラウンド:
Linux OS ディストリビューションのMicrosoft Defender for Endpointは、AuditD フレームワークを使用して特定の種類のテレメトリ イベントを収集します。
/etc/audit/rules.d/
に追加されたルールによってキャプチャされたシステム イベントは、audit.logに追加され、ホストの監査とアップストリームコレクションに影響する可能性があります。Linux 上のMicrosoft Defender for Endpointによって追加されたイベントには、
mdatp
キーが付けられます。AuditD サービスが正しく構成されていないか、オフラインになっている場合は、一部のイベントが見つからない可能性があります。 このような問題をトラブルシューティングするには、「Linux 上のMicrosoft Defender for Endpointに関するイベントまたはアラートの問題のトラブルシューティング」を参照してください。
特定のサーバー ワークロードでは、次の 2 つの問題が発生する可能性があります。
High CPU
プロセスからのリソース使用量mdatp_audisp_plugin
。/var/log/audit/audit.log
回転が頻繁に行われる可能性があります。
これらの問題は、多数のイベントが AuditD にあふれるサーバーで発生する可能性があります。 このような問題は、AuditD のコンシューマーが複数存在する場合や、Microsoft Defender for Endpointとサード パーティのコンシューマーの組み合わせでルールが多すぎる場合や、多くのイベントを生成する高いワークロードが発生する場合に発生する可能性があります。 このような問題をトラブルシューティングするには、まず、影響を受けるサーバーのサンプルで MDEClientAnalyzer ログを収集 します。
ベスト プラクティスとして、ファイル サイズの上限に達したときにローテーションするように AuditD ログを構成することをお勧めします。 この構成により、AuditD ログが 1 つのファイルに蓄積されるのを防ぎ、ローテーションされたログ ファイルを移動してディスク領域を節約できます。 これを実現するには、auditd.conf ファイル内のrotate
にmax_log_file_action
の値を設定します。
注:
一般的なベスト プラクティスとして、Microsoft Defender for Endpoint エージェントを最新の使用可能なバージョンに更新し、さらに調査する前に問題が引き続き発生することを確認することをお勧めします。 AuditD サブシステムの CPU 負荷に影響を与える可能性のある追加の構成があること。 具体的には、 auditd.conf では、 disp_qos
の値を lossy
に設定して、CPU 使用率を高く抑えることができます。 ただし、これは、CPU のピーク時に一部のイベントが削除される可能性があることを意味します。
XMDEClientAnalyzer
XMDEClientAnalyzer を使用すると、次のファイルに、問題のトラブルシューティングに役立つ分析情報を提供する出力が表示されます。
auditd_info.txt
auditd_log_analysis.txt
auditd_info.txt
一般的な AuditD 構成が含まれており、次の情報が表示されます。
AuditD コンシューマーとして登録されるプロセス。
Auditctl -s
enabled=2
を使用した出力 (監査が変更不可モードであることを示唆しています (構成の変更を有効にするには再起動が必要です)。Auditctl -l
output (現在カーネルに読み込まれているルールを示します。これは、/etc/auditd/rules.d/mdatp.rules
のディスク上に存在するものとは異なる可能性があります。また、Microsoft Defender for Endpointに関連するルールも表示されます)。
auditd_log_analysis.txt
AuditD パフォーマンスの問題を調査するときに役立つ重要な集計情報が含まれています。
最も報告されるイベントを所有するコンポーネント (Microsoft Defender for Endpointイベントは
key=mdatp
でタグ付けされます)。上位のレポート イニシエーター。
最も一般的なシステム呼び出し (ネットワークまたはファイルシステム イベントなど)。
どのファイル システム パスが最も大きいものか。
ほとんどの AuditD パフォーマンスの問題を軽減するには、AuditD の除外を実装します。 指定された除外によってパフォーマンスが向上しない場合は、レート リミッタ オプションを使用できます。 これにより、AuditD によって生成されるイベントの数が完全に減ります。
注:
除外は、低脅威および高ノイズのイニシエーターまたはパスに対してのみ行う必要があります。 たとえば、大きな死角を作成するリスクがある /bin/bash は除外しないでください。 除外を定義するときに回避する一般的な間違い。
除外の種類
XMDEClientAnalyzer サポート ツールには、AuditD 除外構成規則を追加するために使用できる構文が含まれています。
AuditD の除外 – サポート ツールの構文ヘルプ:
イニシエーター別
-
-e/ -exe
完全バイナリ パス > このイニシエーターによるすべてのイベントを削除します
パス別
-
-d / -dir
ディレクトリへの完全パス > このディレクトリを対象とするファイルシステム イベントを削除します
例:
/opt/app/bin/app
/opt/app/cfg/logs/1234.log
に書き込む場合は、サポート ツールを使用して、さまざまなオプションで除外できます。
-e /opt/app/bin/app
-d /opt/app/cfg
-x /usr/bin/python /etc/usercfg
-d /usr/app/bin/
その他の例:
./mde_support_tool.sh exclude -p <process id>
./mde_support_tool.sh exclude -e <process name>
複数の項目を除外するには、除外を 1 行に連結します。
./mde_support_tool.sh exclude -e <process name> -e <process name 2> -e <process name3>
-x フラグは、次のように、特定のイニシエーターによるサブディレクトリへのアクセスを除外するために使用されます。
./mde_support_tool.sh exclude -x /usr/sbin/mv /tmp
上記では、mv プロセスによってアクセスされた場合、/tmp サブフォルダーの監視は除外されます。
レートリミッター
XMDEClientAnalyzer サポート ツールには、auditD プラグインによって報告されるイベントの数を制限するために使用できる構文が含まれています。 このオプションでは、AuditD のレート制限がグローバルに設定され、すべての監査イベントが低下します。
注:
この機能は、監査されたサブシステム全体によって報告されるイベントの数を制限するために慎重に使用する必要があります。 これにより、他のサブスクライバーのイベントの数も減る可能性があります。
ratelimit オプションを使用して、このレート制限を有効または無効にすることができます。
エネーブル: ./mde_support_tool.sh ratelimit -e true
無効にする: ./mde_support_tool.sh ratelimit -e false
ratelimit が有効になっている場合、2500 イベント/秒を処理するルールが AuditD に追加されます。
注:
AuditD 関連のパフォーマンスの問題の分析と軽減、または大規模な AuditD 除外の展開に関するサポートが必要な場合は、Microsoft サポートにお問い合わせください。
関連項目
ヒント
さらに多くの情報を得るには、 Tech Community 内の Microsoft Security コミュニティ (Microsoft Defender for Endpoint Tech Community) にご参加ください。