Najlepsze praktyki operacyjne

Co zrobić dobrze, zanim pozwolisz na automatyczne uruchamianie konwersji dzienników DNS na produkcyjnych kontrolerach domeny.

For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /pl/docs/06-operational-best-practices/index.md.

Konwersja dziennika ręcznie jest prosta. Uruchamianie jej co noc na każdym kontrolerze domeny, przez lata, bez nadzoru, to już wymaga pewnego zaprojektowania. Oto punkty, które mają znaczenie w praktyce.

1. Konwertuj dzienniki obrócone, nie aktywne

Włącz obracanie dzienników na serwerze DNS i konwertuj tylko zamknięte pliki. Moduł może czytać dziennik, do którego serwer DNS aktualnie zapisuje, ale ten plik zmienia się w trakcie konwersji: najnowsze wpisy mogą być nieobecne, a ostatni rekord może być obcięty. Dwa uruchomienia dają dwa różne wyniki.

Standardowy wzorzec pomija najnowszy plik:

Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME

Warto mieć świadomość kompromisu: na serwerze o niskim natężeniu ruchu obracanie może trwać dłużej niż dobę, więc dane z bieżącego dnia pozostaną nieprzetworzone, dopóki plik się nie obróci. Dopasuj próg obracania odpowiednio.

2. Zaplanuj zadanie i nadaj mu działającą tożsamość

Harmonogram zadań (Task Scheduler) to zwykle miejsce na to — codziennie to rozsądny domyślny wybór. Pełna implementacja GPO dla kontrolerów domeny jest opisana w przykładzie zbierania opartego na GPO, a samodzielne zadanie w przykładzie zadania zaplanowanego.

Trzy rzeczy sprawiają tu problemy:

  • Odnajdywanie modułu. Zadanie uruchamiane jako SYSTEM z -NoProfile widzi tylko moduły dostępne dla całego komputera. Zainstaluj moduł globalnie lub dodaj jawne Import-Module w akcji zadania.
  • Kultura. Konto uruchamiające zadanie może nie mieć tej samej lokalizacji, na której testowałeś interaktywnie. Ustaw jawnie -InputCulture i -OutputCulture zamiast polegać na domyślnych.
  • Dostęp do sieci. Jeśli źródło lub cel to ścieżka UNC, SYSTEM uwierzytelnia się jako konto komputera. Przyznaj prawa udziału i NTFS dla konta komputera (lub grupy Domain Controllers), albo uruchom zadanie jako dedykowane konto usługi.

3. Obracaj przy rozmiarze, który możesz przetworzyć

50–200 MB na plik utrzymuje konwersje przewidywalne i pozwala na zakończenie zadania nocnego w wyznaczonym czasie. Jeden plik, który rośnie bez końca, w końcu tego nie zapewni. Zobacz Wydajność.

4. Zweryfikuj pierwsze wyniki przed automatyzacją

Uruchom konwersję ręcznie na dwóch lub trzech prawdziwych dziennikach i faktycznie otwórz CSV:

  • Czy znaczniki czasu są poprawne — bez zamiany dnia z miesiącem? (Jeśli nie, ustaw -InputCulture.)
  • Czy separator odpowiada temu, czego oczekuje odbiorca?
  • Czy ComputerName jest wypełnione?
  • Czy są obecne potrzebne konteksty, a niepotrzebne są odfiltrowane?

-WhatIf pokaże, które pliki partia by przetworzyła, zanim to zrobi:

Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Convert-DNSDebugLogFile -RemoveSourceFile -WhatIf

5. Zdecyduj, co zrobić z przetworzonymi dziennikami

Zadanie, które po prostu konwertuje „wszystkie dzienniki oprócz najnowszego”, będzie przetwarzać te same pliki co noc. To jest solidne i proste, ale nadpisuje wyniki i może wprowadzać duplikaty do systemu, który je pobiera.

Wybierz jedno:

  • przenieś przetworzone pliki .log do folderu archiwum
  • usuń je z -RemoveSourceFile, gdy zaufasz już potokowi
  • spraw, by kolektor po stronie odbiorcy usuwał duplikaty

Cokolwiek wybierzesz, zapisz to — to szczegół, który myli kolejnego administratora.

6. Zaplanuj miejsce na dane i okres przechowywania

Kompresja (-CompressOutput) zwykle zmniejsza CSV o 90% lub więcej, ale objętość i tak rośnie. Oszacuj na podstawie faktycznego tempa zapytań i wymagań retencji, i ustaw datę końcową dla danych zamiast pozwalać im rosnąć bez końca.

-OutputType Statistic warto rozważyć przy długim okresie przechowywania: dzienne podsumowania są malutkie i często odpowiadają na pytania o trendy, dla których dawniej przechowywano szczegółowe dane.

7. Traktuj wynik jako wrażliwy

Przetworzone dzienniki DNS opisują twoją wewnętrzną strukturę nazw i kto czego szukał. To bardziej ujawniające niż większość dzienników infrastruktury i w zależności od jurysdykcji może być traktowane jako dane osobowe.

  • Ogranicz uprawnienia NTFS i udziału do folderów wyjściowych.
  • Nie zostawiaj CSV na ogólnodostępnym udziale „tymczasowo”.
  • Uwzględnij dane dzienników DNS w polityce retencji i usuwania, nie tylko w polityce kopii zapasowych.
  • Skompresowany wynik jest mniejszy, ale nie chroniony — stosuj szyfrowanie lub kontrolę dostępu tam, gdzie to ważne.

8. Zachowaj weryfikację nagłówka

Domyślna kontrola, czy plik to naprawdę dziennik debugowania DNS, nic nie kosztuje i zapobiega tworzeniu tysięcy nonsensownych wierszy przez literówkę w ścieżce. Używaj -SkipHeaderValidation tylko dla naprawdę nietypowych formatów — i pamiętaj, że polecenie odmawia łączenia tego z `-RemoveSourceFile właśnie z tego powodu.

9. Monitoruj zadanie, nie tylko serwer

Automatyczna konwersja, która cicho przestaje działać, jest gorsza niż brak konwersji, bo luka jest zauważana dopiero, gdy ktoś potrzebuje danych.

  • Obserwuj wyjście błędów różne od zera; referencyjna implementacja GPO celowo rzuca wyjątkiem, gdy $Error.Count -gt 0, by zadanie zgłaszało błąd.
  • Alarmuj na podstawie ostatniego kodu wyniku zadania zaplanowanego, nie tylko na istnienie zadania.
  • Sprawdzaj, czy pliki wyjściowe faktycznie pojawiają się z aktualnymi znacznikami czasu.
  • Monitoruj wolne miejsce na dysku zarówno na wolumenie dzienników, jak i na miejscu docelowym.

Typowe przyczyny nieudanego uruchomienia — odmowa dostępu, uszkodzone dzienniki, nieprawidłowe nagłówki — są omówione w Rozwiązywaniu problemów.

10. Dokumentuj proces

Gdzie zapisywane są dzienniki, kiedy uruchamia się zadanie, jakie parametry są używane, gdzie trafia wynik, kto go pobiera i jak długo jest przechowywany. Sześć linijek w twojej wiki operacyjnej. To właśnie sprawia, że konfiguracja jest audytowalna i możliwa do przekazania dalej.