مشاركة عبر


جمع بيانات 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

لمزيد من المعلومات، راجع:

إنشاء ملف معلمة لاسترداد مفتاح 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 الصفيف لتحديد العوامل التي يرسل تطبيقك البيانات. المفاتيح الصالحة هي أو appInsightsdataDogأو اسم نقطة نهاية 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 السجلات.

الخطوات التالية