Adatok betöltése az OpenTelemetryből az Azure Data Explorer
Fontos
Ez az összekötő használható a Microsoft Fabric valós idejű elemzéseiben . Használja a cikkben található utasításokat a következő kivételekkel:
- Ha szükséges, hozzon létre adatbázisokat a KQL-adatbázis létrehozása című témakör utasításai alapján.
- Ha szükséges, hozzon létre táblákat az Üres tábla létrehozása című témakörben található utasítások alapján.
- Lekérdezési vagy betöltési URI-k lekérése az URI másolása című témakör utasításai alapján.
- Lekérdezések futtatása KQL-lekérdezéskészletben.
Az OpenTelemetry (OTel) az alkalmazások megfigyelhetőségének nyílt keretrendszere. A rendszerezést a Cloud Native Computing Foundation (CNCF) üzemelteti, amely szabványos interfészeket biztosít a megfigyelhető adatokhoz, beleértve a metrikákat, naplókat és nyomkövetéseket. Az OTel-gyűjtő a következő három összetevőből áll: a fogadók az adatok gyűjtőbe való beolvasásával foglalkoznak, a feldolgozók határozzák meg, hogy mi a teendő a fogadott adatokkal, és az exportőrök felelősek azért, hogy hová küldjék a kapott adatokat.
Az Azure Data Explorer-exportőr támogatja az adatok betöltését számos fogadóból az Azure Data Explorer.
Megjegyzés
- A konfigurációs beállításokat az olvasási dokumentáció foglalja össze.
- Az exportőr forráskódját lásd: Azure Data Explorer exportőr.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- A környezet kialakítása
- Az Azure Data Explorer-exportőr konfigurálása
- A mintaalkalmazás futtatása
- Bejövő adatok lekérdezése
Előfeltételek
- Azure-előfizetés. Ingyenes Azure-fiók létrehozása
- Fürt és adatbázis: Rövid útmutató: Azure Data Explorer-fürt és -adatbázis létrehozása
A környezet kialakítása
Ebben a szakaszban előkészíti a környezetet az OTel-exportőr használatára.
Alkalmazásregisztráció létrehozása Microsoft Entra
Microsoft Entra alkalmazáshitelesítést azokhoz az alkalmazásokhoz használjuk, amelyeknek felhasználó nélkül kell hozzáférnie az Azure Data Explorer. Ahhoz, hogy az OTel-exportőrrel betöltse az adatokat, létre kell hoznia és regisztrálnia kell egy Microsoft Entra szolgáltatásnevet, majd engedélyeznie kell ezt a tagot egy Azure Data Explorer-adatbázis betöltéséhez.
- Az Azure Data Explorer-fürt használatával kövesse a Microsoft Entra alkalmazásregisztráció létrehozása az Azure Data Explorer-ban című cikk 1–7. lépését.
- Mentse a következő értékeket, amelyeket a későbbi lépésekben használni szeretne:
- Alkalmazás (ügyfél) azonosítója
- Címtár (bérlő) azonosítója
- Titkos ügyfélkulcs értéke
A Microsoft Entra alkalmazás engedélyeinek megadása
A webes felhasználói felület lekérdezés lapján csatlakozzon a fürthöz. További információ a csatlakozásról: Fürtök hozzáadása.
Keresse meg azt az adatbázist, amelyben adatokat szeretne betöltésre.
Futtassa a következő felügyeleti parancsot, és cserélje le a helyőrzőket. Cserélje le a DatabaseName nevet a céladatbázis nevére, az ApplicationID értékét pedig a korábban mentett értékre. Ez a parancs megadja az alkalmazásnak az adatbázis-betöltési szerepkört. További információ: Adatbázisbiztonsági szerepkörök kezelése.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'Azure Data Explorer App Registration'
Megjegyzés
Az utolsó paraméter egy sztring, amely jegyzetekként jelenik meg az adatbázishoz társított szerepkörök lekérdezésekor. További információ: Meglévő biztonsági szerepkörök megtekintése.
Céltáblák létrehozása
Keresse meg az Azure Data Explorer webes felhasználói felületét.
A bal oldali menüben válassza a Lekérdezés lehetőséget.
Bontsa ki a célfürtöt a bal oldali panelen.
Válassza ki a céladatbázist, hogy a lekérdezések megfelelő környezetet adjanak.
A következő parancsok futtatásával hozzon létre táblákat és sémaleképezést a bejövő adatokhoz:
.create-merge table <Logs-Table-Name> (Timestamp:datetime, ObservedTimestamp:datetime, TraceID:string, SpanID:string, SeverityText:string, SeverityNumber:int, Body:string, ResourceAttributes:dynamic, LogsAttributes:dynamic) .create-merge table <Metrics-Table-Name> (Timestamp:datetime, MetricName:string, MetricType:string, MetricUnit:string, MetricDescription:string, MetricValue:real, Host:string, ResourceAttributes:dynamic,MetricAttributes:dynamic) .create-merge table <Traces-Table-Name> (TraceID:string, SpanID:string, ParentID:string, SpanName:string, SpanStatus:string, SpanKind:string, StartTime:datetime, EndTime:datetime, ResourceAttributes:dynamic, TraceAttributes:dynamic, Events:dynamic, Links:dynamic)
Streambetöltés beállítása
Az Azure Data Explorer kétféle betöltési típussal rendelkezik: kötegelés és streamelés. További információ: kötegelés és streambetöltés. A streamelési módszer neve az Azure Data Explorer exportőr konfigurációjában van felügyelve. A streamelési betöltés akkor lehet jó választás, ha a naplók és nyomkövetések közel valós időben elérhetők lesznek. A streamelési betöltés azonban több erőforrást használ, mint a kötegelt betöltés. Maga az OTel-keretrendszer kötegeli az adatokat, amelyeket figyelembe kell venni a betöltéshez használni kívánt metódus kiválasztásakor.
Megjegyzés
A lehetőség engedélyezéséhez engedélyezni kell a streambetöltést az Azure Data Explorer-fürtönmanaged
.
A .show database streaming ingestion policy paranccsal ellenőrizheti, hogy engedélyezve van-e a streamelés.
Futtassa a következő parancsot a három tábla mindegyikéhez a streambetöltés engedélyezéséhez:
.alter table <Table-Name> policy streamingingestion enable
Az Azure Data Explorer-exportőr konfigurálása
Ahhoz, hogy az OpenTelemetry-adatokat betölthesse az Azure Data Explorer, üzembe kell helyeznie és futtatnia kell az OpenTelemetry-disztribúciót az alábbi Azure Data Explorer exportőr konfigurációjával.
Konfigurálja az Azure Data Explorer-exportőrt a következő mezők használatával:
Mező Leírás Javasolt beállítás Exportőrök Az exportőr típusa Azure Adatkezelő cluster_uri Az adatbázist és táblákat tartalmazó Azure Data Explorer-fürt URI-ja <https:// cluster.kusto.windows.net> application_id Ügyfél-azonosító <alkalmazásazonosító> application_key Titkos ügyfélkulcs <alkalmazáskulcs> tenant_id Bérlő <alkalmazásbérlő> db_name A naplókat fogadó adatbázis oteldb vagy más, már létrehozott adatbázis metrics_table_name Az adatbázis céltáblája db_name, amely exportált metrikaadatokat tárol. OTELMetrics logs_table_name Az adatbázis céltáblája db_name, amely az exportált naplók adatait tárolja. OTEL-naplók traces_table_name Az adatbázis céltáblája db_name, amely exportált nyomkövetési adatokat tárol. OTELTraces ingestion_type A betöltés típusa: felügyelt (streamelt) vagy kötegelt Kezelt metrics_table_json_mapping Nem kötelező megadni. Az alapértelmezett táblaleképezés oTeL-metrikák attribútumai alapján van definiálva a tábla létrehozásakor. Az alapértelmezett leképezés ezzel a paraméterrel módosítható. <json metrics_table_name leképezés> logs_table_json_mapping Nem kötelező megadni. Az alapértelmezett táblaleképezés az OTeL-naplók attribútumai alapján van definiálva a tábla létrehozásakor. Az alapértelmezett leképezés ezzel a paraméterrel módosítható. <json logs_table_name leképezés> traces_table_json_mapping Nem kötelező megadni. Az alapértelmezett táblaleképezés oTeL-nyomkövetési attribútumok alapján van definiálva a tábla létrehozásakor. Az alapértelmezett leképezés ezzel a paraméterrel módosítható. <json traces_table_name leképezés> Nyomok Szolgáltatások: az összetevők nyomkövetése az engedélyezéshez fogadók: [otlp]
processzorok: [batch]
exportőrök: [azuredataexplorer]metrics Szolgáltatások: metrikaösszetevők engedélyezése fogadók: [otlp]
processzorok: [batch]
exportőrök: [azuredataexplorer]naplók Szolgáltatások: naplózza az engedélyezéshez szükséges összetevőket fogadók: [otlp]
processzorok: [batch]
exportőrök: [ azuredataexplorer]Az Azure Data Explorer-exportőr futtatásához használja a "--config" jelzőt.
Az alábbiakban egy példakonfigurációt láthat az Azure Data Explorer-exportőrhöz:
---
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
processors:
batch:
exporters:
azuredataexplorer:
cluster_uri: "https://<cluster>.kusto.windows.net"
application_id: "<application id>"
application_key: "<application key>"
tenant_id: "<application tenant>"
db_name: "oteldb"
metrics_table_name: "OTELMetrics"
logs_table_name: "OTELLogs"
traces_table_name: "OTELTraces"
ingestion_type : "managed"
metrics_table_json_mapping : "<json metrics_table_name mapping>"
logs_table_json_mapping : "<json logs_table_name mapping>"
traces_table_json_mapping : "<json traces_table_name mapping>"
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [azuredataexplorer]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [azuredataexplorer]
logs:
receivers: [otlp]
processors: [batch]
exporters: [azuredataexplorer]
Adatok gyűjtése mintaalkalmazással
Most, hogy a gyűjtő konfigurálva van, adatokat kell küldenie a betöltendő adatokhoz. Ebben a példában. a spring pet clinic mintaalkalmazást használja a java OTeL gyűjtőügynökkel.
Töltse le a gyűjtőügynököt itt: Nyissa meg a telemetriai gyűjtőügynököt.
A mintaalkalmazás nyitott telemetriájának engedélyezéséhez állítsa be a következő környezeti változókat. Az open-telemetry-collector-host hivatkozik arra a gazdagépre, ahol az Azure Data Explorer-exportőr konfigurálva van és fut.
$env:OTEL_SERVICE_NAME="pet-clinic-service" $env:OTEL_TRACES_EXPORTER="otlp" $env:OTEL_LOGS_EXPORTER="otlp " $env:OTEL_EXPORTER_OTLP_ENDPOINT="http://<open-telemetry-collector-host>:4317"
Futtassa a spring-boot mintaalkalmazást a következő parancssori argumentumokkal:
java -javaagent:./opentelemetry-javaagent.jar -jar spring-petclinic-<version>-SNAPSHOT.jar
Bejövő adatok lekérdezése
A mintaalkalmazás futtatása után az adatok az Azure Data Explorer meghatározott tábláiba lettek betöltve. Ezek a táblák egy olyan adatbázisban lettek létrehozva, amely az OTel gyűjtő konfigurációjában oteldb-ként lett definiálva. A létrehozott táblákat az OTel-gyűjtő konfigurációjában definiáltuk. Ebben a példában három táblát hozott létre: OTELMetrics, OTELLogs és OTELTraces. Ebben a szakaszban az egyes táblákat külön kérdezi le, hogy a rendelkezésre álló adatok egy kis részét lekérje.
Keresse meg az Azure Data Explorer webes felhasználói felületét.
A bal oldali menüben válassza a Lekérdezés lehetőséget.
Bontsa ki a célfürtöt a bal oldali panelen.
Válassza ki az oteldb-adatbázist , hogy a lekérdezések megfelelő környezetet adjanak.
Másolja/illessze be egymás után az alábbi lekérdezéseket, hogy tetszőleges számú sort láthassa az egyes táblákból:
Mérőszámok
OTELMetrics |take 2
Az alábbi táblázathoz hasonló, de nem pontosan azonos eredményeket kell kapnia:
Időbélyeg MetricName MetricType MetricUnit MetricDescription MetricValue Gazdagép MetricAttributes ResourceAttributes 2022-07-01T12:55:33Z http.server.active_requests Sum Kérelmek Az egyidejű HTTP-kérések száma, amelyek jelenleg folyamatban vannak 0 ASZTALI SFS7RUQ {"http.flavor":"1.1", "http.host":"localhost:8080", "scope.name":"io.opentelemetry.tomcat-7.0", "scope.version":"1.14.0-alpha", "http.method":"GET", "http.scheme":"http"} {"host.name":"DESKTOP-SFS7RUQ", "process.command_line":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe -javaagent:./opentelemetry-javaagent.jar", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 bites kiszolgálói virtuális gép 18.0.1.1+2-6", "process.runtime.version":"18.0.1.1+2-6", "telemetry.sdk.language":"java", "host.arch":"amd64", "process.runtime.name":"Java(TM) SE futtatókörnyezet", "telemetry.auto.version":"1.14.0", "telemetry.sdk.name":"opentelemetry", "os.type":"windows", "os.description":"Windows 11 10.0", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe", "process.pid":5980, "service.name":"my-service", "telemetry.sdk.version":"1.14.0"} 2022-07-01T12:55:33Z http.server.duration_sum Hisztogram Ms A bejövő HTTP-kérés időtartama (Minták összege) 114.9881 ASZTALI SFS7RUQ {"http.flavor":"1.1", "http.host":"localhost:8080", "scope.name":"io.opentelemetry.tomcat-7.0", "scope.version":"1.14.0-alpha", "http.method":"GET", "http.scheme":"http", "http.route":"/owners/find", "http.status_code":200} {"host.name":"DESKTOP-SFS7RUQ", "process.command_line":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe -javaagent:./opentelemetry-javaagent.jar", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 bites kiszolgálói virtuális gép 18.0.1.1+2-6", "process.runtime.version":"18.0.1.1+2-6", "telemetry.sdk.language":"java", "host.arch":"amd64", "process.runtime.name":"Java(TM) SE futtatókörnyezet", "telemetry.auto.version":"1.14.0", "telemetry.sdk.name":"opentelemetry", "os.type":"windows", "os.description":"Windows 11 10.0", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe", "process.pid":5980, "service.name":"my-service", "telemetry.sdk.version":"1.14.0"} Naplók
OTELLogs |take 2
Az alábbi táblázathoz hasonló, de nem pontosan azonos eredményeket kell kapnia:
Időbélyeg TraceId SpanId Súlyossági szöveg SúlyosságSzám Törzs ResourceAttributes LogsAttributes 2022-07-01T13:00:39Z INFO 9 A PetClinicApplication v2.7.0-SNAPSHOT indítása a DESKTOP-SFS7RUQ 18.0.1.1-et használó Java 37280-nal (C:\Users\a) adxuser\Documents\Repos\spring-petclinic\target\spring-petclinic-2.7.0-SNAPSHOT.jar által indított adxuser in C:\Users\adxuser\Documents\Repos\spring-petclinic) {"host.name":"DESKTOP-SFS7RUQ", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe", "process.pid":37280, "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 bites kiszolgálói virtuális gép 18.0.1.1+2-6", "process.runtime.name":"Java(TM) SE futtatókörnyezet", "telemetry.sdk.name":"opentelemetry", "os.type":"windows", "process.runtime.version":"18.0.1.1+2-6", "telemetry.sdk.language":"java", "telemetry.sdk.version":"1.14.0", "process.command_line":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe -javaagent:./opentelemetry-javaagent.jar", "os.description":"Windows 11 10.0", "service.name":"my-service", "telemetry.auto.version":"1.14.0", "host.arch":"amd64"} {"scope.name":"org.springframework.samples.petclinic.PetClinicApplication"} 2022-07-01T13:00:39Z INFO 9 Nincs aktív profilkészlet, amely visszaesik az 1 alapértelmezett profilra: "alapértelmezett" {"host.name":"DESKTOP-SFS7RUQ", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe", "process.pid":37280, "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 bites kiszolgálói virtuális gép 18.0.1.1+2-6", "process.runtime.name":"Java(TM) SE futtatókörnyezet", "telemetry.sdk.name":"opentelemetry", "os.type":"windows", "process.runtime.version":"18.0.1.1+2-6", "telemetry.sdk.language":"java", "telemetry.sdk.version":"1.14.0", "process.command_line":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe -javaagent:./opentelemetry-javaagent.jar", "os.description":"Windows 11 10.0", "service.name":"my-service", "telemetry.auto.version":"1.14.0", "host.arch":"amd64"} {"scope.name":"org.springframework.samples.petclinic.PetClinicApplication"} Hívásláncok
OTELTraces |take 2
Az alábbi táblázathoz hasonló, de nem pontosan azonos eredményeket kell kapnia:
TraceId SpanId ParentId SpanName SpanStatus SpanKind StartTime EndTime ResourceAttributes TraceAttributes esemény Hivatkozások 573c0e4e002a9f7281f6d63eafe4ef87 dab70d0ba8902c5e 87d003d6-02c1-4f3d-8972-683243c35642 STATUS_CODE_UNSET SPAN_KIND_CLIENT 2022-07-01T13:17:59Z 2022-07-01T13:17:59Z {"telemetry.auto.version":"1.14.0", "os.description":"Windows 11 10.0", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 bites kiszolgálói virtuális gép 18.0.1.1+2-6", "service.name":"my-service", "process.runtime.name":"Java(TM) SE futtatókörnyezet", "telemetry.sdk.language":"java", "telemetry.sdk.name":"opentelemetry", "host.arch":"amd64", "host.name":"DESKTOP-SFS7RUQ", "process.pid":34316, "process.runtime.version":"18.0.1.1+2-6", "os.type":"windows", "process.command_line":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe -javaagent:./opentelemetry-javaagent.jar", "telemetry.sdk.version":"1.14.0"} {"db.user":"sa", "thread.id":1, "db.name":"87d003d6-02c1-4f3d-8972-683243c35642", "thread.name":"main", "db.system":"h2", "scope.name":"io.opentelemetry.jdbc", "scope.version":"1.14.0-alpha", "db.connection_string":"h2:mem:", "db.statement":"DROP TABLE vet_specialties IF EXISTS"} [] [] 84a9a8c4009d91476da02dfa40746c13 3cd4c0e91717969a 87d003d6-02c1-4f3d-8972-683243c35642 STATUS_CODE_UNSET SPAN_KIND_CLIENT 2022-07-01T13:17:59Z 2022-07-01T13:17:59Z {"telemetry.auto.version":"1.14.0", "os.description":"Windows 11 10.0", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 bites kiszolgálói virtuális gép 18.0.1.1+2-6", "service.name":"my-service", "process.runtime.name":"Java(TM) SE futtatókörnyezet", "telemetry.sdk.language":"java", "telemetry.sdk.name":"opentelemetry", "host.arch":"amd64", "host.name":"DESKTOP-SFS7RUQ", "process.pid":34316, "process.runtime.version":"18.0.1.1+2-6", "os.type":"windows", "process.command_line":"C:\Program Files\Java\jdk-18.0.1.1; bin;java.exe -javaagent:./opentelemetry-javaagent.jar", "telemetry.sdk.version":"1.14.0"} {"db.user":"sa", "thread.id":1, "db.name":"87d003d6-02c1-4f3d-8972-683243c35642", "thread.name":"main", "db.system":"h2", "scope.name":"io.opentelemetry.jdbc", "scope.version":"1.14.0-alpha", "db.connection_string":"h2:mem:", "db.statement":"DROP TABLE vets IF EXISTS"} [] []
További adatfeldolgozás
Frissítési szabályzatok használatával az összegyűjtött adatok az alkalmazás igénye szerint tovább feldolgozhatók. További információ: Szabályzat frissítése – áttekintés.
Az alábbi példa hisztogrammetrikákat exportál egy hisztogram-specifikus táblába gyűjtőkkel és összesítésekkel. Futtassa a következő parancsot az Azure Data Explorer webes felhasználói felületének lekérdezési paneljén:
.create table HistoBucketData (Timestamp: datetime, MetricName: string , MetricType: string , Value: double, LE: double, Host: string , ResourceAttributes: dynamic, MetricAttributes: dynamic ) .create function with ( docstring = "Histo bucket processing function", folder = "UpdatePolicyFunctions") ExtractHistoColumns() { OTELMetrics | where MetricType == 'Histogram' and MetricName has "_bucket" | extend f=parse_json(MetricAttributes) | extend le=todouble(f.le) | extend M_name=replace_string(MetricName, '_bucket','') | project Timestamp, MetricName=M_name, MetricType, MetricValue, LE=le, Host, ResourceAttributes, MetricAttributes } .alter table HistoBucketData policy update @'[{ "IsEnabled": true, "Source": "OTELMetrics","Query": "ExtractHistoColumns()", "IsTransactional": false, "PropagateIngestionProperties": false}]'
Az alábbi parancsok létrehoznak egy táblát, amely csak a Hisztogram metrikatípusának darabszám- és összegértékeit tartalmazza, és csatol egy frissítési szabályzatot. Futtassa a következő parancsot az Azure Data Explorer webes felhasználói felületének lekérdezési paneljén:
.create table HistoData (Timestamp: datetime, MetricName: string , MetricType: string , Count: double, Sum: double, Host: string , ResourceAttributes: dynamic, MetricAttributes: dynamic) .create function with ( docstring = "Histo sum count processing function", folder = "UpdatePolicyFunctions") ExtractHistoCountColumns() { OTELMetrics | where MetricType =='Histogram' | where MetricName has "_count" | extend Count=MetricValue | extend M_name=replace_string(MetricName, '_bucket','') | join kind=inner (OTELMetrics | where MetricType =='Histogram' | where MetricName has "_sum" | project Sum = MetricValue , Timestamp) on Timestamp | project Timestamp, MetricName=M_name, MetricType, Count, Sum, Host, ResourceAttributes, MetricAttributes } .alter table HistoData policy update @'[{ "IsEnabled": true, "Source": "RawMetricsData","Query": "ExtractHistoCountColumns()", "IsTransactional": false, "PropagateInge