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
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")
Ö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
extend
project
print
where
parse
project-away
project-rename
datatable
columnifexists
(column_ifexists yerine columnifexists kullanın)
Desteklenen skaler işleçler
- Tüm Sayısal işleçler desteklenir.
- Tüm Datetime ve Timespan aritmetik işleçleri desteklenir.
- Aşağıdaki Dize işleçleri desteklenir.
- `=
!=
=~
!~
contains
!contains
contains_cs
!contains_cs
has
!has
has_cs
!has_cs
startswith
!startswith
startswith_cs
!startswith_cs
endswith
!endswith
endswith_cs
!endswith_cs
matches regex
in
!in
- Aşağıdaki Bit düzeyinde işleçler desteklenir.
binary_and()
binary_or()
binary_xor()
binary_not()
binary_shift_left()
binary_shift_right()
Skaler işlevler
- Bit düzeyinde işlevler
- Dönüştürme işlevleri
- DateTime ve TimeSpan işlevleri
- Dinamik ve dizi işlevleri
- Matematiksel işlevler
- Koşullu işlevler
- Dize işlevleri
base64_encodestring
(base64_encode_tostring yerine base64_encodestring kullanın)base64_decodestring
(base64_decode_tostring yerine base64_decodestring kullanın)countof
extract
extract_all
indexof
isempty
isnotempty
parse_json
split
strcat
strcat_delim
strlen
substring
tolower
toupper
hash_sha256
- Tür işlevleri
Tanımlayıcı alıntılama
Tanımlayıcı alıntısını gerektiği gibi kullanın.
Sonraki adımlar
- Azure İzleyici aracısını kullanarak bir sanal makineden veri toplama kuralı ve bu kuralla ilişkilendirme oluşturun.