Linux에서 엔드포인트용 Microsoft Defender 성능 문제 해결
적용 대상:
- 엔드포인트 서버용 Microsoft Defender
- 서버용 Microsoft Defender
엔드포인트용 Defender를 경험하고 싶으신가요? 무료 평가판을 신청하세요.
이 문서에서는 Linux의 엔드포인트용 Defender와 관련된 성능 문제를 좁히는 방법을 설명합니다. 진단 도구는 성능에 영향을 주는 기존 리소스 부족 및 프로세스를 이해하고 완화하는 데 도움이 됩니다. 이러한 진단 도구를 활용하여 Microsoft Defender 포털 내에서도 가시성을 향상시킬 수 있습니다. 하나 이상의 하드웨어 하위 시스템의 병목 현상은 주로 시스템의 리소스 사용률 프로필에 따라 성능 문제를 일으킵니다. 경우에 따라 애플리케이션은 디스크 I/O 리소스에 민감하고 더 많은 CPU 용량이 필요할 수 있으며 일부 구성이 지속 가능하지 않고 너무 많은 새 프로세스를 트리거하고 너무 많은 파일 설명자를 열 수 있습니다.
실행 중인 애플리케이션 및 디바이스 특성에 따라 Linux에서 엔드포인트용 Defender를 실행할 때 최적이 아닐 수 있습니다. 특히 짧은 시간 동안 CPU, 디스크 및 메모리와 같은 많은 리소스에 액세스하는 애플리케이션 또는 시스템 프로세스는 Linux의 엔드포인트용 Defender에서 성능 문제를 야기할 수 있습니다.
경고
시작하기 전에 다른 보안 제품이 현재 디바이스에서 실행되고 있지 않은지 확인합니다. 여러 보안 제품이 충돌하여 호스트 성능에 영향을 미칠 수 있습니다.
Linux의 엔드포인트용 Microsoft Defender 진단 도구를 사용하여 노이즈 프로세스 및 디렉터리를 해결하는 세 가지 고유한 방법이 있습니다.
- 실시간 보호 통계 사용
- 핫 이벤트 원본 사용
- eBPF 통계 사용
실시간 보호 통계를 사용하여 성능 문제 해결
적용 대상:
- 바이러스 백신과 관련된 성능 문제만
RTP(실시간 보호)는 위협으로부터 디바이스를 지속적으로 모니터링하고 보호하는 Linux의 엔드포인트용 Defender 기능입니다. 파일 및 프로세스 모니터링 및 기타 추론으로 구성됩니다.
다음 단계를 사용하여 이러한 문제를 해결하고 완화할 수 있습니다.
다음 방법 중 하나를 사용하여 실시간 보호를 사용하지 않도록 설정하고 성능이 향상되는지 확인합니다. 이 방법은 Linux의 엔드포인트용 Defender가 성능 문제에 기여하는지 여부를 좁히는 데 도움이 됩니다. organization 디바이스를 관리하지 않는 경우 명령줄에서 실시간 보호를 사용하지 않도록 설정할 수 있습니다.
mdatp config real-time-protection --value disabled
Configuration property updated
organization 디바이스를 관리하는 경우 관리자는 Linux의 엔드포인트용 Defender에 대한 기본 설정 설정의 지침을 사용하여 실시간 보호를 사용하지 않도록 설정할 수 있습니다.
참고
실시간 보호가 해제된 동안 성능 문제가 지속되면 문제의 원본은 EDR(엔드포인트 검색 및 응답) 구성 요소일 수도 있습니다. 이 경우 바이러스 백신 및 EDR에서 전역 제외를 추가해야 합니다. 이 경우 핫 이벤트 원본을 사용하여 성능 문제 해결 섹션의 단계를 수행합니다.
가장 많은 검사를 트리거하는 애플리케이션을 찾으려면 Linux의 엔드포인트용 Defender에서 수집한 실시간 통계를 사용할 수 있습니다.
참고
이 기능은 버전 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
출력 형식이 구문 분석할 준비가 되었는지 확인합니다.이 명령의 출력은 모든 프로세스와 관련 검사 작업을 표시합니다.
다음 명령을 입력합니다.
mdatp diagnostic real-time-protection-statistics --sort --top 4
출력은 성능 문제에 대한 상위 4개 기여자의 목록입니다. 예를 들어 명령의 출력은 다음과 같습니다.
===================================== Process id: 560 Name: NetworkManager Path: "/usr/sbin/NetworkManager" Total files scanned: 261 Scan time (ns): "3070788919" Status: Active ===================================== Process id: 1709561 Name: snapd Path: "/snap/snapd/23545/usr/lib/snapd/snapd" Total files scanned: 247 Scan time (ns): "19926516003" Status: Active ===================================== Process id: 596 Name: systemd-logind Path: "/usr/lib/systemd/systemd-logind" Total files scanned: 29 Scan time (ns): "716836547" Status: Active ===================================== Process id: 1977683 Name: cupsd Path: "/usr/sbin/cupsd" Total files scanned: 20 Scan time (ns): "985110892" Status: Active =====================================
Linux에서 엔드포인트용 Defender의 성능을 향상시키려면 행 아래에
Total files scanned
가장 많은 수의 엔드포인트를 찾아 바이러스 백신 제외를 추가합니다(제외해도 안전한지 신중하게 평가). 자세한 내용은 Linux의 엔드포인트용 Defender에 대한 제외 구성 및 유효성 검사를 참조하세요.참고
애플리케이션은 통계를 메모리에 저장하고 파일 작업이 시작되고 실시간 보호가 활성화된 후에만 추적합니다. 실시간 보호가 해제된 이전 또는 기간 동안 시작된 프로세스는 계산되지 않습니다. 또한 검사를 트리거한 이벤트만 계산됩니다.
핫 이벤트 원본을 사용하여 성능 문제 해결
적용 대상:
- 전체 파일 시스템에 대부분의 CPU 주기를 사용하는 파일 및 실행 파일의 성능 문제입니다.
핫 이벤트 원본은 고객이 높은 리소스 소비를 담당하는 프로세스 또는 디렉터리를 식별할 수 있는 기능입니다. 가장 많은 노이즈를 생성하는 프로세스/실행 파일을 조사하려면 다음 단계를 수행합니다.
참고
이러한 명령을 사용하려면 루트 권한이 있어야 합니다. sudo를 사용할 수 있는지 확인합니다.
먼저 컴퓨터에서 로그 수준을 검사.
mdatp health --field log_level
"디버그"가 아닌 경우 핫 파일/실행 파일과 관련된 자세한 보고서에 대해 변경해야 합니다.
sudo mdatp log level set --level debug
Log level configured successfully
현재 통계를 수집하려면(파일의 경우)
sudo mdatp diagnostic hot-event-sources files
출력은 콘솔에서 다음과 유사합니다(이는 전체 출력의 코드 조각일 뿐입니다). 여기서 첫 번째 행은 개수(발생 빈도)를 표시하고 두 번째 행은 파일 경로를 표시합니다.
Total Events: 11179 Time: 12s. Throughput: 75.3333 events/sec.
=========== Top 684 Hot Event Sources ===========
count file path
2832 /mnt/RamDisk/postgres_data/pg_wal/0000000100000014000000A5
632 /mnt/RamDisk/postgres_data/base/635594/2601
619 /mnt/RamDisk/postgres_data/base/635597/2601
618 /mnt/RamDisk/postgres_data/base/635596/2601
618 /mnt/RamDisk/postgres_data/base/635595/2601
616 /mnt/RamDisk/postgres_data/base/635597/635610
615 /mnt/RamDisk/postgres_data/base/635596/635602
614 /mnt/RamDisk/postgres_data/base/635595/635606
514 /mnt/RamDisk/postgres_data/base/635594/635598_fsm
496 /mnt/RamDisk/postgres_data/base/635597/635610_fsm
이 명령은 더 자세히 조사할 수 있는 로컬 폴더에 저장된 핫 이벤트 원본 보고서를 생성합니다. 출력은 json 파일에서 다음과 같습니다.
{
"startTime": "1729535104539160",
"endTime": "1729535117570766",
"totalEvent": "11373",
"eventSource": [
{
"authCount": "2832",
"csId": "",
"notifyCount": "0",
"path": "/mnt/RamDisk/postgres_data/pg_wal/0000000100000014000000A5",
"pidCount": "1",
"teamId": ""
},
{
"authCount": "632",
"csId": "",
"notifyCount": "0",
"path": "/mnt/RamDisk/postgres_data/base/635594/2601",
"pidCount": "1",
"teamId": ""
}
]
}
이 예제에서는 /mnt/RamDisk/postgres_data/pg_wal/0000000100000014000000A5 파일이 가장 많은 활동을 생성하는 것을 볼 수 있습니다. 또한 마찬가지로 실행 파일의 경우
sudo mdatp diagnostic hot-event-sources executables
출력은 콘솔의 다음과 유사합니다.
Total Events: 47382 Time: 18s. Throughput: 157 events/sec.
=========== Top 23 Hot Event Sources ===========
count executable path
8216 /usr/lib/postgresql/12/bin/psql
5721 /usr/lib/postgresql/12/bin/postgres (deleted)
3557 /usr/bin/bash
378 /usr/bin/clamscan
88 /usr/bin/sudo
70 /usr/bin/dash
30 /usr/sbin/zabbix_agent2
10 /usr/bin/grep
8 /usr/bin/gawk
6 /opt/microsoft/mdatp/sbin/wdavdaemonclient
4 /usr/bin/sleep
이 출력은 json의 핫 이벤트 원본 보고서에 저장된 출력입니다.
{
"startTime": "1729534260988396",
"endTime": "1729534280026883",
"totalEvent": "48165",
"eventSource": [
{
"authCount": "8126",
"csId": "",
"notifyCount": "0",
"path": "/usr/lib/postgresql/12/bin/psql",
"pidCount": "2487",
"teamId": ""
},
{
"authCount": "5127",
"csId": "",
"notifyCount": "0",
"path": "/usr/lib/postgresql/12/bin/postgres",
"pidCount": "2144",
"teamId": ""
}
]
}
이 예제에서 18s 이후 명령은 실행 파일을 보여 줍니다. /usr/lib/postgresql/12/bin/psql 및 /usr/lib/postgresql/12/bin/postgres는 가장 많은 활동을 생성합니다.
조사가 완료되면 로그 수준을 다시 "정보"로 변경할 수 있습니다.
sudo mdatp log level set --level info
Log level configured successfully
Linux에서 엔드포인트용 Defender의 성능을 향상시키려면 개수 행에서 가장 많은 수의 경로를 찾아 전역 프로세스 제외(실행 파일인 경우) 또는 전역 파일/폴더 제외(파일인 경우)를 추가합니다(제외해도 안전한지 신중하게 평가). 자세한 내용은 Linux의 엔드포인트용 Defender에 대한 제외 구성 및 유효성 검사를 참조하세요.
eBPF 통계를 사용하여 성능 문제 해결
적용 대상:
- 시스템 호출 기반 성능 문제를 포함한 모든 파일/프로세스 이벤트입니다.
eBPF(확장 버클리 패킷 필터) 통계 명령은 syscall ID와 함께 가장 많은 파일 이벤트를 생성하는 상위 이벤트/프로세스에 대한 인사이트를 제공합니다. 시스템에서 시스템 호출이 이루어지는 경우 시스템에 많은 양의 워크로드가 생성됩니다. eBPF 통계를 사용하여 이러한 문제를 식별할 수 있습니다.
eBPF 통계를 사용하여 현재 통계를 수집하려면 다음을 실행합니다.
mdatp diagnostic ebpf-statistics
출력은 콘솔에 직접 표시되며 다음과 유사하게 표시됩니다(전체 출력의 코드 조각일 뿐입니다).
Top initiator paths:
/usr/lib/postgresql/12/bin/psql : 902
/usr/bin/clamscan : 349
/usr/sbin/zabbix_agent2 : 27
/usr/lib/postgresql/12/bin/postgres : 10
Top syscall ids:
80 : 9034
57 : 8932
60 : 8929
59 : 4942
112 : 4898
90 : 179
87 : 170
119 : 32
288 : 19
41 : 15
이 명령은 시스템을 20초 동안 모니터링하고 결과를 표시합니다. 여기서 최상위 초기자 경로(postgresql/12/bin/psql)는 시스템 호출을 가장 많이 생성한 프로세스의 경로를 보여 줍니다.
Linux에서 엔드포인트용 Defender의 성능을 향상시키려면 행에서 Top initiator path
가장 count
높은 엔드포인트를 찾아 전역 프로세스 제외를 추가합니다(제외해도 안전한지 신중하게 평가). 자세한 내용은 Linux의 엔드포인트용 Defender에 대한 제외 구성 및 유효성 검사를 참조하세요.
성능 향상을 위해 전역 제외 구성
성능 문제에 기여하는 프로세스 또는 디스크 위치에 대한 제외를 사용하여 Linux에서 엔드포인트용 Microsoft Defender 구성합니다. 자세한 내용은 Linux의 엔드포인트용 Microsoft Defender에 대한 제외 구성 및 유효성 검사를 참조하세요. 여전히 성능 문제가 있는 경우 추가 지침 및 완화를 위해 지원에 문의하세요.
참고 항목
팁
더 자세히 알아보고 싶으신가요? 기술 커뮤니티: 엔드포인트용 Microsoft Defender Tech Community의 Microsoft 보안 커뮤니티와 Engage.