Ez az útmutató részletes útmutatást nyújt az alkalmazások Application Insights SDK-k (klasszikus API) használatával történő migrálásához az Azure Monitor OpenTelemetrybe.
Az Azure Monitor OpenTelemetry műszerezése hasonló élményt nyújt, mint az Application Insights SDK-k. További információkért és funkciók szerinti összehasonlításért tekintse meg a funkciók kiadási állapotát.
Az Application Insights .NET 3.x szoftverfejlesztői készlet (SDK) használatával frissítsen az Application Insights .NET SDK 2.x-ről OpenTelemetry (OTel)-alapú implementációra. A 3.x SDK a legtöbb TelemetryClient és TelemetryConfiguration alkalmazásprogramozási felületet (API-kat) tárolja, és az Azure Monitor OpenTelemetria-exportőr használatával küld telemetriát az Application Insightsnak.
A legtöbb klasszikus Track* hívás a frissítés után is működik, de egy belső leképezési rétegen keresztül irányítja őket, amely OpenTelemetria-jeleket bocsát ki.
Ha új alkalmazást hoz létre, vagy már használja az Azure Monitor OpenTelemetry Distro-t, akkor inkább használja az Azure Monitor OpenTelemetry Distro-t. Ne használja az Application Insights .NET SDK 3.x és a Azure Monitor OpenTelemetria-disztribúciót ugyanabban az alkalmazásban.
Az Application Insights .NET SDK 3.x áttekintése
Az Application Insights .NET SDK 3.x a következő NuGet-csomagokat biztosítja:
-
Microsoft.ApplicationInsightsés TelemetryClientTelemetryConfiguration
-
Microsoft.ApplicationInsights.AspNetCore ASP.NET (Active Server Pages .NET) Core-webalkalmazásokhoz
-
Microsoft.ApplicationInsights.WorkerService Worker szolgáltatáshoz és konzolalkalmazásokhoz
-
Microsoft.ApplicationInsights.Web ASP.NET-alkalmazásokhoz .NET-keretrendszerben
-
Microsoft.ApplicationInsights.NLogTarget NLog-integrációhoz (bétaverzió)
A kódpéldákhoz és a részletes migrálási útmutatóhoz használja az adattár dokumentációját:
Frissítés 3.x-re
1. lépés: Nem kompatibilis csomagokra mutató hivatkozások eltávolítása
Távolítsa el ezeket a csomagokat, mert nem kompatibilisek az SDK 3.x-zel:
Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel
Microsoft.ApplicationInsights.DependencyCollector
Microsoft.ApplicationInsights.EventCounterCollector
Microsoft.ApplicationInsights.PerfCounterCollector
Microsoft.ApplicationInsights.WindowsServer
Microsoft.Extensions.Logging.ApplicationInsights
Microsoft.ApplicationInsights.Log4NetAppender
Microsoft.ApplicationInsights.TraceListener
Microsoft.ApplicationInsights.DiagnosticSourceListener
Microsoft.ApplicationInsights.EtwCollector
Microsoft.ApplicationInsights.EventSourceListener
Az SDK 3.x nem teszi közzé ezeknek a csomagoknak a 3.x verzióját. Ehelyett használja az Application Insights .NET SDK 3.x áttekintésében felsorolt támogatott 3.x csomagokat. A következő szakaszok a csomagok tervezett cseréjét ismertetik. Bizonyos esetekben a funkciók beépítettek a támogatott 3.x csomagokba, vagy OpenTelemetria API-k váltják fel őket.
Megjegyzés:
Ez a lista csak Microsoft-csomagokat tartalmaz. Ha olyan külső csomagokat használ, amelyek 2.x-től Microsoft.ApplicationInsights függenek (például), a frissítés előtt ellenőrizze, Serilog.Sinks.ApplicationInsightshogy ezek a csomagok támogatják-e az SDK 3.x-et. Kövesse a csomag karbantartóinak útmutatását.
2. lépés: Csomagverziók frissítése 3.x-re
Frissítse a fennmaradó támogatott Application Insights-csomagokat a legújabb 3.x verzióra.
Fontos
Ne keverje az Application Insights 2.x és 3.x csomagokat ugyanabban az alkalmazásban. Frissítse az összes Application Insights csomaghivatkozást egyszerre.
3. lépés: Kód és konfiguráció frissítése a kompatibilitástörő változásokhoz
Tekintse át a kompatibilitástörő változásokra vonatkozó hivatkozást és a részletes migrálási útmutatót. A legtöbb alkalmazásnak frissítenie kell a kódot vagy a konfigurációt az alábbi területeken:
| 2.x API, beállítás vagy minta |
3.x útmutató |
TrackPageView |
Távolítsa el a TrackPageView hívásokat. Az oldalnézet nyomon követése a .NET 3.x SDK-ban törlődik. |
TrackEvent, TrackExceptionés TrackAvailability túlterhelések, amelyek magukban foglalják a IDictionary<string, double> metrics |
Távolítsa el az egyéni metrikák paramétert. A metrikákat külön nyomon követheti, ha használja a TrackMetric()-et. |
túlterhelések, amelyek GetMetric-t vagy MetricConfiguration-t használnak |
Használja az egyszerűsített GetMetric túlterheléseket. A metrikák konfigurációja és összesítése belsőleg, az SDK 3.x-ben van kezelve. |
InstrumentationKey konfiguráció vagy TelemetryClient.InstrumentationKey |
Használjon TelemetryConfiguration.ConnectionString és adjon meg egy kapcsolati sztringet a mérőkulcs helyett. Az SDK 3.x kapcsolati sztringet igényel, és indításkor meghiúsulhat, ha nincs konfigurálva. Tesztforgatókönyvek esetén használhat egy ál kapcsolati sztringet, például InstrumentationKey=00000000-0000-0000-0000-000000000000. |
TelemetryClient() vagy TelemetryConfiguration.Active |
Hozzon létre egy konfigurációt explicit módon TelemetryConfiguration.CreateDefault() használatával, és adja át azt a(z) new TelemetryClient(config) részére. |
TelemetryModule, TelemetryInitializer, vagy TelemetryProcessor testreszabás |
Az egyéni inicializálókat vagy processzorokat OpenTelemetry-alapú processzorokba kell migrálni. El kell távolítani a beépített 2.x processzorokra, inicializálókra és modulokra mutató hivatkozásokat. További információ: migrálási útmutató. |
ITelemetryChannel vagy TelemetryConfiguration.TelemetryChannel |
A klasszikus csatorna absztrakciója törlődik, mert a 3.x belsőleg magában foglalja az Azure Monitor-exportőrt. Tesztekhez használjon OpenTelemetriabarát ellenőrzést, például memórián belüli exportőrt. |
EnableAdaptiveSampling |
Cserélje le az adaptív mintavételezést a következőre TracesPerSecond : vagy SamplingRatio. |
Microsoft.ApplicationInsights.Web a .NET-keretrendszer 4.5.2 célzása |
Cél .NET-keretrendszer 4.6.2 vagy újabb. |
| Metrikanév és névtér konvenciók |
Az OpenTelemetry-eszköz elnevezési szintaxisának követéséhez frissítse a name, metricId és metricNamespace értékeket, melyeket az TrackMetric(), GetMetric() és MetricIdentifier elemekkel együtt használ. A metrikaneveknek és névtereknek betűvel kell kezdődniük, és csak betűket, számjegyeket, _, ., -vagy /. Szóközök nem használhatók. |
Eltávolított bővíthetőségi pontok cseréje
Az Application Insights .NET SDK 2.x olyan Application Insights-specifikus bővíthetőségi típusokat biztosított, mint a telemetriai modulok, inicializálók, processzorok és csatornák. Az Application Insights .NET SDK 3.x az OpenTelemetria bővíthetőségét használja.
A 2.x bővíthetőségi pontok cseréjével kapcsolatos részletes útmutatásért, beleértve a peremes eseteket is, tekintse meg a migrálási útmutatót.
Jótanács
Az erőforrásalapú értékek, mint például a szerepkör-metaadatok, az OpenTelemetry erőforrás-leképezéseken keresztül haladhatnak, és nem jelennek meg minden telemetriai elemen. Ha minden telemetriai elemhez kulcs-érték párra van szüksége, használjon GlobalProperties vagy egyéni processzort.
Az Application Insights .NET SDK 3.x két mintavételezési módot támogat nyomkövetésekhez (kérésekhez és függőségekhez):
- Állítsa be
SamplingRatio (0,0–1,0) százalékalapú mintavételezéshez.
- Állítsa be
TracesPerSecond a sebességkorlátos mintavételezést (alapértelmezett: Másodpercenként öt nyomkövetés).
Az SDK 3.x ugyanazokat a mintavételezési beállításokat alkalmazza a kérelmekre és függőségekre. Az SDK 3.x nem támogatja a kérelmek és függőségek különálló mintavételezési beállításait.
Amikor egy kérést vagy függőséget mintavételeznek, az SDK 3.x alapértelmezés szerint alkalmazza a szülőkövetés mintavételezési döntését a kapcsolódó naplókra. A viselkedés letiltásához állítsa be a EnableTraceBasedLogsSampler értékre false.
Beállíthatja a SamplingRatio, TracesPerSecond és EnableTraceBasedLogsSampler a TelemetryConfiguration, appsettings.json vagy applicationinsights.config.
A frissítés hibaelhárítása
Az alábbi lépésekkel ellenőrizheti a telemetriát az SDK 3.x-re való frissítés során:
- Ellenőrizze, hogy a teljes kapcsolati sztring konfigurálva van-e az indítás előtt. Ha valós erőforrás nélkül ellenőrzi a telemetriát a tesztekben, használjon egy hamis kapcsolati sztringet.
- Gyűjtse össze az Application Insights öndiagnosztikai naplóit a konfigurációs hibák és az exportőr hibáinak azonosításához.
- Adja hozzá az OpenTelemetry-konzol exportőrét annak ellenőrzéséhez, hogy a nyomkövetések, metrikák és naplók a várt módon bocsátanak-e ki, mielőtt Azure Monitor betöltési műveletre támaszkodik.
- Ha korábban a tesztelt telemetriát szimulálva
ITelemetryChannelegyesítette, váltson OpenTelemetry-barát ellenőrzésre, például memóriabeli exportőrökre vagy más tesztexportálókra a nem gyártási környezetekben.
- Ellenőrizze, hogy a mintavételezési beállítások a várt módon működnek-e a szülő-gyermek nyomkövetési döntések érvényesítésével.
- Ellenőrizze az erőforrásattribútumokat, például a szolgáltatásnevet, a szerepkörnevet, a szerepkörpéldányt és a környezetet, hogy biztosítsa a helyes hozzárendelést az Application Insightsban.
- Ha egyéni bővítést migrált, ellenőrizze, hogy a tulajdonságok a vártnak megfelelő helyre jelennek-e meg. Az erőforrás-alapú leképezések eltérhetnek a 2.x viselkedéstől.
Részletes hibaelhárítási útmutatásért és példákért használja a következő erőforrásokat:
A 3.x-re való frissítéskor általában nincsenek kódmódosítások. A 3.x SDK-függőségek a 2.x SDK-függőségek no-op (nincs művelet) API-verziói. A 3.x Java ügynök használata esetén azonban a 3.x Java ügynök biztosítja a megvalósítást. A testreszabott instrumentáció így összekapcsolódik a 3.x Java ügynök által biztosított új autoinstrumentációval.
1. lépés: Függőségek frissítése
| 2.x függőség |
Tevékenység |
Megjegyzések |
applicationinsights-core |
Frissítse a verziót 3.4.3-re vagy újabbra |
|
applicationinsights-web |
Frissítse a verziót a 3.4.3 vagy újabb verzióra, és távolítsa el az Application Insights webszűrőt a web.xml fájlból. |
|
applicationinsights-web-auto |
Cserélje le 3.4.3 vagy újabb verzióval applicationinsights-web |
|
applicationinsights-logging-log4j1_2 |
Távolítsa el a függőséget, és távolítsa el az Application Insights-hozzáfűzőt a Log4j-konfigurációból. |
A Log4j 1.2 hozzáfűzőre nincs szükség, mivel a 3.x Java-ügynök automatikusan instrumentálja a Log4j 1.2-t. |
applicationinsights-logging-log4j2 |
Távolítsa el a függőséget, és távolítsa el az Application Insights-hozzáfűzőt a Log4j-konfigurációból. |
A Log4j 2 hozzáfűzőre nincs szükség, mivel a 3.x Java-ügynök automatikusan beállítja a Log4j 2-t. |
applicationinsights-logging-logback |
Távolítsa el a függőséget, és távolítsa el az Application Insights-hozzáfűzőt a bejelentkezési konfigurációból. |
A Logback hozzáfűzőre nincs szükség, mivel a 3.x Java ügynök automatikusan instrumentálja a Logbacket. |
applicationinsights-spring-boot-starter |
Cserélje le 3.4.3 vagy újabb verzióval applicationinsights-web |
A felhőbeli szerepkör neve már nem alapértelmezett.spring.application.name A felhőbeli szerepkör nevének konfigurálásáról az Azure Monitor OpenTelemetria konfigurálása című témakörben olvashat. |
2. lépés: A 3.x Java ügynök hozzáadása
Adja hozzá a 3.x Java ügynököt a Java virtuális gép (JVM) parancssori arg-jaihoz, például:
-javaagent:path/to/applicationinsights-agent-3.7.5.jar
Ha az Application Insights 2.x Java-ügynököt használja, cserélje le a meglévő -javaagent:... az előző példára.
Megjegyzés:
Ha applicationinsights-spring-boot-starter használ, a Spring Boot-integrációt használhatja a Java ügynök helyett. Útmutatásért látogasson el a 3.x Spring Bootra.
Lásd: Az Azure Monitor OpenTelemetria konfigurálása.
Egyéb megjegyzések
A dokumentum többi része a 2.x-ről 3.x-re való frissítéskor előforduló korlátozásokat és módosításokat, valamint néhány hasznos kerülő megoldást ismertet.
TelemetryInitializers
A 2.x SDK TelemetryInitializers nem fut a 3.x ügynök használatakor. A korábban TelemetryInitializer írásához szükséges használati esetek nagy része megoldható az Application Insights Java 3.x-ben egyéni dimenziók konfigurálásával, vagy örökölt attribútumok használatával.
Telemetriafeldolgozók
A 2.x SDK telemetriaiprocesszorai nem futnak a 3.x ügynök használatakor. A korábban írást igénylő TelemetryProcessor használati esetek közül sok megoldható az Application Insights Java 3.x-ben a mintavételezési kivételek konfigurálásával.
Több alkalmazás egyetlen JVM-ben
Ezt a használati esetet az Application Insights Java 3.x támogatja Felhő szerepkörnév-felülbírálások (előzetes verzió) és/vagy Kapcsolódási sztring felülbírálása (előzetes verzió).
Műveletnevek
Az Application Insights Java 2.x SDK-ban bizonyos esetekben a műveletnevek a teljes elérési utat tartalmazzák, például:
Az Application Insights Java 3.x műveletnevei úgy változtak, hogy általában jobb összesített nézetet biztosítsanak az Application Insights Portál U/X-ben, például:
Egyes alkalmazások esetében azonban továbbra is előnyben részesítheti az előző műveletnevek által biztosított összesített nézetet az U/X-ben. Ebben az esetben a 3.x telemetriai processzorok (előzetes verzió) funkciójával replikálhatja az előző viselkedést.
Az alábbi kódrészlet három olyan telemetriai processzort konfigurál, amelyek kombinálva replikálják az előző viselkedést.
A telemetriai processzorok a következő műveleteket hajtják végre (sorrendben):
Az első telemetriai processzor egy attribútumfeldolgozó (típussal attributerendelkezik), ami azt jelenti, hogy minden olyan telemetriára vonatkozik, amely attribútumokkal rendelkezik (jelenleg requests és dependencieshamarosan is traces).
Megfelel minden olyan telemetriának, amelynek attribútumai el vannak nevezve http.request.method és url.path.
Ezután kinyeri az attribútumot url.path egy új, névvel ellátott tempNameattribútumba.
A második telemetriai processzor egy span processzor (típus span), ami azt jelenti, hogy ez vonatkozik requests és dependencies.
Megfelel minden olyan szakasznak, amelynek van egy tempPath nevű attribútuma.
Ezután frissíti a span nevet az attribútumból tempPath.
Az utolsó telemetriai processzor egy attribútumfeldolgozó, amely megegyezik az első telemetriai processzor típusával.
Megfelel minden olyan telemetriának, amely rendelkezik egy attribútummal.tempPath
Ezután törli a névvel ellátott tempPathattribútumot, és az attribútum egyéni dimenzióként jelenik meg.
{
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"attributes": [
{ "key": "http.request.method" },
{ "key": "url.path" }
]
},
"actions": [
{
"key": "url.path",
"pattern": "https?://[^/]+(?<tempPath>/[^?]*)",
"action": "extract"
}
]
},
{
"type": "span",
"include": {
"matchType": "strict",
"attributes": [
{ "key": "tempPath" }
]
},
"name": {
"fromAttributes": [ "http.request.method", "tempPath" ],
"separator": " "
}
},
{
"type": "attribute",
"include": {
"matchType": "strict",
"attributes": [
{ "key": "tempPath" }
]
},
"actions": [
{ "key": "tempPath", "action": "delete" }
]
}
]
}
}
Mintavételezés és hiányzó naplók
A rátakorlátozott mintavételezés a 3.4-es ügynök esetén alapértelmezetten engedélyezve van, ami váratlan naplóhiányt okozhat.
Példa projektre
Ez a Java 2.x SDK-projekt egy új projektbe lett migrálva, amely a 3.x Java-ügynököt használja.
Ez az útmutató két lehetőséget kínál az Application Insights Node.js SDK 2.X-ről az OpenTelemetryre való frissítésre.
Tiszta telepítés
Az OpenTelemetry JavaScript-alkalmazásprogramozási felületének (API) és szoftverfejlesztői készletének (SDK) előfeltételeinek ismerete.
Távolítsa el a applicationinsights függőséget a projektből.
npm uninstall applicationinsights
Távolítsa el az SDK 2.X-implementációt a kódból.
Távolítsa el az összes Application Insights-megfigyelési rendszerkomponenst a kódból. Törölje azokat a szakaszokat, ahol az Application Insights-ügyfél inicializálva, módosítva vagy meghívva van.
Engedélyezze az Application Insightst az Azure Monitor OpenTelemetria-disztribúcióval.
Fontos
Mielőtt bármi mást importálna, useAzureMonitor meg kell hívni. Telemetriai hiba akkor fordulhat elő, ha a többi kódtárat importálja először.
Kövesse a bevezetés az Azure Monitor OpenTelemetry-disztribúcióhoz való csatlakozáshoz.
Azure Monitor OpenTelemetria disztribúció változásai és korlátozásai
- Az Application Insights SDK 2.X API-k nem érhetők el az Azure Monitor OpenTelemetry Distro-ban. Bár az Application Insights SDK 3.X nem törhető frissítési útvonalat biztosít a telemetriai adatok betöltéséhez (például egyéni eseményekhez és metrikákhoz), a legtöbb SDK 2.X API nem támogatott, és az OpenTelemetry-alapú API-k kódmódosítását igényli.
- A függőségek, naplók és kivételek műveletnév szerinti szűrése még nem támogatott.
Upgrade
Frissítse a applicationinsights csomagfüggőséget.
npm update applicationinsights
Az alkalmazás újraépítése.
Tesztelje az alkalmazást.
Ha nem támogatott konfigurációs beállításokat szeretne használni az Application Insights SDK 3.X-ben, olvassa el a Nem támogatott tulajdonságok című témakört.
Ha az SDK naplózza a nem támogatott API-használatra vonatkozó figyelmeztetéseket egy főverziós frissítés után, és szüksége van a kapcsolódó funkciókra, folytassa az Application Insights SDK 2.X használatát.
Változások és korlátozások
A következő módosítások és korlátozások mindkét frissítési útvonalra érvényesek.
Node.js verziótámogatás
Az Application Insights 3.x SDK támogatja a Node.js verziót, ha a JavaScripthez és az OpenTelemetryhez készült Azure SDK is támogatja a Node.js verziót. Az OpenTelemetry-futtatókörnyezet aktuális támogatásához nyissa meg az OpenTelemetria által támogatott futtatókörnyezeteket.
Ha régebbi Node.js-verziót használ, például a Node 8-at, az OpenTelemetry-megoldások futhatnak, de váratlan viselkedést vagy kompatibilitástörő változásokat okozhatnak. Az Application Insights SDK a JavaScripthez készült Azure SDK-ra támaszkodik, és a JavaScripthez készült Azure SDK támogatási szabályzata nem garantálja a támogatást a már élettartamuk végére jutott Node.js verziókhoz. A részletekért tekintse meg az Azure SDK JS támogatási irányelveit.
Konfigurációs lehetőségek
Az Application Insights SDK 2.X-es verziója olyan konfigurációs lehetőségeket kínál, amelyek nem érhetők el az Azure Monitor OpenTelemetry Distro vagy az Application Insights SDK 3.X főverzió-frissítésében. A módosítások megkereséséhez és a továbbra is támogatott lehetőségekhez tekintse meg az SDK konfigurációs dokumentációját.
Kiterjesztett metrikák
A kiterjesztett metrikákat az Application Insights SDK 2.X támogatja; Ezeknek a metrikáknak a támogatása azonban az ApplicationInsights SDK 3.X-es verziójával és az OpenTelemetria-Azure Monitor distroval végződik.
Telemetriai feldolgozók
Bár az Azure Monitor OpenTelemetry Distro és az Application Insights SDK 3.X nem támogatja a telemetriaiprocesszorokat, lehetővé teszik a span és log record processzorok átadását. További információért arról, hogy hogyan, lásd a Azure Monitor OpenTelemetry Distro projektet.
Ez a példa egy olyan telemetriai processzor létrehozásának és alkalmazásának megfelelőjét mutatja be, amely egy egyéni tulajdonságot csatol az Application Insights SDK 2.X-ben.
const applicationInsights = require("applicationinsights");
applicationInsights.setup("YOUR_CONNECTION_STRING");
applicationInsights.defaultClient.addTelemetryProcessor(addCustomProperty);
applicationInsights.start();
function addCustomProperty(envelope: EnvelopeTelemetry) {
const data = envelope.data.baseData;
if (data?.properties) {
data.properties.customProperty = "Custom Property Value";
}
return true;
}
Ez a példa bemutatja, hogyan módosíthat egy Azure Monitor OpenTelemetry Distro implementációt úgy, hogy egy SpanProcessort átadjon a disztribúció konfigurációjának.
import { Context, Span} from "@opentelemetry/api";
import { ReadableSpan, SpanProcessor } from "@opentelemetry/sdk-trace-base";
const { useAzureMonitor } = require("@azure/monitor-opentelemetry");
class SpanEnrichingProcessor implements SpanProcessor {
forceFlush(): Promise<void> {
return Promise.resolve();
}
onStart(span: Span, parentContext: Context): void {
return;
}
onEnd(span: ReadableSpan): void {
span.attributes["custom-attribute"] = "custom-value";
}
shutdown(): Promise<void> {
return Promise.resolve();
}
}
const options = {
azureMonitorExporterOptions: {
connectionString: "YOUR_CONNECTION_STRING"
},
spanProcessors: [new SpanEnrichingProcessor()],
};
useAzureMonitor(options);
Az alábbi lépéseket követve migrálhatja Python alkalmazásokat a Azure Monitor OpenTelemetry Distro.
1. lépés: OpenCensus-kódtárak eltávolítása
Távolítsa el az OpenCensushoz kapcsolódó összes kódtárat, beleértve az összes Olyan Pypi-csomagot is, amely ezzel opencensus-*kezdődik.
pip freeze | grep opencensus | xargs pip uninstall -y
2. lépés: Az OpenCensus eltávolítása a kódból
Távolítsa el az OpenCensus SDK és a Azure Monitor OpenCensus-exportőr összes példányát a kódból.
Ellenőrizze az importálási utasításokat, amelyek opencensus kezdenek, hogy megkeresse az OpenCensus API/SDK összes integrációját, exportőrét és példányát, amelyeket el kell távolítani.
Az alábbi példák olyan importálási utasításokat mutatnak be, amelyeket el kell távolítani.
from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer
from opencensus.ext.azure.log_exporter import AzureLogHandler
3. lépés: Az OpenTelemetry Python API-k/SDK-k megismerése
Az alábbi dokumentáció az OpenTelemetry Python API-k/SDK-k előfeltételeit ismerteti.
Megjegyzés:
Az OpenTelemetria Python és az OpenCensus Python különböző API-felületekkel, automatikus elemzési képességekkel és előkészítési utasításokkal rendelkeznek.
4. lépés: A Azure Monitor OpenTelemetria-disztribúció beállítása
Kövesse az első lépések oldalt az Azure Monitor OpenTelemetria-disztribúcióval való belépéséhez.
Változások és korlátozások
Az OpenCensusból az OpenTelemetrybe való migrálás során az alábbi módosítások és korlátozások léptek fel.
Python 3.7-nél korábbi verziók
A Pythonhoz készült OpenTelemetry-alapú monitorozás támogatja a 3.7-es és újabb Python verziókat. Az OpenTelemetria nem támogatja a Python 2.7-et, 3.4-et, 3.5-öt vagy 3.6-ot.
Python 2.7, 3.4, 3.5 és 3.6 támogatás vége. A verzió állapotához lépjen a Python verziótámogatás oldalra.
Ha Python 2.7-ben, 3.4-ben, 3.5-ben vagy 3.6-os verzióban marad, az OpenTelemetry-megoldások futhatnak, de váratlan viselkedést vagy kompatibilitástörő változásokat eredményezhetnek, amelyeket a Microsoft nem támogat.
Az OpenCensus esetében a opencensus-ext-azure utolsó kiadású verziója ezeken a Python verziókon fut. A projekt nem tesz közzé új kiadásokat.
Konfigurációk
Az OpenCensus Python adott néhány configuration lehetőséget a telemetriai adatok gyűjtéséhez és exportálásához. A OpenTelemetria Python API-k és SDK használatával ugyanazokat a konfigurációkat érheti el. Az OpenTelemetria Azure monitorozási Python disztribúció inkább egyablakos megoldás a Python-alkalmazások leggyakoribb monitorozási igényeinek kielégítésére. Mivel a Disztribúció beágyazza az OpenTelemetry API-kat/SDk-kat, előfordulhat, hogy a disztribúcióhoz jelenleg nem támogatott néhány konfiguráció a szokatlanabb használati esetekhez. Ehelyett dönthet úgy, hogy használja az Azure monitor OpenTelemetry-exportőrt, amely az OpenTelemetry API-kkal/SDK-kkal képessé teheti Önt, hogy megfeleljen a monitorozási igényeknek. Néhány ilyen konfiguráció a következők:
- Egyéni propagátorok
- Egyéni mintavevők
- Extra span/log processzorok/metrikák olvasóinak hozzáadása
Az Azure Functions együttműködése
Annak érdekében, hogy elosztott nyomkövetési képességeket biztosíthasson Python olyan alkalmazások számára, amelyek más Python alkalmazásokat hívnak meg egy Azure függvényen belül, a csomag opencensus-extension-azure-functions lett megadva, hogy lehetővé tegye a csatlakoztatott elosztott gráfok használatát.
A Azure Monitor OpenTelemetry-megoldásai jelenleg nem támogatják ezt a forgatókönyvet. Kerülő megoldásként manuálisan is propagálja a nyomkövetési környezetet a Azure függvényalkalmazásban az alábbi példában látható módon.
from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
TraceContextTextMapPropagator
# Context parameter is provided for the body of the function
def main(req, context):
functions_current_context = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate
}
parent_context = TraceContextTextMapPropagator().extract(
carrier=functions_current_context
)
token = attach(parent_context)
...
# Function logic
...
detach(token)
Bővítmények és exportőrök
Az OpenCensus SDK integrációkat biztosít a telemetriai adatok gyűjtéséhez, valamint exportőröket azok továbbításához. Az OpenTelemetry-ben az integrációkat instrumentációknak nevezzük. Az OpenTelemetry az exportőrök kifejezést is használja.
Az OpenTelemetria Python eszközei és exportőrei lefedik az OpenCensus-csomagot, és további könyvtárakat adnak hozzá. Az OpenTelemetry közvetlen frissítést biztosít a kódtár lefedettségében és funkcióiban.
Az Azure Monitor OpenTelemetry-disztribúció számos népszerű OpenTelemetry-Python instrumentációkat tartalmaz. Az eszközöket kód hozzáadása nélkül használhatja. A Microsoft támogatja ezeket az instrumentumokat.
Ami azokat az OpenTelemetry Python instrumentációkat illeti, amelyek nem szerepelnek a listában, a felhasználók továbbra is kézzel végezhetnek rajtuk instrumentálást. Fontos azonban megjegyezni, hogy ezekben az esetekben a stabilitás és a viselkedés nem garantált vagy támogatott. Ezért használja őket saját belátása szerint.
Ha egy közösségi eszköztárat szeretne javasolni nekünk, hogy a disztribúciónkban szerepeljen, tegye közzé vagy szavazzon egy ötletet a visszajelzési közösségünkben. Az exportőrök számára az Azure Monitor OpenTelemetry disztribúció a Azure Monitor OpenTelemetry-exportőrrel van csomagolva. Ha más exportőröket is szeretne használni, használhatja őket a disztribúcióval, mint ebben a példában.
Telemetriafeldolgozók
Az OpenTelemetry világában nincs telemetriaprocesszor fogalma, de vannak olyan API-k és osztályok, amelyekkel ugyanazt a viselkedést replikálhatja.
Felhőbeli szerepkör nevének és felhőbeli szerepkörpéldányának beállítása
Kövesse az itt található utasításokat, hogy miként állíthatja be a felhőbeli szerepkör nevét és a felhőbeli szerepkörpéldányt a telemetriához. Az OpenTelemetry Azure Monitor Distro automatikusan lekéri az értékeket a környezeti változókból, és kitölti a megfelelő mezőket.
SpanProcessors használatával tartományok módosítása
Hamarosan.
Metrikák módosítása nézetek használatával
Hamarosan.
Az OpenCensus Python Azure Monitor exportőr automatikusan gyűjtötte a formancia-számlálók nevű rendszer- és teljesítménymutatókat. Ezek a metrikák megjelennek az Application Insights-példányban performanceCounters . Az OpenTelemetryben ezeket a metrikákat már nem küldjük kifejezetten a következőnek performanceCounters: . A bejövő/kimenő kérelmekhez kapcsolódó metrikák a standard metrikák alatt találhatók. Ha azt szeretné, hogy az OpenTelemetria automatikusan átlássa a rendszerhez kapcsolódó metrikákat, az OpenTelemetria Python közösség által készített kísérleti rendszermetrikákat instrumentation használhatja. Ez a csomag kísérleti jellegű, és a Microsoft hivatalosan nem támogatja.
Support
A hibaelhárítási lépések, a támogatási lehetőségek megtekintéséhez vagy OpenTelemetry visszajelzés biztosításához lásd az Azure Monitor Application Insights OpenTelemetry hibaelhárítása, támogatása és visszajelzése című részt.
Az alábbi táblázat az Application Insightsban használt örökölt kifejezéseket és azok OpenTelemetria-cseréjét emeli ki.