Udostępnij za pośrednictwem


Rozwiązywanie problemów z wydajnością Ochrona punktu końcowego w usłudze Microsoft Defender w systemie Linux

Dotyczy:

Chcesz poznać usługę ochrony punktu końcowego w usłudze Microsoft Defender? Utwórz konto, aby skorzystać z bezpłatnej wersji próbnej.

W tym artykule opisano sposób zawężenia problemów z wydajnością związanych z usługą Defender for Endpoint w systemie Linux. Dostępne są narzędzia diagnostyczne ułatwiające zrozumienie i wyeliminowanie istniejących niedoborów zasobów i procesów wpływających na wydajność. Te narzędzia diagnostyczne można również wykorzystać do zwiększenia widoczności w portalu Microsoft Defender. Wąskie gardła w co najmniej jednym podsystemie sprzętowym powodują głównie problemy z wydajnością, w zależności od profilu wykorzystania zasobów w systemie. Czasami aplikacje są wrażliwe na zasoby we/wy dysku i mogą potrzebować większej pojemności procesora CPU, a czasami niektóre konfiguracje nie są trwałe i mogą wyzwalać zbyt wiele nowych procesów i otwierać zbyt wiele deskryptorów plików.

W zależności od uruchomionych aplikacji i charakterystyk urządzenia może wystąpić nieoptymalna wydajność podczas uruchamiania usługi Defender for Endpoint w systemie Linux. W szczególności aplikacje lub procesy systemowe uzyskujące dostęp do wielu zasobów, takich jak procesor CPU, dysk i pamięć w krótkim czasie, mogą prowadzić do problemów z wydajnością w usłudze Defender for Endpoint w systemie Linux.

Ostrzeżenie

Przed rozpoczęciem upewnij się, że inne produkty zabezpieczające nie są obecnie uruchomione na urządzeniu. Wiele produktów zabezpieczeń może powodować konflikt i wpływać na wydajność hosta.

Istnieją trzy różne sposoby rozwiązywania problemów z hałaśliwymi procesami i katalogami przy użyciu narzędzi diagnostycznych z Ochrona punktu końcowego w usłudze Microsoft Defender w systemie Linux:

  • Korzystanie ze statystyk ochrony w czasie rzeczywistym
  • Używanie źródeł gorących zdarzeń
  • Korzystanie ze statystyk eBPF

Rozwiązywanie problemów z wydajnością przy użyciu statystyk ochrony w czasie rzeczywistym

Dotyczy:

  • Tylko problemy z wydajnością związane z programem antywirusowym

Ochrona w czasie rzeczywistym (RTP) to funkcja usługi Defender for Endpoint w systemie Linux, która stale monitoruje i chroni urządzenie przed zagrożeniami. Składa się z monitorowania plików i procesów oraz innych heurystycznych.

Poniższe kroki mogą służyć do rozwiązywania i rozwiązywania tych problemów:

  1. Wyłącz ochronę w czasie rzeczywistym przy użyciu jednej z następujących metod i sprawdź, czy wydajność się poprawia. Takie podejście pomaga zawęzić, czy usługa Defender dla punktu końcowego w systemie Linux przyczynia się do problemów z wydajnością. Jeśli urządzenie nie jest zarządzane przez organizację, ochronę w czasie rzeczywistym można wyłączyć z poziomu wiersza polecenia:

    mdatp config real-time-protection --value disabled
    
    Configuration property updated
    

    Jeśli organizacja zarządza urządzeniem, administrator może wyłączyć ochronę w czasie rzeczywistym, korzystając z instrukcji opisanych w temacie Ustawianie preferencji dla usługi Defender dla punktu końcowego w systemie Linux.

    Uwaga

    Jeśli problem z wydajnością będzie się powtarzać, gdy ochrona w czasie rzeczywistym jest wyłączona, źródłem problemu może być również składnik wykrywania i reagowania na punkty końcowe (EDR). W takim przypadku należy dodać globalne wykluczenia z programów antywirusowych i EDR. W tym przypadku wykonaj kroki opisane w sekcji Rozwiązywanie problemów z wydajnością przy użyciu źródeł gorących zdarzeń.

  2. Aby znaleźć aplikacje wyzwalające najwięcej skanów, możesz użyć statystyk w czasie rzeczywistym zebranych przez usługę Defender for Endpoint w systemie Linux.

    Uwaga

    Ta funkcja jest dostępna w wersji 100.90.70 lub nowszej.

    Ta funkcja jest domyślnie włączona w kanałach Dogfood i InsiderFast . Jeśli używasz innego kanału aktualizacji, tę funkcję można włączyć z poziomu wiersza polecenia:

    mdatp config real-time-protection-statistics --value enabled
    

    Ta funkcja wymaga włączenia ochrony w czasie rzeczywistym. Aby sprawdzić stan ochrony w czasie rzeczywistym, uruchom następujące polecenie:

    mdatp health --field real_time_protection_enabled
    

    Sprawdź, real_time_protection_enabled czy wpis to true. W przeciwnym razie uruchom następujące polecenie, aby go włączyć:

    mdatp config real-time-protection --value enabled
    
    Configuration property updated
    

    Aby zebrać bieżące statystyki, uruchom polecenie:

    mdatp diagnostic real-time-protection-statistics --output json
    

    Uwaga

    Użycie --output json (zwróć uwagę na podwójną kreskę) gwarantuje, że format wyjściowy jest gotowy do analizowania.

    Dane wyjściowe tego polecenia pokazują wszystkie procesy i skojarzone z nimi działania skanowania.

  3. Wpisz następujące polecenia:

    mdatp diagnostic real-time-protection-statistics --sort --top 4
    

    Dane wyjściowe to lista czterech najważniejszych współautorów problemów z wydajnością. Na przykład dane wyjściowe polecenia są podobne do następujących:

    =====================================
    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
    =====================================
    

    Aby zwiększyć wydajność usługi Defender for Endpoint w systemie Linux, zlokalizuj usługę z największą liczbą w wierszu Total files scanned i dodaj dla niego wykluczenie antywirusowe (dokładnie oceń, czy można je bezpiecznie wykluczyć). Aby uzyskać więcej informacji, zobacz Konfigurowanie i weryfikowanie wykluczeń dla usługi Defender dla punktu końcowego w systemie Linux.

    Uwaga

    Aplikacja przechowuje statystyki w pamięci i śledzi tylko aktywność plików od momentu jej uruchomienia i włączono ochronę w czasie rzeczywistym. Procesy, które zostały uruchomione przed lub w okresach, w których ochrona w czasie rzeczywistym była wyłączona, nie są liczone. Ponadto są liczone tylko zdarzenia, które wyzwoliły skanowania.

Rozwiązywanie problemów z wydajnością przy użyciu źródeł gorących zdarzeń

Dotyczy:

  • Problemy z wydajnością plików i plików wykonywalnych, które zużywają większość cykli procesora CPU w całym systemie plików.

Źródła gorących zdarzeń to funkcja, która pozwala klientom określić, który proces lub katalog jest odpowiedzialny za wysokie użycie zasobów. Aby zbadać, który proces/plik wykonywalny generuje najwięcej szumów, wykonaj następujące kroki.

Uwaga

Te polecenia wymagają uprawnień administratora. Upewnij się, że można użyć programu sudo.

Najpierw sprawdź poziom dziennika na maszynie.

mdatp health --field log_level

Jeśli nie jest w "debugowaniu", musisz go zmienić, aby uzyskać szczegółowy raport dotyczący gorących plików / plików wykonywalnych.

sudo mdatp log level set --level debug
Log level configured successfully

Aby zebrać bieżące statystyki (dla plików),

sudo mdatp diagnostic hot-event-sources files

Dane wyjściowe wyglądają podobnie do następujących w konsoli programu (jest to tylko fragment całego danych wyjściowych). W tym miejscu pierwszy wiersz pokazuje liczbę (częstotliwość wystąpienia), a drugi — ścieżkę pliku.

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

To polecenie generuje raport źródła zdarzeń gorącej, który jest zapisywany w folderze lokalnym, który można dokładniej zbadać. Dane wyjściowe wyglądają następująco w pliku 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": ""
        }
    ]
}

W tym przykładzie widać, że plik /mnt/RamDisk/postgres_data/pg_wal/0000000100000014000000A5 generuje najwięcej działań. Podobnie w przypadku plików wykonywalnych,

sudo mdatp diagnostic hot-event-sources executables

Dane wyjściowe wyglądają podobnie do następujących w konsoli programu .

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

Jest to dane wyjściowe zapisane w raporcie źródła gorącego zdarzenia w formacie 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": ""
        }
    ]
}

W tym przykładzie po 18s polecenie pokazuje, że wykonywalne; /usr/lib/postgresql/12/bin/psql i /usr/lib/postgresql/12/bin/postgres generują największą aktywność.

Po zakończeniu badania możesz zmienić poziom dziennika z powrotem na "info".

sudo mdatp log level set --level info
Log level configured successfully

Aby zwiększyć wydajność usługi Defender for Endpoint w systemie Linux, znajdź ścieżkę o największej liczbie w wierszu count i dodaj globalne wykluczenie procesu (jeśli jest to plik wykonywalny) lub globalne wykluczenie pliku/folderu (jeśli jest to plik) dla niego (starannie oceń, czy można je bezpiecznie wykluczyć). Aby uzyskać więcej informacji, zobacz Konfigurowanie i weryfikowanie wykluczeń dla usługi Defender dla punktu końcowego w systemie Linux.

Rozwiązywanie problemów z wydajnością przy użyciu statystyk eBPF

Dotyczy:

  • Wszystkie zdarzenia plików/procesów, w tym problemy z wydajnością na podstawie wywołań systemowych.

Polecenie statystyki eBPF (rozszerzony filtr pakietów Berkeley) zapewnia wgląd w najważniejsze zdarzenia/proces generujący najwięcej zdarzeń plików wraz z ich identyfikatorami syscall. Gdy wywołania systemowe są wykonywane z systemu, w systemie jest generowane duże obciążenie. Statystyki eBPF mogą służyć do identyfikowania takich problemów.

Aby zebrać bieżące statystyki przy użyciu statystyk eBPF, uruchom polecenie:

mdatp diagnostic ebpf-statistics

Dane wyjściowe są wyświetlane bezpośrednio w konsoli programu i będą wyglądać podobnie do następujących (jest to tylko fragment wszystkich danych wyjściowych):

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

To polecenie monitoruje system przez 20 sekund i wyświetla wyniki. W tym miejscu górna ścieżka inicjatora (postgresql/12/bin/psql) pokazuje ścieżkę procesu, który wygenerował najwięcej wywołań systemowych.

Aby zwiększyć wydajność usługi Defender for Endpoint w systemie Linux, znajdź usługę z najwyższym count wynikiem w wierszu Top initiator path i dodaj dla niego globalne wykluczenie procesu (dokładnie oceń, czy można je bezpiecznie wykluczyć). Aby uzyskać więcej informacji, zobacz Konfigurowanie i weryfikowanie wykluczeń dla usługi Defender dla punktu końcowego w systemie Linux.

Konfigurowanie wykluczeń globalnych w celu zwiększenia wydajności

Skonfiguruj Ochrona punktu końcowego w usłudze Microsoft Defender w systemie Linux z wykluczeniami dla procesów lub lokalizacji dysków, które przyczyniają się do problemów z wydajnością. Aby uzyskać więcej informacji, zobacz Konfigurowanie i weryfikowanie wykluczeń usługi Ochrona punktu końcowego w usłudze Microsoft Defender w systemie Linux. Jeśli nadal występują problemy z wydajnością, skontaktuj się z pomocą techniczną w celu uzyskania dalszych instrukcji i ograniczenia ryzyka.

Zobacz też

Porada

Chcesz dowiedzieć się więcej? Engage ze społecznością microsoft security w naszej społeczności technicznej: Ochrona punktu końcowego w usłudze Microsoft Defender Tech Community.