Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan konfigurálhatja a függvényalkalmazást a napló- és nyomkövetési adatok OpenTelemetria formátumban való exportálására. Azure Functions telemetriaadatokat hoz létre a függvényvégrehajtásokról mind a Functions-gazdafolyamatból, mind a nyelvspecifikus feldolgozói folyamatból, amelyben a függvénykód fut. Alapértelmezés szerint ezek a telemetriai adatok az Application Insights SDK használatával lesznek elküldve az Application Insightsnak. Azonban az OpenTelemetria szemantikával exportálhatja ezeket az adatokat. Bár továbbra is használhat OpenTelemetry-formátumot az adatok Application Insightsba való küldéséhez, ugyanezeket az adatokat exportálhatja bármely más OpenTelemetria-kompatibilis végpontra is.
Ezeket az előnyöket az OpenTelemetria függvényalkalmazásban való engedélyezésével érheti el:
- Korrelálja az adatokat a gazdagépen és az alkalmazás kódjában létrehozott nyomkövetések és naplók között.
- Lehetővé teszi az exportálható telemetriai adatok konzisztens, szabványokon alapuló létrehozását.
- Integrálható más, OpenTelemetry-kompatibilis adatokat használó szolgáltatókkal.
A cikk használatakor tartsa szem előtt ezeket a szempontokat:
- Próbálja ki a OpenTelemetria oktatóanyagot, amely az OpenTelemetria és a Azure Functions használatának gyors megkezdéséhez nyújt segítséget. Ez a cikk a Azure fejlesztői parancssori felület (
azd) használatával hoz létre és helyez üzembe egy OpenTelemetry-integrációt használó függvényalkalmazást az elosztott nyomkövetéshez.
- Mivel ez a cikk a választott fejlesztési nyelvre irányul, ne felejtse el kiválasztani a megfelelő nyelvet a cikk tetején.
- Az OpenTelemetry jelenleg nem támogatott a C# folyamatban lévő alkalmazások esetében.
- Az OpenTelemetry a függvényalkalmazás szintjén van engedélyezve, mind a gazdagép konfigurációjában (
host.json), mind a kódprojektben. A Functions emellett ügyféloptimalizált felületet biztosít az OpenTelemetry-adatok exportálásához a nyelvspecifikus feldolgozói folyamatban futó függvénykódból.
OpenTelemetria engedélyezése a Functions-gazdagépen
Ha engedélyezi az OpenTelemetry-kimenetet a függvényalkalmazás host.json fájljában, a gazdagép függetlenül az alkalmazás által használt nyelvi veremtől exportálja az OpenTelemetry-kimenetet.
Ha engedélyezni szeretné az OpenTelemetry-kimenetet a Functions-gazdagépről, frissítse a kódprojekt host.json fájlját , hogy hozzáadjon egy "telemetryMode": "OpenTelemetry" elemet a gyökérgyűjteményhez. Ha az OpenTelemetry engedélyezve van, a host.json fájl a következőképpen nézhet ki:
{
"version": "2.0",
"telemetryMode": "OpenTelemetry",
...
}
Alkalmazásbeállítások konfigurálása
Amikor engedélyezi az OpenTelemetryt a host.json fájlban, az alkalmazás környezeti változói határozzák meg az adatok küldésének végpontjait az OpenTelemetry által támogatott alkalmazásbeállítások alapján.
Hozzon létre konkrét alkalmazásbeállításokat a függvényalkalmazásban az OpenTelemetry kimeneti célhelyének megfelelően. Amikor megadja az Application Insights és az OpenTelemetry protocol (OTLP) exportőr kapcsolati beállításait, az OpenTelemetry-adatokat a rendszer mindkét végpontra elküldi.
APPLICATIONINSIGHTS_CONNECTION_STRING: egy Application Insights-munkaterület kapcsolati karakterlánca. Ha ez a beállítás létezik, a rendszer OpenTelemetry-adatokat küld az adott munkaterületre. Ugyanezzel a beállítással csatlakozhat az Application Insightshoz az OpenTelemetry engedélyezése nélkül. Ha az alkalmazás még nem rendelkezik ezzel a beállítással, lehetséges, hogy engedélyeznie kell az Application Insights integrációját.
JAVA_APPLICATIONINSIGHTS_ENABLE_TELEMETRY: true értékre van állítva, így a Functions-gazdagép lehetővé teszi, hogy a Java feldolgozó folyamat közvetlenül streamelje az OpenTelemetry-naplókat, ami megakadályozza az ismétlődő gazdagépszintű bejegyzéseket.
PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY: true értékre van állítva, így a Functions-gazdagép lehetővé teszi, hogy a Python feldolgozó folyamat közvetlenül streamelje az OpenTelemetry-naplókat, ami megakadályozza az ismétlődő gazdagépszintű bejegyzéseket.
Go-alkalmazások esetén ez a beállítás konfigurálja az OpenTelemetry exportálását a Functions-gazdagépről az Application Insightsba. Nem konfigurálja a Go worker OpenTelemetry middleware-jét, amely az OTLP-beállításokkal exportálja a worker telemetriai adatait. A Go-munkafolyamat telemetriai adatainak az Application Insightsba való küldéséhez irányítsa az OTLP-kimenetet egy OpenTelemetry Collectoron vagy egy másik, az Azure Monitorba történő exportálásra konfigurált OpenTelemetry-alapú folyamaton keresztül.
OpenTelemetria engedélyezése az alkalmazásban
Miután konfigurálta a Functions-gazdagépet az OpenTelemetria használatára, frissítse az alkalmazáskódot az OpenTelemetry-adatok kimenetére. Ha az OpenTelemetryt a gazdagépen és az alkalmazás kódjában is engedélyezi, jobb korrelációt kap a Functions-gazdafolyamat és a nyelvi feldolgozó folyamat által kibocsátott nyomkövetések és naplók között.
Az alkalmazás OpenTelemetry használatára való előkészítése attól függ, melyik cél OpenTelemetry-végpontot használja:
A cikkben szereplő példák feltételezik, hogy az alkalmazás IHostApplicationBuilder használ, amely a 2.x és újabb verzióiban érhető el a Microsoft.Azure.Functions.Worker esetében. További információ: 2.x verzió a C# izolált feldolgozómodell útmutatójában.
Futtassa az alábbi parancsokat a szükséges szerelvények telepítéséhez az alkalmazásban:
Megjegyzés:
A 3.0-s verziótól kezdve a
Microsoft.ApplicationInsights.WorkerServicecsomag Azure Monitor Exportőrt használja. Ezzel a csomagtal fenntarthatja a meglévő Application Insights-konfigurációs viselkedéseket, miközben belsőleg használja a Azure Monitor folyamatot, beleértve az OpenTelemetry-exportőrt is. AMicrosoft.ApplicationInsights.WorkerServicecsomag helyett használhatja aAzure.Monitor.OpenTelemetry.Exportercsomagot (3.0-s vagy újabb verzió), amely az alábbi példában látható.dotnet add package Microsoft.Azure.Functions.Worker.OpenTelemetry dotnet add package OpenTelemetry.Extensions.Hosting dotnet add package Azure.Monitor.OpenTelemetry.ExporterA Program.cs projektfájlban adja hozzá ezt az utasítást
using:using Azure.Monitor.OpenTelemetry.Exporter;Konfigurálja az OpenTelemetryt attól függően, hogy a projekt indítása
IHostBuildervagyIHostApplicationBuilderhasználatával történik. Ez utóbbi a .NET izolált feldolgozómodell-bővítmény 2.x verziójában lett bevezetve.Adja hozzá ezt a kódsort a program.cs fájlban a következő után
ConfigureFunctionsWebApplication.builder.Services.AddOpenTelemetry() .UseFunctionsWorkerDefaults() .UseAzureMonitorExporter();Mindkét OpenTelemetry-végpontra exportálhat ugyanabból az alkalmazásból.
Adja hozzá a szükséges könyvtárakat az alkalmazáshoz. A kódtárak hozzáadásának módja attól függ, hogy a Maven vagy a Kotlin használatával helyezi-e üzembe, és hogy adatokat szeretne-e küldeni az Application Insightsnak.
<dependency> <groupId>com.microsoft.azure.functions</groupId> <artifactId>azure-functions-java-opentelemetry</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-monitor-opentelemetry-autoconfigure</artifactId> <version>1.2.0</version> </dependency>(Nem kötelező) Adja hozzá ezt a kódot egyéni tartományok létrehozásához:
import com.microsoft.azure.functions.opentelemetry.FunctionsOpenTelemetry; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.context.Scope; Span span = FunctionsOpenTelemetry.startSpan( "com.contoso.PaymentFunction", // tracer name "validateCharge", // span name null, // parent = current context SpanKind.INTERNAL); try (Scope ignored = span.makeCurrent()) { // business logic here } finally { span.end(); }
Telepítse ezeket az npm-csomagokat a projektben:
npm install @opentelemetry/api npm install @opentelemetry/auto-instrumentations-node npm install @azure/monitor-opentelemetry-exporter npm install @azure/functions-opentelemetry-instrumentation
Hozzon létre egy kódfájlt a projektben, másolja és illessze be az alábbi kódot az új fájlba, és mentse a fájlt a következőként
src/index.js:const { AzureFunctionsInstrumentation } = require('@azure/functions-opentelemetry-instrumentation'); const { AzureMonitorLogExporter, AzureMonitorTraceExporter } = require('@azure/monitor-opentelemetry-exporter'); const { getNodeAutoInstrumentations, getResourceDetectors } = require('@opentelemetry/auto-instrumentations-node'); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { detectResourcesSync } = require('@opentelemetry/resources'); const { LoggerProvider, SimpleLogRecordProcessor } = require('@opentelemetry/sdk-logs'); const { NodeTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-node'); const resource = detectResourcesSync({ detectors: getResourceDetectors() }); const tracerProvider = new NodeTracerProvider({ resource }); tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new AzureMonitorTraceExporter())); tracerProvider.register(); const loggerProvider = new LoggerProvider({ resource }); loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(new AzureMonitorLogExporter())); registerInstrumentations({ tracerProvider, loggerProvider, instrumentations: [getNodeAutoInstrumentations(), new AzureFunctionsInstrumentation()], });Frissítse a
mainpackage.json fájl mezőjét úgy, hogy az tartalmazza az újsrc/index.jsfájlt. Például:"main": "src/{index.js,functions/*.js}"
Hozzon létre egy kódfájlt a projektben, másolja és illessze be az alábbi kódot az új fájlba, és mentse a fájlt a következőként
src/index.ts:import { AzureFunctionsInstrumentation } from '@azure/functions-opentelemetry-instrumentation'; import { AzureMonitorLogExporter, AzureMonitorTraceExporter } from '@azure/monitor-opentelemetry-exporter'; import { getNodeAutoInstrumentations, getResourceDetectors } from '@opentelemetry/auto-instrumentations-node'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { detectResourcesSync } from '@opentelemetry/resources'; import { LoggerProvider, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs'; import { NodeTracerProvider, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node'; const resource = detectResourcesSync({ detectors: getResourceDetectors() }); const tracerProvider = new NodeTracerProvider({ resource }); tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new AzureMonitorTraceExporter())); tracerProvider.register(); const loggerProvider = new LoggerProvider({ resource }); loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(new AzureMonitorLogExporter())); registerInstrumentations({ tracerProvider, loggerProvider, instrumentations: [getNodeAutoInstrumentations(), new AzureFunctionsInstrumentation()], });Frissítse a
mainpackage.json fájl mezőjét úgy, hogy az tartalmazza az újsrc/index.tsfájl kimenetét, amely így nézhet ki:"main": "dist/src/{index.js,functions/*.js}"
Fontos
A PowerShell-alkalmazások jelenleg nem támogatják az Application Insights openTelemetry kimenetét a nyelvi feldolgozótól. Érdemes lehet inkább OTLP-exportőri végpontot használnia. Amikor a hostot beállítja OpenTelemetry-kimenetre az Application Insights számára, a PowerShell-munkafolyamat által generált naplók továbbra is továbbítódnak, de az elosztott nyomkövetés jelenleg nincs támogatva.
Ezek az utasítások csak egy OTLP-exportőrre vonatkoznak:
Adjon hozzá egy olyan alkalmazásbeállítást
OTEL_FUNCTIONS_WORKER_ENABLED, amelynek értéke :True.Hozzon létre egy alkalmazásszintű
Modulesmappát az alkalmazás gyökerében, és futtassa a következő parancsot:Save-Module -Name AzureFunctions.PowerShell.OpenTelemetry.SDKEz a parancs közvetlenül az alkalmazásban telepíti a szükséges
AzureFunctions.PowerShell.OpenTelemetry.SDKmodult. A fájllal nem telepítheti automatikusan ezt arequirements.psd1függőséget, mert a Felügyelt függőségek jelenleg nem támogatottak a Flex Consumption csomag előzetes verziójában.Adja hozzá ezt a kódot a profile.ps1 fájlhoz:
Import-Module AzureFunctions.PowerShell.OpenTelemetry.SDK -Force -ErrorAction Stop Initialize-FunctionsOpenTelemetry
Győződjön meg arról, hogy ezek a könyvtárak a
requirements.txtfájlban szerepelnek, akár úgy, hogy megjegyzésből kivesszük, akár úgy, hogy saját maga adja hozzá őket:azure-monitor-opentelemetryAdja hozzá ezt a kódot a fő belépési pont fájljához
function_app.py:Ha már felvette
PYTHON_APPLICATIONINSIGHTS_ENABLE_TELEMETRY=trueaz alkalmazásbeállításokba, kihagyhatja ezt a lépést. Ha automatikus rendszerezés nélkül szeretné manuálisan engedélyezni az Application Insights-gyűjteményt, adja hozzá ezt a kódot az alkalmazáshoz:from azure.monitor.opentelemetry import configure_azure_monitor configure_azure_monitor()Tekintse át az Azure Disztró használatának monitorozása dokumentációt az SDK további konfigurálási lehetőségeiről.
Go-alkalmazások esetén ugyanazt a feldolgozói beállítást használja a rendszer bármely OpenTelemetry-célhelyhez. A köztes szoftver az OTLP-beállítások használatával exportálja a feldolgozói telemetriát. Az OTLP-végpont lehet szállítói végpont vagy OpenTelemetria-gyűjtő, amely a telemetriát egy másik célhelyre továbbítja, például Azure Monitor.
Győződjön meg arról, hogy a projekt az OpenTelemetry köztes szoftverét tartalmazó Go-feldolgozó SDK-t használja:
go get github.com/azure/azure-functions-golang-worker@latest go mod tidyA(z)
main.gofájlban importálja az OpenTelemetry köztes réteget, és regisztrálja azt, mielőtt regisztrálná a függvényeket:package main import ( "fmt" "log/slog" "net/http" "github.com/azure/azure-functions-golang-worker/middleware/otelfunc" "github.com/azure/azure-functions-golang-worker/sdk" "github.com/azure/azure-functions-golang-worker/worker" ) func hello(w http.ResponseWriter, r *http.Request) { slog.InfoContext(r.Context(), "processing request", "path", r.URL.Path) fmt.Fprintln(w, "hello") } func main() { app := sdk.FunctionApp() app.Use(otelfunc.Middleware()) app.HTTP("hello", hello, sdk.WithMethods("GET"), sdk.WithAuth("anonymous"), ) worker.Start(app) }
A nulla argumentumú köztes szoftver a cikkben korábban konfigurált szabványos OTEL_EXPORTER_OTLP_* alkalmazásbeállításokat használja. Hívási időtartamokat hoz létre, korrelálja slog a hívási környezettel kibocsátott rekordokat, és minden egyes hívás után kiüríti a telemetriát.
Egyéni gyermek spanok létrehozásához használja a szabványos OpenTelemetry Go API-kat a hívási kontextussal. HTTP-eseményindítók esetén használja r.Context() szülőkörnyezetként. Más triggertípusok esetén használja a context.Context kezelőnek átadott paramétert.
Az OpenTelemetria szempontjai
Amikor OpenTelemetria használatával exportálja az adatokat, tartsa szem előtt ezeket a szempontokat.
Az Azure portál csak akkor támogatja a
Recent function invocationnyomkövetést, ha a telemetriát az Azure Monitorhoz küldik el.Amikor a gazdagépet OpenTelemetria használatára konfigurálja, a Azure portál nem támogatja a naplóstreamelést.
Ha a
telemetryModeértéketOpenTelemetry-re állítja, a host.json fájllogging.applicationInsightsszakaszának konfigurációja nem alkalmazható.
Az egyéni spanok automatikusan tartalmazzák az összes erőforrásattribútumot, és az alkalmazásban konfigurált exportőröket használják.
Ha az alkalmazás Azure kívül fut, beleértve a helyi fejlesztés során is, az erőforrás-detektor alapértelmezés szerint
service.nameértékre állítja ajava-function-appattribútumot.Az alábbi Java virtuális gép (JVM) jelzőkkel elnémíthatja a telemetriát, amikor helyileg fut az egységtesztek során:
-Dotel.traces.exporter=none-Dotel.metrics.exporter=none-Dotel.logs.exporter=none
- Nem kell manuálisan regisztrálnia a middleware-t; a Java feldolgozó automatikusan észleli
OpenTelemetryInvocationMiddleware.
Használjon környezettudatos metódusokat a standard
log/slogcsomagból, példáulslog.InfoContextésslog.ErrorContext, a strukturált naplók és az aktuális hívás és nyomkövetés korrelálásához.A Go worker OpenTelemetry köztes rétege külön engedélyezhető. Azok az alkalmazások, amelyek nem importálnak és regisztrálnak
middleware/otelfunc, nem tartalmaznak OpenTelemetria-csomagokat a lefordított bináris fájlban.Ha ideiglenesen le szeretné tiltani a Go-feldolgozó köztes szoftverét az alkalmazás ismételt üzembe helyezése nélkül, állítsa a következőre
AZURE_FUNCTIONS_WORKER_OPENTELEMETRY_DISABLEDtrue: .A speciális konfigurációhoz a köztes szoftver regisztrálása előtt egyéni OpenTelemetria-szolgáltatókat, exportőröket, erőforrás-attribútumokat és propagátorokat konfigurálhat kódban.
Erőforrás-érzékelők és szemantikai konvenciók
A Azure Functions az erőforrásattribútumok a függvényalkalmazás folyamatát és környezetét írják le. A span attribútumok egyetlen meghívást írnak le.
Alapértelmezett viselkedés (nincs szükség műveletre)
Az Azure Functions az App Service-en belül az erőforrás-érzékelők általában automatikusan feltöltik a gyakori attribútumokat, például:
-
service.name(a függvényalkalmazás nevének alapértelmezett értéke) - Azure felhőattribútumok, például
cloud.provider,cloud.regionéscloud.resource_id
A legtöbb esetben ezek az alapértelmezett értékek elegendőek a megfelelő alkalmazástérkép-csoportosításhoz és Azure környezethez.
Mikor kell felülírni service.name (felhőbeli szerepkör neve)
Csak akkor bírálja felül, ha az Application Insightsban (alkalmazástérkép-csoportosításban) eltérő, stabil csomópontnévre van szüksége, például a pontok vagy környezetek elnevezésének normalizálásához.
Állítsa be OTEL_SERVICE_NAME az észlelt érték felülbírálására:
export OTEL_SERVICE_NAME="my-function-app"
Meghívási span attribútumok (általában automatikus)
Ezeket csak akkor kell manuálisan beállítania, ha egyéni invokációs időtartamot hoz létre.
-
faas.name(függvény neve) -
faas.trigger(példáulhttp,servicebus,eventhubs) -
faas.execution(hívás/végrehajtás azonosítója)
Fontos
A függvényalkalmazások több függvényt is üzemeltethetnek egy folyamat során. Ne helyezzen függvényspecifikus értékeket az erőforrásra. Az egyes hívásokhoz tartozó identitást rendelje hozzá a spanokhoz.
Megjegyzés:
Ha helyileg (Functions Core Tools) vagy olyan tárolóalapú/saját üzemeltetésű környezetben fut, ahol Azure metaadatok nem érhetők el, előfordulhat, hogy a service.name alapértelmezés szerint általános értéket ad meg. Állítsa be OTEL_SERVICE_NAME helyileg úgy, hogy megfeleljen a termelési elnevezésnek.
Hibaelhárítás
Amikor OpenTelemetria használatával exportálja az adatokat, tartsa szem előtt ezeket a gyakori problémákat és megoldásokat.
Naplószűrés
Ha megfelelően szeretné konfigurálni a naplószűrést a függvényalkalmazásban, ismernie kell a gazdafolyamat és a feldolgozói folyamat közötti különbséget.
A host folyamat az a Azure Functions futtatókörnyezet, amely kezeli az eseményindítókat, a skálázást, és rendszerszintű telemetriát bocsát ki, például inicializálási naplókat, kérelmek nyomkövetését és futásidejű állapotinformációkat.
A feldolgozói folyamat nyelvspecifikus, végrehajtja a függvénykódot, és egymástól függetlenül állítja elő az alkalmazásnaplókat és a telemetriát.
Fontos
A host.json fájlban meghatározott szűrők csak a gazdagépfolyamat által létrehozott naplókra vonatkoznak. A munkavégző folyamat naplóinak szűréséhez nyelvspecifikus OpenTelemetria-beállításokat kell használnia.
Példa: Gazdagépnaplók szűrése az host.jsonösszes szolgáltatója számára
Ezzel a módszerrel globális naplószintet állíthat be a gazdagép által felügyelt összes szolgáltatóra:
{
"version": "2.0",
"telemetryMode": "OpenTelemetry",
"logging": {
"logLevel": {
"default": "Warning"
}
}
}
Példa: Csak az OpenTelemetry logger szolgáltató esetében szűrje a naplókat
Ezzel a módszerrel csak az OpenTelemetry-naplózó szolgáltatóját célozhatja meg, miközben más szolgáltatókat (például konzolt vagy fájlnaplózást) nem érint:
{
"version": "2.0",
"telemetryMode": "OpenTelemetry",
"logging": {
"OpenTelemetry": {
"logLevel": {
"default": "Warning"
}
}
}
}
Konzolnaplózás
A Functions-gazdagép automatikusan rögzíti az stdout-ra vagy stderrre írt adatokat, és továbbítja azt a telemetriai folyamatnak. Ha ConsoleExportert használ, vagy közvetlenül a konzolra írja a kódot, telemetriai adataiban ismétlődő naplóbejegyzések fordulhatnak elő.
Megjegyzés:
Az ismétlődő telemetriai bejegyzések elkerülése érdekében ne adjon hozzá ConsoleExportert, és ne írjon a konzolra gyártói kódban.
Microsoft Entra hitelesítés
Ha Microsoft Entra-hitelesítést használ Az OpenTelemetria használatával, a hitelesítést külön kell konfigurálnia mind a gazdafolyamathoz, mind a feldolgozó folyamathoz.
A gazdafolyamat hitelesítésének konfigurálásához lásd: Require Microsoft Entra hitelesítés.
A feldolgozó folyamat hitelesítésének konfigurálásához lásd: Enable Microsoft Entra authentication.
Erőforrásattribútumok támogatása
Az erőforrásattribútumok Azure Monitor támogatása jelenleg előzetes verzióban érhető el. A funkció engedélyezéséhez állítsa a OTEL_DOTNET_AZURE_MONITOR_ENABLE_RESOURCE_METRICS környezeti változót a következőre: true. Ez a beállítás betölti az erőforrásattribútumokat az egyéni metrikák táblájába.
Ismétlődő lekérdezés-telemetria
A gazdafolyamat automatikusan küldi a kérés telemetriáját. Ha a munkafolyamatot a lekérdezéskövetési könyvtárak is használják (például az AspNetCoreInstrumentation .NET-ben), ugyanazt a kérést kétszer jelenti a rendszer.
Megjegyzés:
Mivel az Azure Monitor disztribúció általában az AspNetCoreInstrumentation .NET-et és más nyelvek hasonló rendszerállapotát tartalmazza, kerülje az Azure Monitor disztribúció használatát a munkafolyamatban az ismétlődő telemetriai adatok elkerülése érdekében.
Nem tartalmazzák a naplózási hatóköröket
Alapértelmezés szerint a feldolgozói folyamat nem tartalmaz hatóköröket a naplóiban. A hatókörök engedélyezéséhez ezt a beállítást explicit módon kell konfigurálnia a feldolgozóban. Az alábbi példa bemutatja, hogyan engedélyezheti a hatóköröket .NET izolált környezetben:
builder.Logging.AddOpenTelemetry(b => b.IncludeScopes = true);
Hiányzó kérés telemetria
Az olyan eseményindítók, mint a HTTP, a Service Bus és az Event Hubs, az elosztott nyomkövetés környezetpropagálásától függenek. Ha a szülőalapú mintavételezés az alapértelmezett viselkedés, a kérés telemetriája nem jön létre, ha a bejövő kérés vagy üzenet nincs mintavételezésre.
Duplikált műveletazonosító
A Azure Functions a telemetriai adatok korrelálásához használt OperationId közvetlenül a bejövő kérés vagy üzenet traceparent értékéből származik. Ha több hívás is ugyanazt traceparent az értéket használja újra, mindegyik ugyanazt OperationIdkapja.
OpenTelemetria konfigurálása környezeti változókkal
Az OpenTelemetry viselkedését a szokásos környezeti változók használatával konfigurálhatja. Ezek a változók egységes módot biztosítanak a különböző nyelvek és futtatókörnyezetek viselkedésének szabályozására. Módosíthatja a mintavételezési stratégiákat, az exportőr beállításait és az erőforrás-attribútumokat. A támogatott környezeti változókkal kapcsolatos további információkért tekintse meg az OpenTelemetry dokumentációját.
Monitorozási problémák elhárítása diagnosztikák használatával
Azure Functions diagnosztika a Azure portálon hasznos forrás a lehetséges monitorozással kapcsolatos problémák észleléséhez és diagnosztizálására.
Diagnosztikához való hozzáférés az alkalmazásban:
A Azure portálon lépjen a függvényalkalmazás erőforrására.
A bal oldali panelen válassza a Problémák diagnosztizálása és megoldása lehetőséget, és keresse meg a Függvényalkalmazás hiányzó telemetriáját az Application Insights vagy az OpenTelemetry munkafolyamat esetében.
Válassza ki ezt a munkafolyamatot, válassza ki a betöltési módszert, és válassza a Tovább lehetőséget.
Tekintse át a hibaelhárító által megadott irányelveket és javaslatokat.
Következő lépések
További információ az OpenTelemetry-ről és az Azure Functions monitorozásáról: