Telegraf'tan 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:

Azure Veri Gezgini Telegraf'tan veri alımını destekler. Telegraf, günlükler, ölçümler ve IoT verileri de dahil olmak üzere telemetri verilerini toplamak, işlemek ve yazmak için açık kaynak, hafif, minimum bellek ayak izi aracısıdır. Telegraf yüzlerce giriş ve çıkış eklentisini destekler. Yaygın olarak kullanılır ve açık kaynak topluluğu tarafından iyi desteklenir. Azure Veri Gezgini çıkış eklentisi Telegraf'tan bağlayıcı görevi görür ve birçok giriş eklentisi türünden Azure Veri Gezgini'a veri alımını destekler.

Önkoşullar

  • Azure aboneliği. Ücretsiz bir Azure hesabı oluşturun.
  • Azure Veri Gezgini kümesi ve veritabanı. Küme ve veritabanı oluşturma.
  • Telegraf. Telegraf'ı bir sanal makinede (VM) veya kapsayıcıda barındırın. Telegraf, izlenen uygulama veya hizmetin dağıtıldığı yerel ortamda veya ayrılmış bir izleme işlemi/kapsayıcısında uzaktan barındırılabilir.

Desteklenen kimlik doğrulama yöntemleri

Eklenti aşağıdaki kimlik doğrulama yöntemlerini destekler:

  • Uygulama anahtarları veya sertifikalarla Microsoft Entra uygulamaları.

    • Microsoft Entra Id'de uygulama oluşturma ve kaydetme hakkında bilgi için bkz . Uygulama kaydetme.
    • Hizmet sorumluları hakkında bilgi için bkz . Microsoft Entra Id'de uygulama ve hizmet sorumlusu nesneleri.
  • Microsoft Entra kullanıcı belirteçleri

    • Eklentinin bir kullanıcı gibi kimlik doğrulaması yapmasına izin verir. Bu yöntemi yalnızca geliştirme amacıyla kullanmanızı öneririz.
  • Azure Yönetilen Hizmet Kimliği (MSI) belirteci

    • Telegraf'ı Azure Sanal Makineler gibi destekleyici bir Azure ortamında çalıştırıyorsanız bu tercih edilen kimlik doğrulama yöntemidir.

Hangi yöntemi kullanırsanız kullanın, belirlenen sorumluya Azure Veri Gezgini'de Veritabanı Kullanıcısı rolü atanmalıdır. Bu rol, eklentinin verileri almak için gereken tabloları oluşturmasına olanak tanır. Eklenti ile create_tables=falseyapılandırıldıysa, belirlenen sorumlunun en azından Veritabanı Alma Yöneticisi rolüne sahip olması gerekir.

Kimlik doğrulama yöntemini yapılandırma

Eklenti, hangi kimlik doğrulama yönteminin kullanılacağını belirlemek için ortam değişkenlerinin belirli yapılandırmalarını denetler. Yapılandırmalar belirtilen sırada değerlendirilir ve algılanan ilk yapılandırma kullanılır. Geçerli bir yapılandırma algılanmazsa eklentinin kimliği doğrulanamaz.

Eklenti için kimlik doğrulamasını yapılandırmak için seçtiğiniz kimlik doğrulama yöntemi için uygun ortam değişkenlerini ayarlayın:

  • İstemci kimlik bilgileri (Microsoft Entra uygulama belirteçleri): Microsoft Entra uygulama kimliği ve gizli dizi.

    • AZURE_TENANT_ID: Kimlik doğrulaması için kullanılan Microsoft Entra kiracı kimliği.
    • AZURE_CLIENT_ID: Kiracıdaki bir Uygulama Kaydının istemci kimliği.
    • AZURE_CLIENT_SECRET: Uygulama Kaydı için oluşturulan istemci gizli dizisi.
  • İstemci sertifikası (Microsoft Entra uygulama belirteçleri): Microsoft Entra uygulama kimliği ve bir X.509 sertifikası.

    • AZURE_TENANT_ID: Kimlik doğrulaması için kullanılan Microsoft Entra kiracı kimliği.
    • AZURE_CERTIFICATE_PATH: Uygulama Kaydının kimliğini doğrulayan PEM veya PFX biçiminde sertifika ve özel anahtar çiftinin yolu.
    • AZURE_CERTIFICATE_PASSWORD: Sertifika için ayarlanan parola.
  • Kaynak sahibi parolası (Microsoft Entra kullanıcı belirteçleri): Microsoft Entra kullanıcısı ve parolası. Bu izin türünü kullanmanızı önermiyoruz. Etkileşimli bir oturum açma işlemine ihtiyacınız varsa cihaz oturum açma bilgilerini kullanın.

    • AZURE_TENANT_ID: Kimlik doğrulaması için kullanılan Microsoft Entra kiracı kimliği.
    • AZURE_CLIENT_ID: Kiracıdaki bir Uygulama Kaydının istemci kimliği.
    • AZURE_USERNAME: Microsoft Entra kullanıcı hesabının upn olarak da bilinen kullanıcı adı.
    • AZURE_PASSWORD: Microsoft Entra kullanıcı hesabının parolası. Bunun MFA'nın etkin olduğu hesapları desteklemediği unutmayın.
  • Azure Yönetilen Hizmet Kimliği: Kimlik bilgisi yönetimini platforma devretme. Bu yöntem, kodun Azure'da çalıştırılmasını gerektirir, örneğin VM. Tüm yapılandırmaLar Azure tarafından işlenir. Daha fazla bilgi için bkz . Azure Yönetilen Hizmet Kimliği. Bu yöntem yalnızca Azure Resource Manager kullanılırken kullanılabilir.

Telegraf'ı yapılandırma

Telergraf, yapılandırma temelli bir aracıdır. Başlamak için Telegraf'ı yüklemeniz ve gerekli giriş ve çıkış eklentilerini yapılandırmanız gerekir. Yapılandırma dosyasının varsayılan konumu aşağıdaki gibidir:

  • Windows için: C:\Program Files\Telegraf\telegraf.conf
  • Linux için: etc/telegraf/telegraf.conf

Azure Veri Gezgini çıkış eklentisini etkinleştirmek için otomatik olarak oluşturulan yapılandırma dosyasında aşağıdaki bölümü açıklamayı kaldırmanız gerekir:

[[outputs.azure_data_explorer]]
  ## The URI property of the Azure Data Explorer resource on Azure
  ## ex: https://myadxresource.australiasoutheast.kusto.windows.net
  # endpoint_url = ""

  ## The Azure Data Explorer database that the metrics will be ingested into.
  ## The plugin will NOT generate this database automatically, it's expected that this database already exists before ingestion.
  ## ex: "exampledatabase"
  # database = ""

  ## Timeout for Azure Data Explorer operations, default value is 20 seconds
  # timeout = "20s"

  ## Type of metrics grouping used when ingesting to Azure Data Explorer
  ## Default value is "TablePerMetric" which means there will be one table for each metric
  # metrics_grouping_type = "TablePerMetric"

  ## Name of the single table to store all the metrics (Only needed if metrics_grouping_type is "SingleTable").
  # table_name = ""

  ## Creates tables and relevant mapping if set to true(default).
  ## Skips table and mapping creation if set to false, this is useful for running telegraf with the least possible access permissions i.e. table ingestor role.
  # create_tables = true

Desteklenen alım türleri

Eklenti, yönetilen (akış) ve kuyruğa alınmış (toplu) alımı destekler. Varsayılan alma türü kuyruğa alınır.

Önemli

Yönetilen alımı kullanmak için kümenizde akış alımını etkinleştirmeniz gerekir.

Eklentinin alım türünü yapılandırmak için, otomatik olarak oluşturulan yapılandırma dosyasını aşağıdaki gibi değiştirin:

  ##  Ingestion method to use.
  ##  Available options are
  ##    - managed  --  streaming ingestion with fallback to batched ingestion or the "queued" method below
  ##    - queued   --  queue up metrics data and process sequentially
  # ingestion_type = "queued"

Alınan verileri sorgulama

Aşağıda SQL ve syslog giriş eklentileri ile Azure Veri Gezgini çıkış eklentisi kullanılarak toplanan verilere örnekler verilmiştir. Her giriş yöntemi için Azure Veri Gezgini'de veri dönüşümlerinin ve sorgularının nasıl kullanılacağına ilişkin bir örnek verilmiştir.

SQL giriş eklentisi

Aşağıdaki tabloda SQL giriş eklentisi tarafından toplanan örnek ölçüm verileri gösterilmektedir:

Adı tags timestamp Alanları
sqlserver_database_io {"database_name":"azure-sql-db2","file_type":"DATA","host":"adx-vm","logical_filename":"tempdev","measurement_db_type":"AzureSQLDB","physical_filename":"tempdb.mdf","replica_updateability":"READ_WRITE","sql_instance":"adx-sql-server"} 2021-09-09T13:51:20Z {"current_size_mb":16,"database_id":2,"file_id":1,"read_bytes":2965504,"read_latency_ms":68,"reads":47," rg_read_stall_ms":42,"rg_write_stall_ms":0,"space_used_mb":0,"write_bytes":1220608,"write_latency_ms":103,"writes":149}
sqlserver_waitstats {"database_name":"azure-sql-db2","host":"adx-vm","measurement_db_type":"AzureSQLDB","replica_updateability":"READ_WRITE","sql_instance":"adx-sql-server","wait_category":"Worker Thread","wait_type":"THREADPOOL"} 2021-09-09T13:51:20Z {"max_wait_time_ms":15,"resource_wait_ms":4469,"signal_wait_time_ms":0,"wait_time_ms":4469,"waiting_tasks_count":1464}

Toplanan ölçümler nesnesi karmaşık bir tür olduğundan, alanlar ve etiketler sütunları dinamik veri türleri olarak depolanır. Bu verileri sorgulamanın birçok yolu vardır, örneğin:

  • JSON özniteliklerini doğrudan sorgulama: JSON verilerini ayrıştırmadan ham biçimde sorgulayabilirsiniz.

    Örnek 1

    Tablename
    | where name == "sqlserver_azure_db_resource_stats" and todouble(fields.avg_cpu_percent) > 7
    

    Örnek 2

    Tablename
    | distinct tostring(tags.database_name)
    

    Not

    Bu yaklaşım, büyük hacimli veriler kullanılırken performansı etkileyebilir. Böyle durumlarda güncelleştirme ilkesi yaklaşımını kullanın.

  • Güncelleştirme ilkesi kullanma: Güncelleştirme ilkesi kullanarak dinamik veri türü sütunlarını dönüştürme. Büyük hacimli verileri sorgulamak için bu yaklaşımı öneririz.

    // Function to transform data
    .create-or-alter function Transform_TargetTableName() {
      SourceTableName
      | mv-apply fields on (extend key = tostring(bag_keys(fields)[0]))
      | project fieldname=key, value=todouble(fields[key]), name, tags, timestamp
    }
    
    // Create destination table with above query's results schema (if it doesn't exist already)
    .set-or-append TargetTableName <| Transform_TargetTableName() | take 0
    
    // Apply update policy on destination table
    .alter table TargetTableName policy update
    @'[{"IsEnabled": true, "Source": "SourceTableName", "Query": "Transform_TargetTableName()", "IsTransactional": true, "PropagateIngestionProperties": false}]'
    

Syslog giriş eklentisi

Aşağıdaki tabloda Syslog giriş eklentisi tarafından toplanan örnek ölçüm verileri gösterilmektedir:

Adı tags timestamp Alanları
syslog {"appname":"azsecmond","facility":"user","host":"adx-linux-vm","hostname":"adx-linux-vm","severity":"info"} 2021-09-20T14:36:44Z {"facility_code":1,"message":" 2021/09/20 14:36:44.890110 mdsd'ye bağlanılamadı: unix /var/run/m çevirmedsd/default_djson.socket: connect: no such file or directory","procid":"2184","severity_code":6,"timestamp":"1632148604890477000","version":1}
syslog {"appname":"CRON","facility":"authpriv","host":"adx-linux-vm","hostname":"adx-linux-vm","severity":"info"} 2021-09-20T14:37:01Z {"facility_code":10,"message":" pam_unix(cron:session): oturum (uid=0)","procid":"26446","severity_code":6,"timestamp":"1632148621120781000","version":1}

Extend işlecini veya bag_unpack() eklentisini kullanarak dinamik sütunları düzleştirmenin birden çok yolu vardır. Bunlardan birini güncelleştirme ilkesi Transform_TargetTableName() işlevinde kullanabilirsiniz.

  • Genişletme işlecini kullanın: Daha hızlı ve sağlam olduğundan bu yaklaşımı kullanmanızı öneririz. Şema değişse bile sorgular veya panolar bozulmaz.

    Tablename
    | extend facility_code=toint(fields.facility_code), message=tostring(fields.message), procid= tolong(fields.procid), severity_code=toint(fields.severity_code),
    SysLogTimestamp=unixtime_nanoseconds_todatetime(tolong(fields.timestamp)), version= todouble(fields.version),
    appname= tostring(tags.appname), facility= tostring(tags.facility),host= tostring(tags.host), hostname=tostring(tags.hostname), severity=tostring(tags.severity)
    | project-away fields, tags
    
  • bag_unpack() eklentisini kullanın: Bu yaklaşım dinamik tür sütunlarını otomatik olarak açar. Kaynak şemayı değiştirmek, sütunları dinamik olarak genişletirken sorunlara neden olabilir.

    Tablename
    | evaluate bag_unpack(tags, columnsConflict='replace_source')
    | evaluate bag_unpack(fields, columnsConflict='replace_source')