جمع بيانات OpenTelemetry وقراءتها في Azure Container Apps (معاينة)
باستخدام عامل بيانات OpenTelemetry مع بيئة Azure Container Apps، يمكنك اختيار إرسال بيانات إمكانية المراقبة بتنسيق OpenTelemetry من خلال:
نقل البيانات من عامل إلى نقطة نهاية مطلوبة. تتضمن خيارات الوجهة Azure Monitor Application Insights وDatadog وأي نقطة نهاية متوافقة مع بروتوكول OpenTelemetry (OTLP).
تغيير نقاط النهاية الوجهة بسهولة دون الحاجة إلى إعادة تكوين كيفية إرسال البيانات، ودون الحاجة إلى تشغيل عامل OpenTelemetry يدويا.
توضح لك هذه المقالة كيفية إعداد وتكوين عامل OpenTelemetry لتطبيق الحاوية.
تكوين عامل OpenTelemetry
يعيش وكلاء OpenTelemetry داخل بيئة تطبيق الحاوية. يمكنك تكوين إعدادات العامل عبر قالب ARM أو استدعاءات Bicep إلى البيئة، أو من خلال CLI، أو من خلال Terraform (عبر موفر AzAPI).
يحتوي كل نوع نقطة نهاية (Azure Monitor Application Insights وDataDog وOTLP) على متطلبات تكوين محددة.
المتطلبات الأساسية
لا يعني تمكين عامل OpenTelemetry المدار إلى بيئتك تلقائيا أن العامل يجمع البيانات. يرسل الوكلاء البيانات فقط استنادا إلى إعدادات التكوين الخاصة بك ووضع علامة على التعليمات البرمجية الخاصة بك بشكل صحيح.
تكوين التعليمات البرمجية المصدر
قم بإعداد التطبيق الخاص بك لجمع البيانات عن طريق تثبيت OpenTelemetry SDK واتبع إرشادات OpenTelemetry لمقاييس الأجهزة أو السجلات أو التتبعات.
تهيئة نقاط النهاية
قبل أن تتمكن من إرسال البيانات إلى وجهة مجموعة، تحتاج أولا إلى إنشاء مثيل لخدمة الوجهة. على سبيل المثال، إذا كنت تريد إرسال البيانات إلى Azure Monitor Application Insights، فستحتاج إلى إنشاء مثيل Application Insights مسبقا.
يقبل عامل OpenTelemetry المدار الوجهات التالية:
- Azure Monitor Application Insights
- Datadog
- أي نقطة نهاية OTLP (على سبيل المثال: New Relic أو Honeycomb)
يوضح الجدول التالي نوع البيانات التي يمكنك إرسالها إلى كل وجهة:
الوجهة | السجلات | المقاييس | Traces |
---|---|---|---|
Azure App Insights | نعم | لا | نعم |
مربع بيانات | لا | نعم | نعم |
نقطة نهاية مكونة لبروتوكول القياس المفتوح (OTLP) | نعم | نعم | نعم |
Azure Monitor Application Insights
تفاصيل التكوين الوحيدة المطلوبة من Application Insights هي سلسلة الاتصال. بمجرد حصولك على سلسلة الاتصال، يمكنك تكوين العامل عبر قالب ARM لتطبيق الحاوية، باستخدام أوامر Azure CLI أو Terraform.
يحتوي سلسلة الاتصال على مفتاح تقرير عن حالة النظام، وهو معرف فريد يستخدم لربط بيانات تتبع الاستخدام بمورد Application Insights محدد. مفاتيح الأجهزة ليست رموز أمان أو مفاتيح أمان، ولا تعتبر أسرارا.
إذا كنت ترغب في حماية مورد Application Insights الخاص بك من إساءة الاستخدام، فشاهد مصادقة Microsoft Entra ل Application Insights. ومع ذلك، يجب أن يسمح مورد Application Insights للمصادقة المحلية بتلقي البيانات من عامل بيانات OpenTelemetry.
قبل نشر هذا القالب، استبدل <PLACEHOLDERS>
بالقيم الخاصة بك.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
يتطلب تكوين عامل Datadog قيمة لمثيل site
Datadog وإليه key
. اجمع هذه القيم من مثيل Datadog وفقا لهذا الجدول:
خاصية عامل Datadog | خاصية تكوين تطبيقات الحاوية |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
بمجرد أن يكون لديك تفاصيل التكوين هذه، يمكنك تكوين العامل عبر قالب ARM أو Bicep لتطبيق الحاوية أو باستخدام أوامر Azure CLI.
تجنب تحديد قيمة سر، مثل مفتاح Datadog API، مباشرة في بيئة إنتاج. بدلا من ذلك، استخدم مرجعا إلى سر مخزن في Azure Key Vault.
يجب تمكين key vault لنشر القالب. للقيام بذلك، قم بإنشاء مخزن المفاتيح مع تمكين الخاصية enabledForTemplateDeployment
، أو قم بتشغيل أمر Azure CLI التالي، مع <KEY_VAULT_NAME>
استبدال بقيمتك:
az keyvault update --name <KEY_VAULT_NAME> --enabled-for-template-deployment true
لمزيد من المعلومات، راجع:
- استخدام Azure Key Vault لتمرير قيمة معلمة آمنة أثناء التوزيع
- البرنامج التعليمي: دمج Azure Key Vault في توزيع قالب ARM خاصتك
إنشاء ملف معلمة لاسترداد مفتاح Datadog API من Azure Key Vault.
قبل نشر الملفات التالية، استبدل <PLACEHOLDERS>
بالقيم الخاصة بك.
{
"$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>"
}
}
}
}
يمكنك الآن الرجوع إلى المعلمة datadogapikey
في قالب ARM الخاص بك.
{
...
"parameters": {
"datadogapikey": {
"type": "securestring"
}
},
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
لنشر المورد، قم بتشغيل أمر Azure CLI التالي، مع <PLACEHOLDERS>
استبدال بقيمك.
az deployment group create \
--resource-group <RESOURCE_GROUP> \
--template-file <ARM_TEMPLATE_FILE> \
--parameters <PARAMETER_FILE>
نقطة نهاية OTLP
نقطة نهاية بروتوكول القياس المفتوح (OTLP) هي وجهة بيانات تتبع الاستخدام التي تستهلك بيانات OpenTelemetry. في تكوين التطبيق الخاص بك، يمكنك إضافة نقاط نهاية OTLP متعددة. يضيف المثال التالي نقطتي نهاية ويرسل البيانات التالية إلى نقاط النهاية هذه.
اسم نقطة النهاية | البيانات المرسلة إلى نقطة النهاية |
---|---|
oltp1 |
المقاييس و/أو التتبعات |
oltp2 |
السجلات و/أو التتبعات |
بينما يمكنك إعداد العديد من نقاط النهاية المكونة من OTLP كما تريد، يجب أن يكون لكل نقطة نهاية اسم مميز.
{
"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"]
}
}
}
}
Name | الوصف |
---|---|
resource-group |
اسم مجموعة الموارد. يمكنك تكوين المجموعة الافتراضية باستخدام az configure --defaults group=<NAME> . |
name |
اسم بيئة Container Apps. |
otlp-name |
اسم تحدده لتعريف نقطة النهاية المكونة من OTLP. |
endpoint |
عنوان URL للوجهة التي تتلقى البيانات المجمعة. |
insecure |
القيمة الافتراضية true. يحدد ما إذا كان يجب تمكين أمان نقل العميل لاتصال gRPC للمصدر. إذا كانت خاطئة، فإن المعلمة headers مطلوبة. |
headers |
القيم المفصولة بمسافة، بتنسيق "key=value"، التي توفر المعلومات المطلوبة لأمان نقاط نهاية OTLP. مثال:"api-key=key other-config-value=value" . |
تكوين وجهات البيانات
لتكوين عامل، استخدم destinations
الصفيف لتحديد العوامل التي يرسل تطبيقك البيانات. المفاتيح الصالحة هي أو appInsights
dataDog
أو اسم نقطة نهاية OTLP المخصصة. يمكنك التحكم في كيفية تصرف العامل استنادا إلى نوع البيانات والخيارات المتعلقة بنقطة النهاية.
حسب نوع البيانات
خيار | مثال |
---|---|
حدد نوع بيانات. | يمكنك تكوين السجلات والمقاييس و/أو التتبعات بشكل فردي. |
تمكين أو تعطيل أي نوع بيانات. | يمكنك اختيار إرسال التتبعات فقط وعدم وجود بيانات أخرى. |
إرسال نوع بيانات واحد إلى نقاط نهاية متعددة. | يمكنك إرسال سجلات إلى كل من DataDog ونقطة نهاية مكونة من OTLP. |
إرسال أنواع بيانات مختلفة إلى مواقع مختلفة. | يمكنك إرسال تتبعات إلى نقطة نهاية OTLP والمقاييس إلى DataDog. |
تعطيل إرسال جميع أنواع البيانات. | يمكنك اختيار عدم إرسال أي بيانات من خلال عامل OpenTelemetry. |
حسب نقطة النهاية
- يمكنك إعداد نقطة نهاية Application Insights وDatadog واحدة فقط في كل مرة.
- بينما يمكنك تعريف أكثر من نقطة نهاية واحدة مكونة من OTLP، يجب أن يكون لكل نقطة اسم مميز.
يوضح نموذج ARM المثال التالي كيفية استخدام نقطة نهاية OTLP المسماة customDashboard
. يرسل:
- تتبعات إلى رؤى التطبيق و
customDashboard
- سجلات إلى رؤى التطبيق و
customDashboard
- مقاييس إلى DataDog و
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
مثال على تكوين OpenTelemetry
يوضح قالب المثال التالي كيف يمكنك تكوين تطبيق الحاوية الخاص بك لجمع بيانات تتبع الاستخدام باستخدام Azure Monitor Application Insights وDatadog ومع عامل OTLP مخصص يسمى customDashboard
.
يعمل هذا المثال مع ملف المعلمة المستخدم لاسترداد مفتاح Datadog API من Azure Key Vault.
قبل نشر هذا القالب، استبدل <PLACEHOLDERS>
بالقيم الخاصة بك.
{
"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"
]
}
}
}
}
لمزيد من المعلومات، راجع Microsoft.App/managedEnvironments.
متغيرات البيئة
يقوم عامل OpenTelemetry تلقائيا بإدخال مجموعة من متغيرات البيئة في التطبيق الخاص بك في وقت التشغيل.
يتبع المتغيران الأولان للبيئة تكوين مصدر القياس المفتوح القياسي ويستخدمان في مجموعات تطوير البرامج القياسية ل OTLP. إذا قمت بتعيين متغير البيئة بشكل صريح في مواصفات تطبيق الحاوية، فستستبدل القيمة التي تم إدخالها تلقائيا.
تعرف على تكوين مصدر OTLP راجع تكوين مصدر OTLP.
Name | الوصف |
---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
عنوان URL لنقطة النهاية الأساسية لأي نوع إشارة، مع رقم منفذ محدد اختياريا. يعد هذا الإعداد مفيدا عند إرسال أكثر من إشارة واحدة إلى نفس نقطة النهاية وتريد أن يتحكم متغير بيئة واحد في نقطة النهاية. مثال: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
تحديد بروتوكول نقل OTLP المستخدم لكافة بيانات تتبع الاستخدام. يدعم grpc العامل المدار فقط . القيمة: grpc . |
متغيرات البيئة الثلاثة الأخرى خاصة بتطبيقات حاوية Azure، ويتم حقنها دائما. تحتوي هذه المتغيرات على عناوين URL لنقطة نهاية العامل لكل نوع بيانات محدد (السجلات والمقاييس والتتبعات).
هذه المتغيرات ضرورية فقط إذا كنت تستخدم كل من عامل OpenTelemetry المدار وعامل OpenTelemetry آخر. يمنحك استخدام هذه المتغيرات التحكم في كيفية توجيه البيانات بين عوامل OpenTelemetry المختلفة.
Name | الوصف | مثال |
---|---|---|
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT |
عنوان URL لنقطة النهاية لتتبع البيانات فقط. | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
عنوان URL لنقطة النهاية لبيانات السجل فقط. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
عنوان URL لنقطة النهاية لبيانات القياس فقط. | http://otel.service.k8se-apps:43178/v1/metrics/ |
تكاليف عامل القياس عن بعد المفتوح
تتم محاسبتك على الحساب الأساسي للعامل.
راجع الخدمة الوجهة لهيكل الفوترة وشروطها. على سبيل المثال، إذا قمت بإرسال البيانات إلى كل من Azure Monitor Application Insights وDatadog، فأنت مسؤول عن الرسوم التي تطبقها كلتا الخدمتين.
القيود المعروفة
- عوامل OpenTelemetry قيد المعاينة.
- لا تتوفر بيانات النظام، مثل سجلات النظام أو مقاييس Container Apps القياسية، لإرسالها إلى عامل OpenTelemetry.
- لا تقبل نقطة نهاية Application Insights المقاييس.
- لا تقبل نقطة نهاية Datadog السجلات.