Bagikan melalui


Mengumpulkan dan membaca data OpenTelemetry di Azure Container Apps (pratinjau)

Dengan menggunakan agen data OpenTelemetry dengan lingkungan Azure Container Apps, Anda dapat memilih untuk mengirim data observabilitas dalam format OpenTelemetry dengan:

  • Piping data dari agen ke titik akhir yang diinginkan. Opsi tujuan termasuk titik akhir yang kompatibel dengan Azure Monitor Application Insights, Datadog, dan Protokol OpenTelemetry (OTLP).

  • Mengubah titik akhir tujuan dengan mudah tanpa harus mengonfigurasi ulang cara mereka memancarkan data, dan tanpa harus menjalankan agen OpenTelemetry secara manual.

Artikel ini memperlihatkan kepada Anda cara menyiapkan dan mengonfigurasi agen OpenTelemetry untuk aplikasi kontainer Anda.

Mengonfigurasi agen OpenTelemetry

Agen OpenTelemetry hidup dalam lingkungan aplikasi kontainer Anda. Anda mengonfigurasi pengaturan agen melalui templat ARM atau panggilan Bicep ke lingkungan, atau melalui CLI.

Setiap jenis titik akhir (Azure Monitor Application Insights, DataDog, dan OTLP) memiliki persyaratan konfigurasi tertentu.

Prasyarat

Mengaktifkan agen OpenTelemetry terkelola ke lingkungan Anda tidak secara otomatis berarti agen mengumpulkan data. Agen hanya mengirim data berdasarkan pengaturan konfigurasi Anda dan melengkapi kode Anda dengan benar.

Mengonfigurasi kode sumber

Siapkan aplikasi Anda untuk mengumpulkan data dengan menginstal OpenTelemetry SDK dan ikuti panduan OpenTelemetry untuk metrik instrumen, log, atau jejak.

Menginisialisasi titik akhir

Sebelum dapat mengirim data ke tujuan pengumpulan, Anda harus terlebih dahulu membuat instans layanan tujuan. Misalnya, jika Anda ingin mengirim data ke Azure Monitor Application Insights, Anda perlu membuat instans Application Insights sebelumnya.

Agen OpenTelemetry terkelola menerima tujuan berikut:

  • Application Insights Azure Monitor
  • Datadog
  • Titik akhir OTLP apa pun (Misalnya: New Relic atau Honeycomb)

Tabel berikut ini memperlihatkan jenis data apa yang bisa Anda kirim ke setiap tujuan:

Tujuan Log Metrik Jejak
Insight Azure App Ya No Ya
Datadog Tidak Ya Ya
Titik akhir yang dikonfigurasi protokol OpenTelemetry (OTLP) Ya Ya Ya

Application Insights Azure Monitor

Satu-satunya detail konfigurasi yang diperlukan dari Application Insights adalah string koneksi. Setelah memiliki string koneksi, Anda dapat mengonfigurasi agen melalui templat ARM aplikasi kontainer atau dengan perintah Azure CLI.

Sebelum Anda menyebarkan templat ini, ganti tempat penampung yang dikelilingi oleh <> dengan nilai Anda.

{
  ...
  "properties": {
    "appInsightsConfiguration ": {  
      "connectionString": "<YOUR_APP_INSIGHTS_CONNECTION_STRING>"
    }
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration":{
        "destinations": ["appInsights"]
      },
      "logsConfiguration": {
        "destinations": ["appInsights"]
      }
    }
  }
}

Datadog

Konfigurasi agen Datadog memerlukan nilai untuk site dan key dari instans Datadog Anda. Kumpulkan nilai-nilai ini dari instans Datadog Anda sesuai dengan tabel ini:

Properti agen Datadog Properti konfigurasi Container Apps
DD_SITE site
DD_API_KEY key

Setelah Anda memiliki detail konfigurasi ini, Anda dapat mengonfigurasi agen melalui templat ARM aplikasi kontainer Anda atau dengan perintah Azure CLI.

Sebelum Anda menyebarkan templat ini, ganti tempat penampung yang dikelilingi oleh <> dengan nilai Anda.

{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "destinationsConfiguration":{
        ...
        "dataDogConfiguration":{
          "site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
          "key": "<YOUR_DATADOG_KEY>"
        }
      },
      "tracesConfiguration":{
        "destinations": ["dataDog"]
      },
      "metricsConfiguration": {
        "destinations": ["dataDog"]
      }
    }
  }
}

Titik akhir OTLP

Titik akhir protokol OpenTelemetry (OTLP) adalah tujuan data telemetri yang menggunakan data OpenTelemetry. Dalam konfigurasi aplikasi, Anda dapat menambahkan beberapa titik akhir OTLP. Contoh berikut menambahkan dua titik akhir dan mengirim data berikut ke titik akhir ini.

Nama titik akhir 2 Data yang dikirim ke titik akhir
oltp1 Metrik dan/atau jejak
oltp2 Log dan/atau jejak

Meskipun Anda dapat menyiapkan titik akhir yang dikonfigurasi OTLP sebanyak yang Anda suka, setiap titik akhir harus memiliki nama yang berbeda.

{
  "properties": {
    "appInsightsConfiguration": {},
    "openTelemetryConfiguration": {
      "destinationsConfiguration":{
        "otlpConfigurations": [
          {
            "name": "otlp1",
            "endpoint": "ENDPOINT_URL_1",
            "insecure": false,
            "headers": "api-key-1=key"
          },
          {
            "name": "otlp2",
            "endpoint": "ENDPOINT_URL_2",
            "insecure": true
          }
        ]
      },
      "logsConfiguration": { 
        "destinations": ["otlp2"]
      },
      "tracesConfiguration":{
        "destinations": ["otlp1", "otlp2"]
      },
      "metricsConfiguration": {
        "destinations": ["otlp1"]
      }
    }
  }
}

Nama Deskripsi
resource-group Nama grup sumber daya. Anda dapat mengonfigurasi grup default menggunakan az configure --defaults group=<NAME>.
name Nama lingkungan Container Apps.
otlp-name Nama yang Anda pilih untuk mengidentifikasi titik akhir yang dikonfigurasi OTLP Anda.
endpoint URL tujuan yang menerima data yang dikumpulkan.
insecure Default benar. Menentukan apakah akan mengaktifkan keamanan transportasi klien untuk koneksi gRPC pengekspor. Jika false, headers parameter diperlukan.
headers Nilai yang dipisahkan spasi, dalam format 'key=value', yang memberikan informasi yang diperlukan untuk keamanan titik akhir OTLP'. Contoh: "api-key=key other-config-value=value".

Mengonfigurasi Tujuan Data

Untuk mengonfigurasi agen, gunakan destinations array untuk menentukan agen mana yang dikirim aplikasi Anda data. Kunci yang valid adalah appInsights, , dataDogatau nama titik akhir OTLP kustom Anda. Anda dapat mengontrol perilaku agen berdasarkan jenis data dan opsi terkait titik akhir.

Menurut jenis data

Opsi Contoh
Pilih jenis data. Anda dapat mengonfigurasi log, metrik, dan/atau jejak satu per satu.
Mengaktifkan atau menonaktifkan jenis data apa pun. Anda dapat memilih untuk hanya mengirim jejak dan tidak ada data lain.
Kirim satu tipe data ke beberapa titik akhir. Anda dapat mengirim log ke DataDog dan titik akhir yang dikonfigurasi OTLP.
Kirim jenis data yang berbeda ke lokasi yang berbeda. Anda dapat mengirim jejak ke titik akhir dan metrik OTLP ke DataDog.
Nonaktifkan pengiriman semua jenis data. Anda dapat memilih untuk tidak mengirim data apa pun melalui agen OpenTelemetry.

Menurut titik akhir

  • Anda hanya dapat menyiapkan satu titik akhir Application Insights dan Datadog setiap satu per satu.
  • Meskipun Anda dapat menentukan lebih dari satu titik akhir yang dikonfigurasi OTLP, masing-masing harus memiliki nama yang berbeda.

Contoh berikut menunjukkan cara menggunakan titik akhir OTLP bernama customDashboard. Ini mengirimkan:

  • jejak ke wawasan aplikasi dan customDashboard
  • log ke wawasan aplikasi dan customDashboard
  • metrik ke DataDog dan customDashboard
{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

## Example OpenTelemetry configuration

The following example ARM template shows how you might configure your container app to collect telemetry data using Azure Monitor Application Insights, Datadog, and with a custom OTLP agent named `customDashboard`.

Before you deploy this template, replace placeholders surrounded by `<>` with your values.

```json
{
  "location": "eastus",
  "properties": {
    "appInsightsConfiguration": {
      "connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
    },
    "openTelemetryConfiguration": {
      "destinationsConfiguration": {
        "dataDogConfiguration": {
          "site": "datadoghq.com",
          "key": "<YOUR_DATADOG_KEY>"
        },
        "otlpConfigurations": [
          {
            "name": "customDashboard",
            "endpoint": "<OTLP_ENDPOINT_URL>",
            "insecure": true
          }
        ]
      },
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

Variabel lingkungan

Agen OpenTelemetry secara otomatis menyuntikkan sekumpulan variabel lingkungan ke dalam aplikasi Anda saat runtime.

Dua variabel lingkungan pertama mengikuti konfigurasi pengekspor OpenTelemetry standar dan digunakan dalam kit pengembangan perangkat lunak standar OTLP. Jika Anda secara eksplisit mengatur variabel lingkungan dalam spesifikasi aplikasi kontainer, nilai Anda akan menimpa nilai yang disuntikkan secara otomatis.

Pelajari tentang konfigurasi pengekspor OTLP lihat, Konfigurasi Pengekspor OTLP.

Nama Deskripsi
OTEL_EXPORTER_OTLP_ENDPOINT URL titik akhir dasar untuk jenis sinyal apa pun, dengan nomor port yang ditentukan secara opsional. Pengaturan ini berguna saat Anda mengirim lebih dari satu sinyal ke titik akhir yang sama dan ingin satu variabel lingkungan mengontrol titik akhir. Contoh: http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Menentukan protokol transportasi OTLP yang digunakan untuk semua data telemetri. Agen terkelola hanya mendukung grpc. Nilai: grpc.

Tiga variabel lingkungan lainnya khusus untuk Azure Container Apps, dan selalu disuntikkan. Variabel ini menyimpan URL titik akhir agen untuk setiap jenis data tertentu (log, metrik, jejak).

Variabel ini hanya diperlukan jika Anda menggunakan agen OpenTelemetry terkelola dan agen OpenTelemetry lainnya. Menggunakan variabel ini memberi Anda kontrol atas cara merutekan data antara agen OpenTelemetry yang berbeda.

Nama Deskripsi Contoh
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT URL titik akhir hanya untuk data pelacakan. http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT URL titik akhir hanya untuk data log. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT URL titik akhir hanya untuk data metrik. http://otel.service.k8se-apps:43178/v1/metrics/

Biaya agen OpenTelemetry

Anda ditagih untuk komputasi agen yang mendasar.

Lihat layanan tujuan untuk struktur dan ketentuan penagihan mereka. Misalnya, jika Anda mengirim data ke Azure Monitor Application Insights dan Datadog, Anda bertanggung jawab atas biaya yang diterapkan oleh kedua layanan.

Pembatasan yang diketahui

  • Agen OpenTelemetry sedang dalam pratinjau.
  • Data sistem, seperti log sistem atau metrik standar Container Apps, tidak tersedia untuk dikirim ke agen OpenTelemetry.
  • Titik akhir Application Insights tidak menerima metrik.
  • Titik akhir Datadog tidak menerima log.

Langkah berikutnya