Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přepněte služby pomocí rozevíracího seznamu Verze . Přečtěte si další informace o navigaci.
Platí pro: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Jazyk Kusto Query Language (KQL) má integrované funkce detekce anomálií a prognózy , které umožňují kontrolovat neobvyklé chování. Když zjistíte neobvyklý vzor, spusťte analýzu původní příčiny (RCA) a zmírňte nebo vyřešte anomálii.
Proces diagnostiky je složitý a zdlouhavý a odborníci na doménu ho obvykle provádějí. Proces zahrnuje:
- Načítání a spojování více dat z různých zdrojů pro stejný časový rámec
- Hledání změn v rozdělení hodnot ve více dimenzích
- Vytváření grafů dalších proměnných
- Další techniky založené na znalostech domény a intuitivně
Vzhledem k tomu, že tyto scénáře diagnostiky jsou běžné, jsou k dispozici moduly plug-in strojového učení, které usnadňují fázi diagnostiky a zkracují dobu trvání analýzy RCA.
Všechny tři z následujících modulů plug-in strojového učení implementují algoritmy clusteringu: autocluster, basketa diffpatterns.
autocluster a basket pluginy clusterují jednu sadu záznamů. Modul diffpatterns plug-in clusteruje rozdíly mezi dvěma sadami záznamů.
Clustering jedné sady záznamů
Běžný scénář zahrnuje datovou sadu vybranou konkrétními kritérii, například:
- Časové okno zobrazující neobvyklé chování
- Čtení zařízení s vysokou teplotou
- Příkazy dlouhé doby trvání
- Uživatelé s nejvyšší útratou
Chcete rychle a snadno najít běžné vzory (segmenty) v datech. Vzory jsou podmnožinou datové sady, jejíž záznamy sdílejí stejné hodnoty ve více dimenzích (sloupce kategorií).
Následující dotaz sestaví a zobrazí v desetiminutových intervalech časové řady výjimek služby za období týdne:
let min_t = toscalar(demo_clustering1 | summarize min(PreciseTimeStamp));
let max_t = toscalar(demo_clustering1 | summarize max(PreciseTimeStamp));
demo_clustering1
| make-series num=count() on PreciseTimeStamp from min_t to max_t step 10m
| render timechart with(title="Service exceptions over a week, 10 minutes resolution")
Počet výjimek služby koreluje s celkovým provozem služby. Můžete jasně vidět denní vzor pro pracovní dny, pondělí až pátek. V polovině dne dochází k nárůstu počtu výjimek služby a pokles počtu během noci. Během víkendu se zobrazují ploché nízké počty. Nárůsty výjimek lze detekovat pomocí detekce anomálií časových řad.
K druhému prudkému nárůstu dat dochází v úterý odpoledne. Následující dotaz slouží k další diagnostice a ověření, jestli se jedná o ostrou špičku. Dotaz překreslí graf kolem špičky ve vyšším rozlišení osmi hodin v minutových intervalech. Pak si můžete prostudovat jeho hranice.
let min_t=datetime(2016-08-23 11:00);
demo_clustering1
| make-series num=count() on PreciseTimeStamp from min_t to min_t+8h step 1m
| render timechart with(title="Zoom on the 2nd spike, 1 minute resolution")
Vidíte úzkou dvouminutovou špičku od 15:00 do 15:02. V následujícím dotazu spočítejte výjimky v tomto dvouminutovém okně:
let min_peak_t=datetime(2016-08-23 15:00);
let max_peak_t=datetime(2016-08-23 15:02);
demo_clustering1
| where PreciseTimeStamp between(min_peak_t..max_peak_t)
| count
| Počet |
|---|
| 972 |
V následujícím dotazu ukázka 20 výjimek z 972:
let min_peak_t=datetime(2016-08-23 15:00);
let max_peak_t=datetime(2016-08-23 15:02);
demo_clustering1
| where PreciseTimeStamp between(min_peak_t..max_peak_t)
| take 20
| Přesné časové razítko | Región | ScaleUnit | Identifikátor nasazení | Bod sledování | ServiceHost |
|---|---|---|---|---|---|
| 2016-08-23 15:00:08.7302460 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 100005 | 00000000-0000-0000-0000-000000000000 |
| 2016-08-23 15:00:09.9496584 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 10007006 | 8d257da1-7a1c-44f5-9acd-f9e02ff507fd |
| 2016-08-23 15:00:10.5911748 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 100005 | 00000000-0000-0000-0000-000000000000 |
| 2016-08-23 15:00:12.2957912 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 10007007 | f855fcef-ebfe-405d-aaf8-9c5e2e43d862 |
| 2016-08-23 15:00:18.5955357 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 10007006 | 9d390e07-417d-42eb-bebd-793965189a28 |
| 2016-08-23 15:00:20.7444854 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 10007006 | 6e54c1c8-42d3-4e4e-8b79-9bb076ca71f1 |
| 2016-08-23 15:00:23.8694999 | eus2 | su2 | 89e2f62a73bb4efd8f545ae40d7e51 | 36109 | 19422243-19b9-4d85-9ca6-bc961861d287 |
| 2016-08-23 15:00:26.4271786 | ncus | su1 | e24ef436e02b4823ac5d5b1465a9401e | 36109 | 3271bae4-1c5b-4f73-98ef-cc117e9be914 |
| 2016-08-23 15:00:27.8958124 | scus | su3 | 90d3d2fc7ecc430c9621ece335651a01 | 904498 | 8cf38575-fca9-48ca-bd7c-21196f6d6765 |
| 2016-08-23 15:00:32.9884969 | scus | su3 | 90d3d2fc7ecc430c9621ece335651a01 | 10007007 | d5c7c825-9d46-4ab7-a0c1-8e2ac1d83ddb |
| 2016-08-23 15:00:34.5061623 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 1002110 | 55a71811-5ec4-497a-a058-140fb0d611ad |
| 2016-08-23 15:00:37.4490273 | scus | su3 | 90d3d2fc7ecc430c9621ece335651a01 | 10007006 | f2ee8254-173c-477d-a1de-4902150ea50d |
| 2016-08-23 15:00:41.2431223 | scus | su3 | 90d3d2fc7ecc430c9621ece335651a01 | 103200 | 8cf38575-fca9-48ca-bd7c-21196f6d6765 |
| 2016-08-23 15:00:47.2983975 | ncus | su1 | e24ef436e02b4823ac5d5b1465a9401e | 423690590 | 00000000-0000-0000-0000-000000000000 |
| 2016-08-23 15:00:50.5932834 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 10007006 | 2a41b552-aa19-4987-8cdd-410a3af016ac |
| 2016-08-23 15:00:50.8259021 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 1002110 | 0d56b8e3-470d-4213-91da-97405f8d005e |
| 2016-08-23 15:00:53.2490731 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 36109 | 55a71811-5ec4-497a-a058-140fb0d611ad |
| 2016-08-23 15:00:57.0000946 | eus2 | su2 | 89e2f62a73bb4efd8f545ae40d7e51 | 64038 | cb55739e-4afe-46a3-970f-1b49d8ee7564 |
| 2016-08-23 15:00:58.2222707 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | 10007007 | 8215dcf6-2de0-42bd-9c90-181c70486c9c |
| 2016-08-23 15:00:59.9382620 | scus | su3 | 90d3d2fc7ecc430c9621ece335651a01 | 10007006 | 451e3c4c-0808-4566-a64d-84d85cf30978 |
I když existuje méně než tisíc výjimek, je stále obtížné najít běžné segmenty, protože v každém sloupci je více hodnot. Pomocí modulu autocluster() plug-in můžete okamžitě extrahovat krátký seznam běžných segmentů a najít zajímavé clustery během dvou minut špičky, jak je vidět v následujícím dotazu:
let min_peak_t=datetime(2016-08-23 15:00);
let max_peak_t=datetime(2016-08-23 15:02);
demo_clustering1
| where PreciseTimeStamp between(min_peak_t..max_peak_t)
| evaluate autocluster()
| Identifikátor segmentu | Počet | Procento | Región | ScaleUnit | Identifikátor nasazení | ServiceHost |
|---|---|---|---|---|---|---|
| 0 | 639 | 65.7407407407407 | voda | su7 | b5d1d4df547d4a04ac15885617edba57 | e7f60c5d-4944-42b3-922a-92e98a8e7dec |
| 1 | 94 | 9.67078189300411 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | |
| 2 | 82 | 8.43621399176955 | ncus | su1 | e24ef436e02b4823ac5d5b1465a9401e | |
| 3 | 68 | 6.99588477366255 | scus | su3 | 90d3d2fc7ecc430c9621ece335651a01 | |
| 4 | 55 | 5,65843621399177 | Zeu | su4 | be1d6d7ac9574cbc9a22cb8ee20f16fc |
Z výše uvedených výsledků můžete vidět, že nejvíce dominantní segment obsahuje 65,74% z celkového počtu záznamů výjimek a sdílí čtyři dimenze. Další segment je mnohem méně běžný. Obsahuje pouze 9,67% záznamů a sdílí tři dimenze. Ostatní segmenty jsou ještě méně běžné.
Autocluster používá proprietární algoritmus pro dolování více dimenzí a extrakci zajímavých segmentů. "Zajímavé" znamená, že každý segment významně pokrývá jak sadu záznamů, tak sadu funkcí. Segmenty se odlišují, což znamená, že každý z nich se liší od ostatních. Jeden nebo více z těchto segmentů může být relevantní pro proces RCA. Pokud chcete minimalizovat kontrolu a hodnocení segmentů, autocluster extrahuje jenom malý seznam segmentů.
Modul plug-in basket() můžete použít také v následujícím dotazu:
let min_peak_t=datetime(2016-08-23 15:00);
let max_peak_t=datetime(2016-08-23 15:02);
demo_clustering1
| where PreciseTimeStamp between(min_peak_t..max_peak_t)
| evaluate basket()
| Identifikátor segmentu | Počet | Procento | Región | ScaleUnit | Identifikátor nasazení | Bod sledování | ServiceHost |
|---|---|---|---|---|---|---|---|
| 0 | 639 | 65.7407407407407 | voda | su7 | b5d1d4df547d4a04ac15885617edba57 | e7f60c5d-4944-42b3-922a-92e98a8e7dec | |
| 1 | 642 | 66.0493827160494 | voda | su7 | b5d1d4df547d4a04ac15885617edba57 | ||
| 2 | 324 | 33.3333333333333 | voda | su7 | b5d1d4df547d4a04ac15885617edba57 | 0 | e7f60c5d-4944-42b3-922a-92e98a8e7dec |
| 3 | 315 | 32.4074074074074 | voda | su7 | b5d1d4df547d4a04ac15885617edba57 | 16108 | e7f60c5d-4944-42b3-922a-92e98a8e7dec |
| 4 | 328 | 33.7448559670782 | 0 | ||||
| 5 | 94 | 9.67078189300411 | scus | su5 | 9dbd1b161d5b4779a73cf19a7836ebd6 | ||
| 6 | 82 | 8.43621399176955 | ncus | su1 | e24ef436e02b4823ac5d5b1465a9401e | ||
| 7 | 68 | 6.99588477366255 | scus | su3 | 90d3d2fc7ecc430c9621ece335651a01 | ||
| 8 | 167 | 17.1810699588477 | scus | ||||
| 9 | 55 | 5,65843621399177 | Zeu | su4 | be1d6d7ac9574cbc9a22cb8ee20f16fc | ||
| 10 | 92 | 9.46502057613169 | 10007007 | ||||
| 11 | 90 | 9,25925925925926 | 10007006 | ||||
| 12 | 57 | 5.8641975308642 | 00000000-0000-0000-0000-000000000000 |
Košík implementuje algoritmus "Apriori" pro dolování sady položek. Extrahuje všechny segmenty, jejichž pokrytí sady záznamů je nad prahovou hodnotou (výchozí 5%). Můžete vidět, že byly extrahovány další segmenty podobné těm, jako jsou segmenty 0, 1 nebo 2, 3.
Oba moduly plug-in jsou výkonné a snadno použitelné. Jejich omezení spočívá v tom, že bez dohledu skupinově seskupí jednu sadu záznamů naprosto bez popisků. Není jasné, jestli extrahované vzory charakterizují vybranou sadu záznamů, neobvyklé záznamy nebo globální sadu záznamů.
Klasifikace rozdílu mezi dvěma sadami záznamů
Plugin diffpatterns() překonává omezení autocluster a basket.
Diffpatterns přebírá dvě sady záznamů a extrahuje hlavní segmenty, které se liší. Jedna sada obvykle obsahuje prošetřovanou neobvyklou sadu záznamů. Jedna je analyzována pomocí autocluster a basket. Druhá sada obsahuje referenční sadu záznamů, směrný plán.
V následujícím dotazu diffpatterns vyhledá zajímavé clustery během dvou minut, které patří k výkyvu, a ty se liší od clusterů v rámci základny. Základní okno je definováno jako osm minut před 15:00, kdy začal nárůst. Rozšíříte binární sloupec (AB) a určíte, jestli konkrétní záznam patří do základního souboru nebo do anomálního souboru.
Diffpatterns implementuje algoritmus učení pod dohledem, kde byly dva popisky tříd generovány anomálním a referenčním příznakem (AB).
let min_peak_t=datetime(2016-08-23 15:00);
let max_peak_t=datetime(2016-08-23 15:02);
let min_baseline_t=datetime(2016-08-23 14:50);
let max_baseline_t=datetime(2016-08-23 14:58); // Leave a gap between the baseline and the spike to avoid the transition zone.
let splitime=(max_baseline_t+min_peak_t)/2.0;
demo_clustering1
| where (PreciseTimeStamp between(min_baseline_t..max_baseline_t)) or
(PreciseTimeStamp between(min_peak_t..max_peak_t))
| extend AB=iff(PreciseTimeStamp > splitime, 'Anomaly', 'Baseline')
| evaluate diffpatterns(AB, 'Anomaly', 'Baseline')
| Identifikátor segmentu | PočetA | CountB | Procenta | PercentB | percentuální rozdíl AB | Región | ScaleUnit | Identifikátor nasazení | Bod sledování |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 639 | 21 | 65.74 | 1,7 | 64.04 | voda | su7 | b5d1d4df547d4a04ac15885617edba57 | |
| 1 | 167 | 544 | 17.18 | 44.16 | 26.97 | scus | |||
| 2 | 92 | 356 | 9.47 | 28.9 | 19,43 | 10007007 | |||
| 3 | 90 | 336 | 9.26 | 27.27 | 18.01 | 10007006 | |||
| 4 | 82 | 318 | 8.44 | 25,81 | 17.38 | ncus | su1 | e24ef436e02b4823ac5d5b1465a9401e | |
| 5 | 55 | 252 | 5.66 | 20.45 | 14.8 | Zeu | su4 | be1d6d7ac9574cbc9a22cb8ee20f16fc | |
| 6 | 57 | 204 | 5,86 | 16.56 | 10.69 |
Nejdominantnější segment je stejný segment, který autocluster extrahoval. Pokrytí dvouminutového neobvyklého okna je také 65,74%. Pokrytí v osmiminutovém standardním intervalu je však pouze 1,7%. Rozdíl je 64,04%. Zdá se, že tento rozdíl souvisí s neobvyklým nárůstem. Pro ověření tohoto předpokladu následující dotaz rozdělí původní graf na záznamy, které patří do tohoto problematického segmentu, a záznamy z ostatních segmentů.
let min_t = toscalar(demo_clustering1 | summarize min(PreciseTimeStamp));
let max_t = toscalar(demo_clustering1 | summarize max(PreciseTimeStamp));
demo_clustering1
| extend seg = iff(Region == "eau" and ScaleUnit == "su7" and DeploymentId == "b5d1d4df547d4a04ac15885617edba57"
and ServiceHost == "e7f60c5d-4944-42b3-922a-92e98a8e7dec", "Problem", "Normal")
| make-series num=count() on PreciseTimeStamp from min_t to max_t step 10m by seg
| render timechart
Tento graf ukazuje, že špička v úterý odpoledne byla způsobená výjimkami z tohoto konkrétního segmentu zjištěného pomocí modulu plug-in diffpatterns .
Shrnutí
Moduly plug-in Machine Learning jsou užitečné pro mnoho scénářů. Plug-iny autocluster a basket implementují algoritmus učení bez dohledu a snadno se používají. Modul diffpatterns plug-in implementuje algoritmus učení pod dohledem a i když je složitější, je výkonnější pro extrakci segmentů diferenciace pro RCA.
Tyto moduly plug-in používejte interaktivně ve scénářích ad hoc a v automatických monitorovacích službách téměř v reálném čase. Za detekcí anomálií časových řad následuje proces diagnostiky. Proces je vysoce optimalizovaný tak, aby splňoval nezbytné standardy výkonu.