Bagikan melalui


Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java

Artikel ini menjelaskan cara mengaktifkan dan mengonfigurasi pengumpulan data berbasis OpenTelemetry dalam Application Insights. Distro OpenTelemetry Azure Monitor:

Untuk informasi selengkapnya tentang keuntungan menggunakan Distro OpenTelemetry Azure Monitor, lihat Mengapa saya harus menggunakan Distro OpenTelemetry Azure Monitor.

Untuk mempelajari selengkapnya tentang mengumpulkan data menggunakan OpenTelemetry, lihat Dasar-Dasar Pengumpulan Data atau FAQ OpenTelemetry.

Status rilis OpenTelemetry

Penawaran OpenTelemetry tersedia untuk aplikasi .NET, Node.js, Python, dan Java. Untuk status rilis fitur demi fitur, lihat FAQ.

Mengaktifkan OpenTelemetry dengan Application Insights

Ikuti langkah-langkah pada bagian ini untuk melengkapi aplikasi Anda dengan OpenTelemetry. Pilih tab untuk instruksi khusus langauge.

Catatan

.NET mencakup beberapa skenario, termasuk ASP.NET klasik, aplikasi konsol, Formulir Windows (WinForms), dan banyak lagi.

Prasyarat

Tip

Jika Anda bermigrasi dari APPLICATION Insights Classic API, lihat dokumentasi migrasi kami.

Memasang pustaka klien

Instal paket NuGet terbaru:Azure.Monitor.OpenTelemetry.AspNetCore

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Mengubah aplikasi Anda

Azure.Monitor.OpenTelemetry.AspNetCore Impor namespace, tambahkan OpenTelemetry, dan konfigurasikan untuk menggunakan Azure Monitor di kelas Andaprogram.cs:

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

var app = builder.Build();

app.Run();

Salin string koneksi dari sumber daya Application Insights Anda

string koneksi unik dan menentukan di mana Distro OpenTelemetry Azure Monitor mengirim telemetri yang dikumpulkannya.

Tip

Jika Anda belum memiliki sumber daya Application Insights, buat sumber daya yang mengikuti panduan ini. Sebaiknya buat sumber daya baru daripada menggunakan sumber daya yang sudah ada.

Untuk menyalin string koneksi:

  1. Buka panel Gambaran Umum sumber daya Application Insights Anda.
  2. Temukan string koneksi Anda.
  3. Arahkan mouse ke atas string koneksi dan pilih ikon Salin ke clipboard.

Cuplikan layar yang menampilkan gambaran umum Application Insights dan string koneksi.

Tempelkan string koneksi di lingkungan Anda

Untuk menempelkan string koneksi Anda, pilih dari opsi berikut:

Penting

Sebaiknya atur string koneksi melalui kode hanya di lingkungan pengembangan dan pengujian lokal.

Untuk produksi, gunakan variabel lingkungan atau file konfigurasi (hanya Java).

  • Atur melalui variabel lingkungan yang - direkomendasikan

    Ganti <Your connection string> dalam perintah berikut dengan string koneksi Anda.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your connection string>
    
  • Atur melalui file - konfigurasi java saja

    Buat file konfigurasi bernama applicationinsights.json, dan letakkan di direktori yang sama seperti applicationinsights-agent-3.5.4.jar dengan konten berikut:

    {
      "connectionString": "<Your connection string>"
    }
    

    Ganti <Your connection string> di JSON sebelumnya dengan string koneksi unik Anda.

  • Atur melalui kode - ASP.NET Core, Node.js, dan Python saja

    Lihat konfigurasi string koneksi untuk contoh pengaturan string koneksi melalui kode.

Catatan

Jika Anda mengatur string koneksi di beberapa tempat, variabel lingkungan akan diprioritaskan dalam urutan berikut:

  1. Kode
  2. Variabel lingkungan
  3. File konfigurasi

Mengonfirmasi data sedang mengalir

Jalankan aplikasi Anda, lalu buka Application Insights di portal Azure. Mungkin perlu beberapa menit agar data muncul.

Cuplikan layar tab gambaran umum Application Insights dengan permintaan server dan waktu respons server disorot.

Application Insights sekarang diaktifkan untuk aplikasi Anda. Langkah-langkah berikut bersifat opsional dan memungkinkan penyesuaian lebih lanjut.

Penting

Jika Anda memiliki dua atau lebih layanan yang memancarkan telemetri ke sumber daya Application Insights yang sama, Anda perlu mengatur Nama Peran Cloud untuk mewakili mereka dengan benar di Peta Aplikasi.

Sebagai bagian dari penggunaan instrumentasi Application Insights, kami mengumpulkan dan mengirim data diagnostik ke Microsoft. Data ini membantu kami menjalankan dan meningkatkan Application Insights. Untuk mempelajari selengkapnya, lihat Statsbeat di Azure Application Insights.

Aplikasi sampel

Aplikasi sampel OpenTelemetry Azure Monitor tersedia untuk semua bahasa yang didukung:

Langkah berikutnya

Tanya jawab umum

Bagian ini menyediakan jawaban atas pertanyaan umum.

Apa itu OpenTelemetry?

Ini adalah standar sumber terbuka baru untuk pengamatan. Pelajari lebih lanjut di OpenTelemetry.

Mengapa Microsoft Azure Monitor berinvestasi di OpenTelemetry?

Microsoft berinvestasi di OpenTelemetry karena alasan berikut:

  • Ini netral vendor dan menyediakan API/SDK yang konsisten di seluruh bahasa.
  • Seiring waktu, kami percaya OpenTelemetry akan memungkinkan pelanggan Azure Monitor untuk mengamati aplikasi yang ditulis dalam bahasa di luar bahasa yang didukung.
  • Ini memperluas jenis data yang dapat Anda kumpulkan melalui serangkaian pustaka instrumentasi yang kaya.
  • OpenTelemetry Software Development Kits (SDK) cenderung lebih berkinerja dalam skala besar daripada pendahulunya, SDK Application Insights.
  • OpenTelemetry selaras dengan strategi Microsoft untuk merangkul sumber terbuka.

Bagaimana status OpenTelemetry?

Lihat Status OpenTelemetry.

Apa itu Distro OpenTelemetry Azure Monitor?

Anda dapat menganggapnya sebagai pembungkus tipis yang menggabungkan semua komponen OpenTelemetry untuk pengalaman kelas satu di Azure. Pembungkus ini juga disebut distribusi di OpenTelemetry.

Mengapa saya harus menggunakan Distro OpenTelemetry Azure Monitor?

Ada beberapa keuntungan menggunakan Distro OpenTelemetry Azure Monitor daripada OpenTelemetry asli dari komunitas:

Dalam semangat OpenTelemetry, kami merancang distro agar terbuka dan dapat diperluas. Misalnya, Anda dapat menambahkan:

  • Pengekspor OpenTelemetry Protocol (OTLP) dan mengirim ke tujuan kedua secara bersamaan
  • Pustaka instrumentasi lain yang tidak termasuk dalam distro

Karena Distro menyediakan distribusi OpenTelemetry, Distro mendukung apa pun yang didukung oleh OpenTelemetry. Misalnya, Anda dapat menambahkan lebih banyak prosesor telemetri, pengekspor, atau pustaka instrumentasi, jika OpenTelemetry mendukungnya.

Catatan

Distro mengatur sampler ke sampler laju tetap kustom untuk Application Insights. Anda dapat mengubah ini ke sampler yang berbeda, tetapi melakukannya mungkin menonaktifkan beberapa kemampuan yang disertakan Distro. Untuk informasi selengkapnya tentang sampler yang didukung, lihat bagian Aktifkan Pengambilan Sampel di Mengonfigurasi Azure Monitor OpenTelemetry.

Untuk bahasa tanpa pengekspor OpenTelemetry mandiri yang didukung, Distro OpenTelemetry Azure Monitor adalah satu-satunya cara yang saat ini didukung untuk menggunakan OpenTelemetry dengan Azure Monitor. Untuk bahasa dengan pengekspor OpenTelemetry mandiri yang didukung, Anda memiliki opsi untuk menggunakan Distro OpenTelemetry Azure Monitor atau pengekspor OpenTelemetry mandiri yang sesuai tergantung pada skenario telemetri Anda. Untuk informasi selengkapnya, lihat Kapan saya harus menggunakan pengekspor OpenTelemetry Azure Monitor?.

Bagaimana cara menguji Distro OpenTelemetry Azure Monitor?

Lihat dokumen pengaktifan kami untuk .NET, Java, JavaScript (Node.js), dan Python.

Haruskah saya menggunakan OpenTelemetry atau Application Insights SDK?

Sebaiknya gunakan Distro OpenTelemetry kecuali Anda memerlukan fitur yang hanya tersedia dengan dukungan formal di Application Insights SDK.

Mengadopsi OpenTelemetry sekarang mencegah harus bermigrasi di kemudian hari.

Kapan saya harus menggunakan pengekspor OpenTelemetry Azure Monitor?

Untuk ASP.NET Core, Java, Node.js, dan Python, sebaiknya gunakan Distro OpenTelemetry Azure Monitor. Ini adalah satu baris kode untuk memulai.

Untuk semua skenario .NET lainnya, termasuk ASP.NET klasik, aplikasi konsol, Formulir Windows (WinForms), dll., sebaiknya gunakan pengekspor OpenTelemetry .NET Azure Monitor: Azure.Monitor.OpenTelemetry.Exporter.

Untuk skenario telemetri Python yang lebih kompleks yang memerlukan konfigurasi tingkat lanjut, sebaiknya gunakan Python Azure Monitor OpenTelemetry Exporter.

Apa status rilis fitur saat ini dalam Distro OpenTelemetry Azure Monitor?

Bagan berikut memecah dukungan fitur OpenTelemetry untuk setiap bahasa.

Fitur .NET Node.js Python Java
Pelacakan terdistribusi
Metrik kustom
Metrik standar
Pengambilan sampel laju tetap
Penyimpanan offline dan percobaan ulang otomatis
Pelaporan pengecualian
Koleksi log ⚠️
Kejadian Kustom ⚠️ ⚠️ ⚠️
Autentikasi Microsoft Entra
Metrik langsung
Pemfilteran Metrik Langsung
Mendeteksi Konteks Sumber Daya untuk VM/VMSS dan App Service
Mendeteksi Konteks Sumber Daya untuk Azure Kubernetes Service (AKS) dan Functions
Peristiwa Pengujian Ketersediaan yang dihasilkan menggunakan API Ketersediaan Lacak
Memfilter permintaan, dependensi, log, dan pengecualian berdasarkan ID pengguna anonim dan sumber sintetis
Memfilter dependensi, log, dan pengecualian berdasarkan nama operasi
Pengambilan sampel adaptif
Profiler ⚠️
Snapshot Debugger

Kunci

  • ✅ Fitur ini tersedia untuk semua pelanggan dengan dukungan formal.
  • ⚠️ Fitur ini tersedia sebagai pratinjau publik. Lihat Ketentuan penggunaan tambahan untuk pratinjau Microsoft Azure.
  • ❌ Fitur ini tidak tersedia atau tidak berlaku.

Dapatkah OpenTelemetry digunakan untuk browser web?

Ya, tetapi kami tidak merekomendasikannya dan Azure tidak mendukungnya. OpenTelemetry JavaScript sangat dioptimalkan untuk Node.js. Sebagai gantinya, sebaiknya gunakan Application Insights JavaScript SDK.

Kapan kita dapat mengharapkan OpenTelemetry SDK tersedia untuk digunakan di browser web?

SDK web OpenTelemetry tidak memiliki garis waktu ketersediaan yang ditentukan. Kami kemungkinan beberapa tahun lagi dari SDK browser yang merupakan alternatif yang layak untuk Application Insights JavaScript SDK.

Dapatkah saya menguji OpenTelemetry di browser web hari ini?

Kotak pasir web OpenTelemetry adalah fork yang dirancang untuk membuat OpenTelemetry berfungsi di browser. Belum dimungkinkan untuk mengirim telemetri ke Application Insights. SDK tidak menentukan peristiwa klien umum.

Apakah menjalankan Application Insights bersama agen pesaing seperti AppDynamics, DataDog, dan NewRelic didukung?

Praktik ini bukan sesuatu yang kami rencanakan untuk diuji atau didukung, meskipun Distro kami memungkinkan Anda mengekspor ke titik akhir OTLP bersama Azure Monitor secara bersamaan.

Dapatkah saya menggunakan fitur pratinjau di lingkungan produksi?

Kami tidak merekomendasikannya. Lihat Ketentuan penggunaan tambahan untuk pratinjau Microsoft Azure.

Apa perbedaan antara instrumentasi manual dan otomatis?

Lihat Gambaran Umum OpenTelemetry.

Dapatkah saya menggunakan OpenTelemetry Collector?

Beberapa pelanggan menggunakan OpenTelemetry Collector sebagai alternatif agen, meskipun Microsoft belum secara resmi mendukung pendekatan berbasis agen untuk pemantauan aplikasi. Sementara itu, komunitas sumber terbuka berkontribusi pada Pengumpul OpenTelemetry Azure Monitor Exporter yang digunakan beberapa pelanggan untuk mengirim data ke Azure Monitor Application Insights. Ini tidak didukung oleh Microsoft.

Apa perbedaan antara OpenCensus dan OpenTelemetry?

OpenCensus adalah pendahulu OpenTelemetry. Microsoft membantu menyatukan OpenTracing dan OpenCensus untuk membuat OpenTelemetry, satu standar pengamatan untuk dunia. Python SDK yang direkomendasikan produksi saat ini untuk Azure Monitor didasarkan pada OpenCensus. Microsoft berkomitmen untuk membuat Azure Monitor berdasarkan OpenTelemetry.

Di Grafana, mengapa saya melihat Status: 500. Can't visualize trace events using the trace visualizer?

Anda dapat mencoba memvisualisasikan log teks mentah daripada jejak OpenTelemetry.

Di Application Insights, tabel 'Jejak' menyimpan log teks mentah untuk tujuan diagnostik. Mereka membantu mengidentifikasi dan menghubungkan jejak yang terkait dengan permintaan pengguna, peristiwa lain, dan laporan pengecualian. Namun, tabel 'Jejak' tidak secara langsung berkontribusi pada tampilan transaksi end-to-end (bagan air terjun) dalam alat visualisasi seperti Grafana.

Dengan meningkatnya adopsi praktik cloud-native, ada evolusi dalam pengumpulan dan terminologi telemetri. OpenTelemetry menjadi standar untuk mengumpulkan dan melengkapi data telemetri. Dalam konteks ini, istilah 'Jejak' mengambil arti baru. Daripada log mentah, 'Jejak' di OpenTelemetry mengacu pada bentuk telemetri terstruktur yang lebih kaya yang mencakup rentang, yang mewakili unit kerja individu. Rentang ini sangat penting untuk membangun tampilan transaksi terperinci, memungkinkan pemantauan dan diagnostik aplikasi cloud-native yang lebih baik.

Pemecahan Masalah

Langkah 1: Aktifkan pembuatan log diagnostik

Pengekspor Azure Monitor menggunakan EventSource untuk pengelogan internalnya. Log pengekspor tersedia untuk EventListener apa pun dengan memilih sumber yang bernama OpenTelemetry-AzureMonitor-Exporter. Untuk langkah-langkah pemecahan masalah, lihat Pemecahan Masalah OpenTelemetry di GitHub.

Langkah 2: Uji konektivitas antara host aplikasi Anda dan layanan penyerapan

Application Insights SDK dan agen mengirim telemetri untuk diserap sebagai panggilan REST di titik akhir penyerapan kami. Untuk menguji konektivitas dari server web atau komputer host aplikasi Anda ke titik akhir layanan penyerapan, gunakan perintah cURL atau permintaan REST mentah dari PowerShell. Untuk informasi selengkapnya, lihat Memecahkan masalah telemetri aplikasi yang hilang di Azure Monitor Application Insights.

Masalah umum

Item berikut ini diketahui masalah untuk Pengekspor OpenTelemetry Azure Monitor:

  • Nama operasi hilang dari telemetri dependensi. Nama operasi yang hilang menyebabkan kegagalan dan berdampak buruk pada pengalaman tab performa.

  • Model perangkat hilang dari telemetri permintaan dan dependensi. Model perangkat yang hilang berdampak buruk pada analisis kohor perangkat.

Dukungan

Pilih tab untuk bahasa pilihan Anda untuk menemukan opsi dukungan.

Umpan balik OpenTelemetry

Untuk memberikan umpan balik: