Aracılığıyla paylaş


Azure İzleyici dönüşümlerinde desteklenen KQL özellikleri

Azure İzleyici'deki dönüştürmeler, gelen verileri Log Analytics çalışma alanında depolanmadan önce filtrelemek veya değiştirmek için gelen Azure İzleyici verilerine karşı bir KQL sorgusu çalıştırmanıza olanak sağlar. Bu makalede, yalnızca dönüştürmelerde kullanılabilen özel işleçlere ek olarak dönüştürme sorgularında KQL ile ilgili önemli noktalar ve desteklenen özellikler ayrıntılı olarak açıklanıyor.

Dönüştürmeler her kayda ayrı ayrı uygulandığından, birden çok kayıt üzerinde işlem gösteren KQL işleçlerini kullanamazlar. Yalnızca tek bir satırı giriş olarak alan ve en fazla bir satır döndüren işleçler desteklenir. Örneğin, birden çok kaydı özetlediğinden özetleme desteklenmez.

Dönüştürmelerde yalnızca bu makalede listelenen işleçler desteklenir. Diğer günlük sorgularında kullanılabilecek diğer işleçler dönüştürmelerde desteklenmez.

Özel hususlar

Ayrıştır komutu

Dönüştürmedeki ayrıştır komutu performans nedeniyle deyim başına 10 sütunla sınırlıdır. Dönüştürmeniz 10'dan fazla sütunu ayrıştırmayı gerektiriyorsa, büyük ayrıştırma komutlarında açıklandığı gibi bunu birden çok deyime bölün.

Dinamik verileri işleme

Dinamik verilerle aşağıdaki girişi göz önünde bulundurun:

{
    "TimeGenerated" : "2021-11-07T09:13:06.570354Z",
    "Message": "Houston, we have a problem",
    "AdditionalContext": {
        "Level": 2,
        "DeviceID": "apollo13"
    }
}

AdditionalContext'teki özelliklere erişmek için bunu giriş akışında dinamik tür sütun olarak tanımlayın:

"columns": [
    {
        "name": "TimeGenerated",
        "type": "datetime"
    },
    {
        "name": "Message",
        "type": "string"
    }, 
    {
        "name": "AdditionalContext",
        "type": "dynamic"
    }
]

AdditionalContext sütununun içeriği artık ayrıştırılabilir ve KQL dönüşümünde kullanılabilir:

source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)

Dinamik değişmez değerler

parse_json Dinamik değişmez değerleri işlemek için işlevini kullanın.

Örneğin, aşağıdaki sorgular aynı işlevselliği sağlar:

print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')

Özel işlevler

Aşağıdaki işlevler yalnızca dönüştürmelerde kullanılabilir. Diğer günlük sorgularında kullanılamazlar.

parse_cef_dictionary

CEF iletisi içeren bir dize verüldüğünde, parse_cef_dictionary iletinin Extension özelliğini dinamik anahtar/değer nesnesine ayrıştırıyor. Noktalı virgül, örnekte gösterildiği gibi ham ileti yönteme geçirilmeden önce değiştirilmesi gereken ayrılmış bir karakterdir.

| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage) 
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage) 
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension

parse_cef_dictionary işlevinin örnek çıktısı.

geo_location

IP adresi (IPv4 ve IPv6 desteklenir) geo_location içeren bir dize verildiğinde, işlev aşağıdaki öznitelikler de dahil olmak üzere yaklaşık coğrafi konumu döndürür:

  • Ülke
  • Bölge
  • Durum
  • City
  • Enlem
  • Boylam
| extend GeoLocation = geo_location("1.0.0.5")

geo_location işlevinin örnek çıktısının ekran görüntüsü.

Önemli

Bu işlev tarafından kullanılan IP coğrafi konum hizmetinin doğası gereği, aşırı kullanıldığında veri alımı gecikmesine neden olabilir. Bu işlevi dönüştürme başına birkaç kereden fazla kullanırken dikkatli olun.

Desteklenen deyimler

Let deyimi

sağ tarafı let bir skaler ifade, tablosal ifade veya kullanıcı tanımlı bir işlev olabilir. Yalnızca skaler bağımsız değişkenleri olan kullanıcı tanımlı işlevler desteklenir.

Tablosal ifade deyimleri

Bir dönüştürmede KQL deyimi için desteklenen tek veri kaynakları şunlardır:

  • kaynak verileri temsil eden kaynak. Örneğin:

    source
    | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41"
    | project PreciseTimeStamp, Message
    
  • print işleci, her zaman tek bir satır oluşturur. Örneğin:

    print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
    

Desteklenen tablo işleçleri

Desteklenen skaler işleçler

Skaler işlevler

Tanımlayıcı alıntılama

Tanımlayıcı alıntısını gerektiği gibi kullanın.

Sonraki adımlar