Shromažďování a čtení dat OpenTelemetry v Azure Container Apps (Preview)
Pomocí datového agenta OpenTelemetry s prostředím Azure Container Apps se můžete rozhodnout odesílat data pozorovatelnosti ve formátu OpenTelemetry:
Propojení dat z agenta do požadované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 jenom na základě nastavení konfigurace a instrumentace kódu správně.
Konfigurace zdrojového kódu
Připravte aplikaci na shromažďování dat instalací sady OpenTelemetry SDK a postupujte podle pokynů OpenTelemetry k instrumentaci metrik, protokolů nebo trasová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í cíle:
- Azure Monitor Application Insights
- Datadog
- Libovolný koncový bod OTLP (například: New Relic nebo Honeycomb)
Následující tabulka ukazuje, jaký typ dat můžete odeslat do každého cíle:
Cíl | Protokoly | Metriky | Trasování |
---|---|---|---|
Aplikace Azure Insights | Yes | Ne | Ano |
Datadog | No | Ano | Yes |
Nakonfigurovaný koncový bod protokolu OpenTelemetry (OTLP) | Ano | Ano | Yes |
Azure Monitor Application 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.
Před nasazením této šablony nahraďte zástupné symboly obklopené <>
hodnotami.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Konfigurace agenta Datadog vyžaduje hodnotu pro site
instanci datadogu a key
z vaší instance Datadog. Shromážděte tyto hodnoty z instance datadogu podle této tabulky:
Vlastnost agenta Datadog | Vlastnost konfigurace Container Apps |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
Jakmile budete mít tyto podrobnosti o konfiguraci, můžete agenta nakonfigurovat prostřednictvím šablony ARM 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íčů. Uděláte to tak, že vytvoříte trezor klíčů s povolenou enabledForTemplateDeployment
vlastností nebo spustíte následující příkaz Azure CLI a nahradí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.
Před nasazením následujících souborů nahraďte zástupné symboly obklopené <>
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"]
}
}
}
}
Pokud chcete prostředek nasadit, spusťte následující příkaz Azure CLI a nahraďte zástupné symboly ohraničené <>
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 trasová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 se má povolit zabezpečení přenosu klienta pro připojení gRPC 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
, dataDog
nebo 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ů. | Protokoly můžete odesílat do služby DataDog 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 App Insights a
customDashboard
- protokoly do App Insights a
customDashboard
- metriky pro DataDog a
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Příklad konfigurace OpenTelemetry
Následující příklad šablony ARM 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.
Před nasazením této šablony nahraďte zástupné symboly obklopené <>
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.
Proměnné prostředí
Agent OpenTelemetry automaticky vloží sadu proměnných prostředí do vaší aplikace za běhu.
První dvě proměnné prostředí se řídí standardní konfigurací exportéru 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 grpc pouze . Hodnota: grpc . |
Další tři proměnné prostředí jsou specifické pro Azure Container Apps a vždy se vloží. 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 trasování | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
Adresa URL koncového bodu pouze pro data protokolu. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
Adresa URL koncového bodu pouze pro data metrik. | http://otel.service.k8se-apps:43178/v1/metrics/ |
Náklady na agenta OpenTelemetry
Účtuje se vám základní výpočetní prostředky agenta.
Podívejte se na cílovou službu pro jejich fakturační strukturu a podmínky. 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.
Známá omezení
- Agenti OpenTelemetry jsou ve verzi Preview.
- 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.
- Koncový bod Datadog nepřijímá protokoly.