Akıllı Algılama - Hata Anomalileri

Uygulama Analizler, web uygulamanız başarısız isteklerin hızında anormal bir artışla karşılaşırsa 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 Uygulama Analizler 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 Uygulama Analizler ayarlandıktan sonra ve uygulamanız belirli bir minimum miktarda veri oluşturuyorsa, uygulamanızın açık ve uyarı gönderebilmesi için uygulamanın normal davranışını öğrenmek 24 saat sürer.

Örnek bir uyarı aşağıda verilmişti:

Hatayla ilgili küme analizini gösteren örnek akıllı algılama uyarısı.

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.
  • Uygulama Analizler'daki 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 Analizler'a geldiğinde, 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

Uygulama Analizler 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.

Uygulama Analizler kaynak sayfasında Uyarılar kutucuğuna ve ardından Uyarı kurallarını yönet'e tıklayın.

Yapılandırmak için uyarı kuralına tıklayın.

Kural yapılandırma ekranı.

Akıllı Algılama uyarı kuralını portaldan veya bir Azure Resource Manager şablonu kullanarak devre dışı bırakabilirsiniz.

Bu uyarı kuralı, "Uygulama Analizler 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>

Bir Uygulama Analizler 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/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/resourcegroups/test-group/providers/microsoft.insights/components/test-rule",
            "targetResourceName": "test-rule",
            "targetResourceGroup": "test-group",
            "targetResourceType": "microsoft.insights/components",
            "sourceCreatedId": "1a0a5b6436a9b2a13377f5c89a3477855276f8208982e0f167697a2b45fcbb3e",
            "alertRule": "/subscriptions/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/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/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/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\":\"4f9b81be-fa32-4f96-aeb3-fc5c3f678df9\",\"ResourceGroup\":\"test-group\",\"Name\":\"test-rule\"}/SelectedItemGroup/718fb0c3-425b-4185-be33-4311dfb4deeb/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/4f9b81be-fa32-4f96-aeb3-fc5c3f678df9/resourcegroups/test-group/providers/microsoft.insights/components/test-rule/providers/Microsoft.AlertsManagement/alerts/7daf8739-ca8a-4562-b69a-ff28db4ba0a5",
    "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 'Uygulama Analizler 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 'Uygulama Analizler'nde 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 Uygulama Analizler 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.

Tanılama araması.

İ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.

Başarısız istek ayrıntıları.

Son uyarıları gözden geçirme

En son tetiklenen uyarılara ulaşmak için Uygulama Analizler kaynak sayfasında Uyarılar'a tıklayın:

Uyarı özeti.

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?

  • Hayır Hizmet tamamen otomatiktir. Bildirimleri yalnızca siz alırsınız. Verileriniz özeldir.

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 Uygulama Analizler uyarıları sayfanızda bulabilirsiniz.

Uyarıların bazıları bilinen sorunlarla ilgili ve bunları almak istemiyorum.

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?