Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dengan menggunakan agen data OpenTelemetry dengan lingkungan Azure Container Apps, Anda dapat memilih untuk mengirim data observabilitas dalam format OpenTelemetry dengan:
Mengarahkan data dari agen ke endpoint yang diinginkan. Opsi tujuan termasuk Azure Monitor Application Insights, Datadog, dan titik akhir yang kompatibel dengan 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 pemantauan OpenTelemetry
Agen OpenTelemetry hidup dalam lingkungan aplikasi kontainer Anda. Anda mengonfigurasi pengaturan agen melalui templat ARM atau panggilan Bicep ke lingkungan, atau melalui CLI, atau melalui Terraform (melalui penyedia AzAPI).
Setiap jenis titik akhir (Azure Monitor Application Insights, DataDog, dan OTLP) memiliki persyaratan konfigurasi tertentu.
Prasyarat
Mengaktifkan agen OpenTelemetry terkelola untuk lingkungan Anda tidak secara otomatis berarti agen mengumpulkan data. Agen hanya mengirimkan data berdasarkan pengaturan konfigurasi Anda dan mengimplementasikan 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)
Catatan
Microsoft menyediakan dukungan untuk data yang dikirim ke Azure Monitor Application Insights. Setelah data disimpan dalam sistem non-Microsoft, dukungan terkait data adalah tanggung jawab organisasi titik akhir.
Tabel berikut ini memperlihatkan jenis data apa yang bisa Anda kirim ke setiap tujuan:
| Tujuan | Log | Ukuran | Jejak |
|---|---|---|---|
| Azure App Insights | Ya | Tidak. | Ya |
| Datadog | Ya | 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 Anda, dengan perintah Azure CLI atau Terraform.
string koneksi berisi kunci instrumentasi, yang merupakan pengidentifikasi unik yang digunakan untuk mengaitkan telemetri ke sumber daya Application Insights tertentu. Kunci instrumentasi bukan token keamanan atau kunci keamanan, dan tidak dianggap sebagai rahasia.
Jika Anda ingin melindungi sumber daya Application Insights dari penyalahgunaan, lihat Autentikasi Microsoft Entra untuk Application Insights. Namun, sumber daya Application Insights harus mengizinkan autentikasi lokal untuk menerima data dari agen data OpenTelemetry.
Sebelum Anda menyebarkan templat ini, ganti <PLACEHOLDERS> dengan nilai Anda.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Anda tidak perlu menjalankan agen Datadog di aplikasi kontainer jika Anda mengaktifkan agen OpenTelemetry terkelola untuk lingkungan Anda.
Konfigurasi agen OpenTelemetry memerlukan nilai untuk site dan key dari instans Datadog Anda. Kumpulkan nilai-nilai ini dari instans Datadog Anda sesuai dengan tabel ini:
| Properti instans Datadog | Properti konfigurasi agen OpenTelemetry |
|---|---|
DD_SITE |
site |
DD_API_KEY |
key |
Jika Anda membuat instans Datadog di portal Microsoft Azure, lihat Kunci API untuk informasi selengkapnya.
Setelah Anda memiliki detail konfigurasi ini, Anda dapat mengonfigurasi agen melalui templat ARM atau Bicep aplikasi kontainer Anda atau dengan perintah Azure CLI.
Hindari menentukan nilai rahasia, seperti kunci API Datadog Anda, langsung di lingkungan produksi. Sebagai gantinya, gunakan referensi ke rahasia yang disimpan di Azure Key Vault.
Anda harus mengaktifkan brankas kunci untuk penyebaran templat. Untuk mengaktifkan penyebaran templat, buat brankas kunci dengan enabledForTemplateDeployment properti diaktifkan, atau jalankan perintah Azure CLI berikut, ganti <KEY_VAULT_NAME> dengan nilai Anda:
az keyvault update --name <KEY_VAULT_NAME> --enabled-for-template-deployment true
Untuk informasi selengkapnya, lihat:
- Menggunakan Azure Key Vault untuk meneruskan nilai parameter aman selama penyebaran
- Tutorial: Mengintegrasikan Azure Key Vault dalam penyebaran templat ARM Anda
Buat file parameter untuk mengambil kunci API Datadog Anda dari Azure Key Vault.
Sebelum Anda menyebarkan file berikut, ganti <PLACEHOLDERS> dengan nilai Anda.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"datadogapikey": {
"reference": {
"keyVault": {
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT_NAME>"
},
"secretName": "<KEY_VAULT_SECRET_NAME>"
}
}
}
}
Anda sekarang dapat mereferensikan datadogapikey parameter di templat ARM Anda.
{
...
"parameters": {
"datadogapikey": {
"type": "securestring"
}
},
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
Untuk menyebarkan sumber daya, jalankan perintah Azure CLI berikut, ganti <PLACEHOLDERS> dengan nilai Anda.
az deployment group create \
--resource-group <RESOURCE_GROUP> \
--template-file <ARM_TEMPLATE_FILE> \
--parameters <PARAMETER_FILE>
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 | Data yang dikirim ke titik akhir |
|---|---|
oltp1 |
Metrik dan/atau pelacakan |
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 salah, parameter headers wajib diperlukan. |
headers |
Nilai dengan spasi sebagai pemisah, dalam format 'key-value', yang menyediakan informasi yang diperlukan bagi keamanan endpoint OTLP. Contoh: "api-key=key other-config-value=value". |
Mengonfigurasi Tujuan Data
Untuk mengatur agen, gunakan array destinations untuk menentukan agen mana yang menerima data dari aplikasi Anda. 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 menggunakan 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 mengonfigurasi satu titik akhir untuk Application Insights dan satu titik akhir untuk Datadog pada satu waktu.
- Meskipun Anda dapat menentukan lebih dari satu titik akhir yang dikonfigurasi OTLP, masing-masing harus memiliki nama yang berbeda.
Contoh templat ARM berikut menunjukkan cara menggunakan titik akhir OTLP bernama customDashboard. Ini mengirimkan:
- penelusuran 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"
]
}
}
}
}
Ekspor sinyal OpenTelemetry dari komponen sistem
Dari versi 2024-08-02-previewAPI OpenTelemetry, Anda dapat mengonfigurasi lingkungan aplikasi kontainer untuk mengekspor komponen sistem sinyal OpenTelemetry ke tujuan data Anda.
Gunakan konfigurasi berikut untuk mengekspor jejak Dapr dan metrik KEDA.
Pelacakan Dapr
Contoh templat ARM berikut menunjukkan cara mengekspor pelacakan Dapr ke tujuan pelacakan Anda.
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
],
"includeDapr": true
}
}
}
}
Untuk mempelajari selengkapnya tentang cara menggunakan Dapr di aplikasi kontainer, lihat Gambaran Umum Dapr.
Metrik KEDA
Contoh templat ARM berikut menunjukkan cara mengekspor metrik KEDA ke tujuan metrik Anda.
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
],
"includeKeda": true
}
}
}
}
Untuk mempelajari selengkapnya tentang dukungan KEDA di Aplikasi Kontainer, lihat Mengatur aturan penskalakan.
Contoh konfigurasi OpenTelemetry
Contoh templat berikut menunjukkan bagaimana Anda dapat mengonfigurasi aplikasi kontainer untuk mengumpulkan data telemetri menggunakan Azure Monitor Application Insights, Datadog, dan dengan agen OTLP kustom bernama customDashboard.
Contoh ini berfungsi dengan file parameter yang digunakan untuk mengambil kunci API Datadog dari Azure Key Vault.
Sebelum Anda menyebarkan templat ini, ganti <PLACEHOLDERS> dengan nilai Anda.
{
"location": "eastus",
"properties": {
"appInsightsConfiguration": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
},
"openTelemetryConfiguration": {
"destinationsConfiguration": {
"dataDogConfiguration": {
"site": "datadoghq.com",
"key": "parameters('datadogapikey')]"
},
"otlpConfigurations": [
{
"name": "customDashboard",
"endpoint": "<OTLP_ENDPOINT_URL>",
"insecure": true
}
]
},
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Untuk informasi selengkapnya, lihat Microsoft.App/managedEnvironments.
Ketahanan data
Jika terjadi gangguan olahpesan ke titik akhir, agen OpenTelemetry menggunakan prosedur berikut untuk mendukung ketahanan data:
- Penggunaan buffer dalam memori dan upaya ulang: Agen menyimpan data dalam memori dan terus melakukan upaya ulang (dengan backoff) hingga lima menit.
- Menjatuhkan data: Jika antrean buffer terisi, atau titik akhir masih tidak berfungsi setelah mencoba kembali, agen membuang batch terlama untuk menghindari kehabisan memori.
Variabel lingkungan
Agen OpenTelemetry secara otomatis menyuntikkan sekumpulan variabel lingkungan ke dalam aplikasi Anda saat runtime.
Tiga variabel lingkungan pertama mengikuti konfigurasi 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. |
OTEL_RESOURCE_ATTRIBUTES |
Daftar pasangan kunci-nilai yang dipisahkan koma yang menentukan atribut sumber daya yang dilampirkan ke semua data telemetri. Agen terkelola mengisi variabel ini dengan atribut aplikasi kontainer seperti nama dan lingkungan aplikasi. Beberapa implementasi OpenTelemetry SDK mengharuskan Anda untuk secara eksplisit mengaktifkan deteksi sumber daya berbasis lingkungan untuk menggunakan atribut ini. Jika Anda mengatur variabel ini dalam spesifikasi aplikasi kontainer, nilai Anda akan menimpa nilai yang disuntikkan secara otomatis. |
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 akhir untuk data log saja. | 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
Agen OpenTelemetry terkelola berjalan tanpa biaya komputasi tambahan untuk Anda. Microsoft menyediakan dan mengelola infrastruktur agen dalam lingkungan Container Apps Anda.
Namun, Anda bertanggung jawab atas biaya yang diterapkan oleh layanan tujuan tempat Anda mengirim data telemetri. 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.
Alokasi sumber daya agen
Agen OpenTelemetry terkelola disediakan dengan sumber daya tetap berikut:
- CPU: 0,5 core vCPU
- Memori: RAM 1,5 GB
- Replika: Replika tunggal (tidak dapat dikonfigurasi)
Sumber daya ini dikelola oleh Microsoft dan tidak muncul dalam metrik tagihan atau konsumsi sumber daya Anda.
Pembatasan yang diketahui
- Data sistem, seperti log sistem atau metrik standar Container Apps, tidak tersedia untuk dikirim ke agen OpenTelemetry.
- Titik akhir Application Insights tidak menerima metrik.
- Pengaturan konfigurasi berada di tingkat lingkungan. Anda dapat mengirim berbagai jenis data ke tujuan yang berbeda, tetapi Anda tidak dapat membagi data berdasarkan aplikasi. Misalnya, di aplikasi yang sama Anda dapat mengirim metrik ke Datadog, dan melacak ke App Insights.
- Agen terkelola hanya mendukung protokol transportasi gRPC untuk data telemetri.
- Agen OpenTelemetry terkelola berjalan sebagai replika tunggal dan tidak bisa diskalakan atau dikonfigurasi untuk memastikan ketersediaan yang tinggi.
- Status agen dan metrik kesehatan saat ini tidak terekspos di portal Microsoft Azure atau melalui API pemantauan.
- Rahasia (seperti kunci API) harus ditentukan langsung dalam templat - Integrasi Azure Key Vault untuk konfigurasi agen saat ini tidak didukung.
Tanya jawab umum
Apakah saya perlu mereferensikan OpenTelemetry SDK dalam kode saya?
Ya. SDK membuat data telemetri, dan agen terkelola hanya bertanggung jawab untuk merutekan data.
listMengapa perintah mengembalikan null?Saat Anda menjalankan
az containerapp env telemetry otlp list, responsnya adalahnullketika nilainya adalah token sensitif yang membutuhkan perlindungan.Apakah saya dikenakan biaya untuk sumber daya komputasi agen OpenTelemetry?
Tidak. Microsoft menyediakan dan mengelola infrastruktur agen tanpa biaya komputasi tambahan. Anda hanya dikenakan biaya untuk layanan tujuan yang menerima data telemetri Anda.
Dapatkah saya menskalakan agen OpenTelemetry atau menjalankan beberapa replika?
Tidak. Agen terkelola saat ini berjalan sebagai replika tunggal dengan alokasi sumber daya tetap (CPU 0,5, RAM 1,5 GB). Konfigurasi ketersediaan tinggi saat ini tidak didukung.
Bagaimana cara memantau kesehatan dan status agen OpenTelemetry?
Status agen dan metrik kesehatan saat ini tidak terekspos. Kemampuan ini direncanakan untuk rilis mendatang.
Konfigurasi DNS kustom
Pengumpul OpenTelemetry yang dikelola mendukung konfigurasi DNS khusus di dalam lingkungan Aplikasi Kontainer Anda. Jika Anda telah mengonfigurasi pengaturan DNS kustom, pengumpul secara otomatis menggunakan pengaturan tersebut untuk resolusi nama saat menyambungkan ke titik akhir eksternal. Ini memastikan bahwa data OpenTelemetry Anda dirutekan dengan benar melalui infrastruktur jaringan Anda.