Pemantauan Aplikasi untuk App Service Azure
Pemantauan aplikasi web Node.js Anda yang berjalan di Azure App Services tidak memerlukan modifikasi apa pun pada kode. Artikel ini memandu Anda mengaktifkan pemantauan Application Insights Azure Monitor dan memberikan panduan awal untuk mengotomatiskan proses penyebaran skala besar.
Mengaktifkan Application Insights
Cara termudah untuk mengaktifkan pemantauan aplikasi pada aplikasi Node.js yang berjalan di Azure App Services adalah melalui portal Microsoft Azure. Mengaktifkan pemantauan aplikasi di portal Microsoft Azure akan secara otomatis melengkapi aplikasi Anda dengan Application Insights, dan tidak memerlukan perubahan kode apa pun.
Catatan
Anda dapat mengonfigurasi agen yang terpasang secara otomatis menggunakan variabel lingkungan APPLICATIONINSIGHTS_CONFIGURATION_CONTENT di bilah variabel Lingkungan App Service. Untuk detail tentang opsi konfigurasi yang dapat diteruskan melalui variabel lingkungan ini, lihat Konfigurasi Node.js.
Catatan
Jika instrumentasi otomatis dan instrumentasi berbasis SDK manual terdeteksi, hanya pengaturan instrumentasi manual yang dihormati. Hal ini untuk mencegah data duplikat dikirim. Untuk informasi selengkapnya, lihat bagian pemecahan masalah di artikel ini.
Autoinstrumentasi melalui portal Azure
Untuk daftar lengkap skenario autoinstrumentasi yang didukung, lihat Lingkungan, bahasa, dan penyedia sumber daya yang didukung.
Anda dapat mengaktifkan pemantauan untuk aplikasi Node.js Anda yang berjalan di Azure App Service hanya dengan satu klik, tanpa perlu mengubah kode. Application Insights untuk Node.js terintegrasi dengan Azure App Service di Linux - kontainer berbasis kode dan kustom, dan dengan App Service di Windows untuk aplikasi berbasis kode. Integrasinya ada di pratinjau publik. Integrasi ini menambahkan Node.js SDK, yang ada di GA.
Pilih Application Insights di panel kontrol Azure untuk layanan aplikasi Anda, lalu pilih Aktifkan.
Pilih untuk membuat sumber daya baru atau pilih sumber daya Application Insights yang sudah ada untuk aplikasi ini.
Catatan
Ketika Anda mengklik OK untuk membuat sumber daya baru, Anda akan diminta untuk Menerapkan pengaturan pemantauan. Memilih Lanjutkan akan menautkan sumber daya Application Insights baru ke layanan aplikasi Anda, dengan melakukan hal tersebut juga akan memicu restart layanan aplikasi Anda.
Setelah menentukan sumber daya mana yang akan digunakan, Anda siap untuk pergi.
Konfigurasi
Agen Node.js dapat dikonfigurasi menggunakan JSON. Atur APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
variabel lingkungan ke string JSON atau atur APPLICATIONINSIGHTS_CONFIGURATION_FILE
variabel lingkungan ke jalur file yang berisi JSON.
"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
Sekumpulan konfigurasi lengkap tersedia, Anda hanya perlu menggunakan file json yang valid.
Aktifkan pemantauan sisi klien
Untuk mengaktifkan pemantauan sisi klien pada aplikasi Node.js, Anda perlu menambahkan SDK JavaScript sisi klien secara manual ke aplikasi Anda.
Mengotomatiskan pemantauan
Untuk mengaktifkan koleksi telemetri dengan Application Insights, hanya pengaturan Aplikasi yang perlu diatur:
Definisi pengaturan aplikasi
Nama pengaturan aplikasi | Definisi | Nilai |
---|---|---|
ApplicationInsightsAgent_EXTENSION_VERSION | Ekstensi utama, yang mengontrol pemantauan runtime. | ~2 di Windows atau ~3 di Linux. |
XDT_MicrosoftApplicationInsights_NodeJS | Tandai untuk mengontrol apakah agen Node.js disertakan. | 0 atau 1 (hanya berlaku di Windows). |
Catatan
Profiler dan snapshot debugger tidak tersedia untuk aplikasi Node.js
Pengaturan aplikasi App Service dengan Azure Resource Manager
Pengaturan aplikasi untuk Azure App Service dapat dikelola dan dikonfigurasi dengan templat Azure Resource Manager. Anda dapat menggunakan metode ini saat menyebarkan sumber daya App Service baru dengan otomatisasi Resource Manager atau mengubah pengaturan sumber daya yang ada.
Struktur dasar pengaturan aplikasi JSON untuk sumber daya App Service:
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
],
"tags": {
"displayName": "Application Insights Settings"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
]
Untuk contoh templat Resource Manager dengan pengaturan aplikasi yang dikonfigurasi untuk Application Insights, templat ini dapat membantu. Secara khusus, lihat bagian yang dimulai pada baris 238.
Mengotomatiskan pembuatan sumber daya Application Insights dan menautkan ke sumber daya App Service yang baru dibuat
Untuk membuat templat Resource Manager dengan pengaturan Application Insights default, mulai proses seolah-olah Anda akan membuat aplikasi web baru dengan Application Insights diaktifkan.
Buat sumber daya App Service baru dengan informasi aplikasi web yang Anda inginkan. Aktifkan Application Insights pada tab Pemantauan .
Pilih Tinjau + buat. Lalu pilih Unduh templat untuk otomatisasi.
Opsi ini menghasilkan templat Resource Manager terbaru dengan semua pengaturan yang diperlukan dikonfigurasi.
Dalam sampel berikut, ganti semua instans AppMonitoredSite
dengan nama situs Anda:
Catatan
Jika menggunakan Windows, atur ApplicationInsightsAgent_EXTENSION_VERSION
ke ~2
. Jika menggunakan Linux, atur ApplicationInsightsAgent_EXTENSION_VERSION
ke ~3
.
{
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
},
{
"name": "ApplicationInsightsAgent_EXTENSION_VERSION",
"value": "~2"
}
]
},
"name": "[parameters('name')]",
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"microsoft.insights/components/AppMonitoredSite"
],
"apiVersion": "2016-03-01",
"location": "[parameters('location')]"
},
{
"apiVersion": "2016-09-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSizeId": "[parameters('workerSize')]",
"numberOfWorkers": "1",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
},
{
"apiVersion": "2015-05-01",
"name": "AppMonitoredSite",
"type": "microsoft.insights/components",
"location": "West US 2",
"properties": {
"ApplicationId": "[parameters('name')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
}
],
"parameters": {
"name": {
"type": "string"
},
"hostingPlanName": {
"type": "string"
},
"hostingEnvironment": {
"type": "string"
},
"location": {
"type": "string"
},
"sku": {
"type": "string"
},
"skuCode": {
"type": "string"
},
"workerSize": {
"type": "string"
},
"serverFarmResourceGroup": {
"type": "string"
},
"subscriptionId": {
"type": "string"
}
},
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0"
}
Mengaktifkan melalui PowerShell
Untuk mengaktifkan pemantauan aplikasi melalui PowerShell, hanya pengaturan aplikasi yang mendasar yang harus diubah. Sampel berikut memungkinkan pemantauan aplikasi untuk situs web yang disebut AppMonitoredSite
dalam grup AppMonitoredRG
sumber daya . Ini mengonfigurasi data yang akan dikirim ke 012345678-abcd-ef01-2345-6789abcd
kunci instrumentasi.
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Catatan
Jika menggunakan Windows, atur ApplicationInsightsAgent_EXTENSION_VERSION ke ~2
. Jika menggunakan Linux, atur ApplicationInsightsAgent_EXTENSION_VERSION ke ~3
.
$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop
Pemecahan Masalah
Di bawah ini adalah panduan pemecahan masalah langkah demi langkah kami untuk pemantauan berbasis ekstensi/agen untuk aplikasi berbasis ASP.NET dan ASP.NET Core yang berjalan di Azure App Services.
Periksa apakah
ApplicationInsightsAgent_EXTENSION_VERSION
pengaturan aplikasi diatur ke nilai "~2".Telusuri
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Konfirmasikan bahwa
Application Insights Extension Status
adalahPre-Installed Site Extension, version 2.8.x.xxxx, is running.
Jika tidak berjalan, ikuti instruksi aktifkan pemantauan Application Insights.
Arahkan ke D:\local\Temp\status.json dan buka status.json.
Konfirmasikan bahwa
SDKPresent
diatur ke salah,AgentInitializedSuccessfully
ke benar, danIKey
untuk memiliki iKey yang valid.Di bawah ini adalah contoh file JSON:
"AppType":"node.js", "MachineName":"c89d3a6d0357", "PID":"47", "AgentInitializedSuccessfully":true, "SDKPresent":false, "IKey":"00000000-0000-0000-0000-000000000000", "SdkVersion":"1.8.10"
Jika
SDKPresent
bernilai benar, maka hal ini menunjukkan bahwa ekstensi mendeteksi beberapa aspek SDK sudah ada dalam Aplikasi, dan akan menerapkan back-off.
Apa perbedaan antara metrik standar dari metrik Application Insights vs. Azure App Service?
Application Insights mengumpulkan telemetri untuk permintaan yang berhasil masuk ke aplikasi. Jika kegagalan terjadi di WebApps/WebServer, dan permintaan tidak mencapai aplikasi pengguna, Application Insights tidak memiliki telemetri tentang hal itu.
Durasi untuk serverresponsetime
dihitung oleh Application Insights tidak selalu cocok dengan waktu respons server yang diamati oleh Web Apps. Perilaku ini karena Application Insights hanya menghitung durasi ketika permintaan benar-benar mencapai aplikasi pengguna. Jika permintaan macet atau diantrekan di WebServer, waktu tunggu disertakan dalam metrik Web Apps tetapi tidak dalam metrik Application Insights.
Menguji konektivitas antara host aplikasi Anda dan layanan penyerapan
Application Insights SDK dan agen mengirim telemetri untuk diserap sebagai panggilan REST ke titik akhir penyerapan kami. Anda dapat menguji konektivitas dari server web atau komputer host aplikasi Anda ke titik akhir layanan penyerapan dengan menggunakan klien REST mentah dari PowerShell atau perintah curl. Lihat Memecahkan masalah telemetri aplikasi yang hilang di Azure Monitor Application Insights.
Catatan rilis
Untuk informasi terbaru dan perbaikan bug, lihat catatan rilis.
Langkah berikutnya
- Memantau Azure Functions dengan Application Insights.
- Aktifkan diagnostik Azure untuk dikirim ke Application Insights.
- Pantau metrik kesehatan layanan untuk memastikan layanan Anda tersedia dan responsif.
- Terima pemberitahuan peringatan setiap kali peristiwa operasional terjadi atau metrik melewati ambang batas.
- Gunakan Application Insights untuk aplikasi dan halaman web JavaScript untuk mendapatkan telemetri klien dari browser yang mengunjungi halaman web.
- Gambaran umum ketersediaan