Deteksi Pintar - Anomali Kegagalan

Application Insights secara otomatis memberitahu Anda dalam waktu mendekati real-time jika aplikasi web Anda mengalami kenaikan abnormal dalam tingkat permintaan yang gagal. Ia mendeteksi kenaikan yang tidak biasa dalam tingkat permintaan HTTP atau panggilan dependensi yang dilaporkan sebagai gagal. Untuk permintaan, permintaan yang gagal biasanya memiliki kode respons 400 atau lebih tinggi. Untuk membantu Anda melakukan triase dan mendiagnosis masalah, analisis karakteristik kegagalan dan data aplikasi terkait disediakan dalam detail pemberitahuan. Terdapat juga tautan ke portal Application Insights untuk diagnosis lebih lanjut. Fitur ini tidak memerlukan pengaturan atau konfigurasi karena menggunakan algoritma pembelajaran mesin untuk memprediksi tingkat kegagalan normal.

Fitur ini berfungsi untuk aplikasi web apa pun, yang dihosting di cloud atau di server Anda sendiri yang menghasilkan permintaan aplikasi atau data dependensi. Misalnya, jika Anda memiliki peran pekerja yang memanggil TrackRequest() atau TrackDependency().

Setelah menyiapkan Application Insights untuk proyek Anda, dan jika aplikasi Anda menghasilkan jumlah data minimum tertentu, Deteksi Cerdas Anomali Kegagalan membutuhkan waktu 24 jam untuk mempelajari perilaku normal aplikasi Anda, sebelum diaktifkan dan dapat mengirim pemberitahuan.

Berikut ini adalah contoh pemberitahuan:

Contoh pemberitahuan deteksi pintar memperlihatkan analisis kluster seputar kegagalan.

Detail pemberitahuan memberi tahu Anda:

  • Tingkat kegagalan dibandingkan dengan perilaku aplikasi normal.
  • Berapa banyak pengguna yang terpengaruh - sehingga Anda tahu berapa banyak yang perlu dikhawatirkan.
  • Pola karakteristik yang terkait dengan kegagalan. Dalam contoh ini, terdapat kode respons tertentu, nama permintaan (operasi), dan versi aplikasi. Hal itu segera memberi tahu Anda di mana harus mulai mencari kode Anda. Kemungkinan lain bisa jadi browser tertentu atau sistem operasi klien.
  • Pengecualian, jejak log, dan kegagalan dependensi (database atau komponen eksternal lainnya) yang tampaknya terkait dengan kegagalan yang ditandai.
  • Tautkan secara langsung ke pencarian yang relevan pada data di Application Insights.

Manfaat Deteksi Pintar

Pemberitahuan metrik biasa memberi tahu Anda mungkin ada masalah. Akan tetapi, Deteksi Pintar memulai pekerjaan diagnostik untuk Anda, melakukan banyak analisis yang harus Anda lakukan sendiri. Anda mendapatkan hasil yang dikemas dengan rapi, membantu Anda untuk cepat sampai ke akar masalah.

Cara kerjanya

Deteksi Pintar memantau data yang diterima dari aplikasi Anda dan khususnya tingkat kegagalannya. Aturan ini menghitung jumlah permintaan yang properti Successful request bernilai false dan jumlah panggilan dependensi yang properti Successful call bernilai false. Untuk permintaan, secara default, Successful request == (resultCode < 400) (kecuali Anda menulis kode kustom untuk memfilter atau membuat panggilan TrackRequest Anda sendiri).

Performa aplikasi Anda memiliki pola perilaku yang khas. Beberapa permintaan atau panggilan dependensi lebih rentan terhadap kegagalan daripada yang lain; dan tingkat kegagalan keseluruhan dapat naik saat beban meningkat. Deteksi Pintar menggunakan pembelajaran mesin untuk menemukan anomali ini.

Ketika data masuk ke Application Insights dari aplikasi web Anda, Deteksi Pintar akan membandingkan perilaku saat ini dengan pola yang terlihat selama beberapa hari terakhir. Jika detektor menemukan kenaikan abnormal dalam perbandingan tingkat kegagalan dengan performa sebelumnya, detektor memicu analisis yang lebih mendalam.

Ketika analisis dipicu, layanan melakukan analisis kluster pada permintaan yang gagal untuk mencoba mengidentifikasi pola nilai yang mencirikan kegagalan.

Dalam contoh yang ditunjukkan sebelumnya, analisis menemukan bahwa sebagian besar kegagalan adalah tentang kode hasil tertentu, nama permintaan, host URL Server, dan instans peran.

Saat Anda melengkapi layanan Anda dengan panggilan ini, penganalisis mencari pengecualian dan kegagalan dependensi yang terkait dengan permintaan di kluster yang diidentifikasi. Ini juga mencari contoh log jejak apa pun, yang terkait dengan permintaan tersebut. Pemberitahuan yang Anda terima mencakup informasi tambahan ini yang dapat memberikan konteks untuk deteksi dan petunjuk tentang akar penyebab masalah yang terdeteksi.

Detail logika pemberitahuan

Deteksi Anomali Kegagalan bergantung pada algoritma pembelajaran mesin milik, sehingga alasan peringatan menembak atau tidak menembak tidak selalu deterministik. Dengan demikian, faktor utama yang digunakan algoritma adalah:

  • Analisis persentase kegagalan permintaan/dependensi dalam jendela waktu yang bergulir selama 20 menit.
  • Perbandingan persentase kegagalan dalam 20 menit terakhir, dengan tingkat dalam 40 menit terakhir dan tujuh hari terakhir. Algoritma mencari penyimpangan signifikan yang melebihi X-kali simpangan baku.
  • Algoritma menggunakan batas adaptif untuk persentase kegagalan minimum, yang bervariasi berdasarkan volume permintaan/dependensi aplikasi.
  • Algoritma mencakup logika yang dapat secara otomatis menyelesaikan pemberitahuan yang diaktifkan, jika masalah tidak lagi terdeteksi selama 8-24 jam. Catatan: dalam desain saat ini. pemberitahuan atau tindakan tidak dikirim saat pemberitahuan Deteksi Cerdas diselesaikan. Anda dapat memeriksa apakah pemberitahuan Deteksi Pintar telah diselesaikan di portal Microsoft Azure.

Mengelola aturan pemberitahuan Anomali Kegagalan

Pembuatan aturan pemberitahuan

Aturan pemberitahuan Anomali Kegagalan dibuat secara otomatis saat sumber daya Application Insights Anda dibuat. Aturan ini secara otomatis dikonfigurasi untuk menganalisis telemetri pada sumber daya tersebut. Anda dapat membuat aturan lagi menggunakan Azure REST API atau menggunakan templat Resource Manager. Membuat aturan dapat berguna jika pembuatan aturan otomatis gagal karena alasan tertentu, atau jika Anda menghapus aturan.

Konfigurasi aturan pemberitahuan

Untuk mengonfigurasi aturan pemberitahuan Anomali Kegagalan di portal, buka halaman Pemberitahuan dan pilih Aturan Pemberitahuan. Aturan pemberitahuan Anomali Kegagalan disertakan bersama dengan pemberitahuan apa pun yang Anda tetapkan secara manual.

Pada halaman sumber daya Application Insights, klik petak Pemberitahuan, lalu Kelola aturan pemberitahuan.

Klik aturan pemberitahuan untuk mengonfigurasinya.

Layar konfigurasi aturan.

Anda dapat menonaktifkan aturan pemberitahuan Deteksi Pintar dari portal atau menggunakan templat Azure Resource Manager.

Aturan pemberitahuan ini dibuat dengan Grup Tindakan terkait bernama "Deteksi Cerdas Application Insights." Secara default, grup tindakan ini berisi tindakan Peran Azure Resource Manager Email dan mengirim pemberitahuan kepada pengguna yang memiliki peran Kontributor Pemantauan atau Pembaca Pemantauan langganan Azure Resource Manager dalam langganan Anda. Anda dapat menghapus, mengubah, atau menambahkan grup tindakan yang dipicu aturan, seperti untuk aturan pemberitahuan Azure lainnya. Pemberitahuan yang dikirim dari aturan pemberitahuan ini mengikuti skema pemberitahuan umum.

Menghapus pemberitahuan

Anda dapat menghapus aturan pemberitahuan Anomali Kegagalan.

Anda bisa melakukannya secara manual pada halaman Aturan pemberitahuan atau dengan perintah Azure CLI berikut ini:

az resource delete --ids <Resource ID of Failure Anomalies alert rule>

Perhatikan bahwa jika Anda menghapus sumber daya Application Insights, aturan pemberitahuan Anomali Kegagalan terkait tidak akan dihapus secara otomatis.

Contoh Anomali Kegagalan memberitahu adanya payload webhook

{
    "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"
}

Triase dan mendiagnosis pemberitahuan

Pemberitahuan menunjukkan bahwa kenaikan abnormal dalam tingkat permintaan yang gagal telah terdeteksi. Kemungkinan ada beberapa masalah dengan aplikasi Anda atau lingkungannya.

Untuk menyelidiki lebih lanjut, klik 'Lihat detail lengkap di Application Insights.' Tautan di halaman ini membawa Anda langsung ke halaman pencarian yang difilter ke permintaan, pengecualian, dependensi, atau jejak yang relevan. Untuk menyelidiki lebih lanjut, klik 'Lihat detail lengkap di Application Insights' tautan di halaman ini akan membawa Anda langsung ke halaman pencarian yang difilter ke permintaan, pengecualian, dependensi, atau jejak yang relevan.

Anda juga dapat membuka portal Microsoft Azure, menavigasi ke sumber daya Application Insights untuk aplikasi Anda dan membuka halaman Kegagalan.

Mengklik 'Diagnosis kegagalan' dapat membantu Anda mendapatkan detail selengkapnya dan mengatasi masalah tersebut.

Pencarian diagnostik.

Dari persentase permintaan dan jumlah pengguna yang terpengaruh, Anda dapat memutuskan seberapa mendesak masalah tersebut. Dalam contoh yang ditunjukkan sebelumnya, tingkat kegagalan 78,5% dibandingkan dengan tingkat normal 2,2%, menunjukkan bahwa sesuatu yang buruk sedang terjadi. Di sisi lain, hanya 46 pengguna yang terpengaruh. Informasi ini dapat membantu Anda menilai seberapa serius masalahnya.

Dalam banyak kasus, Anda dapat mendiagnosis masalah dengan cepat dari nama permintaan, pengecualian, kegagalan dependensi, dan data pelacakan yang disediakan.

Dalam contoh ini, terdapat pengecualian dari Azure SQL Database karena batas permintaan telah tercapai.

Detail permintaan yang gagal.

Meninjau pemberitahuan terbaru

Klik Pemberitahuan di halaman sumber daya Application Insights untuk mendapatkan pemberitahuan terbaru:

Ringkasan pemberitahuan.

Jika Anda menerima pemberitahuan Deteksi Pintar

Mengapa saya menerima pemberitahuan ini?

  • Kami mendeteksi kenaikan abnormal pada tingkat permintaan yang gagal dibandingkan dengan garis besar normal dari periode sebelumnya. Setelah analisis kegagalan dan data aplikasi terkait, kami berpikir bahwa ada masalah yang harus Anda lihat.

Apakah pemberitahuan tersebut berarti saya pasti memiliki masalah?

  • Kami mencoba memberi tahu ketika terjadi gangguan atau degradasi aplikasi, tetapi hanya Anda yang dapat sepenuhnya memahami semantik dan dampaknya terhadap aplikasi atau pengguna.

Jadi, kau melihat data aplikasiku?

  • Tidak. Layanan ini sepenuhnya otomatis. Hanya Anda yang mendapatkan pemberitahuan. Data Anda bersifat privat.

Apakah saya harus berlangganan pemberitahuan ini?

  • Tidak. Setiap aplikasi yang mengirimkan data permintaan memiliki aturan pemberitahuan Deteksi Pintar.

Bisakah saya berhenti berlangganan atau membuat notifikasinya dikirim ke kolega saya sebagai gantinya?

  • Ya, Di aturan Pemberitahuan, klik aturan Deteksi Pintar untuk mengonfigurasinya. Anda dapat menonaktifkan pemberitahuan atau mengubah penerima untuk pemberitahuan tersebut.

Saya kehilangan email. Di mana saya dapat menemukan pemberitahuan di portal?

  • Anda dapat menemukan pemberitahuan Anomali Kegagalan di portal Azure, di halaman pemberitahuan Application Insights Anda.

Beberapa pemberitahuan adalah tentang masalah yang diketahui dan saya tidak ingin menerimanya.

Langkah berikutnya

Alat diagnostik ini membantu Anda memeriksa data dari aplikasi Anda:

Deteksi pintar bersifat otomatis. Namun barangkali Anda ingin mengatur beberapa peringatan lagi?