Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sürüm açılan listesini kullanarak hizmetler arasında geçiş yapın. Gezinti hakkında daha fazla bilgi edinin.
Şunlar için geçerlidir: ✅ Microsoft Fabric ✅ Azure Veri Gezgini ✅ Azure İzleyici ✅ Microsoft Sentinel
Bulut hizmetleri ve IoT cihazları hizmet durumu, üretim süreçleri ve kullanım eğilimleri hakkında içgörüler elde etmek için kullanabileceğiniz telemetri verileri oluşturur. Zaman serisi analizi, tipik taban çizgisi desenlerinden sapmaları belirlemenize yardımcı olur.
Kusto Sorgu Dili (KQL), birden çok zaman serisi oluşturmak, işlemek ve analiz etmek için yerel desteğe sahiptir. Bu makalede, gerçek zamanlıya yakın izleme çözümlerini ve iş akışlarını etkinleştirmek üzere saniyeler içinde binlerce zaman serisi oluşturmak ve analiz etmek için KQL'in nasıl kullanılacağı gösterilmektedir.
Zaman serisi oluşturma
işlecini make-series kullanarak büyük bir düzenli zaman serisi kümesi oluşturun ve eksik değerleri gerektiği gibi doldurun.
Telemetri tablosunu bölümleyip bir zaman serisi kümesine dönüştürün. Tabloda genellikle bir zaman damgası sütunu, bağlamsal boyutlar ve isteğe bağlı ölçümler bulunur. Boyutlar, verileri bölümlendirmek için kullanılır. Amaç, düzenli zaman aralıklarında bölüm başına binlerce zaman serisi oluşturmaktır.
Giriş tablosu demo_make_series1 rastgele web hizmeti trafiğinin 600.000 kaydını içerir. 10 kaydı örneklemek için aşağıdaki komutu kullanın:
demo_make_series1 | take 10
Sonuçta elde edilen tablo bir zaman damgası sütunu, üç bağlamsal boyut sütunu içerir ve ölçüm içermez:
| Zaman damgası | BrowserVer | OsVer | Ülke/Bölge |
|---|---|---|---|
| 2016-08-25 09:12:35.4020000 | Chrome 51.0 | Windows 7 | Birleşik Krallık |
| 2016-08-25 09:12:41.1120000 | Chrome 52.0 | Windows 10 | |
| 2016-08-25 09:12:46.2300000 | Chrome 52.0 | Windows 7 | Birleşik Krallık |
| 2016-08-25 09:12:46.5100000 | Chrome 52.0 | Windows 10 | Birleşik Krallık |
| 2016-08-25 09:12:46.5570000 | Chrome 52.0 | Windows 10 | Litvanya Cumhuriyeti |
| 2016-08-25 09:12:47.0470000 | Chrome 52.0 | Windows 8.1 | Hindistan |
| 2016-08-25 09:12:51.3600000 | Chrome 52.0 | Windows 10 | Birleşik Krallık |
| 2016-08-25 09:12:51.6930000 | Chrome 52.0 | Windows 7 | Hollanda |
| 2016-08-25 09:12:56.4240000 | Chrome 52.0 | Windows 10 | Birleşik Krallık |
| 2016-08-25 09:13:08.7230000 | Chrome 52.0 | Windows 10 | Hindistan |
Ölçüm olmadığından, işletim sistemine göre bölümlenen trafik öğesi sayısını temsil eden bir zaman serisi oluşturun.
let min_t = toscalar(demo_make_series1 | summarize min(TimeStamp));
let max_t = toscalar(demo_make_series1 | summarize max(TimeStamp));
demo_make_series1
| make-series num=count() default=0 on TimeStamp from min_t to max_t step 1h by OsVer
| render timechart
- üç zaman serisi oluşturmak için işlecini
make-serieskullanın; burada:-
num=count(): trafik sayısı. -
from min_t to max_t step 1h: zaman serisini tablonun en eskisinden en yeni zaman damgasına kadar birer saatlik dilimlerde oluşturur. -
default=0: normal zaman serisi oluşturmak için eksik bölmeler için doldurma yöntemini belirtir. Alternatif olarak, farklı doldurma davranışı için ,series_fill_const(),series_fill_forward()veseries_fill_backward()kullanınseries_fill_linear(). -
by OsVer: işletim sistemine göre bölümler.
-
- Zaman serisi veri yapısı, her zaman dilimi için toplanan değerlerin sayısal bir dizisidir. Görselleştirme için kullanın
render timechart.
Yukarıdaki tabloda üç bölüm vardır (Windows 10, Windows 7 ve Windows 8.1). Grafik, her işletim sistemi sürümü için ayrı bir zaman serisi gösterir:
Zaman serisi çözümleme işlevleri
Bu bölümde tipik seri işleme işlevlerini gerçekleştireceğiz. Bir zaman serisi kümesi oluşturulduktan sonra, KQL bunları işlemek ve analiz etmek için artan bir işlev listesini destekler. Zaman serisini işlemek ve analiz etmek için birkaç temsili işlevi açıklayacağız.
Filtreleme
Filtreleme, sinyal işlemede yaygın bir uygulamadır ve zaman serisi işleme görevleri (örneğin, gürültülü bir sinyali düzeltme, değişiklik algılama) için kullanışlıdır.
- İki genel filtreleme işlevi vardır:
-
series_fir(): FIR filtresi uygulama. Değişiklik algılama için hareketli ortalama ve zaman serisinin farklılaşmasının basit hesaplamasında kullanılır. -
series_iir(): IIR filtresi uygulama. Üstel düzeltme ve kümülatif toplam için kullanılır.
-
-
Extend5 bölmeli yeni bir hareketli ortalama serisi (ma_num olarak adlandırılır) sorguya eklenerek ayarlanan zaman serisi:
let min_t = toscalar(demo_make_series1 | summarize min(TimeStamp));
let max_t = toscalar(demo_make_series1 | summarize max(TimeStamp));
demo_make_series1
| make-series num=count() default=0 on TimeStamp from min_t to max_t step 1h by OsVer
| extend ma_num=series_fir(num, repeat(1, 5), true, true)
| render timechart
Regresyon analizi
Zaman serisinin eğilimini tahmin etmek için segmentlere ayrılmış doğrusal regresyon analizi kullanılabilir.
- Genel eğilim algılama için bir zaman serisine en iyi satırı sığdırmak için series_fit_line() kullanın.
- İzleme senaryolarında yararlı olan eğilim değişikliklerini taban çizgisine göre algılamak için series_fit_2lines() kullanın.
series_fit_line() Zaman serisi sorgusundaki ve series_fit_2lines() işlevleri örneği:
demo_series2
| extend series_fit_2lines(y), series_fit_line(y)
| render linechart with(xcolumn=x)
- Mavi: orijinal zaman serisi
- Yeşil: uygun çizgi
- Kırmızı: iki uyarlanmış çizgi
Uyarı
İşlev atlama (düzey değişikliği) noktasını doğru bir şekilde algıladı.
Mevsimsellik algılama
Birçok ölçüm mevsimsel (düzenli) desenleri izler. Bulut hizmetlerinin kullanıcı trafiği genellikle iş gününün ortasında en yüksek, gece ve hafta sonu için en düşük olan günlük ve haftalık desenleri içerir. IoT algılayıcıları düzenli aralıklarla ölçülür. Sıcaklık, basınç veya nem gibi fiziksel ölçümler de mevsimsel davranış gösterebilir.
Aşağıdaki örnek, bir web hizmetinin bir aylık trafiği üzerinde mevsimselliği iki saatlik aralıklarla algılar.
demo_series3
| render timechart
- Zaman serisindeki dönemleri otomatik olarak algılamak için series_periods_detect() kullanın; burada:
-
num: analiz için zaman serisi -
0.: gün cinsinden minimum dönem uzunluğu (0, minimum değil anlamına gelir) -
14d/2h: gün cinsinden maksimum süre uzunluğu, 2 saatlik bölmelere ayrılmış 14 gündür. -
2: algılanacak dönem sayısı
-
- Bir ölçümün belirli ayrı dönemleri olması gerektiğini biliyor ve bunların var olduğunu doğrulamak istiyorsak series_periods_validate() kullanın.
Uyarı
Belirli ayrı dönemler yoksa bu bir anomalidir
demo_series3
| project (periods, scores) = series_periods_detect(num, 0., 14d/2h, 2) //to detect the periods in the time series
| mv-expand periods, scores
| extend days=2h*todouble(periods)/1d
| Adet dönemleri | Puanlar | Günler |
|---|---|---|
| 84 | 0.820622786055595 | 7 |
| 12 | 0.764601405803502 | 1 |
işlevi günlük ve haftalık mevsimselliği algılar. Hafta sonu günleri hafta içi günlerden farklı olduğundan günlük puanlar haftalıktan küçüktür.
Öğeye göre işlevler
Aritmetik ve mantıksal işlemler bir zaman serisinde yapılabilir. series_subtract() kullanarak, özgün ham ölçüm ile düzeltilmiş ölçüm arasındaki fark olan artık zaman serisini hesaplayabilir ve artık sinyalde anomalileri arayabiliriz:
let min_t = toscalar(demo_make_series1 | summarize min(TimeStamp));
let max_t = toscalar(demo_make_series1 | summarize max(TimeStamp));
demo_make_series1
| make-series num=count() default=0 on TimeStamp from min_t to max_t step 1h by OsVer
| extend ma_num=series_fir(num, repeat(1, 5), true, true)
| extend residual_num=series_subtract(num, ma_num) //to calculate residual time series
| where OsVer == "Windows 10" // filter on Win 10 to visualize a cleaner chart
| render timechart
- Mavi: orijinal zaman serisi
- Kırmızı: düzeltilmiş zaman serisi
- Yeşil: kalıntı zaman serisi
Zaman serisi iş akışı geniş ölçekte
Bu örnekte, saniyeler içinde binlerce zaman serisinde büyük ölçekte çalışan anomali algılama gösterilmektedir. Dört gün içinde veritabanı hizmeti okuma sayısı ölçümü için örnek telemetri kayıtlarını görmek için aşağıdaki sorguyu çalıştırın:
demo_many_series1
| take 4
| ZAMAN DAMGASI | Loc | Op | DB | DataRead |
|---|---|---|---|---|
| 2016-09-11 21:00:00.0000000 | Loc 9 | 5117853934049630089 | 262 | 0 |
| 2016-09-11 21:00:00.0000000 | Loc 9 | 5117853934049630089 | 241 | 0 |
| 2016-09-11 21:00:00.0000000 | Loc 9 | -865998331941149874 | 262 | 279862 |
| 2016-09-11 21:00:00.0000000 | Loc 9 | 371921734563783410 | İki yüz elli beş | 0 |
Basit istatistikleri görüntüleyin:
demo_many_series1
| summarize num=count(), min_t=min(TIMESTAMP), max_t=max(TIMESTAMP)
| Num | min_t | max_t |
|---|---|---|
| 2177472 | 2016-09-08 00:00:00.0000000 | 2016-09-11 23:00:00.0000000 |
Okuma ölçümünün 1 saatlik bölmelerindeki zaman serisi (dört gün × 24 saat = 96 nokta) normal saatlik dalgalanmayı gösterir:
let min_t = toscalar(demo_many_series1 | summarize min(TIMESTAMP));
let max_t = toscalar(demo_many_series1 | summarize max(TIMESTAMP));
demo_many_series1
| make-series reads=avg(DataRead) on TIMESTAMP from min_t to max_t step 1h
| render timechart with(ymin=0)
Tek bir normal zaman serisi anormal desenlere sahip olabilecek binlerce örnekten toplandığından bu davranış yanıltıcıdır. Loc (konum), İşlem (işlem) ve DB (belirli makine) tarafından tanımlanan örnek başına bir zaman serisi oluşturun.
Kaç zaman serisi oluşturabilirsiniz?
demo_many_series1
| summarize by Loc, Op, DB
| count
| Sayı |
|---|
| 18339 |
Okuma sayısı ölçümü için 18.339 zaman serisi oluşturun.
by yan tümcesini make-series deyimine ekleyin, doğrusal regresyon uygulayın ve en belirgin azalan eğilime sahip ilk iki zaman serisini seçin.
let min_t = toscalar(demo_many_series1 | summarize min(TIMESTAMP));
let max_t = toscalar(demo_many_series1 | summarize max(TIMESTAMP));
demo_many_series1
| make-series reads=avg(DataRead) on TIMESTAMP from min_t to max_t step 1h by Loc, Op, DB
| extend (rsquare, slope) = series_fit_line(reads)
| top 2 by slope asc
| render timechart with(title='Service Traffic Outage for 2 instances (out of 18339)')
Örnekleri görüntüleme:
let min_t = toscalar(demo_many_series1 | summarize min(TIMESTAMP));
let max_t = toscalar(demo_many_series1 | summarize max(TIMESTAMP));
demo_many_series1
| make-series reads=avg(DataRead) on TIMESTAMP from min_t to max_t step 1h by Loc, Op, DB
| extend (rsquare, slope) = series_fit_line(reads)
| top 2 by slope asc
| project Loc, Op, DB, slope
| Loc | Op | DB | yamaç |
|---|---|---|---|
| Loc 15 | 37 | 1151 | -104,498.46510358342 |
| Loc 13 | 37 | 1249 | -86,614.02919932814 |
İki dakikadan daha az bir süre içinde sorgu yaklaşık 20.000 zaman serisini analiz eder ve ani okuma sayısı düşüşüyle ikisini algılar.
Bu özellikler ve platform performansı, zaman serisi analizi için güçlü bir çözüm sağlar.
İlgili içerik
- KQL ile anomali algılama ve tahmin etme.
- KQL ile makine öğrenmesi özellikleri.