Przejdź do głównej zawartości

Zalecenia dla języka zapytań usługi Log Analytics dotyczące operatorów Summarize i Join

Data opublikowania: 29 maja, 2018

W tej aktualizacji podano zalecenia dla składni języka zapytań usług Azure Log Analytics i Application Insights dotyczące operatorów Summarize i Join. Istniejąca składnia jest nadal obsługiwana, ale zdecydowanie zalecamy zmodyfikowanie składni zapytań tam, gdzie to możliwe, w zapisanych wyszukiwaniach i alertach, aby uniknąć niejednoznaczności wyników.

Jeśli masz pytania dotyczące tych zaleceń, skontaktuj się z nami.

Godzinne automatyczne kwantowanie w operatorze Summarize

Obecnie dane agregowane według klucza daty/godziny są automatycznie grupowane w godzinne przedziały. W tym przykładzie kolumna TimeGenerated używana w operatorze Summarize została automatycznie zaokrąglona do godzinnych przedziałów:

SecurityEvent

| where TimeGenerated > ago(1d)

| where EventID == 4625

| summarize count() by TimeGenerated

Oto wyniki zapytania:

TimeGenerated [UTC]

count_

2018-02-04T09:00:00.000

2018-02-04T10:00:00.000

2018-02-04T11:00:00.000

2018-02-04T12:00:00.000

2018-02-04T13:00:00.000

2018-02-04T14:00:00.000

2018-02-04T15:00:00.000

2018-02-04T16:00:00.000

2018-02-04T17:00:00.000

2018-02-04T18:00:00.000

1205

1268

1234

1173

1007

1042

1041

1049

1090

1113

 

Zalecane akcje:

  • Jeśli nie polegasz na funkcji automatycznego kwantowania ani w zapisanych wyszukiwaniach, ani w alertach (np. summarize by TimeGenerated):
    • Nie jest wymagana żadna akcja.
  • Jeśli nie znasz funkcji automatycznego kwantowania, Twoje zapytania mogą zwracać wyniki z niezamierzoną agregacją godzinową:
    • Sprawdź, czy korzystasz z agregowania danych według klucza daty/godziny (np. summarize by TimeGenerated). Jeśli tak, popraw zapytania w taki sposób, aby było używane jawne kwantowanie — np. summarize by bin(TimeGenerated, 1h).
  • Jeśli znasz funkcję automatycznego kwantowania i polegasz na niej:
    • Popraw zapytania w taki sposób, aby było używane jawne kwantowanie — np. summarize by bin(TimeGenerated, 1h).

Wyrażenia równości w operatorze Join

Obecnie składnia języka zezwala na stosowanie niejednoznacznych wyrażeń równości jako atrybutów operatora Join (np. klucz1 == klucz2) powodujących zwrócenie niepożądanych wyników. Zalecamy zmianę niejednoznacznych wyrażeń równości, aby uniknąć tego zachowania.

Oto przykład niejednoznacznego wyrażenia operatora Join (sumującego czas trwania dziennej sesji na każdym komputerze):

SecurityEvent

| where EventID == 4624

| join kind= inner (

    SecurityEvent

    | where EventID == 4634

    ) on TargetLogonId == TargetLogonId

| extend Duration = LogoffTime - LogonTime

| summarize sum(Duration) by bin(LogonTime, 1d), Computer

 

Zalecane akcje:

  • Jeśli nie używasz wyrażeń równości w operatorach Join ani w zapisanych wyszukiwaniach, ani w alertach:
    • Nie jest wymagana żadna akcja.
  • Jeśli używasz wyrażeń równości w operatorach Join:
    • Popraw składnię operatorów Join.
    • Popraw zapytania. Nazwy kolumn powinny być kwalifikowane za pomocą odpowiedniej tabeli właścicieli oznaczonej za pomocą notacji $left i $right. Przykłady:

| join … on $left.Col1 == $right.Col2

| join … on X (odpowiednik: | join … on $left.X == $right.X)

 

  • Log Analytics
  • Azure Monitor
  • Services

Powiązane produkty