OpenTelemetry'den Azure Veri Gezgini'a veri alma
Önemli
Bu bağlayıcı, Microsoft Fabric'teki Gerçek Zamanlı Zeka'da kullanılabilir. Aşağıdaki özel durumlar için bu makaledeki yönergeleri kullanın:
- Gerekirse, KQL veritabanı oluşturma başlığındaki yönergeleri kullanarak veritabanları oluşturun.
- Gerekirse, Boş tablo oluşturma başlığındaki yönergeleri kullanarak tablolar oluşturun.
- Kopyalama URI'sindeki yönergeleri kullanarak sorgu veya alma URI'lerini alın.
- KQL sorgu kümesinde sorgu çalıştırma.
OpenTelemetry (OTel), uygulama gözlemlenebilirliği için açık bir çerçevedir. İzleme, ölçümler, günlükler ve izlemeler dahil olmak üzere gözlemlenebilirlik verileri için standart arabirimler sağlayan Cloud Native Computing Foundation (CNCF) tarafından barındırılır. OTel Toplayıcısı aşağıdaki üç bileşenden oluşur: alıcılar Toplayıcı'ya veri alma işlemiyle ilgilenir, işlemciler alınan verilerle ne yapılacağını belirler ve alınan verilerin nereye gönderileceğinden ihracatçılar sorumludur.
Azure Veri Gezgini vereni, birçok alıcıdan Azure Veri Gezgini'a veri alımını destekler.
Not
- Yapılandırma ayarları benioku belgelerinde özetlenir.
- dışarı aktarma kaynak kodu için bkz. Azure Veri Gezgini dışarı aktarma.
Bu makalede şunları öğreneceksiniz:
- Ortamınızı ayarlama
- Azure Veri Gezgini vereni yapılandırma
- Örnek uygulamayı çalıştırın
- Gelen verileri sorgulama
Önkoşullar
- Azure aboneliği. Ücretsiz Azure hesabı oluşturun
- Küme ve veritabanı: Hızlı Başlangıç: Azure Veri Gezgini kümesi ve veritabanı oluşturma
Ortamınızı ayarlama
Bu bölümde ortamınızı OTel ihracatçısını kullanacak şekilde hazırlarsınız.
Microsoft Entra uygulama kaydı oluşturma
Microsoft Entra uygulaması kimlik doğrulaması, kullanıcı olmadan Azure Veri Gezgini erişmesi gereken uygulamalar için kullanılır. OTel dışarı aktarmayı kullanarak veri almak için bir Microsoft Entra hizmet sorumlusu oluşturup kaydetmeniz ve ardından bu sorumluyu Azure Veri Gezgini veritabanını alma yetkisi vermeniz gerekir.
- Azure Veri Gezgini kümenizi kullanarak Azure Veri Gezgini'da Microsoft Entra uygulama kaydı oluşturma makalesindeki 1-7 arası adımları izleyin.
- Sonraki adımlarda kullanılacak aşağıdaki değerleri kaydedin:
- Uygulama (istemci) kimliği
- Dizin (kiracı) kimliği
- İstemci gizli anahtarı değeri
Microsoft Entra uygulaması izinlerini verme
Web kullanıcı arabiriminin sorgu sekmesinde kümenize bağlanın. Bağlanma hakkında daha fazla bilgi için bkz . Küme ekleme.
Verileri almak istediğiniz veritabanına göz atın.
Yer tutucuları değiştirerek aşağıdaki yönetim komutunu çalıştırın. DatabaseName değerini hedef veritabanının adıyla, ApplicationID değerini ise daha önce kaydedilmiş değerle değiştirin. Bu komut uygulamaya veritabanı alma rolü verir. Daha fazla bilgi için bkz . Veritabanı güvenlik rollerini yönetme.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'Azure Data Explorer App Registration'
Not
Son parametre, bir veritabanıyla ilişkili rolleri sorguladığınızda not olarak gösterilen bir dizedir. Daha fazla bilgi için bkz . Mevcut güvenlik rollerini görüntüleme.
Hedef tablo oluşturma
Soldaki menüden Sorgu'yu seçin.
Sol bölmede hedef kümeyi genişletin.
Sorgularınıza doğru bağlamı sağlamak için hedef veritabanını seçin.
Gelen veriler için tablolar ve şema eşlemesi oluşturmak için aşağıdaki komutları çalıştırın:
.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)
Akış alımını ayarlama
Azure Veri Gezgini iki ana veri alımı türüne sahiptir: toplu işlem ve akış. Daha fazla bilgi için bkz . toplu işlem ve akış alımı. Akış yöntemi, Azure Veri Gezgini dışarı aktarma yapılandırmasında yönetilir. Günlüklerin ve izlemelerin neredeyse gerçek zamanlı olarak kullanılabilir olması gerekiyorsa akış alımı sizin için iyi bir seçim olabilir. Ancak, akış alımı toplu alımdan daha fazla kaynak kullanır. OTel çerçevesi, veri toplu işleminin kendisidir ve veri alımı için hangi yöntemin kullanılacağını seçerken dikkate alınması gerekir.
Not
Seçeneği etkinleştirmek managed
için Azure Veri Gezgini kümesinde akış alımı etkinleştirilmelidir.
.show veritabanı akış alma ilkesi komutunu kullanarak akış özelliğinin etkinleştirilip etkinleştirilmediğini de kontrol edebilirsiniz.
Akış alımını etkinleştirmek için üç tablonun her biri için aşağıdaki komutu çalıştırın:
.alter table <Table-Name> policy streamingingestion enable
Azure Veri Gezgini vereni yapılandırma
OpenTelemetry verilerinizi Azure Veri Gezgini'a almak için Aşağıdaki Azure Veri Gezgini dışarı aktarma yapılandırmasıyla OpenTelemetry dağıtımını dağıtmanız ve çalıştırmanız gerekir.
Aşağıdaki alanları kullanarak Azure Veri Gezgini vereni yapılandırın:
Alan Açıklama Önerilen ayar İhracatçılar İhracatçı türü Azure Veri Gezgini cluster_uri Veritabanını ve tabloları barındıran Azure Veri Gezgini kümesinin URI'si <cluster.kusto.windows.net> https:// application_id Client ID <uygulama kimliği> application_key İstemci gizli anahtarı <uygulama anahtarı> tenant_id Kiracı <uygulama kiracısı> db_name Günlükleri alan veritabanı oteldb veya önceden oluşturduğunuz başka bir veritabanı metrics_table_name Veritabanındaki hedef tablo, dışarı aktarılan ölçüm verilerini depolayan db_name. OTELMetrics logs_table_name Veritabanındaki hedef tablo, dışarı aktarılan günlük verilerini depolayan db_name. OTELLogs traces_table_name Veritabanındaki hedef tablo, dışarı aktarılan izleme verilerini depolayan db_name. OTELTraces ingestion_type Alım türü: yönetilen (akış) veya toplu işlem managed metrics_table_json_mapping İsteğe bağlı parametre. Varsayılan tablo eşlemesi, tablo oluşturma sırasında OTeL ölçümleri özniteliklerine göre tanımlanır. Varsayılan eşleme bu parametre kullanılarak değiştirilebilir. <json metrics_table_name eşlemesi> logs_table_json_mapping İsteğe bağlı parametre. Varsayılan tablo eşlemesi, OTeL günlük öznitelikleri temelinde tablo oluşturma sırasında tanımlanır. Varsayılan eşleme bu parametre kullanılarak değiştirilebilir. <json logs_table_name eşlemesi> traces_table_json_mapping İsteğe bağlı parametre. Varsayılan tablo eşlemesi, tablo oluşturma sırasında OTeL izleme özniteliklerine göre tanımlanır. Varsayılan eşleme bu parametre kullanılarak değiştirilebilir. <json traces_table_name eşlemesi> izlemeler Hizmetler: Etkinleştirmek için bileşenleri izler alıcılar: [otlp]
işlemciler: [batch]
exporters: [azuredataexplorer]metrics Hizmetler: Etkinleştirecek ölçüm bileşenleri alıcılar: [otlp]
işlemciler: [batch]
exporters: [azuredataexplorer]günlükler Hizmetler: Etkinleştirecek bileşenleri günlüğe kaydeder alıcılar: [otlp]
işlemciler: [batch]
exporters: [ azuredataexplorer]Azure Veri Gezgini vereni çalıştırmak için "--config" bayrağını kullanın.
Aşağıda Azure Veri Gezgini vereni için örnek bir yapılandırma verilmiştir:
---
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]
Örnek uygulamayla veri toplama
Toplayıcı yapılandırıldığına göre, alınması için veri göndermeniz gerekir. Bu örnekte. java OTeL toplayıcı aracısı ile örnek spring pet clinic uygulamasını kullanırsınız.
Toplayıcı aracısını buradan indirin: Telemetri toplayıcı aracısını açın.
Örnek uygulama için açık telemetriyi etkinleştirmek için aşağıdaki ortam değişkenlerini ayarlayın. Open-telemetry-collector-host, Azure Veri Gezgini verenin yapılandırıldığı ve çalıştığı konağa başvurur.
$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"
Aşağıdaki komut satırı bağımsız değişkenleriyle örnek spring-boot uygulamasını çalıştırın:
java -javaagent:./opentelemetry-javaagent.jar -jar spring-petclinic-<version>-SNAPSHOT.jar
Gelen verileri sorgulama
Örnek uygulama çalıştırıldıktan sonra verileriniz Azure Veri Gezgini'da tanımlanan tablolara alınır. Bu tablolar, oteldb olarak OTel toplayıcı yapılandırmasında tanımlanan bir veritabanında oluşturulmuştur. Oluşturduğunuz tablolar OTel toplayıcı yapılandırmasında tanımlanmıştır. Bu örnekte üç tablo oluşturdunuz: OTELMetrics, OTELLogs ve OTELTraces. Bu bölümde, kullanılabilir verilerin küçük bir seçimini almak için her tabloyu ayrı ayrı sorgulaacaksınız.
Soldaki menüden Sorgu'yu seçin.
Sol bölmede hedef kümeyi genişletin.
Sorgularınıza doğru bağlamı vermek için oteldb veritabanını seçin.
Her tablodan rastgele sayıda satır görmek için aşağıdaki sorguları sırayla kopyalayın/yapıştırın:
Ölçümler
OTELMetrics |take 2
Aşağıdaki tabloyla aynı değil, benzer sonuçlar almanız gerekir:
Zaman damgası MetricName MetricType MetricUnit MetricDescription MetricValue Ana Bilgisayar MetricAttributes ResourceAttributes 2022-07-01T12:55:33Z http.server.active_requests Sum istekler Şu anda geçerli olan eşzamanlı HTTP isteklerinin sayısı 0 MASAÜSTÜ 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; bölme; java.exe -javaagent:./opentelemetry-javaagent.jar", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 Bit Server VM 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 Runtime Environment", "telemetry.auto.version":"1.14.0", "telemetry.sdk.name":"opentelemetry", "os.type":"windows", "os.description":"Windows 11 10.0", "process.executable.path":"C:\Program Dosyalar\Java\jdk-18.0.1.1; bölme; java.exe", "process.pid":5980, "service.name":"my-service", "telemetry.sdk.version":"1.14.0"} 2022-07-01T12:55:33Z http.server.duration_sum Histogram ms Gelen HTTP isteğinin süresi (Toplam örnek sayısı) 114.9881 MASAÜSTÜ 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; bölme; java.exe -javaagent:./opentelemetry-javaagent.jar", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 Bit Server VM 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 Runtime Environment", "telemetry.auto.version":"1.14.0", "telemetry.sdk.name":"opentelemetry", "os.type":"windows", "os.description":"Windows 11 10.0", "process.executable.path":"C:\Program Dosyalar\Java\jdk-18.0.1.1; bölme; java.exe", "process.pid":5980, "service.name":"my-service", "telemetry.sdk.version":"1.14.0"} Günlükler
OTELLogs |take 2
Aşağıdaki tabloyla aynı değil, benzer sonuçlar almanız gerekir:
Zaman damgası TraceId SpanId SeverityText Önem DerecesiNumarası Gövde ResourceAttributes LogsAttributes 2022-07-01T13:00:39Z INFO 9 PID 37280 ile DESKTOP-SFS7RUQ üzerinde Java 18.0.1.1 kullanarak PetClinicApplication v2.7.0-SNAPSHOT'ı başlatma (C:\Users\adxuser\Documents\Repos\spring-petclinic\target\spring-petclinic-2.7.0-SNAPSHOT.jar C:\Users\adxuser\Documents\Repos\spring-petclinic) içinde adxuser tarafından başlatıldı {"host.name":"DESKTOP-SFS7RUQ", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bölme; java.exe", "process.pid":37280, "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 Bit Server VM 18.0.1.1+2-6", "process.runtime.name":"Java(TM) SE Runtime Environment", "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; bölme; 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 Etkin profil kümesi yok, 1 varsayılan profile geri dönüyor: "varsayılan" {"host.name":"DESKTOP-SFS7RUQ", "process.executable.path":"C:\Program Files\Java\jdk-18.0.1.1; bölme; java.exe", "process.pid":37280, "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 Bit Server VM 18.0.1.1+2-6", "process.runtime.name":"Java(TM) SE Runtime Environment", "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; bölme; 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"} İzlemeler
OTELTraces |take 2
Aşağıdaki tabloyla aynı değil, benzer sonuçlar almanız gerekir:
TraceId SpanId ParentId SpanName SpanStatus SpanKind StartTime EndTime ResourceAttributes TraceAttributes Ekinlikler Bağlantılar 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; bölme; java.exe", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 Bit Server VM 18.0.1.1+2-6", "service.name":"my-service", "process.runtime.name":"Java(TM) SE Runtime Environment", "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; bölme; 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; bölme; java.exe", "process.runtime.description":"Oracle Corporation Java HotSpot(TM) 64 Bit Server VM 18.0.1.1+2-6", "service.name":"my-service", "process.runtime.name":"Java(TM) SE Runtime Environment", "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; bölme; 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"} [] []
Daha fazla veri işleme
Güncelleştirme ilkeleri kullanılarak, toplanan veriler uygulama ihtiyacına göre daha fazla işlenebilir. Daha fazla bilgi için bkz . Güncelleştirme ilkesine genel bakış.
Aşağıdaki örnek, histogram ölçümlerini demetler ve toplamalar içeren histo'ya özgü bir tabloya aktarır. Azure Veri Gezgini web kullanıcı arabiriminin sorgu bölmesinde aşağıdaki komutu çalıştırı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}]'
Aşağıdaki komutlar, histogram ölçüm türünün yalnızca sayı ve toplam değerlerini içeren ve bir güncelleştirme ilkesi ekleyen bir tablo oluşturur. Azure Veri Gezgini web kullanıcı arabiriminin sorgu bölmesinde aşağıdaki komutu çalıştırı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