Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí datového agenta OpenTelemetry s prostředím Azure Container Apps se můžete rozhodnout odesílat data pozorovatelnosti ve formátu OpenTelemetry:
Předávání dat od agenta do určeného koncového bodu Mezi cílové možnosti patří Azure Monitor Application Insights, Datadog a jakýkoli koncový bod kompatibilní s protokolem OpenTelemetry (OTLP).
Snadné změny cílových koncových bodů bez nutnosti překonfigurovat způsob generování dat a bez nutnosti ručního spuštění agenta OpenTelemetry.
V tomto článku se dozvíte, jak nastavit a nakonfigurovat agenta OpenTelemetry pro vaši aplikaci kontejneru.
Konfigurace agenta OpenTelemetry
Agenti OpenTelemetry žijí v prostředí vaší aplikace kontejneru. Nastavení agenta nakonfigurujete prostřednictvím šablony ARM nebo volání Bicep do prostředí, nebo prostřednictvím rozhraní příkazového řádku nebo prostřednictvím Terraformu (prostřednictvím poskytovatele AzAPI).
Každý typ koncového bodu (Azure Monitor Application Insights, Datadog a OTLP) má specifické požadavky na konfiguraci.
Požadavky
Povolení spravovaného agenta OpenTelemetry pro vaše prostředí neznamená, že agent shromažďuje data. Agenti odesílají data pouze na základě vašich nastavení konfigurace a správného instrumentování vašeho kódu.
Konfigurace zdrojového kódu
Připravte svoji aplikaci na shromažďování dat instalací sady OpenTelemetry SDK a postupujte podle pokynů OpenTelemetry pro instrumentaci metrik, logů nebo sledování.
Inicializace koncových bodů
Než budete moct odesílat data do cíle kolekce, musíte nejprve vytvořit instanci cílové služby. Pokud například chcete odesílat data do služby Azure Monitor Application Insights, musíte předem vytvořit instanci Application Insights.
Spravovaný agent OpenTelemetry přijímá následující destinace:
- Azure Monitor - informace o aplikaci Insights
- Datadog
- Libovolný koncový bod OTLP (například: New Relic nebo Honeycomb)
Poznámka:
Microsoft poskytuje podporu pro data odesílaná do služby Azure Monitor Application Insights. Jakmile jsou data uložená v jakémkoli systému, který není microsoftem, zodpovídá za podporu související s daty organizace koncového bodu.
Následující tabulka ukazuje, jaký typ dat můžete odeslat do každého cíle:
| Cíl | Protokoly | Metriky | Trasování |
|---|---|---|---|
| Azure Monitor Application Insights | Ano | Ne | Ano |
| Datadog | Ano | Ano | Ano |
| Dynatrace | Ano | Ano | Ano |
| New Relic | Ano | Ano | Ano |
| Elastický | Ano | Ano | Ano |
| Koncový bod kompatibilní s protokolem OpenTelemetry (OTLP) | Ano | Ano | Ano |
Průvodci cíli exportu
Použijte následující příručky s podrobnostmi o nastavení a ověření pro daný cíl.
| Cíl | Guide |
|---|---|
| Datadog | Export dat OpenTelemetry do Datadog ve službě Azure Container Apps |
| Dynatrace | Export dat OpenTelemetry do služby Dynatrace v Azure Container Apps |
| New Relic | Export dat OpenTelemetry do služby New Relic v Azure Container Apps |
| Elastic | Export dat OpenTelemetry do služby Elastic v Azure Container Apps |
| Azure Monitor - informace o aplikaci Insights | Azure Monitor Application Insights |
| Další koncové body kompatibilní s OTLP | Koncový bod OTLP |
Azure Monitor - informace o aplikaci Insights
Jedinými podrobnostmi konfigurace, které application Insights vyžaduje, je připojovací řetězec. Jakmile budete mít připojovací řetězec, můžete agenta nakonfigurovat prostřednictvím šablony ARM vaší aplikace kontejneru pomocí příkazů Azure CLI nebo Terraformu.
Připojovací řetězec obsahuje instrumentační klíč, což je jedinečný identifikátor sloužící k přidružení telemetrie ke konkrétnímu prostředku Application Insights. Klíče instrumentace nejsou tokeny zabezpečení ani klíče zabezpečení a nejsou považovány za tajné kódy.
Pokud chcete chránit prostředek Application Insights před zneužitím, přečtěte si téma Ověřování Microsoft Entra pro Application Insights. Prostředek Application Insights však musí povolit místnímu ověřování přijímat data z datového agenta OpenTelemetry.
Než nasadíte tuto šablonu, nahraďte <PLACEHOLDERS> svými hodnotami.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Pokud pro své prostředí povolíte spravovaného agenta OpenTelemetry, nemusíte v aplikaci kontejneru spouštět agenta Datadog.
Podrobný postup najdete v tématu Export telemetrických dat z agenta OpenTelemetry spravovaného službou Azure Container Apps do Datadogu.
Konfigurace agenta OpenTelemetry vyžaduje hodnotu site a key z vaší instance Datadog. Shromážděte tyto hodnoty z instance datadogu podle této tabulky:
| Vlastnost instance Datadog | Vlastnost konfigurace agenta OpenTelemetry |
|---|---|
DD_SITE |
site |
DD_API_KEY |
key |
Pokud jste instanci služby Datadog vytvořili na webu Azure Portal, další informace najdete v tématu Klíče rozhraní API .
Jakmile budete mít tyto podrobnosti o konfiguraci, můžete agenta nakonfigurovat prostřednictvím šablony ARM nebo Bicep vaší aplikace kontejneru nebo pomocí příkazů Azure CLI.
Vyhněte se zadávání hodnoty tajného kódu, například klíče rozhraní API služby Datadog, přímo v produkčním prostředí. Místo toho použijte odkaz na tajný klíč uložený ve službě Azure Key Vault.
Pro nasazení šablony musíte povolit trezor klíčů. Pokud chcete povolit nasazení šablony, vytvořte trezor klíčů s povolenou enabledForTemplateDeployment vlastností nebo spusťte následující příkaz Azure CLI a nahraďte <KEY_VAULT_NAME> hodnotu vaší hodnotou:
az keyvault update --name <KEY_VAULT_NAME> --enabled-for-template-deployment true
Další informace naleznete v tématu:
- Použití trezoru klíčů Azure Key Vault k předávání hodnoty zabezpečeného parametru během nasazování
- Kurz: Integrace služby Azure Key Vault do nasazení šablony ARM
Vytvořte soubor parametrů pro načtení klíče rozhraní API služby Datadog ze služby Azure Key Vault.
Než nasadíte následující soubory, nahraďte <PLACEHOLDERS> svými hodnotami.
{
"$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>"
}
}
}
}
Teď můžete odkazovat na datadogapikey parametr v šabloně 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"]
}
}
}
}
Pro nasazení prostředku spusťte následující příkaz Azure CLI a nahraďte <PLACEHOLDERS> svými hodnotami.
az deployment group create \
--resource-group <RESOURCE_GROUP> \
--template-file <ARM_TEMPLATE_FILE> \
--parameters <PARAMETER_FILE>
Koncový bod OTLP
Koncový bod protokolu OpenTelemetry (OTLP) je cíl telemetrických dat, který využívá data OpenTelemetry. V konfiguraci aplikace můžete přidat několik koncových bodů OTLP. Následující příklad přidá dva koncové body a do těchto koncových bodů odešle následující data.
| Název koncového bodu | Data odesílaná do koncového bodu |
|---|---|
oltp1 |
Metriky a/nebo trasování |
oltp2 |
Protokoly a/nebo sledování |
I když můžete nastavit libovolný počet koncových bodů nakonfigurovaných OTLP, každý koncový bod musí mít jedinečný název.
{
"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"]
}
}
}
}
| Název | Popis |
|---|---|
resource-group |
Název skupiny prostředků. Výchozí skupinu můžete nakonfigurovat pomocí az configure --defaults group=<NAME>. |
name |
Název prostředí Container Apps. |
otlp-name |
Název, který vyberete k identifikaci koncového bodu nakonfigurovaného pro OTLP. |
endpoint |
Adresa URL cíle, který přijímá shromážděná data. |
insecure |
Výchozí hodnota true. Definuje, zda má být povoleno zabezpečení přenosu pro klienta u gRPC připojení vývozce. Pokud je hodnota false, headers je parametr povinný. |
headers |
Hodnoty oddělené mezerami ve formátu key=value, které poskytují požadované informace pro zabezpečení koncových bodů OTLP. Příklad: "api-key=key other-config-value=value". |
Konfigurace cílů dat
Ke konfiguraci agenta použijte destinations pole k definování agentů, které aplikace odesílá data. Platné klíče jsou buď appInsights, dataDognebo název vlastního koncového bodu OTLP. Můžete řídit chování agenta na základě datových typů a možností souvisejících s koncovým bodem.
Podle datového typu
| Možnost | Příklad |
|---|---|
| Vyberte datový typ. | Protokoly, metriky a/nebo trasování můžete nakonfigurovat jednotlivě. |
| Povolte nebo zakažte libovolný datový typ. | Můžete se rozhodnout odesílat pouze trasování a žádná jiná data. |
| Odešlete jeden datový typ do více koncových bodů. | Logy můžete odesílat současně do Datadogu i do koncového bodu nakonfigurovaného pro OTLP. |
| Odesílání různých datových typů do různých umístění | Trasování můžete odeslat do koncového bodu OTLP a metrik do služby Datadog. |
| Zakažte odesílání všech datových typů. | Prostřednictvím agenta OpenTelemetry se můžete rozhodnout, že se žádná data neodesílají. |
Podle koncového bodu
- Vždy můžete nastavit jenom jeden koncový bod Application Insights a Datadog.
- I když můžete definovat více než jeden koncový bod nakonfigurovaný OTLP, každý z nich musí mít jedinečný název.
Následující příklad šablony ARM ukazuje, jak použít koncový bod OTLP s názvem customDashboard. Odesílá:
- trasování do aplikace Insights a
customDashboard - protokoly do aplikace Insights a
customDashboard - metriky pro Datadog a
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Export systémových komponent – signály OpenTelemetry
Z verze 2024-08-02-preview rozhraní API OpenTelemetry můžete nakonfigurovat prostředí aplikace kontejneru tak, aby systémové komponenty exportovaly signály OpenTelemetry do cílů dat.
K exportu trasování Dapr a metrik KEDA použijte následující konfiguraci.
Trasování Dapr
Následující příklad šablony ARM ukazuje, jak exportovat trasování Dapr do vámi určených cílových míst.
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
],
"includeDapr": true
}
}
}
}
Další informace o tom, jak používat Dapr v kontejnerových aplikacích, najdete v tématu Přehled dapr.
Metriky KEDA
Následující příklad šablony ARM ukazuje, jak exportovat metriky KEDA do cílů metrik.
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
],
"includeKeda": true
}
}
}
}
Další informace o podpoře KEDA v Container Apps najdete v tématu Nastavení pravidel škálování.
Příklad konfigurace OpenTelemetry
Následující příklad šablony ukazuje, jak můžete aplikaci kontejneru nakonfigurovat tak, aby shromažďovala telemetrická data pomocí služby Azure Monitor Application Insights, Datadog a s vlastním agentem OTLP s názvem customDashboard.
Tento příklad funguje se souborem parametrů použitým k načtení klíče rozhraní API Datadog ze služby Azure Key Vault.
Než nasadíte tuto šablonu, nahraďte <PLACEHOLDERS> svými hodnotami.
{
"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"
]
}
}
}
}
Další informace najdete v tématu Microsoft.App/managedEnvironments.
Odolnost dat
V případě přerušení přenosu zpráv do koncového bodu používá agent OpenTelemetry následující postup pro podporu odolnosti dat:
- Ukládání do vyrovnávací paměti a opakování: Agent uchovává data v paměti a zkouší opětovně (s exponenciálním stahováním) až do pěti minut.
- Zahazování dat: Pokud se bufferovaná fronta zaplní nebo koncový bod je po opakovaných pokusech stále mimo provoz, agent zahodí nejstarší dávky, aby se zabránilo nedostatku paměti.
Proměnné prostředí
Agent OpenTelemetry automaticky vloží sadu proměnných prostředí do vaší aplikace za běhu.
První tři proměnné prostředí se řídí standardní konfigurací OpenTelemetry a používají se ve standardních sadách OTLP pro vývoj softwaru. Pokud explicitně nastavíte proměnnou prostředí ve specifikaci aplikace kontejneru, vaše hodnota přepíše automaticky vloženou hodnotu.
Další informace o konfiguraci vývozce OTLP najdete v tématu Konfigurace vývozce OTLP.
| Název | Popis |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
Adresa URL základního koncového bodu pro libovolný typ signálu s volitelně zadaným číslem portu. Toto nastavení je užitečné, když odesíláte více než jeden signál do stejného koncového bodu a chcete, aby koncový bod řídila jedna proměnná prostředí. Příklad: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
Určuje přenosový protokol OTLP používaný pro všechna telemetrická data. Spravovaný agent podporuje pouze grpc. Hodnota: grpc. |
OTEL_RESOURCE_ATTRIBUTES |
Čárkami oddělený seznam párů klíč-hodnota, které definují atributy prostředků připojené ke všem telemetrickým datům . Spravovaný agent naplní tuto proměnnou atributy aplikace kontejneru, jako je název aplikace a prostředí. Některé implementace OpenTelemetry SDK vyžadují, abyste explicitně povolili detekci prostředků založenou na prostředí, aby bylo možné používat tyto atributy. Pokud tuto proměnnou nastavíte ve specifikaci aplikace kontejneru, vaše hodnota přepíše automaticky vloženou hodnotu. |
Další tři proměnné prostředí jsou specifické pro Azure Container Apps a vždy jsou injektovány. Tyto proměnné obsahují adresy URL koncových bodů agenta pro každý konkrétní datový typ (protokoly, metriky, trasování).
Tyto proměnné jsou nezbytné pouze v případě, že používáte spravovaného agenta OpenTelemetry i jiného agenta OpenTelemetry. Pomocí těchto proměnných můžete řídit, jak směrovat data mezi různými agenty OpenTelemetry.
| Název | Popis | Příklad |
|---|---|---|
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT |
Adresa URL koncového bodu pouze pro data sledování | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
URL koncového bodu pouze pro logy. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
Adresa URL koncového bodu pouze pro metrická data. | http://otel.service.k8se-apps:43178/v1/metrics/ |
Náklady na agenta OpenTelemetry
Spravovaný agent OpenTelemetry běží bez dalších nákladů na výpočetní prostředky. Microsoft zřídí a spravuje infrastrukturu agentů v rámci vašeho prostředí Container Apps.
Zodpovídáte ale za poplatky použité cílovými službami, ve kterých odesíláte telemetrická data. Podívejte se na cílovou službu ohledně její fakturační struktury a podmínek. Pokud například odesíláte data do služby Azure Monitor Application Insights i Datadog, zodpovídáte za poplatky použité oběma službami.
Přidělení prostředků agenta
Spravovaný agent OpenTelemetry je zřízený s následujícími pevnými prostředky:
- CPU: 0,5 virtuální procesorová jádra
- Paměť: 1,5 GB PAMĚTI RAM
- Repliky: Jedna replika (není konfigurovatelná)
Tyto prostředky spravuje Microsoft a nezobrazují se v metrikách fakturace ani spotřeby prostředků.
Známá omezení
- Systémová data, jako jsou systémové protokoly nebo standardní metriky Container Apps, nejsou dostupná k odeslání agentovi OpenTelemetry.
- Koncový bod Application Insights nepřijímá metriky.
- Nastavení konfigurace je aktivní na úrovni prostředí. Do různých cílů můžete posílat různé datové typy, ale nemůžete je rozdělit podle aplikace. Například ve stejné aplikaci můžete odesílat metriky do služby Datadog a trasování do App Insights.
- Spravovaný agent podporuje pouze přenosový protokol gRPC pro telemetrická data.
- Spravovaný agent OpenTelemetry běží jako jedna replika a nedá se škálovat ani konfigurovat pro zajištění vysoké dostupnosti.
- Metriky stavu a zdraví agenta nejsou momentálně dostupné v portálu Azure ani prostřednictvím rozhraní API pro monitorování.
- Tajné kódy (například klíče rozhraní API) je potřeba zadat přímo v šablonách – Integrace služby Azure Key Vault pro konfiguraci agenta se v současné době nepodporuje.
Nejčastější dotazy
Musím v kódu odkazovat na sadu OpenTelemetry SDK?
Ano. Sada SDK vytváří telemetrická data a spravovaný agent zodpovídá pouze za směrování dat.
listProč příkaz vrací hodnotu null?Při spuštění
az containerapp env telemetry otlp listjenullodpověď, když je hodnota citlivým tokenem, který potřebuje ochranu.Účtují se mi poplatky za výpočetní prostředky agenta OpenTelemetry?
Ne. Microsoft zřídí a spravuje infrastrukturu agentů bez dalších nákladů na výpočetní prostředky. Účtují se vám jenom cílové služby, které přijímají vaše telemetrická data.
Můžu škálovat agenta OpenTelemetry nebo spustit více replik?
Ne. Spravovaný agent aktuálně běží jako jedna replika s pevným přidělením prostředků (0,5 CPU, 1,5 GB RAM). Konfigurace s vysokou dostupností se v současné době nepodporují.
Jak můžu monitorovat stav a stav agenta OpenTelemetry?
Metriky stavu a kondice agenta nejsou aktuálně dostupné. Tato funkce se plánuje pro budoucí verzi.
Vlastní konfigurace DNS
Spravovaný kolektor OpenTelemetry respektuje vlastní konfiguraci DNS ve vašem prostředí Container Apps. Pokud jste nakonfigurovali vlastní nastavení DNS, kolektor tato nastavení automaticky použije k překladu názvů při připojování k externím bodům. Tím se zajistí správné směrování dat OpenTelemetry přes síťovou infrastrukturu.