OpenTelemetry-gegevens verzamelen en lezen in Azure Container Apps (preview)
Met behulp van een OpenTelemetry-gegevensagent met uw Azure Container Apps-omgeving kunt u ervoor kiezen om waarneembaarheidsgegevens te verzenden in een OpenTelemetry-indeling door:
Gegevens van een agent doorspitten naar een gewenst eindpunt. Doelopties zijn onder andere Azure Monitor Application Insights, Datadog en een met OpenTelemetry Protocol (OTLP) compatibel eindpunt.
U kunt eenvoudig doeleindpunten wijzigen zonder dat u opnieuw hoeft te configureren hoe ze gegevens verzenden en zonder dat u handmatig een OpenTelemetry-agent hoeft uit te voeren.
In dit artikel leest u hoe u een OpenTelemetry-agent instelt en configureert voor uw container-app.
Een OpenTelemetry-agent configureren
OpenTelemetry-agents bevinden zich in uw container-app-omgeving. U configureert agentinstellingen via een ARM-sjabloon of Bicep-aanroepen naar de omgeving, of via de CLI of via Terraform (via de AzAPI-provider).
Elk eindpunttype (Azure Monitor Application Insights, DataDog en OTLP) heeft specifieke configuratievereisten.
Vereisten
Als u de beheerde OpenTelemetry-agent inschakelt voor uw omgeving, betekent dit niet automatisch dat de agent gegevens verzamelt. Agents verzenden alleen gegevens op basis van uw configuratie-instellingen en instrumenteren uw code correct.
Broncode configureren
Bereid uw toepassing voor om gegevens te verzamelen door de OpenTelemetry SDK te installeren en de OpenTelemetry-richtlijnen te volgen voor het instrumenteren van metrische gegevens, logboeken of traceringen.
Eindpunten initialiseren
Voordat u gegevens naar een verzamelingsbestemming kunt verzenden, moet u eerst een exemplaar van de doelservice maken. Als u bijvoorbeeld gegevens wilt verzenden naar Azure Monitor Application Insights, moet u van tevoren een Application Insights-exemplaar maken.
De beheerde OpenTelemetry-agent accepteert de volgende bestemmingen:
- Azure Monitor Application Insights
- Datadog
- Elk OTLP-eindpunt (bijvoorbeeld: New Relic of Honeycomb)
In de volgende tabel ziet u welk type gegevens u naar elke bestemming kunt verzenden:
Bestemming | Logboeken | Metrische gegevens | Traceringen |
---|---|---|---|
inzichten Azure-app | Ja | No | Ja |
Datadog | Nr. | Ja | Ja |
Geconfigureerd eindpunt van OpenTelemetry Protocol (OTLP) | Ja | Ja | Ja |
Azure Monitor Application Insights
De enige configuratiedetails die zijn vereist vanuit Application Insights, zijn de verbindingsreeks. Zodra u de verbindingsreeks hebt, kunt u de agent configureren via de ARM-sjabloon van uw container-app, met Azure CLI-opdrachten of Terraform.
De verbindingsreeks bevat een instrumentatiesleutel, een unieke id die wordt gebruikt om telemetrie te koppelen aan een specifieke Application Insights-resource. Instrumentatiesleutels zijn geen beveiligingstokens of beveiligingssleutels en worden niet beschouwd als geheimen.
Als u uw Application Insights-resource wilt beveiligen tegen misbruik, raadpleegt u Microsoft Entra-verificatie voor Application Insights.
Voordat u deze sjabloon implementeert, vervangt u tijdelijke aanduidingen tussen <>
uw waarden.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
De configuratie van de Datadog-agent vereist een waarde voor site
en key
van uw Datadog-exemplaar. Verzamel deze waarden van uw Datadog-exemplaar volgens deze tabel:
Eigenschap Datadog-agent | Configuratie-eigenschap Container Apps |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
Zodra u deze configuratiegegevens hebt, kunt u de agent configureren via de ARM-sjabloon van uw container-app of met Azure CLI-opdrachten.
Vermijd het opgeven van de waarde van een geheim, zoals uw Datadog-API-sleutel, rechtstreeks in een productieomgeving. Gebruik in plaats daarvan een verwijzing naar een geheim dat is opgeslagen in Azure Key Vault.
U moet de sleutelkluis inschakelen voor sjabloonimplementatie. Hiervoor maakt u de sleutelkluis met de enabledForTemplateDeployment
eigenschap ingeschakeld of voert u de volgende Azure CLI-opdracht uit, waarbij u de waarde vervangt door uw <KEY_VAULT_NAME>
waarde:
az keyvault update --name <KEY_VAULT_NAME> --enabled-for-template-deployment true
Zie voor meer informatie:
- Azure Key Vault gebruiken om tijdens de implementatie een veilige parameterwaarde door te geven
- Zelfstudie: Azure Key Vault integreren in uw ARM-sjabloonimplementatie
Maak een parameterbestand om uw Datadog-API-sleutel op te halen uit een Azure Key Vault.
Voordat u de volgende bestanden implementeert, vervangt u tijdelijke aanduidingen tussen <>
uw waarden.
{
"$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>"
}
}
}
}
U kunt nu verwijzen naar de datadogapikey
parameter in uw ARM-sjabloon.
{
...
"parameters": {
"datadogapikey": {
"type": "securestring"
}
},
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
Als u de resource wilt implementeren, voert u de volgende Azure CLI-opdracht uit, waarbij u de tijdelijke aanduidingen <>
vervangt door uw waarden.
az deployment group create \
--resource-group <RESOURCE_GROUP> \
--template-file <ARM_TEMPLATE_FILE> \
--parameters <PARAMETER_FILE>
OTLP-eindpunt
Een OTLP-eindpunt (OpenTelemetry Protocol) is een doel voor telemetriegegevens dat OpenTelemetry-gegevens verbruikt. In de toepassingsconfiguratie kunt u meerdere OTLP-eindpunten toevoegen. In het volgende voorbeeld worden twee eindpunten toegevoegd en worden de volgende gegevens naar deze eindpunten verzonden.
Naam Eeindpunt | Gegevens die naar het eindpunt worden verzonden |
---|---|
oltp1 |
Metrische gegevens en/of traceringen |
oltp2 |
Logboeken en/of traceringen |
Hoewel u zoveel OTLP-geconfigureerde eindpunten kunt instellen als u wilt, moet elk eindpunt een afzonderlijke naam hebben.
{
"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 | Beschrijving |
---|---|
resource-group |
De naam van de resourcegroep. U kunt de standaardgroep configureren met behulp van az configure --defaults group=<NAME> . |
name |
Naam van de Container Apps-omgeving. |
otlp-name |
Een naam die u selecteert om uw door OTLP geconfigureerde eindpunt te identificeren. |
endpoint |
De URL van de bestemming die verzamelde gegevens ontvangt. |
insecure |
Standaard waar. Hiermee definieert u of clienttransportbeveiliging moet worden ingeschakeld voor de gRPC-verbinding van de exporteur. Als dit onwaar is, is de headers parameter vereist. |
headers |
Door spaties gescheiden waarden, in de indeling 'key=value', die vereiste informatie biedt voor de beveiliging van de OTLP-eindpunten. Voorbeeld: "api-key=key other-config-value=value" . |
Gegevensbestemmingen configureren
Als u een agent wilt configureren, gebruikt u de destinations
matrix om te definiëren welke agents uw toepassing gegevens verzendt. Geldige sleutels zijn appInsights
, dataDog
of de naam van uw aangepaste OTLP-eindpunt. U kunt bepalen hoe een agent zich gedraagt op basis van gegevenstype en opties voor eindpunten.
Op gegevenstype
Optie | Opmerking |
---|---|
Selecteer een gegevenstype. | U kunt logboeken, metrische gegevens en/of traceringen afzonderlijk configureren. |
Schakel een gegevenstype in of uit. | U kunt ervoor kiezen om alleen traceringen en geen andere gegevens te verzenden. |
Eén gegevenstype verzenden naar meerdere eindpunten. | U kunt logboeken verzenden naar zowel DataDog als een door OTLP geconfigureerd eindpunt. |
Verschillende gegevenstypen verzenden naar verschillende locaties. | U kunt traceringen verzenden naar een OTLP-eindpunt en metrische gegevens naar DataDog. |
Schakel het verzenden van alle gegevenstypen uit. | U kunt ervoor kiezen geen gegevens te verzenden via de OpenTelemetry-agent. |
Op eindpunt
- U kunt slechts één Application Insights- en Datadog-eindpunt per keer instellen.
- Hoewel u meerdere OTLP-geconfigureerde eindpunten kunt definiëren, moet elk eindpunt een afzonderlijke naam hebben.
In het volgende voorbeeld van een ARM-sjabloon ziet u hoe u een OTLP-eindpunt met de naam customDashboard
KUNT gebruiken. Er wordt het volgende verzonden:
- traceringen naar app-inzichten en
customDashboard
- logboeken voor app-inzichten en
customDashboard
- metrische gegevens voor DataDog en
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Voorbeeld van configuratie van OpenTelemetry
In het volgende VOORBEELD van een ARM-sjabloon ziet u hoe u uw container-app kunt configureren voor het verzamelen van telemetriegegevens met behulp van Azure Monitor Application Insights, Datadog en met een aangepaste OTLP-agent met de naam customDashboard
.
Dit voorbeeld werkt met het parameterbestand dat wordt gebruikt om de Datadog-API-sleutel op te halen uit een Azure Key Vault.
Voordat u deze sjabloon implementeert, vervangt u tijdelijke aanduidingen tussen <>
uw waarden.
{
"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"
]
}
}
}
}
Zie Microsoft.App/managedEnvironments voor meer informatie.
Omgevingsvariabelen
De OpenTelemetry-agent injecteert automatisch een set omgevingsvariabelen in uw toepassing tijdens runtime.
De eerste twee omgevingsvariabelen volgen de standaard configuratie van de OpenTelemetry-exporteur en worden gebruikt in OTLP-standaardsoftwareontwikkelingskits. Als u de omgevingsvariabele expliciet instelt in de specificatie van de container-app, overschrijft uw waarde de automatisch geïnjecteerde waarde.
Meer informatie over de configuratie van de OTLP-exporteur raadpleegt u otLP-exporteurconfiguratie.
Name | Beschrijving |
---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
Een basiseindpunt-URL voor elk signaaltype, met een optioneel opgegeven poortnummer. Deze instelling is handig wanneer u meer dan één signaal naar hetzelfde eindpunt verzendt en één omgevingsvariabele het eindpunt wilt beheren. Voorbeeld: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
Hiermee geeft u het OTLP-transportprotocol dat wordt gebruikt voor alle telemetriegegevens. De beheerde agent ondersteunt grpc alleen . Waarde: grpc . |
De andere drie omgevingsvariabelen zijn specifiek voor Azure Container Apps en worden altijd geïnjecteerd. Deze variabelen bevatten de eindpunt-URL's van de agent voor elk specifiek gegevenstype (logboeken, metrische gegevens, traceringen).
Deze variabelen zijn alleen nodig als u zowel de beheerde OpenTelemetry-agent als een andere OpenTelemetry-agent gebruikt. Als u deze variabelen gebruikt, hebt u controle over het routeren van gegevens tussen de verschillende OpenTelemetry-agents.
Name | Omschrijving | Voorbeeld |
---|---|---|
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT |
Eindpunt-URL voor alleen traceringsgegevens. | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
Eindpunt-URL voor alleen logboekgegevens. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
Eindpunt-URL voor alleen metrische gegevens. | http://otel.service.k8se-apps:43178/v1/metrics/ |
Kosten van OpenTelemetry-agent
U wordt gefactureerd voor de onderliggende berekening van de agent.
Zie de doelservice voor hun factureringsstructuur en voorwaarden. Als u bijvoorbeeld gegevens verzendt naar Zowel Azure Monitor Application Insights als Datadog, bent u verantwoordelijk voor de kosten die door beide services worden toegepast.
Bekende beperkingen
- OpenTelemetry-agents zijn in preview.
- Systeemgegevens, zoals systeemlogboeken of metrische standaardgegevens van Container Apps, kunnen niet worden verzonden naar de OpenTelemetry-agent.
- Het Application Insights-eindpunt accepteert geen metrische gegevens.
- Het Datadog-eindpunt accepteert geen logboeken.