Samla in och läsa OpenTelemetry-data i Azure Container Apps (förhandsversion)
Med hjälp av en OpenTelemetry-dataagent med din Azure Container Apps-miljö kan du välja att skicka observerbarhetsdata i ett OpenTelemetry-format genom att:
Skicka data från en agent till en önskad slutpunkt. Målalternativen är Azure Monitor Application Insights, Datadog och alla OTLP-kompatibla slutpunkter (OpenTelemetry Protocol).
Ändra enkelt målslutpunkter utan att behöva konfigurera om hur de genererar data och utan att behöva köra en OpenTelemetry-agent manuellt.
Den här artikeln visar hur du konfigurerar en OpenTelemetry-agent för din containerapp.
Konfigurera en OpenTelemetry-agent
OpenTelemetry-agenter finns i din containerappmiljö. Du konfigurerar agentinställningar via en ARM-mall eller Bicep-anrop till miljön, eller via CLI eller via Terraform (via AzAPI-providern).
Varje slutpunktstyp (Azure Monitor Application Insights, DataDog och OTLP) har specifika konfigurationskrav.
Förutsättningar
Att aktivera den hanterade OpenTelemetry-agenten i din miljö innebär inte automatiskt att agenten samlar in data. Agenter skickar endast data baserat på dina konfigurationsinställningar och instrumenterar koden korrekt.
Konfigurera källkod
Förbered ditt program för att samla in data genom att installera OpenTelemetry SDK och följa Riktlinjerna för OpenTelemetry för att instrumentera mått, loggar eller spårningar.
Initiera slutpunkter
Innan du kan skicka data till ett insamlingsmål måste du först skapa en instans av måltjänsten. Om du till exempel vill skicka data till Azure Monitor Application Insights måste du skapa en Application Insights-instans i förväg.
Den hanterade OpenTelemetry-agenten accepterar följande mål:
- Azure Monitor Application Insights
- Datadog
- Valfri OTLP-slutpunkt (till exempel New Relic eller Honeycomb)
I följande tabell visas vilken typ av data du kan skicka till varje mål:
Mål | Loggar | Mått | Spårningar |
---|---|---|---|
Azure App Insights | Ja | No | Ja |
Datadog | Nej | Ja | Ja |
OpenTelemetry Protocol (OTLP) konfigurerad slutpunkt | Ja | Ja | Ja |
Azure Monitor Application Insights
Den enda konfigurationsinformation som krävs från Application Insights är anslutningssträng. När du har anslutningssträng kan du konfigurera agenten via containerappens ARM-mall med Azure CLI-kommandon eller Terraform.
Anslutningssträng innehåller en instrumentationsnyckel, som är en unik identifierare som används för att associera telemetri till en specifik Application Insights-resurs. Instrumenteringsnycklar är inte säkerhetstoken eller säkerhetsnycklar och betraktas inte som hemligheter.
Om du vill skydda din Application Insights-resurs från missbruk läser du Microsoft Entra-autentisering för Application Insights.
Innan du distribuerar den här mallen ersätter du platshållarna som omges av <>
med dina värden.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Datadog-agentkonfigurationen kräver ett värde för site
och key
från din Datadog-instans. Samla in dessa värden från din Datadog-instans enligt den här tabellen:
Datadog-agentegenskap | Konfigurationsegenskap för Container Apps |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
När du har den här konfigurationsinformationen kan du konfigurera agenten via din containerapps ARM-mall eller med Azure CLI-kommandon.
Undvik att ange värdet för en hemlighet, till exempel din Datadog API-nyckel, direkt i en produktionsmiljö. Använd i stället en referens till en hemlighet som lagras i Azure Key Vault.
Du måste aktivera nyckelvalvet för malldistribution. Det gör du genom att skapa nyckelvalvet med enabledForTemplateDeployment
egenskapen aktiverad eller köra följande Azure CLI-kommando <KEY_VAULT_NAME>
och ersätta med ditt värde:
az keyvault update --name <KEY_VAULT_NAME> --enabled-for-template-deployment true
Mer information finns i:
- Använda Azure Key Vault till att säkert skicka parametervärden under en distribution
- Självstudie: Integrera Azure Key Vault i arm-malldistributionen
Skapa en parameterfil för att hämta din Datadog API-nyckel från ett Azure Key Vault.
Innan du distribuerar följande filer ersätter du platshållarna som omges av <>
med dina värden.
{
"$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>"
}
}
}
}
Nu kan du referera till parametern datadogapikey
i ARM-mallen.
{
...
"parameters": {
"datadogapikey": {
"type": "securestring"
}
},
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
Om du vill distribuera resursen kör du följande Azure CLI-kommando och ersätter platshållarna som omges av <>
med dina värden.
az deployment group create \
--resource-group <RESOURCE_GROUP> \
--template-file <ARM_TEMPLATE_FILE> \
--parameters <PARAMETER_FILE>
OTLP-slutpunkt
En Slutpunkt för OpenTelemetry Protocol (OTLP) är ett telemetridatamål som använder OpenTelemetry-data. I programkonfigurationen kan du lägga till flera OTLP-slutpunkter. I följande exempel läggs två slutpunkter till och följande data skickas till dessa slutpunkter.
Slutpunktnamn | Data som skickas till slutpunkten |
---|---|
oltp1 |
Mått och/eller spårningar |
oltp2 |
Loggar och/eller spårningar |
Du kan konfigurera så många OTLP-konfigurerade slutpunkter som du vill, men varje slutpunkt måste ha ett distinkt namn.
{
"properties": {
"appInsightsConfiguration": {},
"openTelemetryConfiguration": {
"destinationsConfiguration":{
"otlpConfigurations": [
{
"name": "otlp1",
"endpoint": "ENDPOINT_URL_1",
"insecure": false,
"headers": "api-key-1=key"
},
{
"name": "otlp2",
"endpoint": "ENDPOINT_URL_2",
"insecure": true
}
]
},
"logsConfiguration": {
"destinations": ["otlp2"]
},
"tracesConfiguration":{
"destinations": ["otlp1", "otlp2"]
},
"metricsConfiguration": {
"destinations": ["otlp1"]
}
}
}
}
Name | beskrivning |
---|---|
resource-group |
Namnet på resursgruppen. Du kan konfigurera standardgruppen med .az configure --defaults group=<NAME> |
name |
Namnet på Container Apps-miljön. |
otlp-name |
Ett namn som du väljer för att identifiera din OTLP-konfigurerade slutpunkt. |
endpoint |
URL:en för målet som tar emot insamlade data. |
insecure |
Standard sant. Definierar om du vill aktivera klienttransportsäkerhet för exportörens gRPC-anslutning. Om det är falskt krävs parametern headers . |
headers |
Blankstegsavgränsade värden i formatet "key=value" som ger nödvändig information för OTLP-slutpunkternas säkerhet. Exempel: "api-key=key other-config-value=value" . |
Konfigurera datamål
Om du vill konfigurera en agent använder du matrisen destinations
för att definiera vilka agenter programmet skickar data till. Giltiga nycklar är antingen appInsights
, dataDog
eller namnet på din anpassade OTLP-slutpunkt. Du kan styra hur en agent beter sig baserat på datatyp och slutpunktsrelaterade alternativ.
Efter datatyp
Alternativ | Exempel |
---|---|
Välj en datatyp. | Du kan konfigurera loggar, mått och/eller spårningar individuellt. |
Aktivera eller inaktivera alla datatyper. | Du kan välja att endast skicka spårningar och inga andra data. |
Skicka en datatyp till flera slutpunkter. | Du kan skicka loggar till både DataDog och en OTLP-konfigurerad slutpunkt. |
Skicka olika datatyper till olika platser. | Du kan skicka spårningar till en OTLP-slutpunkt och mått till DataDog. |
Inaktivera sändning av alla datatyper. | Du kan välja att inte skicka några data via OpenTelemetry-agenten. |
Efter slutpunkt
- Du kan bara konfigurera en Application Insights- och Datadog-slutpunkt i taget.
- Du kan definiera mer än en OTLP-konfigurerad slutpunkt, men var och en måste ha ett distinkt namn.
Följande ARM-exempelmall visar hur du använder en OTLP-slutpunkt med namnet customDashboard
. Den skickar:
- spårningar till appinsikter och
customDashboard
- loggar till appinsikter och
customDashboard
- mått till DataDog och
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Exempel på OpenTelemetry-konfiguration
Följande ARM-exempelmall visar hur du kan konfigurera din containerapp för att samla in telemetridata med hjälp av Azure Monitor Application Insights, Datadog och med en anpassad OTLP-agent med namnet customDashboard
.
Det här exemplet fungerar med parameterfilen som används för att hämta Datadog API-nyckeln från ett Azure Key Vault.
Innan du distribuerar den här mallen ersätter du platshållarna som omges av <>
med dina värden.
{
"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"
]
}
}
}
}
Mer information finns i Microsoft.App/managedEnvironments.
Miljövariabler
OpenTelemetry-agenten matar automatiskt in en uppsättning miljövariabler i ditt program vid körning.
De två första miljövariablerna följer standardkonfigurationen för OpenTelemetry-exportören och används i OTLP-standardpaket för programvaruutveckling. Om du uttryckligen anger miljövariabeln i containerappspecifikationen skriver ditt värde över det automatiskt inmatade värdet.
Läs mer om konfigurationen av OTLP-exportören i KONFIGURATION av OTLP-exportör.
Name | beskrivning |
---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
En basslutpunkts-URL för valfri signaltyp, med ett valfritt angivet portnummer. Den här inställningen är användbar när du skickar mer än en signal till samma slutpunkt och vill att en miljövariabel ska styra slutpunkten. Exempel: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
Anger otlp-transportprotokollet som används för alla telemetridata. Den hanterade agenten stöder grpc endast . Värde: grpc . |
De övriga tre miljövariablerna är specifika för Azure Container Apps och matas alltid in. Dessa variabler innehåller agentens slutpunkts-URL:er för varje specifik datatyp (loggar, mått, spårningar).
Dessa variabler är bara nödvändiga om du använder både den hanterade OpenTelemetry-agenten och en annan OpenTelemetry-agent. Med hjälp av dessa variabler får du kontroll över hur du dirigerar data mellan de olika OpenTelemetry-agenterna.
Name | Beskrivning | Exempel |
---|---|---|
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT |
Slutpunkts-URL endast för spårningsdata. | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
Slutpunkts-URL endast för loggdata. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
Slutpunkts-URL endast för måttdata. | http://otel.service.k8se-apps:43178/v1/metrics/ |
Kostnader för OpenTelemetry-agenten
Du debiteras för den underliggande beräkningen av agenten.
Se måltjänsten för deras faktureringsstruktur och villkor. Om du till exempel skickar data till både Azure Monitor Application Insights och Datadog ansvarar du för de avgifter som tillämpas av båda tjänsterna.
Kända begränsningar
- OpenTelemetry-agenter finns i förhandsversion.
- Systemdata, till exempel systemloggar eller standardmått för Container Apps, är inte tillgängliga för att skickas till OpenTelemetry-agenten.
- Application Insights-slutpunkten accepterar inte mått.
- Datadog-slutpunkten accepterar inte loggar.