استخدم إحدى الطرق الثلاث التالية لتكوين سلسلة الاتصال:
أضف UseAzureMonitor() إلى بدء تشغيل التطبيق الخاص بك، في فصلك program.cs الدراسي.
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
options.ConnectionString = "<Your Connection String>";
});
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
إذا قمت بتعيين سلسلة الاتصال في أكثر من مكان واحد، فإننا نلتزم بالأسبقية التالية:
رمز
متغير بيئة
ملف التكوين
استخدم إحدى الطريقتين التاليتين لتكوين سلسلة الاتصال:
أضف مصدر Azure Monitor إلى كل إشارة OpenTelemetry في بدء تشغيل التطبيق.
// Create a new OpenTelemetry tracer provider.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(options =>
{
options.ConnectionString = "<Your Connection String>";
});
// Create a new OpenTelemetry meter provider.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter(options =>
{
options.ConnectionString = "<Your Connection String>";
});
// Create a new logger factory.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddAzureMonitorLogExporter(options =>
{
options.ConnectionString = "<Your Connection String>";
});
});
});
// Import the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions class from the @azure/monitor-opentelemetry package.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
// Create a new AzureMonitorOpenTelemetryOptions object.
const options: AzureMonitorOpenTelemetryOptions = {
azureMonitorExporterOptions: {
connectionString: "<your connection string>"
}
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
استخدم إحدى الطريقتين التاليتين لتكوين سلسلة الاتصال:
# Import the `configure_azure_monitor()` function from the `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor
# Configure OpenTelemetry to use Azure Monitor with the specified connection string.
# Replace `<your-connection-string>` with the connection string of your Azure Monitor Application Insights resource.
configure_azure_monitor(
connection_string="<your-connection-string>",
)
تعيين اسم دور مجموعة النظراء ومثيل دور مجموعة النظراء
بالنسبة للغات المدعومة، يكتشف Azure Monitor OpenTelemetry Distro تلقائيا سياق المورد ويوفر القيم الافتراضية لاسم دور السحابة وخصائص مثيل دور السحابة للمكون الخاص بك. ومع ذلك، قد ترغب في تجاوز القيم الافتراضية إلى شيء منطقي لفريقك. تظهر قيمة اسم دور السحابة على خريطة التطبيق كاسم أسفل عقدة.
قم بتعيين اسم دور السحابة ومثيل دور السحابة عبر سمات المورد . يستخدم اسم دور مجموعة النظراء السمات service.namespace وservice.name، على الرغم من أنه يقع مرة أخرى إلى service.name إذا لم يتم تعيين service.namespace. يستخدم مثيل دور مجموعة النظراء service.instance.id قيمة السمة. للحصول على معلومات حول السمات القياسية للموارد، راجع اصطلاحات القياس الدلالي OpenTelemetry.
// Setting role name and role instance
// Create a dictionary of resource attributes.
var resourceAttributes = new Dictionary<string, object> {
{ "service.name", "my-service" },
{ "service.namespace", "my-namespace" },
{ "service.instance.id", "my-instance" }};
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry()
.UseAzureMonitor()
// Configure the ResourceBuilder to add the custom resource attributes to all signals.
// Custom resource attributes should be added AFTER AzureMonitor to override the default ResourceDetectors.
.ConfigureResource(resourceBuilder => resourceBuilder.AddAttributes(_testResourceAttributes));
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
قم بتعيين اسم دور السحابة ومثيل دور السحابة عبر سمات المورد . يستخدم اسم دور مجموعة النظراء السمات service.namespace وservice.name، على الرغم من أنه يقع مرة أخرى إلى service.name إذا لم يتم تعيين service.namespace. يستخدم مثيل دور مجموعة النظراء service.instance.id قيمة السمة. للحصول على معلومات حول السمات القياسية للموارد، راجع اصطلاحات القياس الدلالي OpenTelemetry.
// Setting role name and role instance
// Create a dictionary of resource attributes.
var resourceAttributes = new Dictionary<string, object> {
{ "service.name", "my-service" },
{ "service.namespace", "my-namespace" },
{ "service.instance.id", "my-instance" }};
// Create a resource builder.
var resourceBuilder = ResourceBuilder.CreateDefault().AddAttributes(resourceAttributes);
// Create a new OpenTelemetry tracer provider and set the resource builder.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
// Set ResourceBuilder on the TracerProvider.
.SetResourceBuilder(resourceBuilder)
.AddAzureMonitorTraceExporter();
// Create a new OpenTelemetry meter provider and set the resource builder.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
// Set ResourceBuilder on the MeterProvider.
.SetResourceBuilder(resourceBuilder)
.AddAzureMonitorMetricExporter();
// Create a new logger factory and add the OpenTelemetry logger provider with the resource builder.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
// Set ResourceBuilder on the Logging config.
options.SetResourceBuilder(resourceBuilder);
options.AddAzureMonitorLogExporter();
});
});
استخدم لتطبيقات الصور الأصلية spring.application.name ل Spring Boot
استخدم لتطبيقات الصور الأصلية quarkus.application.name في Quarkus
قم بتعيين اسم دور السحابة ومثيل دور السحابة عبر سمات المورد . يستخدم اسم دور مجموعة النظراء السمات service.namespace وservice.name، على الرغم من أنه يقع مرة أخرى إلى service.name إذا لم يتم تعيين service.namespace. يستخدم مثيل دور مجموعة النظراء service.instance.id قيمة السمة. للحصول على معلومات حول السمات القياسية للموارد، راجع اصطلاحات القياس الدلالي OpenTelemetry.
// Import the useAzureMonitor function, the AzureMonitorOpenTelemetryOptions class, the Resource class, and the SemanticResourceAttributes class from the @azure/monitor-opentelemetry, @opentelemetry/resources, and @opentelemetry/semantic-conventions packages, respectively.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
const { Resource } = require("@opentelemetry/resources");
const { SemanticResourceAttributes } = require("@opentelemetry/semantic-conventions");
// Create a new Resource object with the following custom resource attributes:
//
// * service_name: my-service
// * service_namespace: my-namespace
// * service_instance_id: my-instance
const customResource = new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "my-service",
[SemanticResourceAttributes.SERVICE_NAMESPACE]: "my-namespace",
[SemanticResourceAttributes.SERVICE_INSTANCE_ID]: "my-instance",
});
// Create a new AzureMonitorOpenTelemetryOptions object and set the resource property to the customResource object.
const options: AzureMonitorOpenTelemetryOptions = {
resource: customResource
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
قم بتعيين اسم دور السحابة ومثيل دور السحابة عبر سمات المورد . يستخدم اسم دور مجموعة النظراء السمات service.namespace وservice.name، على الرغم من أنه يقع مرة أخرى إلى service.name إذا لم يتم تعيين service.namespace. يستخدم مثيل دور مجموعة النظراء service.instance.id قيمة السمة. للحصول على معلومات حول السمات القياسية للموارد، راجع اصطلاحات القياس الدلالي OpenTelemetry.
تعيين سمات الموارد باستخدام OTEL_RESOURCE_ATTRIBUTES و/أو OTEL_SERVICE_NAME متغيرات البيئة. OTEL_RESOURCE_ATTRIBUTES يأخذ سلسلة من أزواج قيم المفاتيح المفصولة بفواصل. على سبيل المثال، لتعيين اسم دور السحابة إلى my-namespace.my-helloworld-service وتعيين مثيل دور السحابة إلى my-instance، يمكنك تعيين OTEL_RESOURCE_ATTRIBUTES وعلى OTEL_SERVICE_NAME هذا النحو:
إذا لم تقم بتعيين سمة service.namespace المورد، يمكنك بدلا من ذلك تعيين اسم دور السحابة مع متغير البيئة OTEL_SERVICE_NAME فقط أو سمة service.name المورد. على سبيل المثال، لتعيين اسم دور السحابة إلى my-helloworld-service وتعيين مثيل دور السحابة إلى my-instance، يمكنك تعيين OTEL_RESOURCE_ATTRIBUTES وعلى OTEL_SERVICE_NAME هذا النحو:
قد ترغب في تمكين أخذ العينات لتقليل حجم استيعاب البيانات، ما يقلل من التكلفة. يوفر Azure Monitor أداة عينة مخصصة ذات معدل ثابت تملأ الأحداث بنسبة أخذ العينات، والتي يحولها Application Insights إلى ItemCount. يضمن أداة أخذ العينات ذات المعدل الثابت تجارب دقيقة وعدد الأحداث. تم تصميم أداة أخذ العينات للحفاظ على آثارك عبر الخدمات، وهي قابلة للتشغيل المتداخل مع مجموعات تطوير برامج Application Insights القديمة (SDKs). لمزيد من المعلومات، راجع معرفة المزيد حول أخذ العينات.
يتوقع العينة معدل عينة يتراوح بين 0 و1 ضمنا. معدل 0.1 يعني أن حوالي 10٪ من آثارك يتم إرسالها.
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
// Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
o.SamplingRatio = 0.1F;
});
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
يتوقع العينة معدل عينة يتراوح بين 0 و1 ضمنا. معدل 0.1 يعني أن حوالي 10٪ من آثارك يتم إرسالها.
// Create a new OpenTelemetry tracer provider.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(options =>
{
// Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
options.SamplingRatio = 0.1F;
});
بدءا من 3.4.0، يتوفر أخذ العينات محدودة المعدل وهو الآن الافتراضي. لمزيد من المعلومات حول أخذ العينات، راجع أخذ عينات Java.
بالنسبة لتطبيقات Spring Boot الأصلية، تنطبق تكوينات أخذ العينات ل OpenTelemetry Java SDK.
بالنسبة لتطبيقات Quarkus الأصلية، يرجى إلقاء نظرة على وثائق Quarkus OpenTelemetry.
يتوقع العينة معدل عينة يتراوح بين 0 و1 ضمنا. معدل 0.1 يعني أن حوالي 10٪ من آثارك يتم إرسالها.
// Import the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions class from the @azure/monitor-opentelemetry package.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
// Create a new AzureMonitorOpenTelemetryOptions object and set the samplingRatio property to 0.1.
const options: AzureMonitorOpenTelemetryOptions = {
samplingRatio: 0.1
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
configure_azure_monitor() تستخدم الدالة تلقائيا ApplicationInsightsSampler للتوافق مع Application Insights SDKs ولعينة بيانات تتبع الاستخدام الخاصة بك. OTEL_TRACES_SAMPLER_ARG يمكن استخدام متغير البيئة لتحديد معدل أخذ العينات، مع نطاق صالح من 0 إلى 1، حيث 0 هو 0٪ و1 هو 100٪.
على سبيل المثال، تعني قيمة 0.1 أن 10٪ من آثارك يتم إرسالها.
export OTEL_TRACES_SAMPLER_ARG=0.1
تلميح
عند استخدام أخذ العينات بمعدل ثابت/النسبة المئوية ولست متأكدا مما يجب تعيين معدل أخذ العينات عليه، ابدأ من 5٪ (أي نسبة أخذ العينات 0.05) وضبط المعدل بناء على دقة العمليات الموضحة في أجزاء الفشل والأداء. ينتج عن ارتفاع المعدل بشكل عام دقة أعلى. ومع ذلك، فإن أي أخذ عينات سيؤثر على الدقة لذلك نوصي بالتنبيه على مقاييس القياس المفتوح، والتي لا تتأثر بأخذ العينات.
المقاييس الحية
توفر المقاييس المباشرة لوحة معلومات تحليلات في الوقت الحقيقي للحصول على نظرة ثاقبة حول نشاط التطبيق وأدائه.
للحصول على الشروط القانونية التي تنطبق على ميزات Azure الموجودة في الإصدار التجريبي، أو المعاينة، أو التي لم يتم إصدارها بعد في التوفر العام، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
يتم تمكين هذه الميزة بشكل افتراضي.
يمكن للمستخدمين تعطيل Live Metrics عند تكوين Distro.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
// Disable the Live Metrics feature.
options.EnableLiveMetrics = false;
});
هذه الميزة غير متوفرة في Azure Monitor .NET Exporter.
لا تتوفر المقاييس المباشرة اليوم لتطبيقات GraalVM الأصلية.
هام
للحصول على الشروط القانونية التي تنطبق على ميزات Azure الموجودة في الإصدار التجريبي، أو المعاينة، أو التي لم يتم إصدارها بعد في التوفر العام، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
يمكن للمستخدمين تمكين/تعطيل Live Metrics عند تكوين Distro باستخدام الخاصية enableLiveMetrics .
للحصول على الشروط القانونية التي تنطبق على ميزات Azure الموجودة في الإصدار التجريبي، أو المعاينة، أو التي لم يتم إصدارها بعد في التوفر العام، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
يمكنك تمكين المقاييس المباشرة باستخدام Azure monitor OpenTelemetry Distro ل Python كما يلي:
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
// Set the Azure Monitor credential to the DefaultAzureCredential.
// This credential will use the Azure identity of the current user or
// the service principal that the application is running as to authenticate
// to Azure Monitor.
options.Credential = new DefaultAzureCredential();
});
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
نحن ندعم فئات بيانات الاعتماد التي توفرها Azure Identity.
نوصي DefaultAzureCredential بالتطوير المحلي.
نوصي بالهويات ManagedIdentityCredential المدارة المعينة من قبل النظام والمخصصة من قبل المستخدم.
بالنسبة إلى النظام المعين، استخدم المنشئ الافتراضي بدون معلمات.
بالنسبة إلى المعين من قبل المستخدم، قم بتوفير معرف العميل إلى الدالة الإنشائية.
// Create a DefaultAzureCredential.
var credential = new DefaultAzureCredential();
// Create a new OpenTelemetry tracer provider and set the credential.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(options =>
{
options.Credential = credential;
});
// Create a new OpenTelemetry meter provider and set the credential.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter(options =>
{
options.Credential = credential;
});
// Create a new logger factory and add the OpenTelemetry logger provider with the credential.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddAzureMonitorLogExporter(options =>
{
options.Credential = credential;
});
});
});
لا تتوفر مصادقة معرف Microsoft Entra لتطبيقات GraalVM الأصلية.
نحن ندعم فئات بيانات الاعتماد التي توفرها Azure Identity.
// Import the useAzureMonitor function, the AzureMonitorOpenTelemetryOptions class, and the ManagedIdentityCredential class from the @azure/monitor-opentelemetry and @azure/identity packages, respectively.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
const { ManagedIdentityCredential } = require("@azure/identity");
// Create a new ManagedIdentityCredential object.
const credential = new ManagedIdentityCredential();
// Create a new AzureMonitorOpenTelemetryOptions object and set the credential property to the credential object.
const options: AzureMonitorOpenTelemetryOptions = {
azureMonitorExporterOptions: {
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
credential: credential
}
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
# Import the `ManagedIdentityCredential` class from the `azure.identity` package.
from azure.identity import ManagedIdentityCredential
# Import the `configure_azure_monitor()` function from the `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor
# Configure OpenTelemetry to use Azure Monitor with a managed identity credential.
# This will allow OpenTelemetry to authenticate to Azure Monitor without requiring you to provide a connection string.
configure_azure_monitor(
credential=ManagedIdentityCredential(),
)
التخزين غير المتصل وإعادة المحاولة التلقائية
لتحسين الموثوقية والمرونة، تكتب العروض المستندة إلى Azure Monitor OpenTelemetry إلى التخزين غير المتصل/المحلي بشكل افتراضي عندما يفقد أحد التطبيقات اتصاله ب Application Insights. يقوم بحفظ بيانات تتبع الاستخدام للتطبيق على القرص ويحاول إرساله مرة أخرى بشكل دوري لمدة تصل إلى 48 ساعة. في التطبيقات عالية التحميل، يتم إسقاط بيانات تتبع الاستخدام أحيانا لسببين. أولا، عند تجاوز الوقت المسموح به، وثانيا، عند تجاوز الحد الأقصى لحجم الملف أو عندما لا يكون لدى SDK فرصة لمسح الملف. إذا كنا بحاجة إلى الاختيار، فإن المنتج يحفظ الأحداث الأحدث على الأحداث القديمة. معرفة المزيد
تتضمن حزمة Distro AzureMonitorExporter، الذي يستخدم بشكل افتراضي أحد المواقع التالية للتخزين دون اتصال (مدرج بترتيب الأسبقية):
Windows
٪LOCALAPPDATA٪\Microsoft\AzureMonitor
٪TEMP٪\Microsoft\AzureMonitor
غير Windows
٪TMPDIR٪/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
لتجاوز الدليل الافتراضي، يجب عليك تعيين AzureMonitorOptions.StorageDirectory.
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options =>
{
// Set the Azure Monitor storage directory to "C:\\SomeDirectory".
// This is the directory where the OpenTelemetry SDK will store any telemetry data that cannot be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
لتعطيل هذه الميزة، يجب تعيين AzureMonitorOptions.DisableOfflineStorage = true.
بشكل افتراضي، يستخدم AzureMonitorExporter أحد المواقع التالية للتخزين دون اتصال (مدرج بترتيب الأسبقية):
Windows
٪LOCALAPPDATA٪\Microsoft\AzureMonitor
٪TEMP٪\Microsoft\AzureMonitor
غير Windows
٪TMPDIR٪/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
لتجاوز الدليل الافتراضي، يجب عليك تعيين AzureMonitorExporterOptions.StorageDirectory.
// Create a new OpenTelemetry tracer provider and set the storage directory.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(options =>
{
// Set the Azure Monitor storage directory to "C:\\SomeDirectory".
// This is the directory where the OpenTelemetry SDK will store any trace data that cannot be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
// Create a new OpenTelemetry meter provider and set the storage directory.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter(options =>
{
// Set the Azure Monitor storage directory to "C:\\SomeDirectory".
// This is the directory where the OpenTelemetry SDK will store any metric data that cannot be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
// Create a new logger factory and add the OpenTelemetry logger provider with the storage directory.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddAzureMonitorLogExporter(options =>
{
// Set the Azure Monitor storage directory to "C:\\SomeDirectory".
// This is the directory where the OpenTelemetry SDK will store any log data that cannot be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
});
});
لتعطيل هذه الميزة، يجب تعيين AzureMonitorExporterOptions.DisableOfflineStorage = true.
لا يتوفر تكوين التخزين دون اتصال وإعادة المحاولة التلقائية في Java.
للحصول على قائمة كاملة بالتكوينات المتوفرة، راجع خيارات التكوين.
لا يتوفر تكوين التخزين دون اتصال وإعادة المحاولة التلقائية في تطبيقات الصور الأصلية ل Java.
بشكل افتراضي، يستخدم AzureMonitorExporter أحد المواقع التالية للتخزين دون اتصال.
Windows
٪TEMP٪\Microsoft\AzureMonitor
غير Windows
٪TMPDIR٪/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
لتجاوز الدليل الافتراضي، يجب عليك تعيين storageDirectory.
على سبيل المثال:
// Import the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions class from the @azure/monitor-opentelemetry package.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
// Create a new AzureMonitorOpenTelemetryOptions object and set the azureMonitorExporterOptions property to an object with the following properties:
//
// * connectionString: The connection string for your Azure Monitor Application Insights resource.
// * storageDirectory: The directory where the Azure Monitor OpenTelemetry exporter will store telemetry data when it is offline.
// * disableOfflineStorage: A boolean value that specifies whether to disable offline storage.
const options: AzureMonitorOpenTelemetryOptions = {
azureMonitorExporterOptions: {
connectionString: "<Your Connection String>",
storageDirectory: "C:\\SomeDirectory",
disableOfflineStorage: false
}
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
لتعطيل هذه الميزة، يجب تعيين disableOfflineStorage = true.
بشكل افتراضي، يستخدم مصدرو Azure Monitor المسار التالي:
لتجاوز الدليل الافتراضي، يجب تعيين storage_directory إلى الدليل الذي تريده.
على سبيل المثال:
...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and storage directory.
# Replace `your-connection-string` with the connection string to your Azure Monitor Application Insights resource.
# Replace `C:\\SomeDirectory` with the directory where you want to store the telemetry data before it is sent to Azure Monitor.
configure_azure_monitor(
connection_string="your-connection-string",
storage_directory="C:\\SomeDirectory",
)
...
لتعطيل هذه الميزة، يجب تعيين disable_offline_storage إلى True. الإعدادات الافتراضية لـ False.
على سبيل المثال:
...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and disable offline storage.
# Replace `your-connection-string` with the connection string to your Azure Monitor Application Insights resource.
configure_azure_monitor(
connection_string="your-connection-string",
disable_offline_storage=True,
)
...
تمكين مصدر OTLP
قد ترغب في تمكين مصدر بروتوكول القياس المفتوح (OTLP) جنبا إلى جنب مع مصدر Azure Monitor لإرسال بيانات تتبع الاستخدام إلى موقعين.
إشعار
يتم عرض مصدر OTLP للراحة فقط. نحن لا ندعم رسميًا المصدر OTLP أو أي مكونات أو تجارب طرف ثالث في المصب منه.
أضف جزء التعليمة البرمجية المكررة التالي. يفترض هذا المثال أن لديك جامع OpenTelemetry مع جهاز استقبال OTLP قيد التشغيل. للحصول على التفاصيل، راجع المثال على GitHub.
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();
// Add the OpenTelemetry OTLP exporter to the application.
// This exporter will send telemetry data to an OTLP receiver, such as Prometheus
builder.Services.AddOpenTelemetry().WithTracing(builder => builder.AddOtlpExporter());
builder.Services.AddOpenTelemetry().WithMetrics(builder => builder.AddOtlpExporter());
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
أضف جزء التعليمة البرمجية المكررة التالي. يفترض هذا المثال أن لديك جامع OpenTelemetry مع جهاز استقبال OTLP قيد التشغيل. للحصول على التفاصيل، راجع المثال على GitHub.
// Create a new OpenTelemetry tracer provider and add the Azure Monitor trace exporter and the OTLP trace exporter.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter()
.AddOtlpExporter();
// Create a new OpenTelemetry meter provider and add the Azure Monitor metric exporter and the OTLP metric exporter.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter()
.AddOtlpExporter();
أضف جزء التعليمة البرمجية المكررة التالي. يفترض هذا المثال أن لديك جامع OpenTelemetry مع جهاز استقبال OTLP قيد التشغيل. للحصول على التفاصيل، راجع المثال على GitHub.
// Import the useAzureMonitor function, the AzureMonitorOpenTelemetryOptions class, the trace module, the ProxyTracerProvider class, the BatchSpanProcessor class, the NodeTracerProvider class, and the OTLPTraceExporter class from the @azure/monitor-opentelemetry, @opentelemetry/api, @opentelemetry/sdk-trace-base, @opentelemetry/sdk-trace-node, and @opentelemetry/exporter-trace-otlp-http packages, respectively.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
const { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
// Create a new OTLPTraceExporter object.
const otlpExporter = new OTLPTraceExporter();
// Enable Azure Monitor integration.
const options: AzureMonitorOpenTelemetryOptions = {
// Add the SpanEnrichingProcessor
spanProcessors: [new BatchSpanProcessor(otlpExporter)]
}
useAzureMonitor(options);
أضف جزء التعليمة البرمجية المكررة التالي. يفترض هذا المثال أن لديك جامع OpenTelemetry مع جهاز استقبال OTLP قيد التشغيل. للحصول على التفاصيل، راجع README هذا.
# Import the `configure_azure_monitor()`, `trace`, `OTLPSpanExporter`, and `BatchSpanProcessor` classes from the appropriate packages.
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace.export import BatchSpanProcessor
# Configure OpenTelemetry to use Azure Monitor with the specified connection string.
# Replace `<your-connection-string>` with the connection string to your Azure Monitor Application Insights resource.
configure_azure_monitor(
connection_string="<your-connection-string>",
)
# Get the tracer for the current module.
tracer = trace.get_tracer(__name__)
# Create an OTLP span exporter that sends spans to the specified endpoint.
# Replace `http://localhost:4317` with the endpoint of your OTLP collector.
otlp_exporter = OTLPSpanExporter(endpoint="http://localhost:4317")
# Create a batch span processor that uses the OTLP span exporter.
span_processor = BatchSpanProcessor(otlp_exporter)
# Add the batch span processor to the tracer provider.
trace.get_tracer_provider().add_span_processor(span_processor)
# Start a new span with the name "test".
with tracer.start_as_current_span("test"):
print("Hello world!")
تكوينات OpenTelemetry
يمكن الوصول إلى تكوينات OpenTelemetry التالية من خلال متغيرات البيئة أثناء استخدام Azure Monitor OpenTelemetry Distros.
قم بتعيينه إلى سلسلة الاتصال لمورد Application Insights الخاص بك.
بالنسبة لتطبيقات Spring Boot الأصلية ، تتوفر تكوينات OpenTelemetry Java SDK.
بالنسبة لتطبيقات Quarkus الأصلية، يرجى إلقاء نظرة على وثائق Quarkus OpenTelemetry.
لمزيد من المعلومات حول تكوين OpenTelemetry SDK، راجع وثائق OpenTelemetry.
لمزيد من المعلومات حول تكوين OpenTelemetry SDK، راجع وثائق OpenTelemetry واستخدام Distro لمراقبة Azure.
الأسئلة الشائعة
يقدم هذا القسم إجابات للأسئلة الشائعة.
ما هو OpenTelemetry؟
إنه معيار مفتوح المصدر جديد لقابلية الملاحظة. تعرف على المزيد في OpenTelemetry.
لماذا تستثمر Microsoft Azure Monitor في OpenTelemetry؟
Microsoft هي من بين أكبر المساهمين في القياس المفتوح.
تتمثل اقتراحات القيم الرئيسية لـ OpenTelemetry في أنها محايدة من قبل المورد وتوفر واجهات برمجة تطبيقات/SDK ثابتة عبر اللغات.
مع مرور الوقت، نعتقد أن OpenTelemetry سيمكن عملاء Azure Monitor من مراقبة التطبيقات المكتوبة بلغات تتجاوز لغاتنا المدعومة. كما أنه يوسع أنواع البيانات التي يمكنك جمعها من خلال مجموعة غنية من مكتبات الأجهزة. علاوة على ذلك، تميل مجموعات تطوير برامج OpenTelemetry (SDKs) إلى أن تكون أكثر أداء على نطاق واسع من أسلافها، وهي Application Insights SDKs.
يمكنك التفكير في الأمر على أنه برنامج تضمين رفيع يجمع معا جميع مكونات OpenTelemetry للحصول على تجربة من الدرجة الأولى على Azure. يسمى هذا التضمين أيضا التوزيع في OpenTelemetry.
لماذا يجب استخدام "Azure Monitor OpenTelemetry Distro"؟
هناك العديد من المزايا لاستخدام Azure Monitor OpenTelemetry Distro على OpenTelemetry الأصلي من المجتمع:
تقليل جهد التمكين
مدعوم من قبل Microsoft
يجلب ميزات خاصة ب Azure مثل:
أخذ العينات المتوافق مع Application Insights SDKs الكلاسيكي
بروح OpenTelemetry، صممنا توزيعة لتكون مفتوحة وقابلة للتوسعة. على سبيل المثال، يمكنك إضافة:
مصدر بروتوكول القياس المفتوح (OTLP) وإرساله إلى وجهة ثانية في وقت واحد
مكتبات الأجهزة الأخرى غير المضمنة في توزيعة الأجهزة
نظرا لأن Distro يوفر توزيع OpenTelemetry، يدعم Distro أي شيء يدعمه OpenTelemetry. على سبيل المثال، يمكنك إضافة المزيد من معالجات بيانات تتبع الاستخدام أو المصدرين أو مكتبات الأجهزة، إذا كان OpenTelemetry يدعمها.
إشعار
يقوم Distro بتعيين العينة إلى عينة مخصصة ذات معدل ثابت ل Application Insights. يمكنك تغيير هذا إلى عينة مختلفة، ولكن القيام بذلك قد يعطل بعض القدرات المضمنة في Distro.
لمزيد من المعلومات حول أداة أخذ العينات المدعومة، راجع قسم تمكين أخذ العينات في تكوين القياس المفتوح ل Azure Monitor.
بالنسبة للغات التي لا تحتوي على مصدر OpenTelemetry مستقل معتمد، فإن Azure Monitor OpenTelemetry Distro هو الطريقة الوحيدة المدعومة حاليا لاستخدام OpenTelemetry مع Azure Monitor. بالنسبة للغات التي لديها مصدر OpenTelemetry مستقل معتمد، لديك خيار استخدام إما Azure Monitor OpenTelemetry Distro أو مصدر OpenTelemetry المستقل المناسب اعتمادا على سيناريو القياس عن بعد. لمزيد من المعلومات، راجع متى يجب استخدام مصدر Azure Monitor OpenTelemetry؟.
كيف يمكنني اختبار Azure Monitor OpenTelemetry Distro؟
يؤدي اعتماد OpenTelemetry الآن إلى منع الاضطرار إلى الترحيل في وقت لاحق.
متى يجب استخدام مصدر Azure Monitor OpenTelemetry؟
بالنسبة إلى ASP.NET Core وJava Node.js وPython، نوصي باستخدام Azure Monitor OpenTelemetry Distro. إنه سطر واحد من التعليمات البرمجية للبدء.
بالنسبة لجميع سيناريوهات .NET الأخرى، بما في ذلك ASP.NET الكلاسيكية وتطبيقات وحدة التحكم وWindows Forms (WinForms) وما إلى ذلك، نوصي باستخدام مصدر .NET Azure Monitor OpenTelemetry: Azure.Monitor.OpenTelemetry.Exporter.
بالنسبة لسيناريوهات بيانات تتبع الاستخدام Python الأكثر تعقيدا التي تتطلب تكوينا متقدما، نوصي باستخدام مصدر بيانات تتبع الاستخدام المفتوح ل Python Azure Monitor.
ما هي حالة الإصدار الحالية للميزات داخل Azure Monitor OpenTelemetry Distro؟
يقسم المخطط التالي دعم ميزة OpenTelemetry لكل لغة.
نعم، لكننا لا نوصي به ولا يدعمه Azure. تم تحسين OpenTelemetry JavaScript بشكل كبير Node.js. بدلا من ذلك، نوصي باستخدام Application Insights JavaScript SDK.
متى يمكننا توقع توفر OpenTelemetry SDK للاستخدام في مستعرضات الويب؟
لا يحتوي OpenTelemetry web SDK على مخطط زمني محدد للتوفر. من المحتمل أن نكون على بعد عدة سنوات من متصفح SDK الذي يعد بديلا قابلا للتطبيق Insights JavaScript SDK.
هل يمكنني اختبار OpenTelemetry في مستعرض ويب اليوم؟
تعد بيئة الاختبار المعزولة للويب OpenTelemetry نسخة المستودع المصممة لجعل OpenTelemetry تعمل في مستعرض. لا يمكن بعد إرسال بيانات تتبع الاستخدام إلى Application Insights. لا تحدد SDK أحداث العميل العامة.
هل يتم دعم تشغيل Application Insights جنبا إلى جنب مع وكلاء منافسين مثل AppDynamics وDataDog و NewRelic؟
هذه الممارسة ليست شيئا نخطط لاختباره أو دعمه، على الرغم من أن Distros الخاصة بنا تسمح لك بالتصدير إلى نقطة نهاية OTLP جنبا إلى جنب مع Azure Monitor في وقت واحد.
هل يمكنني استخدام ميزات المعاينة في بيئات الإنتاج؟
يستخدم بعض العملاء OpenTelemetry Collector كبديل للعامل، على الرغم من أن Microsoft لا تدعم رسميا نهجا يستند إلى عامل لمراقبة التطبيق حتى الآن. في هذه الأثناء، ساهم مجتمع المصدر المفتوح بمصدر OpenTelemetry Collector Azure Monitor الذي يستخدمه بعض العملاء لإرسال البيانات إلى Azure Monitor Application Insights. هذا غير معتمد من قبل Microsoft.
ما الفرق بين OpenCensus وOpenTelemetry؟
OpenCensus هو مقدمة OpenTelemetry. ساعدت Microsoft في الجمع بين OpenTracing وOpenCensus لإنشاء OpenTelemetry، وهو معيار واحد للمراقبة للعالم. تستند Python SDK الحالية الموصى بها للإنتاج ل Azure Monitor إلى OpenCensus. تلتزم Microsoft بإجراء Azure Monitor استنادا إلى OpenTelemetry.
في Grafana، لماذا أرى Status: 500. Can't visualize trace events using the trace visualizer؟
قد تحاول تصور سجلات النص الخام بدلا من تتبعات OpenTelemetry.
في Application Insights، يخزن جدول "Traces" سجلات النصوص الأولية لأغراض التشخيص. وهي تساعد في تحديد التتبعات المرتبطة بطلبات المستخدم والأحداث الأخرى وتقارير الاستثناءات وربطها. ومع ذلك، لا يساهم جدول "التتبعات" مباشرة في عرض المعاملة الشاملة (المخطط الانحداري) في أدوات التصور مثل Grafana.
مع الاعتماد المتزايد للممارسات السحابية الأصلية، هناك تطور في جمع المصطلحات وبيانات تتبع الاستخدام. أصبح OpenTelemetry معيارا لجمع بيانات تتبع الاستخدام ووضع الأجهزة لها. في هذا السياق، اتخذ مصطلح "التتبعات" معنى جديدا. بدلا من السجلات الأولية، تشير "التتبعات" في OpenTelemetry إلى شكل أغنى ومنظم لبيانات تتبع الاستخدام يتضمن امتدادات، والتي تمثل وحدات عمل فردية. هذه الامتدادات ضرورية لإنشاء طرق عرض مفصلة للمعاملات، ما يتيح مراقبة وتشخيص أفضل للتطبيقات الأصلية على السحابة.
يستخدم مصدر Azure Monitor EventSource لتسجيل الدخول الداخلي الخاص به. تتوفر سجلات المصدر لأي EventListener عن طريق الاشتراك في المصدر المسمى OpenTelemetry-AzureMonitor-Exporter. للحصول على خطوات استكشاف الأخطاء وإصلاحها، راجع استكشاف أخطاء OpenTelemetry وإصلاحها على GitHub.
الخطوة 2: اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب
ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST في نقاط نهاية الاستيعاب لدينا. لاختبار الاتصال من خادم الويب أو الكمبيوتر المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب، استخدم أوامر cURL أو طلبات REST الأولية من PowerShell. لمزيد من المعلومات، راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.
المشكلات المعروفة
العناصر التالية هي مشكلات معروفة لمصدري القياس المفتوح ل Azure Monitor:
اسم العملية مفقود من القياس عن بعد للتبعية. يتسبب اسم العملية المفقود في حدوث حالات فشل ويؤثر سلبا على تجربة علامة تبويب الأداء.
نموذج الجهاز مفقود من بيانات تتبع الاستخدام للطلب والتبعية. يؤثر نموذج الجهاز المفقود سلبا على تحليل مجموعة الأجهزة.
الخطوة 1: تمكين التسجيل التشخيصي
يستخدم مصدر Azure Monitor EventSource لتسجيل الدخول الداخلي الخاص به. تتوفر سجلات المصدر لأي EventListener عن طريق الاشتراك في المصدر المسمى OpenTelemetry-AzureMonitor-Exporter. للحصول على خطوات استكشاف الأخطاء وإصلاحها، راجع استكشاف أخطاء OpenTelemetry وإصلاحها على GitHub.
الخطوة 2: اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب
ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST في نقاط نهاية الاستيعاب لدينا. لاختبار الاتصال من خادم الويب أو الكمبيوتر المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب، استخدم أوامر cURL أو طلبات REST الأولية من PowerShell. لمزيد من المعلومات، راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.
المشكلات المعروفة
العناصر التالية هي مشكلات معروفة لمصدري القياس المفتوح ل Azure Monitor:
اسم العملية مفقود من القياس عن بعد للتبعية. يتسبب اسم العملية المفقود في حدوث حالات فشل ويؤثر سلبا على تجربة علامة تبويب الأداء.
نموذج الجهاز مفقود من بيانات تتبع الاستخدام للطلب والتبعية. يؤثر نموذج الجهاز المفقود سلبا على تحليل مجموعة الأجهزة.
الخطوة 2: اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب
ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST في نقاط نهاية الاستيعاب لدينا. لاختبار الاتصال من خادم الويب أو الكمبيوتر المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب، استخدم أوامر cURL أو طلبات REST الأولية من PowerShell. لمزيد من المعلومات، راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.
المشكلات المعروفة
إذا قمت بتنزيل مكتبة عميل Application Insights للتثبيت من مستعرض، في بعض الأحيان يكون ملف JAR الذي تم تنزيله تالفة وهو حوالي نصف حجم الملف المصدر. إذا واجهت هذه المشكلة، فبادر بتنزيل ملف JAR عن طريق تشغيل الأمر curl أو wget ، كما هو موضح في مثال استدعاءات الأوامر التالية:
تنطبق الخطوات التالية على تطبيقات Spring Boot الأصلية.
الخطوة 1: تحقق من إصدار OpenTelemetry
قد تلاحظ الرسالة التالية أثناء بدء تشغيل التطبيق:
WARN c.a.m.a.s.OpenTelemetryVersionCheckRunner - The OpenTelemetry version is not compatible with the spring-cloud-azure-starter-monitor dependency.
The OpenTelemetry version should be <version>
في هذه الحالة، يجب عليك استيراد فواتير المواد OpenTelemetry باتباع وثائق OpenTelemetry في بداية Spring Boot.
الخطوة 2: تمكين التشخيص الذاتي
إذا لم يعمل شيء ما كما هو متوقع، يمكنك تمكين التشخيص الذاتي على DEBUG المستوى للحصول على بعض الرؤى. للقيام بذلك، قم بتعيين مستوى التشخيص الذاتي إلى ERRORأو DEBUGTRACEWARNINFOباستخدام APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL متغير البيئة.
لتمكين التشخيص الذاتي على DEBUG المستوى عند تشغيل حاوية docker، قم بتشغيل الأمر التالي:
docker run -e APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL=DEBUG <image-name>
إشعار
استبدل <image-name> باسم صورة docker وفقا لذلك.
إخلاء المسؤولية عن معلومات الجهات الخارجية
يتم تصنيع منتجات الجهات الخارجية التي تتناولها هذه المقالة من قبل شركات مستقلة عن Microsoft. لا تقدم Microsoft أي ضمان، ضمنيًا أو غير ذلك، حول أداء هذه المنتجات أو موثوقيتها.
الخطوة 1: تمكين التسجيل التشخيصي
يستخدم مصدر Azure Monitor مسجل OpenTelemetry API للسجلات الداخلية. لتمكين المسجل، قم بتشغيل القصاصة البرمجية التالية:
الخطوة 2: اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب
ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST في نقاط نهاية الاستيعاب لدينا. لاختبار الاتصال من خادم الويب أو الكمبيوتر المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب، استخدم أوامر cURL أو طلبات REST الأولية من PowerShell. لمزيد من المعلومات، راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.
المشكلات المعروفة
العناصر التالية هي مشكلات معروفة لمصدري القياس المفتوح ل Azure Monitor:
اسم العملية مفقود من القياس عن بعد للتبعية. يتسبب اسم العملية المفقود في حدوث حالات فشل ويؤثر سلبا على تجربة علامة تبويب الأداء.
نموذج الجهاز مفقود من بيانات تتبع الاستخدام للطلب والتبعية. يؤثر نموذج الجهاز المفقود سلبا على تحليل مجموعة الأجهزة.
اسم خادم قاعدة البيانات مفقود من اسم التبعية. نظرا لعدم تضمين اسم خادم قاعدة البيانات، يقوم مصدرو OpenTelemetry بتجميع الجداول التي لها نفس الاسم بشكل غير صحيح على خوادم مختلفة.
الخطوة 1: تمكين التسجيل التشخيصي
يستخدم مصدر مراقبة Microsoft Azure مكتبة تسجيل Python القياسية للتسجيل الداخلي الخاص به. يتم تعيين OpenTelemetry API وسجلات مصدر Azure Monitor مستوى WARNING خطورة أو ERROR للنشاط غير المنتظم. INFO يتم استخدام مستوى الخطورة للنشاط العادي أو الناجح.
بشكل افتراضي، تعين مكتبة تسجيل Python مستوى الخطورة إلى WARNING. لذلك، يجب تغيير مستوى الخطورة لمشاهدة السجلات ضمن إعداد الخطورة هذا. يوضح مثال التعليمات البرمجية التالي كيفية إخراج سجلات من جميع مستويات الخطورة إلى وحدة التحكم وملف:
الخطوة 2: اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب
ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST في نقاط نهاية الاستيعاب لدينا. لاختبار الاتصال من خادم الويب أو الكمبيوتر المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب، استخدم أوامر cURL أو طلبات REST الأولية من PowerShell. لمزيد من المعلومات، راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.
الخطوة 3: تجنب بيانات تتبع الاستخدام المكررة
غالبا ما يحدث تكرار القياس عن بعد إذا قمت بإنشاء مثيلات متعددة من المعالجات أو المصدرين. تأكد من تشغيل مصدر ومعالج واحد فقط في كل مرة لكل عمود بيانات تتبع الاستخدام (السجلات والمقاييس والتتبع الموزع).
تصف الأقسام التالية السيناريوهات التي يمكن أن تسبب بيانات تتبع الاستخدام المكررة.
سجلات التتبع المكررة في Azure Functions
إذا رأيت زوجا من الإدخالات لكل سجل تتبع داخل Application Insights، فربما قمت بتمكين الأنواع التالية من أدوات التسجيل:
أدوات التسجيل الأصلية في Azure Functions
azure-monitor-opentelemetry أدوات التسجيل داخل التوزيع
لمنع التكرار، يمكنك تعطيل تسجيل التوزيع، ولكن اترك أدوات التسجيل الأصلية في Azure Functions ممكنة. للقيام بذلك، قم بتعيين OTEL_LOGS_EXPORTER متغير البيئة إلى None.
بيانات تتبع الاستخدام المكررة في وظائف Azure "Always On"
إذا تم تعيين الإعداد Always On في Azure Functions إلى On، فإن Azure Functions تحتفظ ببعض العمليات قيد التشغيل في الخلفية بعد اكتمال كل تشغيل. على سبيل المثال، افترض أن لديك دالة مؤقت مدتها خمس دقائق تستدعي configure_azure_monitor في كل مرة. بعد 20 دقيقة، قد يكون لديك أربعة مصدرين متريين يعملون في نفس الوقت. قد يكون هذا الموقف مصدر القياس عن بعد للمقاييس المكررة.
في هذه الحالة، قم إما بتعيين الإعداد Always On إلى Off، أو حاول إيقاف تشغيل الموفرين يدويا بين كل configure_azure_monitor مكالمة. لإيقاف تشغيل كل موفر، قم بتشغيل استدعاءات إيقاف التشغيل لكل مقياس وتتبع وموفر مسجل حالي، كما هو موضح في التعليمات البرمجية التالية:
قد تحافظ مصنفات Azure ودفاتر ملاحظات Jupyter على تشغيل عمليات المصدر في الخلفية. لمنع بيانات تتبع الاستخدام المكررة، قم بإلغاء تحديد ذاكرة التخزين المؤقت قبل إجراء المزيد من الاستدعاءات إلى configure_azure_monitor.
الخطوة 4: تأكد من جمع بيانات طلب Flask
إذا قمت بتنفيذ تطبيق Flask، فقد تجد أنه لا يمكنك جمع بيانات جدول الطلبات من Application Insights أثناء استخدام مكتبة عميل Azure Monitor OpenTelemetry Distro ل Python. قد تحدث هذه المشكلة إذا لم تقم بتركيب إعلاناتك import بشكل صحيح. قد تقوم باستيراد flask.Flask إطار عمل تطبيق الويب قبل استدعاء الدالة configure_azure_monitor لوضع علامة على مكتبة Flask. على سبيل المثال، لا تقوم التعليمات البرمجية التالية بأداة تطبيق Flask بنجاح:
from azure.monitor.opentelemetry import configure_azure_monitor
from flask import Flask
configure_azure_monitor()
app = Flask(__name__)
بدلا من ذلك، نوصي باستيراد flask الوحدة النمطية ككل، ثم استدعاء configure_azure_monitor لتكوين OpenTelemetry لاستخدام Azure Monitor قبل الوصول إلى flask.Flask:
from azure.monitor.opentelemetry import configure_azure_monitor
import flask
configure_azure_monitor()
app = flask.Flask(__name__)
بدلا من ذلك، يمكنك الاتصال configure_azure_monitor قبل استيراد flask.Flask:
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
from flask import Flask
app = Flask(__name__)
يدعم
حدد علامة تبويب للغة التي تختارها لاكتشاف خيارات الدعم.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجع https://aka.ms/ContentUserFeedback.