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, 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 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 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
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 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 melakukan ini, 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:
- Gunakan 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 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 menyediakan 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
, , dataDog
atau 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 templat ARM 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"
]
}
}
}
}
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.
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.