Pemecahan masalah Diagnostik Azure

Artikel ini menjelaskan informasi pemecahan masalah terkait dengan penggunaan Diagnostik Azure. Untuk informasi selengkapnya tentang Diagnostik, lihat Gambaran umum Diagnostik Azure.

Komponen logika

Komponennya adalah:

  • Peluncur Plug-in Diagnostik (DiagnosticsPluginLauncher.exe): Meluncurkan ekstensi Diagnostik. Ini berfungsi sebagai proses titik masuk.
  • Plug-in Diagnostik (DiagnosticsPlugin.exe): Mengonfigurasi, meluncurkan, dan mengelola masa pakai agen pemantauan. Ini adalah proses utama yang diluncurkan oleh peluncur.
  • Agen Pemantau (proses MonAgent*.exe): Memantau, mengumpulkan, dan mentransfer data diagnostik.

Jalur log/artefak

Jalur berikut mengarah ke beberapa log dan artefak penting. Kami merujuk ke informasi ini di seluruh artikel ini.

Azure Cloud Services

Artefak Jalur
File konfigurasi Diagnostik Azure %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\Config.txt
File log C:\Logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\
Penyimpanan data diagnostik lokal C:\Resources\Directory<CloudServiceDeploymentID>.<RoleName>.DiagnosticStore\WAD0107\Tables
Memantau file konfigurasi agen C:\Resources\Directory<CloudServiceDeploymentID>.<RoleName>.DiagnosticStore\WAD0107\Configuration\MaConfig.xml
Paket ekstensi Dengan Azure %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>
Jalur utilitas koleksi log %SystemDrive%\Packages\GuestAgent\
File log MonAgentHost C:\Resources\Directory<CloudServiceDeploymentID>.<RoleName>.DiagnosticStore\WAD0107\Configuration\MonAgentHost.<seq_num>.log

Komputer virtual

Artefak Jalur
File konfigurasi Diagnostik Azure C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\RuntimeSettings
File log C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\
Penyimpanan data diagnostik lokal C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Tables
Memantau file konfigurasi agen C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Configuration\MaConfig.xml
File status C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\Status
Paket ekstensi Dengan Azure C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>
Jalur utilitas koleksi log C:\WindowsAzure\Logs\WaAppAgent.log
File log MonAgentHost C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Configuration\MonAgentHost.<seq_num>.log

Data metrik tidak muncul di portal Microsoft Azure

Diagnostik menyediakan data metrik yang dapat ditampilkan di portal Azure. Jika Anda mengalami masalah saat melihat data di portal, periksa WADMetrics\* tabel di akun penyimpanan Diagnostik untuk melihat apakah rekaman metrik yang sesuai ada di sana dan pastikan bahwa penyedia sumber daya Microsoft.Insights terdaftar.

Di sini, PartitionKey tabel adalah ID sumber daya, komputer virtual, atau set skala komputer virtual. RowKey adalah nama metrik. Ini juga dikenal sebagai nama penghitung kinerja.

Jika ID sumber daya salah, periksaResourceIdMetrik> Konfigurasi >Diagnostikuntuk melihat apakah ID sumber daya diatur dengan benar.

Jika tidak ada data untuk metrik tertentu, periksa Konfigurasi Diagnostik>PerformanceCounter untuk melihat apakah metrik (penghitung kinerja) disertakan. Kami mengaktifkan penghitung berikut secara default:

  • \Processor(_Total)% Waktu Procesor
  • \Memory\Bytes Tersedia
  • \ASP.NET Aplikasi (Total)\Permintaan/Detik
  • \ASP.NET Aplikasi(Total)\Kesalahan Total/Detik
  • \ASP.NET\Permintaan Antre
  • \ASP.NET\Permintaan Ditolak
  • \Prosesor(w3wp)% Waktu Prosesor
  • \Proses(w3wp)\Byte Privat
  • \Proses(WaIISHost) % Waktu Prosesor
  • \Proses(WaIISHost)\Byte Privat
  • \Proses(WaWorkerHost) % Waktu Prosesor
  • \Proses(WaWorkerHost)\Byte Privat
  • \Memory\Kesalahan Halaman/detik
  • .NET CLR Memory(Global)% Waktu untuk pengumpulan sampah
  • \LogicalDisk(C:)\Byte Tulis Disk/detik
  • \LogicalDisk(C:)\Byte Baca Disk/detik
  • \LogicalDisk(D:)\Byte Tulis Disk/detik
  • \LogicalDisk(D:)\Byte Baca Disk/detik

Jika konfigurasi diatur dengan benar tetapi Anda masih tidak dapat melihat data metrik, gunakan panduan berikut untuk membantu Anda memecahkan masalah.

Diagnostik Azure tidak dimulai

Untuk informasi tentang mengapa Diagnostik gagal dimulai, lihat file DiagnosticsPluginLauncher.log dan DiagnosticsPlugin.log di lokasi file log yang disediakan sebelumnya.

Jika log ini menunjukkan Monitoring Agent not reporting success after launch, itu berarti ada kegagalan saat meluncurkan MonAgentHost.exe. Lihat log di lokasi yang ditunjukkan untuk MonAgentHost file log di bagian "Komputer virtual" sebelumnya.

Baris terakhir file log berisi kode keluar.

DiagnosticsPluginLauncher.exe Information: 0 : [4/16/2016 6:24:15 AM] DiagnosticPlugin exited with code 0

Jika Anda menemukan kode keluar negatif , lihat tabel kode keluar di bagian Referensi.

Data diagnostik tidak dicatat ke Azure Storage

Tentukan apakah tidak ada data yang muncul atau apakah beberapa data muncul.

Log infrastruktur diagnostik

Diagnostik mencatat semua kesalahan dalam log infrastruktur Diagnostik. Pastikan Anda telah mengaktifkan pengambilan log infrastruktur Diagnostik dalam konfigurasi Anda. Kemudian Anda dapat dengan cepat mencari kesalahan terkait yang muncul dalam DiagnosticInfrastructureLogsTable tabel di akun penyimpanan yang dikonfigurasi.

Tidak ada data yang muncul

Alasan paling umum jika data kejadian tidak muncul sama sekali karena informasi akun penyimpanan didefinisikan dengan tidak benar.

Solusi: Perbaiki konfigurasi Diagnostik Anda dan pasang ulang Diagnostik.

Jika akun penyimpanan dikonfigurasi dengan benar, akses jarak jauh ke dalam komputer dan pastikan bahwa DiagnosticsPlugin.exe dan MonAgentCore.exe sedang berjalan. Jika tidak berjalan, ikuti langkah-langkah di Azure Diagnostics tidak dimulai.

Jika proses berjalan, buka Apakah data diambil secara lokal? lalu ikuti petunjuk di sana.

Jika masih ada masalah, coba:

  1. Hapus instalan agen.
  2. Hapus direktori C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics.
  3. Instal agen lagi.

Bagian dari data hilang

Jika Anda mendapatkan beberapa data tetapi tidak semua, itu berarti bahwa alur pengumpulan/transfer data diatur dengan benar. Ikuti subbagian di sini untuk mempersempit masalah.

Apakah koleksinya dikonfigurasi?

Konfigurasi Diagnostik berisi petunjuk untuk jenis data tertentu yang akan dikumpulkan. Tinjau konfigurasi Anda untuk memverifikasi bahwa Anda hanya mencari data yang telah Anda konfigurasi untuk koleksi.

Apakah host menghasilkan data?

  • Penghitung kinerja: Buka perfmon dan periksa penghitung.
  • Jejak log: Akses jarak jauh ke VM dan tambahkan TextWriterTraceListener ke file konfigurasi aplikasi. Untuk menyiapkan pendengar teks, lihat Membuat dan menginisialisasi pendengar jejak. Pastikan elemen <trace> memiliki <trace autoflush="true">. Jika Anda tidak melihat log jejak yang dihasilkan, lihat bagian "Selengkapnya tentang log jejak yang hilang."
  • Jejak Pelacakan Peristiwa untuk Windows (ETW): Akses jarak jauh ke VM dan instal alat PerfView. Di PerfView, jalankan File>User Command>Dengarkan etwprovder1>etwprovider2, dan seterusnya. Perintah Dengar peka huruf besar/kecil, dan tidak boleh ada spasi antara daftar penyedia ETW yang dipisahkan koma. Jika perintah gagal dijalankan, pilih Log di kanan bawah alat PerfView untuk melihat apa yang coba dijalankan dan apa hasilnya. Dengan asumsi input sudah benar, jendela baru akan terbuka. Dalam beberapa detik, Anda akan melihat jejak ETW.
  • Log kejadian: Akses jarak jauh ke komputer virtual. Buka Pemantau Peristiwa dan pastikan bahwa peristiwa tersebut ada.

Apakah data diambil secara lokal?

Selanjutnya, pastikan data diambil secara lokal. Data disimpan secara lokal dalam file *.tsf di penyimpanan lokal untuk data diagnostik. Berbagai jenis log dikumpulkan dalam file .tsf yang berbeda. Nama-nama tersebut mirip dengan nama tabel di Azure Storage.

Misalnya, penghitung kinerja dikumpulkan di PerformanceCountersTable.tsf. Log peristiwa dikumpulkan di WindowsEventLogsTable.tsf. Gunakan petunjuk di bagian Ekstraksi log lokal untuk membuka file koleksi lokal dan memverifikasi bahwa Anda melihatnya dikumpulkan di disk.

Jika Anda tidak melihat log dikumpulkan secara lokal, dan telah memverifikasi bahwa host menghasilkan data, Anda mungkin mengalami masalah konfigurasi. Tinjau konfigurasi Anda dengan hati-hati.

Selain itu, tinjau konfigurasi yang dihasilkan untuk MonitoringAgent MaConfig.xml. Verifikasi bahwa ada bagian yang menjelaskan sumber log yang relevan. Kemudian verifikasi bahwa itu tidak hilang dalam terjemahan antara konfigurasi Diagnostik dan konfigurasi agen pemantauan.

Apakah data yang sedang ditransfer?

Jika Anda telah memverifikasi bahwa data diambil secara lokal tetapi Anda masih tidak melihatnya di akun penyimpanan Anda, ikuti langkah-langkah berikut:

  • Verifikasi bahwa Anda telah menyediakan akun penyimpanan yang benar dan anda belum menggulirkan kunci untuk akun penyimpanan yang diberikan. Untuk Azure Cloud Services, terkadang pengguna tidak memperbarui useDevelopmentStorage=true.
  • Pastikan bahwa akun penyimpanan yang disediakan sudah benar. Pastikan Anda tidak memiliki batasan jaringan yang mencegah komponen mencapai titik akhir penyimpanan publik. Salah satu cara untuk melakukannya adalah dengan akses jarak jauh ke mesin dan mencoba menulis sesuatu ke akun penyimpanan yang sama sendiri.
  • Terakhir, Anda dapat melihat kegagalan apa yang dilaporkan oleh agen pemantauan. Agen pemantauan menulis lognya di maeventtable.tsf, yang terletak di penyimpanan lokal untuk data diagnostik. Ikuti instruksi di bagian Ekstraksi log lokal untuk membuka file ini. Kemudian cobalah untuk menentukan apakah ada errors yang menunjukkan kegagalan membaca file lokal menulis ke penyimpanan.

Mengambil dan mengarsipkan log

Jika Anda berpikir untuk menghubungi dukungan, hal pertama yang mungkin mereka minta adalah mengumpulkan log dari komputer Anda. Anda dapat menghemat waktu dengan melakukan itu sendiri. Jalankan CollectGuestLogs.exe utilitas di jalur utilitas pengumpulan Log. Ini menghasilkan file .zip semua log Azure terkait di folder yang sama.

Tabel data diagnostik tidak ditemukan

Tabel di Azure Storage yang menyimpan peristiwa ETW dinamai dengan menggunakan kode berikut:

        if (String.IsNullOrEmpty(eventDestination)) {
            if (e == "DefaultEvents")
                tableName = "WADDefault" + MD5(provider);
            else
                tableName = "WADEvent" + MD5(provider) + eventId;
        }
        else
            tableName = "WAD" + eventDestination;

Berikut contohnya:

        <EtwEventSourceProviderConfiguration provider="prov1">
          <Event id="1" />
          <Event id="2" eventDestination="dest1" />
          <DefaultEvents />
        </EtwEventSourceProviderConfiguration>
        <EtwEventSourceProviderConfiguration provider="prov2">
          <DefaultEvents eventDestination="dest2" />
        </EtwEventSourceProviderConfiguration>
"EtwEventSourceProviderConfiguration": [
    {
        "provider": "prov1",
        "Event": [
            {
                "id": 1
            },
            {
                "id": 2,
                "eventDestination": "dest1"
            }
        ],
        "DefaultEvents": {
            "eventDestination": "DefaultEventDestination",
            "sinks": ""
        }
    },
    {
        "provider": "prov2",
        "DefaultEvents": {
            "eventDestination": "dest2"
        }
    }
]

Kode ini menghasilkan empat tabel:

Kejadian Nama tabel
provider="prov1" <Event id="1" /> WADEvent+MD5("prov1")+"1"
provider="prov1" <Event id="2" eventDestination="dest1" /> WADdest1
provider="prov1" <DefaultEvents /> WADDefault+MD5("prov1")
provider="prov2" <DefaultEvents eventDestination="dest2" /> WADdest2

Referensi

Lihat referensi berikut

Periksa konfigurasi ekstensi Diagnostik

Cara term mudah untuk memeriksa konfigurasi ekstensi Anda adalah dengan membuka Azure Resource Explorer. Kemudian buka komputer virtual atau layanan cloud tempat ekstensi Diagnostik (IaaSDiagnostics / PaaDiagnostics) berada.

Atau, desktop jarak jauh ke komputer dan lihat file konfigurasi Diagnostik yang dijelaskan di bagian Jalur artefak log.

Dalam kedua kasus, cari Microsoft.Azure.Diagnostics dan bidang xmlCfg atau WadCfg .

Jika Anda mencari di komputer virtual dan bidang WadCfg ada, itu berarti konfigurasi dalam format JSON. Jika bidang xmlCfg ada, itu berarti konfigurasi berada di XML dan dikodekan base64. Anda perlu mendekodenya untuk melihat XML yang dimuat oleh Diagnostik.

Untuk peran layanan awan, jika Anda memilih konfigurasi dari disk, data dikodekan base64. Anda harus mendekodenya untuk melihat XML yang dimuat oleh Diagnostik.

Kode keluar plug-in Azure Diagnostics

Plug-in mengembalikan kode keluar berikut:

Keluar dari kode Deskripsi
0 Sukses.
-1 Kesalahan generik.
-2 Tidak bisa memuat file rcf.

Kesalahan internal ini seharusnya hanya terjadi jika peluncur plug-in agen tamu secara manual dipanggil secara tidak benar pada VM.

-3 Tidak dapat memuat file konfigurasi Diagnostik.

Solusi: Disebabkan oleh file konfigurasi yang tidak lulus validasi skema. Solusinya adalah menyediakan file konfigurasi yang sesuai dengan skema.

-4 Contoh lain dari agen pemantauan Diagnostik sudah menggunakan direktori sumber daya lokal.

Solusi: Tentukan nilai yang berbeda untuk LocalResourceDirectory.

-6 Peluncur plug-in agen tamu mencoba meluncurkan Diagnostik dengan baris perintah yang tidak valid.

Kesalahan internal ini seharusnya hanya terjadi jika peluncur plug-in agen tamu secara manual dipanggil secara tidak benar pada VM.

-10 Plug-in Diagnostik keluar dengan pengecualian yang tidak tertangani.
-11 Agen tamu tidak dapat membuat proses yang bertanggung jawab untuk meluncurkan dan memantau agen pemantauan.

Solusi: Pastikan bahwa sumber daya sistem yang memadai tersedia untuk meluncurkan proses baru.

-101 Argumen tidak valid saat memanggil plug-in Diagnostik.

Kesalahan internal ini seharusnya hanya terjadi jika peluncur plug-in agen tamu dipanggil secara manual secara tidak benar pada VM.

-102 Proses plug-in tidak dapat menginisialisasi dirinya sendiri.

Solusi: Pastikan bahwa sumber daya sistem yang memadai tersedia untuk meluncurkan proses baru.

-103 Proses plug-in tidak dapat menginisialisasi dirinya sendiri. Secara khusus, tidak dapat membuat objek pencatat.

Solusi: Pastikan bahwa sumber daya sistem yang memadai tersedia untuk meluncurkan proses baru.

-104 Tidak bisa memuat file RCF yang disediakan oleh agen tamu.

Kesalahan internal ini seharusnya hanya terjadi jika peluncur plug-in agen tamu dipanggil secara manual secara tidak benar pada VM.

-105 Plug-in Diagnostik tidak dapat membuka file konfigurasi Diagnostik.

Kesalahan internal ini seharusnya hanya terjadi jika plug-in Diagnostik dipanggil secara manual secara tidak benar pada VM.

-106 Tidak dapat membaca file konfigurasi Diagnostik.

Solusi: Disebabkan oleh file konfigurasi yang tidak lulus validasi skema.

Solusinya adalah menyediakan file konfigurasi yang sesuai dengan skema. Untuk informasi selengkapnya, lihat Memeriksa konfigurasi ekstensi Diagnostik.

-107 Direktori sumber daya yang diteruskan ke agen pemantau tidak valid.

Kesalahan internal ini hanya boleh terjadi jika peluncur plugin agen tamu dipanggil secara manual secara tidak benar pada komputer virtual.

-108 Tidak bisa mengonversi file konfigurasi Diagnostik ke dalam file konfigurasi agen pemantau.

Kesalahan internal ini seharusnya hanya terjadi jika plug-in Diagnostik dipanggil secara manual dengan file konfigurasi yang tidak valid.

-110 Kesalahan konfigurasi Diagnostik Umum.

Kesalahan internal ini seharusnya hanya terjadi jika plug-in Diagnostik dipanggil secara manual dengan file konfigurasi yang tidak valid.

-111 Tidak bisa memulai agen pemantauan.

Solusi: Pastikan bahwa sumber daya sistem yang memadai tersedia untuk meluncurkan proses baru.

-112 Kesalahan umum.

Ekstraksi log lokal

Agen pemantauan mengumpulkan log dan artefak sebagai .tsf file. File .tsf tidak dapat dibaca tetapi Anda dapat mengonversinya menjadi .csv sebagai berikut:

<Azure diagnostics extension package>\Monitor\x64\table2csv.exe <relevantLogFile>.tsf

File baru yang <relevantLogFile>.csv disebut dibuat dalam jalur yang sama dengan file yang .tsf sesuai.

Catatan

Anda hanya perlu menjalankan utilitas ini terhadap file utama .tsf (misalnya, PerformanceCountersTable.tsf). File yang menyertainya (misalnya, , PerformanceCountersTables_\*\*001.tsfPerformanceCountersTables_\*\*002.tsf) diproses secara otomatis.

Selengkapnya tentang log jejak yang hilang

Catatan

Informasi berikut sebagian besar berlaku untuk Azure Cloud Services kecuali Anda telah mengonfigurasi DiagnosticsMonitorTraceListener pada aplikasi yang berjalan pada infrastruktur sebagai VM layanan (IaaS) Anda.

  • Pastikan DiagnosticMonitorTraceListener dikonfigurasi di web.config atau app.config. Ini dikonfigurasi secara default dalam proyek layanan cloud. Namun, beberapa pelanggan mengomentarinya, yang menyebabkan pernyataan jejak tidak dikumpulkan oleh Diagnostik.
  • Jika log tidak ditulis dari metode OnStart atau Jalankan , pastikan DiagnosticMonitorTraceListener berada di app.config. Secara default, itu ada di web.config, tetapi itu hanya berlaku untuk kode yang berjalan dalam w3wp.exe. Jadi Anda membutuhkannya di app.config untuk menangkap jejak yang berjalan di WaIISHost.exe.
  • Pastikan Anda menggunakan Diagnostics.Trace.TraceXXX alih-alih Diagnostics.Debug.WriteXXX. Pernyataan Debug dihapus dari build rilis.
  • Pastikan kode yang dikompilasi benar-benar memiliki baris Diagnostics.Trace. Gunakan Reflector, ildasm, atau ILSpy untuk memverifikasi. Perintah Diagnostics.Trace dihapus dari biner yang dikompilasi kecuali Anda menggunakan simbol kompilasi bersyarat TRACE. Masalah umum ini terjadi saat Anda menggunakan MSBuild untuk membangun proyek.

Masalah dan mitigasi yang diketahui

Masalah umum berikut memiliki mitigasi.

Dependensi .NET 4.5

Ekstensi Azure Diagnostics untuk Windows memiliki dependensi runtime pada .NET Framework 4.5 atau yang lebih baru. Pada saat penulisan, semua komputer yang disediakan untuk Azure Cloud Services, dan semua gambar resmi yang didasarkan pada Azure VM, telah menginstal .NET 4.5 atau yang lebih baru.

Masih dimungkinkan untuk mengalami situasi di mana Anda mencoba menjalankan ekstensi Diagnostik Azure untuk Windows pada komputer yang tidak memiliki .NET 4.5 atau yang lebih baru. Situasi ini terjadi saat Anda membuat komputer dari gambar atau rekam jepret lama, atau saat Anda membawa disk kustom Anda sendiri.

Masalah ini umumnya bermanifestasi sebagai kode keluar 255 saat Anda menjalankan DiagnosticsPluginLauncher.exe. Kegagalan terjadi karena pengecualian yang tidak tertangani berikut:

System.IO.FileLoadException: Could not load file or assembly 'System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies

Mitigasi: Pasang .NET 4.5 atau yang lebih baru di komputer Anda.

Data penghitung kinerja tersedia di penyimpanan tetapi tidak ditampilkan di portal

Pengalaman portal di VM menunjukkan penghitung kinerja tertentu secara default. Jika Anda tidak melihat penghitung kinerja, dan Anda tahu bahwa data dibuat karena tersedia di penyimpanan, pastikan untuk memeriksa:

  • Apakah data dalam penyimpanan memiliki nama penghitung dalam bahasa Inggris. Jika nama penghitung tidak dalam bahasa Inggris, bagan metrik portal tidak akan mengenalinya.

    • Mitigasi: Ubah bahasa komputer ke bahasa Inggris untuk akun sistem. Untuk melakukan ini, pilih Control Panel (Panel Kontrol)>Region (Wilayah)>Administrative (Administratif)>Copy Settings (Pengaturan Salinan) . Selanjutnya, hapus layar Selamat Datang dan akun sistem sehingga bahasa kustom tidak diterapkan ke akun sistem.
  • Jika Anda menggunakan kartubebas (*) di nama penghitung kinerja, portal tidak dapat menghubungkan penghitung yang dikonfigurasi dan dikumpulkan saat penghitung kinerja dikirim ke sink Azure Storage.

    • Mitigasi: Untuk memastikan Anda dapat menggunakan kartubebas dan portal yang memperluas (*), rutekan penghitung kinerja Anda ke sink Azure Monitor.