Zbieranie i odczytywanie danych OpenTelemetry w usłudze Azure Container Apps (wersja zapoznawcza)
Korzystając z agenta danych OpenTelemetry w środowisku usługi Azure Container Apps, możesz wysłać dane z obserwacji w formacie OpenTelemetry, wykonując następujące czynności:
Potokowanie danych z agenta do żądanego punktu końcowego. Opcje docelowe obejmują Szczegółowe informacje aplikacji usługi Azure Monitor, usługę Datadog i dowolny punkt końcowy zgodny z protokołem OPENTelemetry Protocol (OTLP).
Łatwe zmienianie docelowych punktów końcowych bez konieczności ponownego konfigurowania sposobu emitowania danych i bez konieczności ręcznego uruchamiania agenta OpenTelemetry.
W tym artykule pokazano, jak skonfigurować i skonfigurować agenta OpenTelemetry dla aplikacji kontenera.
Konfigurowanie agenta OpenTelemetry
Agenci OpenTelemetry działają w środowisku aplikacji kontenera. Ustawienia agenta można skonfigurować za pośrednictwem szablonu usługi ARM lub wywołań Bicep do środowiska lub za pośrednictwem interfejsu wiersza polecenia.
Każdy typ punktu końcowego (usługa Azure Monitor Application Szczegółowe informacje, DataDog i OTLP) ma określone wymagania dotyczące konfiguracji.
Wymagania wstępne
Włączenie zarządzanego agenta OpenTelemetry do środowiska nie oznacza automatycznego zbierania danych przez agenta. Agenci wysyłają dane tylko na podstawie ustawień konfiguracji i prawidłowo instrumentując kod.
Konfigurowanie kodu źródłowego
Przygotuj aplikację do zbierania danych, instalując zestaw OpenTelemetry SDK i postępując zgodnie z wytycznymi OpenTelemetry, aby instrumentować metryki, dzienniki lub ślady.
Inicjowanie punktów końcowych
Przed wysłaniem danych do miejsca docelowego kolekcji należy najpierw utworzyć wystąpienie usługi docelowej. Jeśli na przykład chcesz wysłać dane do usługi Azure Monitor Application Szczegółowe informacje, musisz utworzyć wystąpienie aplikacji Szczegółowe informacje z wyprzedzeniem.
Zarządzany agent OpenTelemetry akceptuje następujące miejsca docelowe:
- Azure Monitor Application Insights
- Datadog
- Dowolny punkt końcowy OTLP (na przykład: New Relic lub Honeycomb)
W poniższej tabeli przedstawiono typ danych, które można wysyłać do każdego miejsca docelowego:
Element docelowy | Dzienniki | Metryki | Ślady |
---|---|---|---|
aplikacja systemu Azure Szczegółowe informacje | Tak | Nie | Tak |
Datadog | Nie. | Tak | Tak |
Punkt końcowy skonfigurowany przez protokół OpenTelemetry (OTLP) | Tak | Tak | Tak |
Azure Monitor Application Insights
Jedynymi szczegółami konfiguracji wymaganymi z Szczegółowe informacje aplikacji jest parametry połączenia. Po utworzeniu parametry połączenia możesz skonfigurować agenta za pomocą szablonu arm aplikacji kontenera lub poleceń interfejsu wiersza polecenia platformy Azure.
Przed wdrożeniem tego szablonu zastąp symbole zastępcze otoczone <>
wartościami.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<YOUR_APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Konfiguracja agenta usługi Datadog wymaga wartości dla site
i key
z wystąpienia usługi Datadog. Zbierz te wartości z wystąpienia usługi Datadog zgodnie z tą tabelą:
Właściwość agenta usługi Datadog | Właściwość konfiguracji usługi Container Apps |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
Po utworzeniu tych szczegółów konfiguracji możesz skonfigurować agenta za pomocą szablonu arm aplikacji kontenera lub poleceń interfejsu wiersza polecenia platformy Azure.
Przed wdrożeniem tego szablonu zastąp symbole zastępcze otoczone <>
wartościami.
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
Punkt końcowy OTLP
Punkt końcowy protokołu OpenTelemetry (OTLP) to miejsce docelowe danych telemetrycznych, które zużywa dane OpenTelemetry. W konfiguracji aplikacji można dodać wiele punktów końcowych OTLP. Poniższy przykład dodaje dwa punkty końcowe i wysyła następujące dane do tych punktów końcowych.
Nazwa punktu końcowego | Dane wysyłane do punktu końcowego |
---|---|
oltp1 |
Metryki i/lub ślady |
oltp2 |
Dzienniki i/lub ślady |
Chociaż można skonfigurować dowolną liczbę punktów końcowych skonfigurowanych przez protokół OTLP, każdy punkt końcowy musi mieć odrębną nazwę.
{
"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"]
}
}
}
}
Nazwa/nazwisko | opis |
---|---|
name |
Wybrana nazwa identyfikująca punkt końcowy skonfigurowany przez protokół OTLP. |
endpoint |
Adres URL miejsca docelowego, który odbiera zebrane dane. |
insecure |
Wartość domyślna true. Określa, czy włączyć zabezpieczenia transportu klienta dla połączenia gRPC eksportera. Jeśli wartość false, headers parametr jest wymagany. |
headers |
Wartości rozdzielone spacjami w formacie "key=value", które zapewniają wymagane informacje dotyczące zabezpieczeń punktów końcowych OTLP. Przykład: "api-key=key other-config-value=value" . |
Konfigurowanie miejsc docelowych danych
Aby skonfigurować agenta destinations
, użyj tablicy, aby zdefiniować, którzy agenci wysyłają dane przez aplikację. Prawidłowe klucze to appInsights
, dataDog
lub nazwa niestandardowego punktu końcowego OTLP. Możesz kontrolować zachowanie agenta na podstawie typu danych i opcji związanych z punktem końcowym.
Według typu danych
Opcja | Przykład |
---|---|
Wybierz typ danych. | Dzienniki, metryki i/lub ślady można skonfigurować indywidualnie. |
Włącz lub wyłącz dowolny typ danych. | Możesz wybrać opcję wysyłania tylko śladów i żadnych innych danych. |
Wyślij jeden typ danych do wielu punktów końcowych. | Dzienniki można wysyłać zarówno do usługi DataDog, jak i do punktu końcowego skonfigurowanego przez protokół OTLP. |
Wysyłaj różne typy danych do różnych lokalizacji. | Możesz wysyłać ślady do punktu końcowego i metryk OTLP do usługi DataDog. |
Wyłącz wysyłanie wszystkich typów danych. | Możesz nie wysyłać żadnych danych za pośrednictwem agenta OpenTelemetry. |
Według punktu końcowego
- Jednocześnie można skonfigurować tylko jeden punkt końcowy aplikacji Szczegółowe informacje i datadog.
- Chociaż można zdefiniować więcej niż jeden punkt końcowy skonfigurowany przez otLP, każdy z nich musi mieć odrębną nazwę.
W poniższym przykładzie pokazano, jak używać punktu końcowego OTLP o nazwie customDashboard
. Wysyła:
- śledzenie do szczegółowych informacji o aplikacji i
customDashboard
- dzienniki do szczegółowych informacji o aplikacji i
customDashboard
- metryki do usługi DataDog i
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
## Example OpenTelemetry configuration
The following example ARM template shows how you might configure your container app to collect telemetry data using Azure Monitor Application Insights, Datadog, and with a custom OTLP agent named `customDashboard`.
Before you deploy this template, replace placeholders surrounded by `<>` with your values.
```json
{
"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"
]
}
}
}
}
Zmienne środowiskowe
Agent OpenTelemetry automatycznie wprowadza zestaw zmiennych środowiskowych do aplikacji w czasie wykonywania.
Pierwsze dwie zmienne środowiskowe są zgodne ze standardową konfiguracją eksportera OpenTelemetry i są używane w standardowych zestawach programistycznych OTLP. Jeśli jawnie ustawisz zmienną środowiskową w specyfikacji aplikacji kontenera, wartość zastępuje automatycznie wstrzykniętą wartość.
Dowiedz się więcej o konfiguracji eksportera OTLP zobacz Konfiguracja eksportera OTLP.
Nazwa/nazwisko | opis |
---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
Podstawowy adres URL punktu końcowego dla dowolnego typu sygnału z opcjonalnym numerem portu. To ustawienie jest przydatne, gdy wysyłasz więcej niż jeden sygnał do tego samego punktu końcowego i chcesz, aby jedna zmienna środowiskowa kontrolować punkt końcowy. Przykład: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
Określa protokół transportu OTLP używany dla wszystkich danych telemetrycznych. Zarządzany agent obsługuje tylko program grpc . Wartość: grpc . |
Pozostałe trzy zmienne środowiskowe są specyficzne dla usługi Azure Container Apps i są zawsze wstrzykiwane. Te zmienne przechowują adresy URL punktów końcowych agenta dla każdego określonego typu danych (dzienniki, metryki, ślady).
Te zmienne są konieczne tylko wtedy, gdy używasz zarówno zarządzanego agenta OpenTelemetry, jak i innego agenta OpenTelemetry. Użycie tych zmiennych pozwala kontrolować sposób kierowania danych między różnymi agentami OpenTelemetry.
Nazwa/nazwisko | opis | Przykład |
---|---|---|
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT |
Adres URL punktu końcowego tylko dla danych śledzenia. | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
Adres URL punktu końcowego tylko dla danych dziennika. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
Adres URL punktu końcowego tylko dla danych metryk. | http://otel.service.k8se-apps:43178/v1/metrics/ |
Koszty agenta OpenTelemetry
Opłaty są naliczane za bazowe obliczenia agenta.
Zobacz usługę docelową, aby zapoznać się ze strukturą rozliczeń i warunkami. Jeśli na przykład wysyłasz dane do usługi Azure Monitor Application Szczegółowe informacje i Datadog, odpowiadasz za opłaty stosowane przez obie usługi.
Znane ograniczenia
- Agenci OpenTelemetry są w wersji zapoznawczej.
- Dane systemowe, takie jak dzienniki systemowe lub metryki standardowe usługi Container Apps, nie są dostępne do wysłania do agenta OpenTelemetry.
- Punkt końcowy aplikacji Szczegółowe informacje nie akceptuje metryk.
- Punkt końcowy usługi Datadog nie akceptuje dzienników.
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla