Gunakan salah satu dari tiga cara berikut untuk mengonfigurasi string koneksi:
Tambahkan UseAzureMonitor() ke file Anda program.cs :
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>";
});
var app = builder.Build();
app.Run();
Jika Anda mengatur string koneksi di lebih dari satu tempat, kami mematuhi prioritas berikut:
Kode
Variabel lingkungan
File konfigurasi
Gunakan salah satu dari dua cara berikut untuk mengonfigurasi string koneksi:
Tambahkan Pengekspor Azure Monitor ke setiap sinyal OpenTelemetry dalam startup aplikasi.
// 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(logging =>
{
logging.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);
Gunakan salah satu dari dua cara berikut untuk mengonfigurasi string koneksi:
# 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>",
)
Mengatur Nama Peran Cloud dan Instans Peran Cloud
Untuk bahasa yang didukung, Distro OpenTelemetry Azure Monitor secara otomatis mendeteksi konteks sumber daya dan menyediakan nilai default untuk Nama Peran Cloud dan properti Instans Peran Cloud komponen Anda. Namun, Anda mungkin ingin mengambil alih nilai default ke sesuatu yang masuk akal untuk tim Anda. Nilai nama peran cloud muncul di Peta Aplikasi sebagai nama di bawah simpul.
Atur Nama Peran Cloud dan Instans Peran Cloud melalui atribut Sumber Daya . Nama Peran Cloud menggunakan atribut service.namespace dan service.name walaupun akan kembali lagi ke service.name jika service.namespace tidak diatur. Instans Peran Cloud menggunakan nilai atribut service.instance.id. Untuk informasi tentang atribut standar untuk sumber daya, lihat Konvensi Semantik 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();
Atur Nama Peran Cloud dan Instans Peran Cloud melalui atribut Sumber Daya . Nama Peran Cloud menggunakan atribut service.namespace dan service.name walaupun akan kembali lagi ke service.name jika service.namespace tidak diatur. Instans Peran Cloud menggunakan nilai atribut service.instance.id. Untuk informasi tentang atribut standar untuk sumber daya, lihat Konvensi Semantik 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(logging =>
{
// Set ResourceBuilder on the Logging config.
logging.SetResourceBuilder(resourceBuilder);
logging.AddAzureMonitorLogExporter();
});
});
Untuk mengatur nama peran cloud, lihat nama peran cloud.
Untuk mengatur instans peran cloud, lihat instans peran cloud.
Untuk mengatur nama peran cloud:
spring.application.name Menggunakan untuk aplikasi gambar asli Spring Boot
quarkus.application.name Gunakan untuk aplikasi gambar asli Quarkus
Atur Nama Peran Cloud dan Instans Peran Cloud melalui atribut Sumber Daya . Nama Peran Cloud menggunakan atribut service.namespace dan service.name walaupun akan kembali lagi ke service.name jika service.namespace tidak diatur. Instans Peran Cloud menggunakan nilai atribut service.instance.id. Untuk informasi tentang atribut standar untuk sumber daya, lihat Konvensi Semantik 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);
Atur Nama Peran Cloud dan Instans Peran Cloud melalui atribut Sumber Daya . Nama Peran Cloud menggunakan atribut service.namespace dan service.name walaupun akan kembali lagi ke service.name jika service.namespace tidak diatur. Instans Peran Cloud menggunakan nilai atribut service.instance.id. Untuk informasi tentang atribut standar untuk sumber daya, lihat Konvensi Semantik OpenTelemetry.
Atur OTEL_RESOURCE_ATTRIBUTES Atribut sumber daya menggunakan variabel lingkungan dan/atau OTEL_SERVICE_NAME . OTEL_RESOURCE_ATTRIBUTES mengambil serangkaian pasangan kunci-nilai yang dipisahkan koma. Misalnya, untuk mengatur Nama Peran Cloud ke my-namespace.my-helloworld-service dan mengatur Instans Peran Cloud ke my-instance, Anda dapat mengatur OTEL_RESOURCE_ATTRIBUTES dan OTEL_SERVICE_NAME dengan demikian:
Jika Anda tidak mengatur service.namespace atribut Sumber Daya, Anda dapat mengatur Nama Peran Cloud dengan hanya variabel lingkungan OTEL_SERVICE_NAME atau service.name atribut Sumber Daya. Misalnya, untuk mengatur Nama Peran Cloud ke my-helloworld-service dan mengatur Instans Peran Cloud ke my-instance, Anda dapat mengatur OTEL_RESOURCE_ATTRIBUTES dan OTEL_SERVICE_NAME dengan demikian:
Anda mungkin ingin mengaktifkan pengambilan sampel untuk mengurangi volume penyerapan data Anda, yang mengurangi biaya Anda. Azure Monitor menyediakan sampler laju tetap kustom yang mengisi peristiwa dengan rasio pengambilan sampel, yang dikonversi Application Insights ke ItemCount. Sampler laju tetap memastikan pengalaman dan jumlah peristiwa yang akurat. Sampler dirancang untuk mempertahankan jejak Anda di seluruh layanan, dan dapat dioperasikan dengan Application Insights Software Development Kits (SDK) yang lebih lama. Untuk informasi selengkapnya, lihat Pelajari selengkapnya tentang pengambilan sampel.
Catatan
Metrik dan Log tidak terpengaruh oleh pengambilan sampel.
Sampler mengharapkan laju sampel antara 0 dan 1 inklusif. Tingkat 0,1 berarti sekitar 10% jejak Anda dikirim.
// 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 sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
options.SamplingRatio = 0.1F;
});
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
Sampler mengharapkan laju sampel antara 0 dan 1 inklusif. Tingkat 0,1 berarti sekitar 10% jejak Anda dikirim.
// 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;
});
Mulai dari 3.4.0, pengambilan sampel terbatas tarif tersedia dan sekarang menjadi default. Untuk informasi selengkapnya tentang pengambilan sampel, lihat Pengambilan sampel Java.
Untuk aplikasi asli Quarkus, silakan lihat dokumentasi Quarkus OpenTelemetry.
Sampler mengharapkan laju sampel antara 0 dan 1 inklusif. Tingkat 0,1 berarti sekitar 10% jejak Anda dikirim.
// 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);
Fungsi ini configure_azure_monitor() secara otomatis menggunakan ApplicationInsightsSampler untuk kompatibilitas dengan SDK Application Insights dan untuk mengambil sampel telemetri Anda. Variabel OTEL_TRACES_SAMPLER_ARG lingkungan dapat digunakan untuk menentukan laju pengambilan sampel, dengan rentang 0 hingga 1 yang valid, di mana 0 adalah 0% dan 1 adalah 100%.
Misalnya, nilai 0,1 berarti 10% jejak Anda dikirim.
export OTEL_TRACES_SAMPLER_ARG=0.1
Tip
Saat menggunakan pengambilan sampel laju/persentase tetap dan Anda tidak yakin apa yang harus ditetapkan laju pengambilan sampel sebagai, mulai dari 5% (yaitu, rasio pengambilan sampel 0,05) dan sesuaikan laju berdasarkan akurasi operasi yang ditunjukkan di panel kegagalan dan performa. Tingkat yang lebih tinggi umumnya menghasilkan akurasi yang lebih tinggi. Namun, pengambilan sampel APA PUN akan memengaruhi akurasi sehingga kami menyarankan pemberitahuan tentang metrik OpenTelemetry, yang tidak terpengaruh oleh pengambilan sampel.
Metrik langsung
Metrik langsung menyediakan dasbor analitik real-time untuk wawasan tentang aktivitas dan performa aplikasi.
Mengaktifkan autentikasi MICROSOFT Entra ID (sebelumnya Azure AD)
Anda mungkin ingin mengaktifkan autentikasi Microsoft Entra untuk koneksi yang lebih aman ke Azure, yang mencegah telemetri yang tidak sah diserap ke dalam langganan Anda.
// 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();
Kami mendukung kelas kredensial yang disediakan oleh Azure Identity.
Kami merekomendasikan DefaultAzureCredential untuk pengembangan lokal.
Kami merekomendasikan ManagedIdentityCredential untuk identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna.
Untuk sistem yang ditetapkan, gunakan konstruktor default tanpa parameter.
Untuk pengguna yang ditetapkan, berikan ID klien ke konstruktor.
Kami merekomendasikan ClientSecretCredential untuk perwakilan layanan.
Berikan ID penyewa, ID klien, dan rahasia klien ke konstruktor.
// 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(logging =>
{
logging.AddAzureMonitorLogExporter(options =>
{
options.Credential = credential;
});
});
});
Untuk informasi selengkapnya tentang Java, lihat dokumentasi tambahan Java.
Autentikasi ID Microsoft Entra tidak tersedia untuk aplikasi GraalVM Native.
Kami mendukung kelas kredensial yang disediakan oleh 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);
Azure Monitor OpenTelemetry Distro untuk Python mendukung kelas kredensial yang disediakan oleh Azure Identity.
Kami merekomendasikan DefaultAzureCredential untuk pengembangan lokal.
Kami merekomendasikan ManagedIdentityCredential untuk identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna.
Untuk sistem yang ditetapkan, gunakan konstruktor default tanpa parameter.
Untuk pengguna yang ditetapkan, berikan client_id kepada konstruktor.
Kami merekomendasikan ClientSecretCredential untuk perwakilan layanan.
Berikan ID penyewa, ID klien, dan rahasia klien ke konstruktor.
Jika menggunakan ManagedIdentityCredential
# 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
from opentelemetry import trace
# Configure the Distro to authenticate with Azure Monitor using a managed identity credential.
credential = ManagedIdentityCredential(client_id="<client_id>")
configure_azure_monitor(
connection_string="your-connection-string",
credential=credential,
)
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("hello with aad managed identity"):
print("Hello, World!")
Jika menggunakan ClientSecretCredential
# Import the `ClientSecretCredential` class from the `azure.identity` package.
from azure.identity import ClientSecretCredential
# Import the `configure_azure_monitor()` function from the `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
# Configure the Distro to authenticate with Azure Monitor using a client secret credential.
credential = ClientSecretCredential(
tenant_id="<tenant_id",
client_id="<client_id>",
client_secret="<client_secret>",
)
configure_azure_monitor(
connection_string="your-connection-string",
credential=credential,
)
with tracer.start_as_current_span("hello with aad client secret identity"):
print("Hello, World!")
Penyimpanan Offline dan Coba Lagi Otomatis
Untuk meningkatkan keandalan dan ketahanan, penawaran berbasis OpenTelemetry Azure Monitor menulis ke penyimpanan offline/lokal secara default ketika aplikasi kehilangan koneksinya dengan Application Insights. Ini menyimpan telemetri aplikasi ke disk dan secara berkala mencoba mengirimnya lagi hingga 48 jam. Dalam aplikasi beban tinggi, telemetri kadang-kadang dihilangkan karena dua alasan. Pertama, ketika waktu yang diizinkan terlampaui, dan kedua, ketika ukuran file maksimum terlampaui atau SDK tidak memiliki kesempatan untuk menghapus file. Jika kita perlu memilih, produk menyimpan peristiwa yang lebih baru daripada yang lama. Pelajari Selengkapnya
Paket Distro mencakup AzureMonitorExporter, yang secara default menggunakan salah satu lokasi berikut untuk penyimpanan offline (tercantum dalam urutan prioritas):
Windows
%LOCALAPPDATA%\Microsoft\AzureMonitor
%TEMP%\Microsoft\AzureMonitor
Non-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
Untuk mengambil alih direktori default, Anda harus mengatur 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();
Untuk menonaktifkan fitur ini, Anda harus mengatur AzureMonitorOptions.DisableOfflineStorage = true.
Secara default, AzureMonitorExporter menggunakan salah satu lokasi berikut untuk penyimpanan offline (tercantum dalam urutan prioritas):
Windows
%LOCALAPPDATA%\Microsoft\AzureMonitor
%TEMP%\Microsoft\AzureMonitor
Non-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
Untuk mengambil alih direktori default, Anda harus mengatur 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(logging =>
{
logging.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";
});
});
});
Untuk menonaktifkan fitur ini, Anda harus mengatur AzureMonitorExporterOptions.DisableOfflineStorage = true.
Mengonfigurasi Penyimpanan Offline dan Percobaan Ulang Otomatis tidak tersedia di Java.
Untuk daftar lengkap konfigurasi yang tersedia, lihat Opsi konfigurasi.
Mengonfigurasi Penyimpanan Offline dan Percobaan Ulang Otomatis tidak tersedia di aplikasi gambar asli Java.
Secara default, AzureMonitorExporter menggunakan salah satu lokasi berikut untuk penyimpanan offline.
Windows
%TEMP%\Microsoft\AzureMonitor
Non-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
Untuk mengambil alih direktori default, Anda harus mengatur storageDirectory.
Contohnya:
// 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);
Untuk menonaktifkan fitur ini, Anda harus mengatur disableOfflineStorage = true.
Secara default, eksportir Azure Monitor menggunakan jalur berikut:
Untuk mengambil alih direktori default, Anda harus mengatur storage_directory ke direktori yang Anda inginkan.
Contohnya:
...
# 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",
)
...
Untuk menonaktifkan fitur ini, Anda harus mengatur disable_offline_storage ke True. Default ke False.
Contohnya:
...
# 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,
)
...
Mengaktifkan Pengekspor OTLP
Anda mungkin ingin mengaktifkan Pengekspor Protokol OpenTelemetry (OTLP) bersama Pengekspor Azure Monitor untuk mengirim telemetri Anda ke dua lokasi.
Catatan
Pengekspor OTLP hanya ditampilkan untuk kenyamanan. Kami tidak mendukung secara resmi Pengekspor OTLP atau komponen apa pun atau pengalaman pihak ketiga di bagian hilirnya.
Tambahkan cuplikan kode berikut ini. Contoh ini mengasumsikan bahwa Anda memiliki Pengumpul OpenTelemetry dengan penerima OTLP yang sedang berjalan. Untuk detailnya, lihat contoh pada 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();
Tambahkan cuplikan kode berikut ini. Contoh ini mengasumsikan bahwa Anda memiliki Pengumpul OpenTelemetry dengan penerima OTLP yang sedang berjalan. Untuk detailnya, lihat contoh pada 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();
Untuk informasi selengkapnya tentang Java, lihat dokumentasi tambahan Java.
Anda tidak dapat mengaktifkan Pengekspor Protokol OpenTelemetry (OTLP) bersama Pengekspor Azure Monitor untuk mengirim telemetri Anda ke dua lokasi.
Tambahkan cuplikan kode berikut ini. Contoh ini mengasumsikan bahwa Anda memiliki Pengumpul OpenTelemetry dengan penerima OTLP yang sedang berjalan. Untuk detailnya, lihat contoh pada 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);
Tambahkan cuplikan kode berikut ini. Contoh ini mengasumsikan bahwa Anda memiliki Pengumpul OpenTelemetry dengan penerima OTLP yang sedang berjalan. Untuk detailnya, lihat 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!")
Konfigurasi OpenTelemetry
Konfigurasi OpenTelemetry berikut dapat diakses melalui variabel lingkungan saat menggunakan Distro OpenTelemetry Azure Monitor.
Atur ke string koneksi untuk sumber daya Application Insights Anda.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED
Atur ke true untuk menolak pengumpulan metrik internal.
OTEL_RESOURCE_ATTRIBUTES
Pasangan kunci-nilai yang akan digunakan sebagai atribut sumber daya. Untuk informasi selengkapnya tentang atribut sumber daya, lihat spesifikasi Resource SDK.
OTEL_SERVICE_NAME
Mengatur nilai service.name atribut sumber daya. Jika service.name juga disediakan dalam OTEL_RESOURCE_ATTRIBUTES, maka OTEL_SERVICE_NAME diutamakan.
Variabel lingkungan
Deskripsi
APPLICATIONINSIGHTS_CONNECTION_STRING
Atur ke string koneksi untuk sumber daya Application Insights Anda.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED
Atur ke true untuk menolak pengumpulan metrik internal.
OTEL_RESOURCE_ATTRIBUTES
Pasangan kunci-nilai yang akan digunakan sebagai atribut sumber daya. Untuk informasi selengkapnya tentang atribut sumber daya, lihat spesifikasi Resource SDK.
OTEL_SERVICE_NAME
Mengatur nilai service.name atribut sumber daya. Jika service.name juga disediakan dalam OTEL_RESOURCE_ATTRIBUTES, maka OTEL_SERVICE_NAME diutamakan.
Untuk informasi selengkapnya tentang Java, lihat dokumentasi tambahan Java.
Variabel lingkungan
Deskripsi
APPLICATIONINSIGHTS_CONNECTION_STRING
Atur ke string koneksi untuk sumber daya Application Insights Anda.
Untuk aplikasi asli Spring Boot, konfigurasi OpenTelemetry Java SDK tersedia.
Untuk aplikasi asli Quarkus, silakan lihat dokumentasi Quarkus OpenTelemetry.
Untuk informasi selengkapnya tentang konfigurasi OpenTelemetry SDK, lihat dokumentasi OpenTelemetry.