Najlepsze praktyki operacyjne
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
Usunięcie pliku, do którego serwer DNS nadal zapisuje, to coś, czego nie chcesz odkryć później. Ogranicz -RemoveSourceFile do obróconych, zamkniętych dzienników.
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
SYSTEMz-NoProfilewidzi tylko moduły dostępne dla całego komputera. Zainstaluj moduł globalnie lub dodaj jawneImport-Modulew akcji zadania. - Kultura. Konto uruchamiające zadanie może nie mieć tej samej lokalizacji, na której testowałeś interaktywnie. Ustaw jawnie
-InputCulturei-OutputCulturezamiast polegać na domyślnych. - Dostęp do sieci. Jeśli źródło lub cel to ścieżka UNC,
SYSTEMuwierzytelnia się jako konto komputera. Przyznaj prawa udziału i NTFS dla konta komputera (lub grupyDomain 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
ComputerNamejest 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
.logdo 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.