Udostępnij za pośrednictwem


Zbieranie dzienników z pliku tekstowego za pomocą agenta usługi Azure Monitor

Niestandardowe dzienniki tekstowe to jedno ze źródeł danych używanych w regule zbierania danych (DCR). Szczegółowe informacje na temat tworzenia kontrolera domeny znajdują się w temacie Zbieranie danych za pomocą agenta usługi Azure Monitor. Ten artykuł zawiera dodatkowe szczegóły dotyczące typu dzienników tekstowych.

Wiele aplikacji i usług będzie rejestrować informacje w plikach tekstowych zamiast standardowych usług rejestrowania, takich jak dziennik zdarzeń systemu Windows lub dziennik syslog. Te dane można zbierać za pomocą agenta usługi Azure Monitor i przechowywać w obszarze roboczym usługi Log Analytics przy użyciu danych zebranych z innych źródeł.

Wymagania wstępne

Podstawowa operacja

Na poniższym diagramie przedstawiono podstawową operację zbierania danych dziennika z pliku tekstowego.

  1. Agent obserwuje wszystkie pliki dziennika, które pasują do określonego wzorca nazwy na dysku lokalnym.
  2. Każdy wpis w dzienniku jest zbierany i wysyłany do usługi Azure Monitor. Strumień przychodzący zawiera cały wpis dziennika w jednej kolumnie.
  3. Jeśli jest używana transformacja domyślna, cały wpis dziennika jest wysyłany do pojedynczej kolumny w tabeli docelowej.
  4. Jeśli jest używana transformacja niestandardowa, wpis dziennika można przeanalizować w wielu kolumnach w tabeli docelowej.

Diagram przedstawiający kolekcję dziennika tekstowego przez agenta usługi Azure Monitor, pokazujący zarówno prostą kolekcję, jak i przekształcenie pliku rozdzielanego przecinkami.

Wymagania dotyczące plików tekstowych i najlepsze rozwiązania

Plik monitorowany przez agenta usługi Azure Monitor musi spełniać następujące wymagania:

  • Plik musi być przechowywany na dysku lokalnym maszyny z agentem usługi Azure Monitor w monitorowanym katalogu.
  • Każdy rekord musi być rozdzielony końcem wiersza.
  • Plik musi używać kodowania ASCII lub UTF-8. Inne formaty, takie jak UTF-16, nie są obsługiwane.
  • Nowe rekordy powinny być dołączane na końcu pliku i nie zastępować starych rekordów. Zastępowanie spowoduje utratę danych.

Zastosuj się do poniższych zaleceń, aby upewnić się, że nie występują problemy z utratą danych ani wydajnością:

  • Utwórz nowy plik dziennika codziennie, aby można było łatwo wyczyścić stare pliki.
  • Ciągłe czyszczenie plików dziennika w monitorowanym katalogu. Śledzenie wielu plików dziennika może zwiększyć użycie procesora i pamięci agenta. Poczekaj co najmniej 2 dni, aby umożliwić przetwarzanie wszystkich dzienników przez cały czas.
  • Nie zmieniaj nazwy pliku zgodnego ze wzorcem skanowania plików na inną nazwę zgodną ze wzorcem skanowania plików. Spowoduje to pozyskiwanie zduplikowanych danych.
  • Nie zmieniaj nazwy ani nie kopiuj dużych plików dziennika, które są zgodne ze wzorcem skanowania plików do monitorowanego katalogu. Jeśli musisz, nie przekrocz 50 MB na minutę.

Strumień przychodzący

Przychodzący strumień danych zawiera kolumny w poniższej tabeli.

Kolumna Type Opis
TimeGenerated datetime Godzina wygenerowania rekordu. Ta wartość zostanie automatycznie wypełniona wraz z czasem dodania rekordu do obszaru roboczego usługi Log Analytics. Tę wartość można zastąpić przy użyciu przekształcenia, aby ustawić TimeGenerated inną wartość.
RawData string Cały wpis dziennika w jednej kolumnie. Możesz użyć przekształcenia, jeśli chcesz podzielić te dane na wiele kolumn przed wysłaniem do tabeli.
FilePath string Jeśli dodasz tę kolumnę do strumienia przychodzącego w kontrolerze domeny, zostanie ona wypełniona ścieżką do pliku dziennika. Ta kolumna nie jest tworzona automatycznie i nie można jej dodać przy użyciu portalu. Należy ręcznie zmodyfikować kontroler domeny utworzony przez portal lub utworzyć kontroler domeny przy użyciu innej metody, w której można jawnie zdefiniować strumień przychodzący.

Tabela niestandardowa

Aby móc zbierać dane dziennika z pliku tekstowego, musisz utworzyć tabelę niestandardową w obszarze roboczym usługi Log Analytics, aby odbierać dane. Schemat tabeli musi odpowiadać zbieranym danym lub dodać przekształcenie, aby upewnić się, że schemat wyjściowy jest zgodny z tabelą.

Ostrzeżenie

Nie należy używać istniejącej niestandardowej tabeli dzienników używanej przez agentów MMA. Agenci MMA nie będą mogli zapisywać w tabeli po zapisie pierwszego agenta usługi AMA w tabeli. Aby zapobiec utracie danych MMA, należy utworzyć nową tabelę dla usługi AMA.

Możesz na przykład użyć następującego skryptu programu PowerShell, aby utworzyć tabelę niestandardową za pomocą RawData poleceń i FilePath. Nie potrzebujesz przekształcenia dla tej tabeli, ponieważ schemat jest zgodny ze schematem domyślnym strumienia przychodzącego.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "DateTime"
                    }, 
                    {
                        "name": "RawData",
                        "type": "String"
                    },
                    {
                        "name": "FilePath",
                        "type": "String"
                    }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

Tworzenie reguły zbierania danych dla pliku tekstowego

Utwórz regułę zbierania danych zgodnie z opisem w temacie Zbieranie danych za pomocą agenta usługi Azure Monitor. W kroku Zbieranie i dostarczanie wybierz pozycję Niestandardowe dzienniki tekstowe z listy rozwijanej Typ źródła danych.

Ustawienie opis
Wzorzec pliku Identyfikuje lokalizację i nazwę plików dziennika na dysku lokalnym. Użyj symbolu wieloznakowego dla nazw plików, które różnią się, na przykład podczas tworzenia nowego pliku każdego dnia z nową nazwą. Można wprowadzić wiele wzorców plików rozdzielonych przecinkami.

Przykłady:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
Nazwa tabeli Nazwa tabeli docelowej w obszarze roboczym usługi Log Analytics.
Ogranicznik rekordów Obecnie nie jest używany, ale zarezerwowany do przyszłego potencjalnego użycia, co pozwala ogranicznikom innym niż obecnie obsługiwany koniec wiersza (/r/n).
Przekształcanie Przekształcanie czasu pozyskiwania w celu filtrowania rekordów lub formatowania danych przychodzących dla tabeli docelowej. Użyj polecenia source , aby pozostawić dane przychodzące bez zmian.

Rozdzielane pliki dziennika

Wiele plików dziennika tekstowego zawiera wpisy rozdzielane znakiem, takim jak przecinek. Aby przeanalizować te dane w osobnych kolumnach, użyj przekształcenia z funkcją split.

Rozważmy na przykład plik tekstowy z następującymi przecinkami rozdzielanymi danymi. Te pola można opisać jako: Time, , CodeSeverity,Module i Message.

2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly backup complete.

Następujące przekształcenie analizuje dane w osobnych kolumnach. Ponieważ split zwraca dane dynamiczne, należy użyć funkcji, takich jak tostring i toint , aby przekonwertować dane na poprawny typ skalarny. Należy również podać nazwę dla każdego wpisu zgodnego z nazwą kolumny w tabeli docelowej. Zwróć uwagę, że ten przykład zawiera TimeGenerated wartość. Jeśli nie zostanie to podane, zostanie użyty czas pozyskiwania.

source | project d = split(RawData,",") | project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

Zrzut ekranu przedstawiający konfigurację kolekcji plików rozdzielanych przecinkami.

Pobranie tych danych za pomocą zapytania dziennika zwróci następujące wyniki.

Zrzut ekranu przedstawiający zapytanie dziennika zwracające wyniki kolekcji plików rozdzielanych przecinkami.

Rozwiązywanie problemów

Wykonaj poniższe kroki, jeśli nie zbierasz danych z oczekiwanego dziennika tekstowego.

  • Sprawdź, czy dane są zapisywane w zbieranym pliku dziennika.
  • Sprawdź, czy nazwa i lokalizacja pliku dziennika są zgodne z określonym wzorcem pliku.
  • Sprawdź, czy schemat tabeli docelowej jest zgodny ze strumieniem przychodzącym lub że masz przekształcenie, które przekonwertuje strumień przychodzący na prawidłowy schemat.
  • Zobacz Weryfikowanie operacji , aby sprawdzić, czy agent działa, a dane są odbierane.

Następne kroki

Dowiedz się więcej na następujące tematy: