排查 Linux 上Microsoft Defender for Endpoint的性能问题
希望体验 Defender for Endpoint? 注册免费试用版。
本文档介绍如何使用可用的诊断工具缩小与 Linux 上的 Defender for Endpoint 相关的性能问题的范围,以便能够了解和缓解现有资源短缺以及使系统陷入此类情况的过程。 性能问题主要是由一个或多个硬件子系统中的瓶颈引起的,具体取决于系统上的资源利用率情况。 有时,应用程序对磁盘 I/O 资源很敏感,可能需要更多 CPU 容量,有时某些配置是不可持续的,并且可能会触发太多新进程,并打开过多的文件描述符。
根据正在运行的应用程序和设备特征,在 Linux 上运行 Defender for Endpoint 时,可能会遇到性能不佳的问题。 具体而言,在短时间内访问许多资源(如 CPU、磁盘和内存)的应用程序或系统进程可能会导致 Linux 上的 Defender for Endpoint 的性能问题。
警告
在开始之前, 请确保其他安全产品当前未在设备上运行。 多个安全产品可能会发生冲突并影响主机性能。
使用实时保护统计信息排查性能问题
适用于:
- 仅与防病毒相关的性能问题
实时保护 (RTP) 是 Linux 上的 Defender for Endpoint 的一项功能,可持续监视和保护设备免受威胁。 它由文件和进程监视以及其他启发式方法组成。
以下步骤可用于排查和缓解这些问题:
使用以下方法之一禁用实时保护,并观察性能是否提高。 此方法有助于缩小 Linux 上的 Defender for Endpoint 是否导致了性能问题的范围。 如果设备不由组织管理,则可以从命令行禁用实时保护:
mdatp config real-time-protection --value disabled
Configuration property updated
如果设备由组织管理,则管理员可以按照 在 Linux 上为 Defender for Endpoint 设置首选项中的说明禁用实时保护。
注意
如果在关闭实时保护时性能问题仍然存在,则问题的根源可能是终结点检测和响应 (EDR) 组件。 在这种情况下,请按照本文使用 Microsoft Defender for Endpoint 客户端分析器排查性能问题部分中的步骤进行操作。
若要查找触发最多扫描的应用程序,可以使用 Linux 上的 Defender for Endpoint 收集的实时统计信息。
注意
此功能在版本 100.90.70 或更高版本中可用。
此功能默认在 和
InsiderFast
通道上Dogfood
启用。 如果使用的是其他更新通道,可以从命令行启用此功能: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) (进程标识符,第二列是进程名称,最后一列是扫描的文件数(按影响排序)。 例如,命令的输出如下所示:
... > 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
找到编号最高的一个,并为其添加排除项。 有关详细信息,请参阅 在 Linux 上配置和验证 Defender for Endpoint 的排除项。注意
应用程序将统计信息存储在内存中,并且仅跟踪文件活动,因为它已启动并启用实时保护。 在实时保护关闭之前或期间启动的进程不计算在内。 此外,仅对触发扫描的事件进行计数。
使用 Microsoft Defender for Endpoint 客户端分析器排查性能问题
适用于:
- 所有可用的 Defender for Endpoint 组件(如 AV 和 EDR)的性能问题
Microsoft Defender for Endpoint客户端分析器 (MDECA) 可以收集跟踪、日志和诊断信息,以便排查 Linux 上载入设备上的性能问题。
注意
- Microsoft Defender for Endpoint客户端分析器工具由Microsoft客户支持服务 (CSS) 定期用于收集信息,例如 (但不限于) IP 地址、电脑名称等信息,可帮助排查Microsoft Defender for Endpoint可能遇到的问题。 有关隐私声明的详细信息,请参阅 Microsoft隐私声明。
- 作为一般最佳做法,建议将 Microsoft Defender for Endpoint 代理更新到最新可用版本,并在进一步调查之前确认问题仍然存在。
若要运行客户端分析器来排查性能问题,请参阅 在 macOS 和 Linux 上运行客户端分析器。
配置全局排除项以提高性能
在 Linux 上配置Microsoft Defender for Endpoint,其中包含导致性能问题的进程或磁盘位置的排除项。 有关详细信息,请参阅 并验证 Microsoft Defender for Endpoint 在Linux上的排除。 如果仍然遇到性能问题,请联系支持人员以获取进一步的说明和缓解措施。
解决 AuditD 性能问题
背景:
Linux OS 分发版上的Microsoft Defender for Endpoint使用 AuditD 框架收集某些类型的遥测事件。
添加到
/etc/audit/rules.d/
的规则捕获的系统事件将添加到 audit.log () ,并可能影响主机审核和上游集合。Microsoft Defender for Endpoint在 Linux 上添加的事件将使用密钥进行
mdatp
标记。如果 AuditD 服务配置错误或脱机,则可能缺少某些事件。 若要排查此类问题,请参阅:排查 Linux 上Microsoft Defender for Endpoint的缺失事件或警报问题。
在某些服务器工作负载中,可能会观察到两个问题:
High CPU
进程中mdatp_audisp_plugin
的资源消耗。/var/log/audit/audit.log
变大或频繁旋转。
这些问题可能发生在具有许多事件淹没 AuditD 的服务器上。 如果 AuditD 有多个使用者,或者规则过多,Microsoft Defender for Endpoint和第三方使用者的组合,或者高工作负荷生成大量事件,则可能会出现此类问题。 若要排查此类问题,请首先在受影响的示例服务器上 收集 MDEClientAnalyzer 日志 。
作为最佳做法,我们建议将 AuditD 日志配置为在达到最大文件大小限制时轮换。 此配置可防止 AuditD 日志累积到单个文件中,并且可以将轮换的日志文件移出以节省磁盘空间。 为此,可以在 auditd.conf 文件中将 的值max_log_file_action
rotate
设置为 。
注意
作为一般的最佳做法,建议将 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
输出 (显示当前加载到内核中的规则,这些规则可能与 中/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>
若要排除多个项 - 将排除项连接到一行:
./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
启用速率限制后,AuditD 中将添加一个规则来处理 2500 个事件/秒。
注意
如果需要帮助分析和缓解与 AuditD 相关的性能问题,或者需要大规模部署 AuditD 排除项方面的帮助,请联系Microsoft支持人员。
另请参阅
提示
想要了解更多信息? Engage技术社区中的Microsoft安全社区:Microsoft Defender for Endpoint技术社区。