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:

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

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

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.

  1. 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.
  2. 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

  1. 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.

  2. Keresse meg azt az adatbázist, amelyben adatokat szeretne betöltésre.

  3. 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

  1. Keresse meg az Azure Data Explorer webes felhasználói felületét.

  2. A bal oldali menüben válassza a Lekérdezés lehetőséget.

  3. Bontsa ki a célfürtöt a bal oldali panelen.

  4. Válassza ki a céladatbázist, hogy a lekérdezések megfelelő környezetet adjanak.

  5. 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.

  1. 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]
  2. 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.

  1. Töltse le a gyűjtőügynököt itt: Nyissa meg a telemetriai gyűjtőügynököt.

  2. 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"
    
  3. 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.

  1. Keresse meg az Azure Data Explorer webes felhasználói felületét.

  2. A bal oldali menüben válassza a Lekérdezés lehetőséget.

  3. Bontsa ki a célfürtöt a bal oldali panelen.

  4. Válassza ki az oteldb-adatbázist , hogy a lekérdezések megfelelő környezetet adjanak.

  5. 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.

  1. 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}]'
    
  2. 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