Przykładowe przekształcenia w usłudze Azure Monitor
Przekształcenia w usłudze Azure Monitor umożliwiają filtrowanie lub modyfikowanie danych przychodzących przed wysłaniem ich do obszaru roboczego usługi Log Analytics. Ten artykuł zawiera przykładowe zapytania dotyczące typowych scenariuszy, których można użyć do rozpoczęcia tworzenia własnych przekształceń. Zobacz Tworzenie przekształcenia w usłudze Azure Monitor , aby uzyskać szczegółowe informacje na temat testowania tych przekształceń i dodawania ich do reguły zbierania danych (DCR).
Obniżanie kosztów danych
Ponieważ opłaty są naliczane za pozyskiwanie danych wysyłanych do obszaru roboczego usługi Log Analytics, chcesz odfiltrować wszystkie dane, których nie potrzebujesz, aby zmniejszyć koszty.
Filtrowanie wierszy danych
where
Użyj instrukcji , aby filtrować dane przychodzące zgodne z określonymi wymaganiami. Jeśli rekord przychodzący nie jest zgodny z instrukcją, rekord nie jest wysyłany do miejsca docelowego. W poniższym przykładzie zbierane są tylko rekordy o ważności Critical
.
source | where severity == "Critical"
Filtrowanie kolumn danych
Usuń kolumny ze źródła danych, które nie są wymagane, aby zaoszczędzić na kosztach pozyskiwania danych. project
Użyj instrukcji , aby określić kolumny w danych wyjściowych lub użyć project-away
polecenia , aby określić tylko kolumny do usunięcia. W poniższym przykładzie kolumna zostanie usunięta RawData
z danych wyjściowych.
source | project-away RawData
Analizowanie ważnych danych z kolumny
Być może masz kolumnę z ważnymi danymi pochowanymi w nadmiernym tekście. Zachowaj tylko cenne dane i usuń tekst, który nie jest potrzebny. Użyj funkcji ciągów, takich jak substring
i extract
, aby przeanalizować żądane dane. Możesz również przeanalizować dane przy użyciu parse
metody lub split
podzielić pojedynczą kolumnę na wiele wartości i wybrać odpowiednią kolumnę. Następnie użyj polecenia extend
, aby utworzyć nową kolumnę z przeanalizowanymi danymi i project-away
usunąć oryginalną kolumnę.
Ostrzeżenie
Zobacz Podział dużych poleceń analizy, aby uzyskać porady dotyczące używania złożonych poleceń analizy.
W poniższym przykładzie kolumna RequestContext
zawiera kod JSON z identyfikatorem ResourceId obszaru roboczego. Funkcje parse_json
i split
służą do wyodrębniania prostej nazwy obszaru roboczego. Dla tej wartości zostanie utworzona nowa kolumna, a pozostałe kolumny zostaną usunięte.
source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF
Wysyłanie wierszy do podstawowych dzienników
Wysyłaj wiersze w danych, które wymagają podstawowych możliwości zapytań, aby uzyskać podstawowe tabele dzienników w celu uzyskania niższych kosztów pozyskiwania. Aby uzyskać szczegółowe informacje na temat wysyłania danych do wielu tabel, zobacz Wysyłanie danych do wielu tabel.
Usuwanie poufnych danych
Być może masz źródło danych, które wysyła informacje, których nie chcesz przechowywać ze względów prywatności lub zgodności.
Filtrowanie poufnych informacji
Użyj tych samych strategii opisanych w temacie Zmniejszenie kosztów danych, aby odfiltrować całe wiersze lub określone kolumny zawierające poufne informacje. W poniższym przykładzie kolumna zostanie usunięta ClientIP
z danych wyjściowych.
source | project-away ClientIP
Zaciemnianie poufnych informacji
Użyj funkcji ciągów, aby zastąpić informacje, takie jak cyfry w adresie IP lub numerze telefonu wspólnym znakiem. Poniższy przykład zastępuje nazwę użytkownika w adresie e-mail ciągiem "*****".
source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")
Wysyłanie do tabeli alternatywnej
Wysyłanie poufnych rekordów do alternatywnej tabeli z inną konfiguracją kontroli dostępu na podstawie ról. Aby uzyskać szczegółowe informacje na temat wysyłania danych do wielu tabel, zobacz Wysyłanie danych do wielu tabel.
Wzbogacanie danych
Użyj przekształcenia, aby dodać informacje do danych, które udostępniają kontekst biznesowy lub upraszczają wykonywanie zapytań dotyczących danych później. Użyj funkcji ciągów, aby wyodrębnić informacje krytyczne z kolumny, a następnie użyć extend
instrukcji , aby dodać nową kolumnę do źródła danych. Poniższy przykład dodaje kolumnę identyfikującą, czy adres IP w innej kolumnie jest wewnętrzny, czy zewnętrzny.
source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")
Formatowanie danych dla miejsca docelowego
Być może masz źródło danych, które wysyła dane w formacie, który nie jest zgodny ze strukturą tabeli docelowej. Użyj przekształcenia, aby ponownie sformatować dane w wymaganym schemacie.
Modyfikowanie schematu
Użyj poleceń, takich jak extend
i project
, aby zmodyfikować schemat danych przychodzących w celu dopasowania do tabeli docelowej. W poniższym przykładzie nowa kolumna o nazwie TimeGenerated
jest dodawana do danych wychodzących przy użyciu funkcji KQL w celu zwrócenia bieżącej godziny.
source | extend TimeGenerated = now()
Analizowanie danych
split
Użyj operatora orparse
, aby przeanalizować dane w wielu kolumnach w tabeli docelowej. W poniższym przykładzie dane przychodzące mają kolumnę rozdzielaną przecinkami o nazwie RawData
podzielonej na poszczególne kolumny dla tabeli docelowej.
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])
Ostrzeżenie
Zobacz Podział dużych poleceń analizy, aby uzyskać porady dotyczące używania złożonych poleceń analizy.