次の方法で共有


Fluent Bit を使用して Azure Data Explorer にデータを取り込む

Fluent Bit は、さまざまなソースからログ、メトリック、トレースを収集するオープンソース エージェントです。 これにより、イベント データをストレージに送信する前に、フィルター処理、変更、集計することができます。 この記事では、Fluent Bit を使用して KQL データベースにデータを送信するプロセスについて説明します。

この記事では、Fluent Bit を使用してデータを取り込む方法について説明します。

データ コネクタの完全な一覧については、データ コネクタの概要に関する記事を参照してください。

前提条件

Microsoft Entra サービス プリンシパルを作成する

Microsoft Entra サービス プリンシパルは、次の例に示すように、Azure portal またはプログラムを使用して作成できます。

このサービス プリンシパルは、Kusto のテーブルにデータを書き込むコネクタによって使用される ID です。 このサービス プリンシパルに対して、Kusto リソースにアクセスするためのアクセス許可を付与します。

  1. Azure CLI 経由で Azure サブスクリプションにサインインします。 次に、ブラウザーで認証します。

    az login
    
  2. プリンシパルをホストするサブスクリプションを選択します。 この手順は、複数のサブスクリプションがある場合に必要です。

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. サービス プリンシパルを作成します。 この例では、サービス プリンシパルを my-service-principal と呼びます。

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. 返された JSON データから、appIdpassword、および tenant を後で使用のためにコピーします。

    {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
    

Microsoft Entra アプリケーションとサービス プリンシパルが作成されました。

ターゲット テーブルを作成する

Fluent Bit は、log (dynamic)、tag (string)、timestamp (datetime) の 3 つのプロパティを使用して、JSON 形式でログを転送します。

これらの各プロパティの列を含むテーブルを作成できます。 または、構造化されたログがある場合は、カスタム列にマップされたログ プロパティを含むテーブルを作成できます。 詳細については、関連するタブを選択してください。

Fluent Bit から受信したログのテーブルを作成するには:

  1. クエリ環境を参照します。

  2. テーブルを作成するデータベースを選択します。

  3. 次の .create table コマンドを実行します。

    .create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
    

    受信した JSON プロパティは、正しい列に自動的にマップされます。

サービス プリンシパルにアクセス許可を付与する

Microsoft Entra サービス プリンシパルの作成」からサービス プリンシパルにデータベースを操作するためのデータベース インジェスター ロール アクセス許可を付与します。 詳細については、「」を参照してください。 ターゲットデータベースの名前で DatabaseName プレースホルダーを置き換え、Microsoft Entra サービス プリンシパル作成時に保存した AppId 値で ApplicationID を置き換えます。

.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')

テーブルにログを送信するように Fluent Bit を構成する

Kusto でテーブルにログを送信するように Fluent Bit を構成するには、次の出力プロパティを使用して、クラシック モードまたは YAML モード構成ファイルを作成します。

フィールド 内容 必須 既定値
Name パイプライン名。 azure_kusto
テナントID Microsoft Entra サービス プリンシパルを作成する」のテナント ID。 ✔️
クライアントID Microsoft Entra サービス プリンシパルを作成する」のアプリケーション ID。 ✔️
client_secret Microsoft Entra サービス プリンシパルを作成する」のクライアント シークレットのキー値 (パスワード)。 ✔️
ingestion_endpoint Ingestion_Endpointの説明に従って値を入力します。 ✔️
データベースネーム ログ テーブルが含まれるデータベースの名前。 ✔️
table_name ターゲット テーブルを作成する」のテーブルの名前。 ✔️
ingestion_mapping_reference ターゲット テーブルを作成する」のインジェスト マッピングの名前。 インジェスト マッピングを作成しなかった場合は、構成ファイルからプロパティを削除します。
log_key ログ コンテンツのキー名。 たとえば、logします。 log
tag_key タグのキー名。 include_tag_key が false の場合は無視されます。 tag
include_time_key 有効になっている場合は、タイムスタンプが出力に追加されます。 time_key プロパティを使用します。 true
time_key ログ レコード内のタイムスタンプのキー名。 false の場合 include_time_key 無視されます。 timestamp
ingestion_endpoint_connect_timeout さまざまな Kusto エンドポイントの接続タイムアウト (秒単位)。 60s
圧縮_有効 有効になっている場合は、圧縮 HTTP ペイロード (gzip) を Kusto に送信します。 true
ingestion_resources_refresh_interval インジェスト リソースの Kusto エンドポイントの更新間隔 (秒単位)。 3600
労働者 この出力のフラッシュ操作を実行するためのワーカーの数。 0

構成ファイルの例を表示するには、関連するタブを選択します。

[SERVICE]
    Daemon Off
    Flush 1
    Log_Level trace
    HTTP_Server On
    HTTP_Listen 0.0.0.0
    HTTP_Port 2020
    Health_Check On

[INPUT]
    Name tail
    Path /var/log/containers/*.log
    Tag kube.*
    Mem_Buf_Limit 1MB
    Skip_Long_Lines On
    Refresh_Interval 10

[OUTPUT]
    match *
    name azure_kusto
    tenant_id <TenantId>
    client_id <ClientId>
    client_secret <AppSecret>
    ingestion_endpoint <IngestionEndpoint>
    database_name <DatabaseName>
    table_name <TableName>
    ingestion_mapping_reference <MappingName>
    ingestion_endpoint_connect_timeout <IngestionEndpointConnectTimeout>
    compression_enabled <CompressionEnabled>
    ingestion_resources_refresh_interval <IngestionResourcesRefreshInterval>

データ インジェストを確認する

  1. テーブルにデータが到着したら、行数を確認して、データの転送を確認します。

    FluentBitLogs
    | count
    
  2. ログ データのサンプルを表示するには、次のクエリを実行します。

    FluentBitLogs
    | take 100