Fluent Bit は、さまざまなソースからログ、メトリック、トレースを収集するオープンソース エージェントです。 これにより、イベント データをストレージに送信する前に、フィルター処理、変更、集計することができます。 この記事では、Fluent Bit を使用して KQL データベースにデータを送信するプロセスについて説明します。
この記事では、Fluent Bit を使用してデータを取り込む方法について説明します。
データ コネクタの完全な一覧については、「データ コネクタの概要」を参照してください。
前提条件
- Fluent Bit。
- Microsoft Fabric 対応の 容量を持つ ワークスペース。
- インジェストアクセス許可を持つ KQL データベース。
- KQL クエリ セット。これは後でクエリ環境と呼ばれます。
- TargetURI 値として使用するデータベース インジェスト URI。 詳細については、「URI のコピー」を参照してください。
Microsoft Entra サービス プリンシパルを作成する
Microsoft Entra サービス プリンシパルは、次の例に示すように、Azure portal またはプログラムを使用して作成できます。
このサービス プリンシパルは、Kusto のテーブルにデータを書き込むコネクタによって使用される ID です。 このサービス プリンシパルに対して、Kusto リソースにアクセスするためのアクセス許可を付与します。
Azure CLI 経由で Azure サブスクリプションにサインインします。 次に、ブラウザーで認証します。
az login
プリンシパルをホストするサブスクリプションを選択します。 この手順は、複数のサブスクリプションがある場合に必要です。
az account set --subscription YOUR_SUBSCRIPTION_GUID
サービス プリンシパルを作成します。 この例では、サービス プリンシパルを
my-service-principal
と呼びます。az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
返された JSON データから、
appId
、password
、および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 から受信したログのテーブルを作成するには:
クエリ環境を参照します。
テーブルを作成するデータベースを選択します。
次の
.create table
コマンドを実行します。.create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
受信した JSON プロパティは、正しい列に自動的にマップされます。
サービス プリンシパルにアクセス許可を付与する
「Microsoft Entra サービス プリンシパルの作成」からサービス プリンシパルにデータベースを操作するためのデータベース インジェスター ロール アクセス許可を付与します。 詳細については、「例」を参照してください。
DatabaseName プレースホルダーをターゲットデータベースの名前に置き換え、ApplicationID プレースホルダーを、Microsoft Entra サービス プリンシパルの作成時に保存した AppId
値に置き換えます。
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')
テーブルにログを送信するように Fluent Bit を構成する
Kustoでテーブルにログを送信するためにFluent Bitを構成するには、次の出力プロパティを使用して、クラシックモード または YAMLモード の構成ファイルを作成します。
フィールド | 内容 | 必須 | 既定値 |
---|---|---|---|
名前 | パイプライン名。 | azure_kusto |
|
テナントID | 「Microsoft Entra サービス プリンシパルを作成する」のテナント ID。 | ✔️ | |
クライアントID | 「Microsoft Entra サービス プリンシパルを作成する」のアプリケーション ID。 | ✔️ | |
クライアントシークレット | 「Microsoft Entra サービス プリンシパルを作成する」のクライアント シークレットのキー値 (パスワード)。 | ✔️ | |
managed_identity_client_id | 認証に使用するマネージド ID のクライアント ID。 | ✔️ | |
データ導入エンドポイント | Ingestion_Endpointの説明に従って値を入力します。 | ✔️ | |
データベース名 | ログ テーブルが含まれるデータベースの名前。 | ✔️ | |
テーブル名 | 「ターゲット テーブルを作成する」のテーブルの名前。 | ✔️ | |
データ取り込みマッピング参照 | 「ターゲット テーブルを作成する」のインジェスト マッピングの名前。 インジェスト マッピングを作成しなかった場合は、構成ファイルからプロパティを削除します。 | ||
ログキー | ログ コンテンツのキー名。 たとえば、log します。 |
log |
|
タグキーを含める | 有効にすると、タグが出力に追加されます。 | On |
|
tag_key | タグのキー名。
include_tag_key が false の場合は無視されます。 |
tag |
|
include_time_key | 有効になっている場合は、タイムスタンプが出力に追加されます。
time_key プロパティを使用します。 |
On |
|
時間キー | ログ レコード内のタイムスタンプのキー名。 false の場合 include_time_key 無視されます。 |
timestamp |
|
インジェスチョンエンドポイント接続タイムアウト | さまざまな Kusto エンドポイントの接続タイムアウト (秒単位)。 | 60 |
|
圧縮_有効 | 有効になっている場合は、圧縮 HTTP ペイロード (gzip) を Kusto に送信します。 | true |
|
ingestion_resources_refresh_interval | インジェスト リソースの Kusto エンドポイントの更新間隔 (秒単位)。 | ||
労働者 | この出力のフラッシュ操作を実行するためのワーカーの数。 | 0 |
|
バッファリング有効 | 有効になっている場合は、Kusto に取り込む前にデータをディスクにバッファーします。 | Off |
|
バッファーパス |
buffering_enabled がOn されている場合にバッファー内のデータを格納するディレクトリの場所を指定します。 |
/tmp/fluent-bit/azure-kusto/ |
|
アップロードタイムアウト |
buffering_enabled がOn 場合のアップロードのタイムアウトを指定します。 これより古いファイルは、サイズ制限を下回っても取り込まれます。 |
30m |
|
アップロードファイルサイズ |
buffering_enabled がOn 場合にアップロードするファイルの最大サイズを指定します。 |
200MB |
|
azure_kusto_buffer_key |
buffering_enabled がOn されたときにプラグイン インスタンスを識別するための Azure Kusto バッファー キー。 バッファリングを使用する複数の Azure Kusto 出力に必要です。 |
key |
|
ストアディレクトリ制限サイズ |
buffering_enabled がOn されている場合にバッファーされたデータが格納されるディレクトリの最大サイズ。 |
8GB |
|
バッファーファイル削除早期 |
buffering_enabled がOn されている場合、BLOB の作成が成功した後、バッファーに格納されたファイルを早期に削除するかどうかを指定します。 |
Off |
|
unify_tag |
buffering_enabled がOn されたときに、1 つのバッファー ファイルを作成します。 |
On |
|
blobのURIの長さ | Kusto に取り込む前に、生成された BLOB URI の長さを設定します。 | 64 |
|
scheduler_max_retries |
buffering_enabled がOn 場合は、スケジューラを使用してインジェストの最大再試行回数を設定します。 |
3 |
|
アップロードエラーの上限で削除する |
buffering_enabled がOn 場合、最大アップロード エラー時にバッファー ファイルを削除するかどうか。 |
Off |
|
IOタイムアウト | アップロードの 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
データ インジェストを確認する
テーブルにデータが到着したら、行数を確認して、データの転送を確認します。
FluentBitLogs | count
ログ データのサンプルを表示するには、次のクエリを実行します。
FluentBitLogs | take 100