次の方法で共有


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 を置き換えます。

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

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

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

フィールド 説明 必須 Default
名前 パイプライン名。 azure_kusto
テナントID Microsoft Entra サービス プリンシパルを作成する」のテナント ID。 ✔️
クライアントID Microsoft Entra サービス プリンシパルを作成する」のアプリケーション ID。 ✔️
クライアントシークレット Microsoft Entra サービス プリンシパルを作成する」のクライアント シークレットのキー値 (パスワード)。 ✔️
マネージドアイデンティティクライアントID 認証に使用するマネージド ID のクライアント ID。 ✔️
インジェスト エンドポイント Ingestion_Endpointの説明に従って値を入力します。 ✔️
データベースネーム ログ テーブルが含まれるデータベースの名前。 ✔️
テーブル名 ターゲット テーブルを作成する」のテーブルの名前。 ✔️
データ取り込みマッピング参照 ターゲット テーブルを作成する」のインジェスト マッピングの名前。 インジェスト マッピングを作成しなかった場合は、構成ファイルからプロパティを削除します。
log_key ログ コンテンツのキー名。 たとえば、logします。 log
タグキーを含める 有効にすると、タグが出力に追加されます。 On
タグキー タグのキー名。 include_tag_key が false の場合は無視されます。 tag
時間キーを含める 有効になっている場合は、タイムスタンプが出力に追加されます。 time_key プロパティを使用します。 On
time_key ログ レコード内のタイムスタンプのキー名。 false の場合 include_time_key 無視されます。 timestamp
インジェスチョンエンドポイント接続タイムアウト さまざまな Kusto エンドポイントの接続タイムアウト (秒単位)。 60
圧縮_有効 有効になっている場合は、圧縮 HTTP ペイロード (gzip) を Kusto に送信します。 true
データ取得リソース更新間隔 インジェスト リソースの Kusto エンドポイントの更新間隔 (秒単位)。
労働者 この出力のフラッシュ操作を実行するためのワーカーの数。 0
バッファリング有効 有効になっている場合は、Kusto に取り込む前にデータをディスクにバッファーします。 Off
バッファーパス buffering_enabledOnされている場合にバッファー内のデータを格納するディレクトリの場所を指定します。 /tmp/fluent-bit/azure-kusto/
アップロードタイムアウト buffering_enabledOn場合のアップロードのタイムアウトを指定します。 これより古いファイルは、サイズ制限を下回っても取り込まれます。 30m
アップロードファイルサイズ buffering_enabledOn場合にアップロードするファイルの最大サイズを指定します。 200MB
azure_kusto_buffer_key buffering_enabledOnされたときにプラグイン インスタンスを識別するための Azure Kusto バッファー キー。 バッファリングを使用する複数の Azure Kusto 出力に必要です。 key
ストアディレクトリ制限サイズ buffering_enabledOnされている場合にバッファーされたデータが格納されるディレクトリの最大サイズ。 8GB
buffer_file_delete_early buffering_enabledOnされている場合、BLOB の作成が成功した後、バッファーに格納されたファイルを早期に削除するかどうかを指定します。 Off
unify_tag buffering_enabledOnされたときに、1 つのバッファー ファイルを作成します。 On
blob_uri_length Kusto に取り込む前に、生成された BLOB URI の長さを設定します。 64
スケジューラー最大リトライ回数 buffering_enabledOn場合は、スケジューラを使用してインジェストの最大再試行回数を設定します。 3
アップロードエラーの上限で削除する buffering_enabledOn場合、最大アップロード エラー時にバッファー ファイルを削除するかどうか。 Off
IO_timeout アップロードの HTTP IO タイムアウトを構成します。 60s

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

[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]
    [OUTPUT]
    Match *
    Name azure_kusto
    Tenant_Id <app_tenant_id>
    Client_Id <app_client_id>
    Client_Secret <app_secret>
    Ingestion_Endpoint https://ingest-<cluster>.<region>.kusto.windows.net
    Database_Name <database_name>
    Table_Name <table_name>
    Ingestion_Mapping_Reference <mapping_name>
    ingestion_endpoint_connect_timeout <ingestion_endpoint_connect_timeout>
    compression_enabled <compression_enabled>
    ingestion_resources_refresh_interval <ingestion_resources_refresh_interval>
    buffering_enabled On
    upload_timeout 2m
    upload_file_size 125M
    azure_kusto_buffer_key kusto1
    buffer_file_delete_early Off
    unify_tag On
    buffer_dir /var/log/
    store_dir_limit_size 16GB
    blob_uri_length 128
    scheduler_max_retries 3
    delete_on_max_upload_error Off
    io_timeout 60s

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

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

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

    FluentBitLogs
    | take 100