Sammeln und Lesen von OpenTelemetry-Daten in Azure Container Apps (Vorschau)
Mit einem OpenTelemetry-Datenagent mit Ihrer Azure Container Apps-Umgebung können Sie Einblickdaten in einem OpenTelemetry-Format senden, indem Sie:
Daten von einem Agent an einen gewünschten Endpunkt weiterleiten. Zu den Zieloptionen gehören Azure Monitor Application Insights, Datadog und alle mit OpenTelemetry Protocol (OTLP) kompatiblen Endpunkte.
Einfaches Ändern von Zielendpunkten, ohne dass die Datenausgabe neu konfiguriert werden muss und ohne dass ein OpenTelemetry-Agent manuell ausgeführt werden muss.
In diesem Artikel erfahren Sie, wie Sie einen OpenTelemetry-Agent für Ihre Container-App einrichten und konfigurieren.
Konfigurieren eines OpenTelemetry-Agents
OpenTelemetry-Agents befinden sich in Ihrer Container-App-Umgebung. Sie konfigurieren die Agent-Einstellungen über eine ARM-Vorlage oder Bicep-Aufrufe an die Umgebung oder über die CLI.
Jeder Endpunkttyp (Azure Monitor Application Insights, DataDog und OTLP) hat spezifische Konfigurationsanforderungen.
Voraussetzungen
Das Aktivieren des verwalteten OpenTelemetry-Agents für Ihre Umgebung bedeutet nicht automatisch, dass der Agent Daten sammelt. Agents senden Daten nur basierend auf Ihrer Konfigurationseinstellungen und der korrekten Instrumentierung Ihres Codes.
Konfigurieren des Quellcodes
Bereiten Sie Ihre Anwendung auf die Datenerfassung vor, indem Sie das OpenTelemetry SDK installieren und die OpenTelemetry-Richtlinien befolgen, um Metriken, Protokolle oder Ablaufverfolgungen zu instrumentieren.
Initialisieren von Endpunkten
Bevor Sie Daten an ein Sammlungsziel senden können, müssen Sie zuerst eine Instanz des Zieldiensts erstellen. Wenn Sie beispielsweise Daten an Azure Monitor Application Insights senden möchten, müssen Sie zuvor eine Application Insights-Instanz erstellen.
Der verwaltete OpenTelemetry-Agent akzeptiert die folgenden Ziele:
- Azure Monitor Application Insights
- Datadog
- Alle OTLP-Endpunkte (z. B.: New Relic oder Honeycomb)
Die folgende Tabelle zeigt, welche Art von Daten Sie an jedes Ziel senden können:
Destination | Protokolle | Metriken | Traces |
---|---|---|---|
Azure App Insights | Ja | Keine | Ja |
Datadog | No | Ja | Ja |
Konfigurierter Endpunkt des OpenTelemetry-Protokolls (OTLP) | Ja | Ja | Ja |
Azure Monitor Application Insights
Das einzige Konfigurationsdetail, das von Application Insights benötigt wird, ist die Verbindungszeichenfolge. Sobald Sie über die Verbindungszeichenfolge verfügen, können Sie den Agent über die ARM-Vorlage Ihrer Container-App oder mit Azure CLI-Befehlen konfigurieren.
Ersetzen Sie von <>
umgebene Platzhalter durch Ihre Werte, bevor Sie diese Vorlage bereitstellen.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<YOUR_APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Die Konfiguration des Datadog-Agents erfordert einen Wert für site
und key
von Ihrer Datadog-Instanz. Erfassen Sie diese Werte von Ihrer Datadog-Instanz gemäß dieser Tabelle:
Eigenschaft für Datadog-Agent | Konfigurationseigenschaft für Container Apps |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
Sobald Sie über diese Konfigurationsdetails verfügen, können Sie den Agent über die ARM-Vorlage Ihrer Container-App oder mit Azure CLI-Befehlen konfigurieren.
Ersetzen Sie von <>
umgebene Platzhalter durch Ihre Werte, bevor Sie diese Vorlage bereitstellen.
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
OTLP-Endpunkt
Ein OpenTelemetry-Protokollendpunkt (OTLP) ist ein Telemetriedatenziel, das OpenTelemetry-Daten verwendet. In Ihrer Anwendungskonfiguration können Sie mehrere OTLP-Endpunkte hinzufügen. Im folgenden Beispiel werden zwei Endpunkte hinzugefügt und die folgenden Daten an diese Endpunkte gesendet.
Endpunktname | An Endpunkt gesendete Daten |
---|---|
oltp1 |
Metriken und/oder Ablaufverfolgungen |
oltp2 |
Protokolle und/oder Ablaufverfolgungen |
Sie können zwar beliebig viele OTLP-konfigurierte Endpunkte einrichten, aber jeder Endpunkt muss einen eindeutigen Namen haben.
{
"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 | Beschreibung |
---|---|
resource-group |
Name der Ressourcengruppe Sie können die Standardgruppe mit az configure --defaults group=<NAME> konfigurieren. |
name |
Name der Container-Apps-Umgebung. |
otlp-name |
Ein Name, den Sie auswählen, um Ihren OTLP-konfigurierten Endpunkt zu identifizieren. |
endpoint |
Die URL des Ziels, das gesammelte Daten empfängt. |
insecure |
Die Standardeinstellung ist „true“. Legt fest, ob die Clienttransportsicherheit für die gRPC-Verbindung des Exporters aktiviert wird. Bei „false“ ist der Parameter headers erforderlich. |
headers |
Durch Leerzeichen getrennte Werte im Format 'key=value', die erforderliche Informationen für die Sicherheit der OTLP-Endpunkte bereitstellen. Beispiel: "api-key=key other-config-value=value" . |
Konfigurieren von Datenzielen
Verwenden Sie zum Konfigurieren eines Agents das destinations
-Array, um festzulegen, an welche Agents Ihre Anwendung Daten sendet. Gültige Schlüssel sind entweder appInsights
, dataDog
oder der Name Ihres benutzerdefinierten OTLP-Endpunkts. Sie können das Verhalten eines Agents anhand von datentyp- und endpunktbezogenen Optionen steuern.
Nach Datentyp
Option | Beispiel |
---|---|
Wählen Sie einen Datentyp aus. | Sie können Protokolle, Metriken und/oder Ablaufverfolgungen einzeln konfigurieren. |
Aktivieren oder Deaktivieren eines beliebigen Datentyps | Sie können festlegen, dass nur Ablaufverfolgungen und keine anderen Daten gesendet werden sollen. |
Senden eines Datentyps an mehrere Endpunkte | Sie können Protokolle sowohl an DataDog als auch an einen OTLP-konfigurierten Endpunkt senden. |
Senden von verschiedenen Datentypen an verschiedene Speicherorte | Sie können Ablaufverfolgungen an einen OTLP-Endpunkt und Metriken an DataDog senden. |
Das Senden aller Datentypen deaktivieren | Sie können festlegen, dass keine Daten über den OpenTelemetry-Agent gesendet werden. |
Nach Endpunkt
- Sie können jeweils nur einen Application Insights- und Datadog-Endpunkt einrichten.
- Sie können zwar mehrere OTLP-konfigurierte Endpunkte definieren, aber jeder muss einen eindeutigen Namen haben.
Im folgenden Beispiel wird die Verwendung eines OTLP-Endpunkts namens customDashboard
gezeigt. Er sendet:
- Ablaufverfolgungen an App Insights und
customDashboard
- Protokolle an App-Insights und
customDashboard
- Metriken an DataDog und
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Beispielsweise OpenTelemetry-Konfiguration
Die folgende beispielhafte ARM-Vorlage zeigt, wie Sie Ihre Container App konfigurieren können, um Telemetriedaten mit Azure Monitor Application Insights, Datadog und einem benutzerdefinierten OTLP-Agenten namens customDashboard
zu sammeln.
Ersetzen Sie von <>
umgebene Platzhalter durch Ihre Werte, bevor Sie diese Vorlage bereitstellen.
{
"location": "eastus",
"properties": {
"appInsightsConfiguration": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
},
"openTelemetryConfiguration": {
"destinationsConfiguration": {
"dataDogConfiguration": {
"site": "datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
},
"otlpConfigurations": [
{
"name": "customDashboard",
"endpoint": "<OTLP_ENDPOINT_URL>",
"insecure": true
}
]
},
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Umgebungsvariablen
Der OpenTelemetry-Agent fügt zur Runtime automatisch eine Reihe von Umgebungsvariablen in Ihre Anwendung ein.
Die ersten beiden Umgebungsvariablen entsprechen der Standardkonfiguration des OpenTelemetry-Exporters und werden in standardmäßigen OTLP-Software Development Kits verwendet. Wenn Sie die Umgebungsvariable in der Spezifikation der Container-App explizit festlegen, überschreibt Ihr Wert den automatisch eingefügten Wert.
Informationen zur Konfiguration des OTLP-Exporters finden Sie unter OTLP-Exporterkonfiguration.
Name | Beschreibung |
---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
Eine Basisendpunkt-URL für einen beliebigen Signaltyp mit optional angegebener Portnummer. Diese Einstellung ist hilfreich, wenn Sie mehr als ein Signal an denselben Endpunkt senden und eine Umgebungsvariable zur Steuerung des Endpunkts nutzen möchten. Beispiel: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
Gibt das OTLP-Transportprotokoll an, das für alle Telemetriedaten verwendet wird. Der verwaltete Agent unterstützt nur grpc . Wert: grpc . |
Die anderen drei Umgebungsvariablen sind spezifisch für Azure Container Apps und werden immer eingefügt. Diese Variablen enthalten die Endpunkt-URLs des Agents für jeden spezifischen Datentyp (Protokolle, Metriken, Ablaufverfolgungen).
Diese Variablen sind nur erforderlich, wenn Sie sowohl den verwalteten OpenTelemetry-Agent als auch einen anderen OpenTelemetry-Agent verwenden. Mithilfe dieser Variablen können Sie steuern, wie Daten zwischen den verschiedenen OpenTelemetry-Agents weitergeleitet werden.
Name | Beschreibung des Dataflows | Beispiel |
---|---|---|
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT |
Endpunkt-URL nur für Ablaufverfolgungsdaten. | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
Endpunkt-URL nur für Protokolldaten. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
Endpunkt-URL nur für Metrikdaten. | http://otel.service.k8se-apps:43178/v1/metrics/ |
Kosten für OpenTelemetry-Agents
Die zugrunde liegende Rechenleistung des Agents wird Ihnen in Rechnung gestellt.
Die Abrechnungsstruktur und -bedingungen finden Sie beim jeweiligen Zieldienst. Wenn Sie beispielsweise Daten sowohl an Azure Monitor Application Insights als auch an Datadog senden, sind Sie für die von beiden Diensten erhobenen Gebühren verantwortlich.
Bekannte Einschränkungen
- OpenTelemetry-Agents befinden sich in der Vorschau.
- Systemdaten, z. B. Systemprotokolle oder Standardmetriken für Container Apps, können nicht an den OpenTelemetry-Agent gesendet werden.
- Der Application Insights-Endpunkt akzeptiert keine Metriken.
- Der Datadog-Endpunkt akzeptiert keine Protokolle.