Pemantauan Aplikasi untuk App Service Azure dan Java

Pemantauan aplikasi web Java 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.

Catatan

Dengan aplikasi Spring Boot Native Image, gunakan azure Monitor OpenTelemetry Distro / Application Insights di proyek aplikasi Java gambar asli Spring Boot alih-alih solusi agen Application Insights Java yang dijelaskan di bawah ini.

Mengaktifkan Application Insights

Cara yang disarankan untuk mengaktifkan pemantauan aplikasi untuk aplikasi Java 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. Anda dapat menerapkan konfigurasi tambahan, lalu berdasarkan skenario spesifik Anda, Anda menambahkan telemetri kustom Anda sendiri jika diperlukan.

Autoinstrumentasi melalui portal Azure

Anda dapat mengaktifkan pemantauan untuk aplikasi Java yang berjalan di Azure App Service hanya dengan satu pilihan, tidak diperlukan perubahan kode. Integrasi menambahkan Application Insights Java 3.x dan mengumpulkan telemetri secara otomatis.

Untuk daftar lengkap skenario autoinstrumentasi yang didukung, lihat Lingkungan, bahasa, dan penyedia sumber daya yang didukung.

  1. Pilih Application Insights di panel kontrol Azure untuk layanan aplikasi Anda, lalu pilih Aktifkan.

    Cuplikan layar tab Application Insights dengan aktifkan yang dipilih.

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

    Cuplikan layar Ubah dropdown sumber daya Anda.

  3. Langkah terakhir ini bersifat opsional. Setelah menentukan sumber daya mana yang akan digunakan, Anda dapat mengonfigurasi agen Java. Jika Anda tidak mengonfigurasi agen Java, konfigurasi default akan berlaku.

    Set konfigurasi penuh tersedia dan Anda hanya perlu menempelkan file json yang valid. Kecualikan string koneksi dan konfigurasi apa pun yang ada dalam pratinjau - Anda dapat menambahkan item yang saat ini dalam pratinjau saat tersedia secara umum.

    Setelah Anda memodifikasi konfigurasi melalui portal Azure, variabel lingkungan APPLICATIONINSIGHTS_CONFIGURATION_FILE secara otomatis diisi dan muncul di panel pengaturan App Service. Variabel ini berisi konten json lengkap yang telah Anda tempelkan di kotak teks konfigurasi portal Azure untuk aplikasi Java Anda.

    Cuplikan layar dari instrumen aplikasi Anda.

Aktifkan pemantauan sisi klien

Untuk mengaktifkan pemantauan sisi klien untuk aplikasi Java, 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:

Cuplikan layar Pengaturan Aplikasi App Service dengan pengaturan Application Insights yang tersedia.

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_Java Bendera untuk mengontrol bahwa agen Java disertakan. 0 atau 1 (hanya berlaku di Windows).

Catatan

Profiler dan rekam jepret debugger tidak tersedia untuk aplikasi Java

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.

Untuk membuat templat Resource Manager dengan pengaturan Application Insights default, mulai proses seolah-olah Anda akan membuat aplikasi web baru dengan Application Insights diaktifkan.

  1. Buat sumber daya App Service baru dengan informasi aplikasi web yang Anda inginkan. Aktifkan Application Insights pada tab Pemantauan .

  2. Pilih Tinjau + buat. Lalu pilih Unduh templat untuk otomatisasi.

    Cuplikan layar yang memperlihatkan menu pembuatan aplikasi web App Service.

    Opsi ini menghasilkan templat Resource Manager terbaru dengan semua pengaturan yang diperlukan dikonfigurasi.

    Cuplikan layar yang memperlihatkan templat aplikasi web App Service.

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 AppMonitoredRGsumber 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

Gunakan panduan langkah demi langkah kami untuk memecahkan masalah aplikasi berbasis Java yang berjalan di Azure App Services.

  1. Periksa apakah ApplicationInsightsAgent_EXTENSION_VERSIONpengaturan aplikasi diatur ke nilai "~2" di Window, “~3” di Linux

  2. Periksa file log untuk melihat bahwa agen telah berhasil memulai: telusuri ke https://yoursitename.scm.azurewebsites.net/ ', di bawah SSH berubah ke direktori root, file log terletak di bawah LogFiles / ApplicationInsights.

    Cuplikan layar dari halaman hasil tautan di atas.

  3. Setelah mengaktifkan pemantauan aplikasi untuk aplikasi Java, Anda dapat memvalidasi bahwa agen bekerja dengan melihat metrik langsung - bahkan sebelum Anda menyebarkan dan aplikasi ke App Service, Anda akan melihat beberapa permintaan dari lingkungan. Ingatlah bahwa serangkaian telemetri lengkap hanya tersedia saat aplikasi Anda disebarkan dan dijalankan.

  4. Atur variabel lingkungan APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL ke 'debug' jika Anda tidak melihat kesalahan apa pun dan tidak ada telemetri

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.

Menyebarkan versi Java Application Insights terbaru secara manual

Versi Application Insights Java diperbarui secara otomatis sebagai bagian dari pembaruan App Services.

Jika Anda mengalami masalah yang diperbaiki dalam versi terbaru Application Insights Java, Anda dapat memperbaruinya secara manual.

Untuk memperbarui secara manual, ikuti langkah-langkah berikut:

  1. Unggah file jar agen Java ke App Service

    a. Pertama, dapatkan versi terbaru Azure CLI dengan mengikuti instruksi di sini.

    b. Selanjutnya, dapatkan versi terbaru agen Application Insights Java dengan mengikuti instruksi di sini.

    c. Kemudian, sebarkan file jar agen Java ke App Service menggunakan perintah berikut: az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME}. Atau, Anda dapat menggunakan panduan ini untuk menyebarkan agen melalui plugin Maven.

  2. Nonaktifkan Application Insights melalui tab Application Insights di portal Azure.

  3. Setelah file jar agen diunggah, buka Konfigurasi App Service. Jika Anda perlu menggunakan Perintah Startup untuk Linux, sertakan argumen jvm:

    Cuplikan layar perintah startup.

    Perintah Startup tidak sesuai JAVA_OPTS untuk JavaSE atau CATALINA_OPTS untuk Tomcat.

    Jika Anda tidak menggunakan Perintah Startup, buat variabel lingkungan baru, JAVA_OPTS untuk JavaSE atau CATALINA_OPTS untuk Tomcat, dengan nilai -javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. Mulai ulang aplikasi untuk menerapkan perubahan.

Catatan

Jika Anda mengatur JAVA_OPTS untuk JavaSE atau CATALINA_OPTS untuk variabel lingkungan Tomcat, Anda harus menonaktifkan Application Insights di portal. Atau, jika Anda lebih suka mengaktifkan Application Insights dari portal, pastikan Anda tidak mengatur JAVA_OPTS untuk variabel JavaSE atau CATALINA_OPTS untuk Tomcat di pengaturan konfigurasi App Service.

Catatan rilis

Untuk informasi terbaru dan perbaikan bug, lihat catatan rilis.

Langkah berikutnya