Akıllı Algılama - Hata Anomalileri
Web uygulamanız başarısız istek oranında anormal bir artışla karşılaşırsa Application Insights sizi neredeyse gerçek zamanlı olarak uyarır. Başarısız olarak bildirilen HTTP isteklerinin veya bağımlılık çağrılarının hızında olağan dışı bir artış algılar. İstekler için, başarısız istekler genellikle 400 veya daha yüksek yanıt kodlarına sahiptir. Sorunu önceliklendirmenize ve tanılamanıza yardımcı olmak için uyarı ayrıntılarında hataların özelliklerinin ve ilgili uygulama verilerinin analizi sağlanır. Daha fazla tanılama için Application Insights portalının bağlantıları da vardır. Normal hata oranını tahmin etmek için makine öğrenmesi algoritmalarını kullandığından özelliğin ayarlanmasına veya yapılandırılmasına gerek yoktur.
Bu özellik, bulutta veya uygulama isteği veya bağımlılık verileri oluşturan kendi sunucularınızda barındırılan tüm web uygulamaları için çalışır. Örneğin, TrackRequest() veya TrackDependency() çağıran bir çalışan rolünüz varsa.
Projeniz için Application Insights'ı ayarladıktan sonra ve uygulamanız belirli bir minimum miktarda veri oluşturuyorsa, Hata Anomalilerinin Akıllı Algılanması'nın uygulamanızın normal davranışını öğrenmesi 24 saat sürer.
Örnek bir uyarı aşağıda verilmişti:
Not
Akıllı Algılayıcı Hatası Anomalileri, her App Insights'taki toplam isteklerdeki hata oranları için hesaplanır. Bu bildirimler, bu istekleri gönderen API veya uygulama başına uyarı vermez. Uyarı ayrıntıları size şunu söyler:
- Normal uygulama davranışıyla karşılaştırıldığında hata oranı.
- Kaç kullanıcı etkileniyor, bu nedenle ne kadar endişeleneceklerini biliyorsunuz.
- Hatalarla ilişkili bir özellik deseni. Bu örnekte belirli bir yanıt kodu, istek adı (işlem) ve uygulama sürümü vardır. Bu, kodunuzda aramaya nereden başlayacağınızı hemen söyler. Diğer olasılıklar belirli bir tarayıcı veya istemci işletim sistemi olabilir.
- Özel durum, günlük izlemeleri ve bağımlılık hatası (veritabanları veya diğer dış bileşenler) karakterize hatalarla ilişkili gibi görünür.
- Application Insights'taki verilerde doğrudan ilgili aramalara bağlantılar.
Akıllı Algılamanın Avantajları
Normal ölçüm uyarıları bir sorun olabileceğini bildirir. Ancak Akıllı Algılama sizin için tanılama çalışmasını başlatır ve aksi takdirde kendiniz yapmanız gereken analizin çoğunu gerçekleştirir. Sonuçları düzgün bir şekilde paketledikten sonra sorunun köküne hızla erişmenize yardımcı olursunuz.
Nasıl çalışır?
Akıllı Algılama, uygulamanızdan alınan verileri ve özellikle hata oranlarını izler. Bu kural, özelliğin false olduğu Successful request
istek sayısını ve özelliğin false olduğu bağımlılık çağrılarının Successful call
sayısını sayar. varsayılan olarak Successful request == (resultCode < 400)
istekler için (kendi TrackRequest çağrılarınızı filtrelemek veya oluşturmak için özel kod yazmadığınız sürece).
Uygulamanızın performansı tipik bir davranış düzenine sahiptir. Bazı istekler veya bağımlılık çağrıları hataya diğerlerinden daha yatkındır; ve yük arttıkça genel hata oranı artabilir. Akıllı Algılama, bu anomalileri bulmak için makine öğrenmesini kullanır.
Veriler web uygulamanızdan Application Insights'a geldikçe Akıllı Algılama, geçerli davranışı son birkaç gün içinde görülen desenlerle karşılaştırır. Algılayıcı önceki performansla hata oranı karşılaştırmasında anormal bir artış bulursa, algılayıcı daha ayrıntılı bir analiz tetikler.
Bir çözümleme tetiklendiğinde, hizmet başarısız istekte hataları karakterize eden bir değer deseni belirlemeye çalışmak için bir küme analizi gerçekleştirir.
Daha önce gösterilen örnekte analiz, çoğu hatanın belirli bir sonuç kodu, istek adı, Sunucu URL'si konağı ve rol örneğiyle ilgili olduğunu keşfetti.
Hizmetinizi bu çağrılarla ilişkilendirdiğinizde çözümleyici, tanımlanan kümedeki isteklerle ilişkili bir özel durum ve bağımlılık hatası arar. Ayrıca, bu isteklerle ilişkili izleme günlüklerinin bir örneğini de arar. Aldığınız uyarı, algılanan sorunun kök nedenini algılamaya bağlam ve ipucu sağlayabilecek bu ek bilgileri içerir.
Uyarı mantığı ayrıntıları
Hata Anomalileri algılama, özel bir makine öğrenmesi algoritmasına dayanır, bu nedenle uyarı tetikleme veya tetiklenmeme nedenleri her zaman belirleyici değildir. Bununla birlikte, algoritmanın kullandığı birincil faktörler şunlardır:
- 20 dakikalık bir sıralı zaman penceresinde isteklerin/bağımlılıkların hata yüzdesinin analizi.
- Son 20 dakikadaki hata yüzdesinin son 40 dakika ve son yedi gündeki oran ile karşılaştırması. Algoritma, standart sapmanın X çarpısını aşan önemli sapmalar arıyor.
- Algoritma, uygulamanın istek/bağımlılık hacmine bağlı olarak değişen en düşük hata yüzdesi için uyarlamalı bir sınır kullanıyor.
- Algoritma, sorun artık 8-24 saat algılanırsa tetiklenen uyarıyı otomatik olarak çözebilen mantık içerir. Not: geçerli tasarımda. Akıllı Algılama uyarısı çözümlendiğinde bildirim veya eylem gönderilmez. Azure portalında Akıllı Algılama uyarısının çözümlenip çözümlenmediğini de kontrol edebilirsiniz.
Hata Anomalileri uyarı kurallarını yönetme
Uyarı kuralı oluşturma
Application Insights kaynağınız oluşturulduğunda hata anomalileri uyarı kuralı otomatik olarak oluşturulur. Kural, söz konusu kaynak üzerindeki telemetriyi analiz etmek için otomatik olarak yapılandırılır. Azure REST API'sini veya Resource Manager şablonunu kullanarak kuralı yeniden oluşturabilirsiniz. Kuralın otomatik olarak oluşturulması bir nedenle başarısız olduysa veya kuralı sildiyseniz kuralı oluşturmak yararlı olabilir.
Uyarı kuralı yapılandırması
Portalda Hata Anomalileri uyarı kuralı yapılandırmak için Uyarılar sayfasını açın ve Uyarı Kuralları'nı seçin. Hata Anomalileri uyarı kuralları, el ile ayarladığınız tüm uyarılarla birlikte eklenir.
Yapılandırmak için uyarı kuralına tıklayın.
Akıllı Algılama uyarı kuralını portaldan veya bir Azure Resource Manager şablonu kullanarak devre dışı bırakabilirsiniz.
Bu uyarı kuralı, "Application Insights Akıllı Algılama" adlı ilişkili bir Eylem Grubu ile oluşturulur. Varsayılan olarak, bu eylem grubu E-posta Azure Resource Manager Rolü eylemlerini içerir ve aboneliğinizde İzleme Katkıda Bulunanı veya İzleme Okuyucusu aboneliği Azure Resource Manager rollerine sahip kullanıcılara bildirim gönderir. Diğer tüm Azure uyarı kurallarında olduğu gibi kuralın tetiklediği eylem gruplarını kaldırabilir, değiştirebilir veya ekleyebilirsiniz. Bu uyarı kuralından gönderilen bildirimler ortak uyarı şemasını izler.
Uyarıları silme
Hata Anomalileri uyarı kuralını silebilirsiniz.
Bunu, Uyarı kuralları sayfasında veya aşağıdaki Azure CLI komutuyla el ile yapabilirsiniz:
az resource delete --ids <Resource ID of Failure Anomalies alert rule>
Application Insights kaynağını silerseniz ilişkili Hata Anomalileri uyarı kuralının otomatik olarak silinmediğini fark edin.
Hata Anomalileri uyarısı web kancası yükü örneği
{
"properties": {
"essentials": {
"severity": "Sev3",
"signalType": "Log",
"alertState": "New",
"monitorCondition": "Resolved",
"monitorService": "Smart Detector",
"targetResource": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/test-group/providers/microsoft.insights/components/test-rule",
"targetResourceName": "test-rule",
"targetResourceGroup": "test-group",
"targetResourceType": "microsoft.insights/components",
"sourceCreatedId": "1a0a5b6436a9b2a13377f5c89a3477855276f8208982e0f167697a2b45fcbb3e",
"alertRule": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/test-group/providers/microsoft.alertsmanagement/smartdetectoralertrules/failure anomalies - test-rule",
"startDateTime": "2019-10-30T17:52:32.5802978Z",
"lastModifiedDateTime": "2019-10-30T18:25:23.1072443Z",
"monitorConditionResolvedDateTime": "2019-10-30T18:25:26.4440603Z",
"lastModifiedUserName": "System",
"actionStatus": {
"isSuppressed": false
},
"description": "Failure Anomalies notifies you of an unusual rise in the rate of failed HTTP requests or dependency calls."
},
"context": {
"DetectionSummary": "An abnormal rise in failed request rate",
"FormattedOccurenceTime": "2019-10-30T17:50:00Z",
"DetectedFailureRate": "50.0% (200/400 requests)",
"NormalFailureRate": "0.0% (over the last 30 minutes)",
"FailureRateChart": [
[
"2019-10-30T05:20:00Z",
0
],
[
"2019-10-30T05:40:00Z",
100
],
[
"2019-10-30T06:00:00Z",
0
],
[
"2019-10-30T06:20:00Z",
0
],
[
"2019-10-30T06:40:00Z",
100
],
[
"2019-10-30T07:00:00Z",
0
],
[
"2019-10-30T07:20:00Z",
0
],
[
"2019-10-30T07:40:00Z",
100
],
[
"2019-10-30T08:00:00Z",
0
],
[
"2019-10-30T08:20:00Z",
0
],
[
"2019-10-30T08:40:00Z",
100
],
[
"2019-10-30T17:00:00Z",
0
],
[
"2019-10-30T17:20:00Z",
0
],
[
"2019-10-30T09:00:00Z",
0
],
[
"2019-10-30T09:20:00Z",
0
],
[
"2019-10-30T09:40:00Z",
100
],
[
"2019-10-30T10:00:00Z",
0
],
[
"2019-10-30T10:20:00Z",
0
],
[
"2019-10-30T10:40:00Z",
100
],
[
"2019-10-30T11:00:00Z",
0
],
[
"2019-10-30T11:20:00Z",
0
],
[
"2019-10-30T11:40:00Z",
100
],
[
"2019-10-30T12:00:00Z",
0
],
[
"2019-10-30T12:20:00Z",
0
],
[
"2019-10-30T12:40:00Z",
100
],
[
"2019-10-30T13:00:00Z",
0
],
[
"2019-10-30T13:20:00Z",
0
],
[
"2019-10-30T13:40:00Z",
100
],
[
"2019-10-30T14:00:00Z",
0
],
[
"2019-10-30T14:20:00Z",
0
],
[
"2019-10-30T14:40:00Z",
100
],
[
"2019-10-30T15:00:00Z",
0
],
[
"2019-10-30T15:20:00Z",
0
],
[
"2019-10-30T15:40:00Z",
100
],
[
"2019-10-30T16:00:00Z",
0
],
[
"2019-10-30T16:20:00Z",
0
],
[
"2019-10-30T16:40:00Z",
100
],
[
"2019-10-30T17:30:00Z",
50
]
],
"ArmSystemEventsRequest": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/test-group/providers/microsoft.insights/components/test-rule/query?query=%0d%0a++++++++++++++++systemEvents%0d%0a++++++++++++++++%7c+where+timestamp+%3e%3d+datetime(%272019-10-30T17%3a20%3a00.0000000Z%27)+%0d%0a++++++++++++++++%7c+where+itemType+%3d%3d+%27systemEvent%27+and+name+%3d%3d+%27ProactiveDetectionInsight%27+%0d%0a++++++++++++++++%7c+where+dimensions.InsightType+in+(%275%27%2c+%277%27)+%0d%0a++++++++++++++++%7c+where+dimensions.InsightDocumentId+%3d%3d+%27718fb0c3-425b-4185-be33-4311dfb4deeb%27+%0d%0a++++++++++++++++%7c+project+dimensions.InsightOneClassTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightExceptionCorrelationTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightDependencyCorrelationTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightRequestCorrelationTable%2c+%0d%0a++++++++++++++++++++++++++dimensions.InsightTraceCorrelationTable%0d%0a++++++++++++&api-version=2018-04-20",
"LinksTable": [
{
"Link": "<a href=\"https://portal.azure.com/#blade/AppInsightsExtension/ProactiveDetectionFeedBlade/ComponentId/{\"SubscriptionId\":\"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e\",\"ResourceGroup\":\"test-group\",\"Name\":\"test-rule\"}/SelectedItemGroup/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/SelectedItemTime/2019-10-30T17:50:00Z/InsightType/5\" target=\"_blank\">View full details in Application Insights</a>"
}
],
"SmartDetectorId": "FailureAnomaliesDetector",
"SmartDetectorName": "Failure Anomalies",
"AnalysisTimestamp": "2019-10-30T17:52:32.5802978Z"
},
"egressConfig": {
"displayConfig": [
{
"rootJsonNode": null,
"sectionName": null,
"displayControls": [
{
"property": "DetectionSummary",
"displayName": "What was detected?",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"property": "FormattedOccurenceTime",
"displayName": "When did this occur?",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"property": "DetectedFailureRate",
"displayName": "Detected failure rate",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"property": "NormalFailureRate",
"displayName": "Normal failure rate",
"type": "Text",
"isOptional": false,
"isPropertySerialized": false
},
{
"chartType": "Line",
"xAxisType": "Date",
"yAxisType": "Percentage",
"xAxisName": "",
"yAxisName": "",
"property": "FailureRateChart",
"displayName": "Failure rate over last 12 hours",
"type": "Chart",
"isOptional": false,
"isPropertySerialized": false
},
{
"defaultLoad": true,
"displayConfig": [
{
"rootJsonNode": null,
"sectionName": null,
"displayControls": [
{
"showHeader": false,
"columns": [
{
"property": "Name",
"displayName": "Name"
},
{
"property": "Value",
"displayName": "Value"
}
],
"property": "tables[0].rows[0][0]",
"displayName": "All of the failed requests had these characteristics:",
"type": "Table",
"isOptional": false,
"isPropertySerialized": true
}
]
}
],
"property": "ArmSystemEventsRequest",
"displayName": "",
"type": "ARMRequest",
"isOptional": false,
"isPropertySerialized": false
},
{
"showHeader": false,
"columns": [
{
"property": "Link",
"displayName": "Link"
}
],
"property": "LinksTable",
"displayName": "Links",
"type": "Table",
"isOptional": false,
"isPropertySerialized": false
}
]
}
]
}
},
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/test-group/providers/microsoft.insights/components/test-rule/providers/Microsoft.AlertsManagement/alerts/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"type": "Microsoft.AlertsManagement/alerts",
"name": "Failure Anomalies - test-rule"
}
Uyarıyı önceliklendirme ve tanılama
Uyarı, başarısız istek hızında anormal bir artış algılandığını gösterir. Büyük olasılıkla uygulamanızla veya ortamınızla ilgili bir sorun vardır.
Daha fazla araştırmak için 'Application Insights'ta tüm ayrıntıları görüntüle'ye tıklayın. Bu sayfadaki bağlantılar sizi doğrudan ilgili isteklere, özel durumlara, bağımlılıklara veya izlemelere göre filtrelenmiş bir arama sayfasına götürür. Daha fazla araştırma yapmak için 'Application Insights'ta tüm ayrıntıları görüntüle'ye tıklayın. Bu sayfadaki bağlantılar sizi doğrudan ilgili isteklere, özel durumlara, bağımlılıklara veya izlemelere göre filtrelenmiş bir arama sayfasına götürür.
Ayrıca Azure portalını açabilir, uygulamanızın Application Insights kaynağına gidebilir ve Hatalar sayfasını açabilirsiniz.
'Hataları tanıla' seçeneğine tıklamak daha fazla ayrıntı almanıza ve sorunu çözmenize yardımcı olabilir.
İsteklerin yüzdesine ve etkilenen kullanıcı sayısına göre sorunun ne kadar acil olduğuna karar vekleyebilirsiniz. Daha önce gösterilen örnekte , %78,5 hata oranı normal %2,2 oranıyla karşılaştırılır ve kötü bir şey olduğunu gösterir. Öte yandan, yalnızca 46 kullanıcı etkilendi. Bu bilgiler sorunun ne kadar ciddi olduğunu değerlendirmenize yardımcı olabilir.
Çoğu durumda, isteğin adı, özel durumu, bağımlılık hatası ve sağlanan izleme verileriyle sorunu hızla tanılayabilirsiniz.
Bu örnekte, istek sınırına ulaşılması nedeniyle SQL Veritabanı bir özel durum oluştu.
Son uyarıları gözden geçirme
En son tetiklenen uyarılara ulaşmak için Application Insights kaynak sayfasında Uyarılar'a tıklayın:
Akıllı Algılama uyarısı alırsanız
Bu uyarıyı neden aldım?
- Önceki dönemin normal taban çizgisine kıyasla başarısız istek hızında anormal bir artış tespit ettik. Hataların ve ilişkili uygulama verilerinin analizinden sonra, incelemeniz gereken bir sorun olduğunu düşünüyoruz.
Bildirim kesinlikle bir sorunum olduğu anlamına mı geliyor?
- Uygulama kesintisi veya düşüşü konusunda uyarı vermeye çalışıyoruz, ancak semantiği ve uygulama veya kullanıcılar üzerindeki etkisini yalnızca siz tam olarak anlayabilirsiniz.
Uygulama verilerime mi bakıyorsunuz?
Bu uyarıya abone olmak zorunda miyim?
- Hayır İstek verileri gönderen her uygulamanın Akıllı Algılama uyarı kuralı vardır.
Bunun yerine abonelikten çıkabilir veya iş arkadaşlarıma gönderilen bildirimleri alabilir miyim?
- Evet, Uyarı kurallarında, yapılandırmak için Akıllı Algılama kuralına tıklayın. Uyarıyı devre dışı bırakabilir veya uyarının alıcılarını değiştirebilirsiniz.
E-postayı kaybettim. Portalda bildirimleri nerede bulabilirim?
- Hata Anomalileri uyarılarını Azure portalında, Application Insights uyarıları sayfanızda bulabilirsiniz.
Uyarıların bazıları bilinen sorunlarla ilgili ve bunları almak istemiyorum.
- Uyarı eylem kurallarını gizleme özelliğini kullanabilirsiniz.
Sonraki adımlar
Bu tanılama araçları, uygulamanızdaki verileri incelemenize yardımcı olur:
Akıllı algılamalar otomatiktir. Ama belki de birkaç uyarı daha ayarlamak istersiniz?