Logstash から Azure Data Explorer にデータを取り込む

重要

このコネクタは、Microsoft Fabric の リアルタイム分析 で使用できます。 次の例外を除き、この記事の手順を使用します。

Logstash は、多くのソースからデータを同時に取り込み、変換したデータを任意の "一時退避場所" に送信する、オープン ソースのサーバー側データ処理パイプラインです。 この記事では、そのデータを Azure Data Explorer に送信します。これは、ログとテレメトリ データのための高速で非常にスケーラブルなデータ探索サービスです。 最初にテスト クラスターにテーブルとデータのマッピングを作成し、次にデータをテーブルに送信して結果を検証するように Logstash に指示します。

注意

このコネクタでは現在、json データ形式のみがサポートされています。

前提条件

テーブルを作成する

クラスターとデータベースが用意できたら、次はテーブルを作成します。

  1. データベース クエリ ウィンドウで次のコマンドを実行して、テーブルを作成します。

    .create table logs (timestamp: datetime, message: string)
    
  2. 次のコマンドを実行して、新しいテーブル logs が作成されたこと、およびそれが空であることを確認します。

    logs
    | count
    

マッピングを作成する

マッピングは、受信データをターゲット テーブルのスキーマに変換するために Azure Data Explorer によって使用されます。 次のコマンドでは、path で示される受信 json からプロパティを抽出して column に出力する、basicmsg という名前の新しいマッピングを作成しています。

クエリ ウィンドウで次のコマンドを実行します。

.create table logs ingestion json mapping 'basicmsg' '[{"column":"timestamp","path":"$.@timestamp"},{"column":"message","path":"$.message"}]'

Logstash 出力プラグインをインストールする

Logstash 出力プラグインは、Azure Data Explorer と通信してデータをサービスに送信します。 詳細については、「Logstash プラグイン」を参照してください。

コマンド シェルで Logstash ルート ディレクトリに移動し、次のコマンドを実行してプラグインをインストールします。

bin/logstash-plugin install logstash-output-kusto

サンプル データセットを生成するように Logstash を構成する

Logstash では、エンドツーエンドのパイプラインをテストするために使用できるサンプル イベントを生成できます。 既に Logstash を使用していて、ご自分のイベント ストリームにアクセスできる場合は、次のセクションに進んでください。

注意

独自のデータを使用している場合は、前の手順で定義したテーブル オブジェクトとマッピング オブジェクトを変更してください。

  1. (vi を使用して) 必要なパイプライン設定が含まれる新しいテキスト ファイルを編集します。

    vi test.conf
    
  2. 1,000 件のテスト イベントを生成することを Logstash に指示する、次の設定を貼り付けます。

    input {
        stdin { }
        generator {
            message => "Test Message 123"
            count => 1000
        }
    }
    

この構成には、stdin 入力プラグインも含まれています。これを使用すると、自分でメッセージをさらに作成することができます (それらをパイプラインに送信するには、必ず Enter キーを使用してください)。

Azure Data Explorer にデータを送信するように Logstash を構成する

次の設定を、前の手順で使用したのと同じ構成ファイルに貼り付けます。 すべてのプレースホルダーは、お客様の設定に対応する値に置き換えてください。 詳細については、「Microsoft Entra アプリケーションの作成」を参照してください。

output {
    kusto {
            path => "/tmp/kusto/%{+YYYY-MM-dd-HH-mm-ss}.txt"
            ingest_url => "https://ingest-<cluster name>.kusto.windows.net/"
            app_id => "<application id>"
            app_key => "<application key/secret>"
            app_tenant => "<tenant id>"
            database => "<database name>"
            table => "<target table>" # logs as defined above
            json_mapping => "<mapping name>" # basicmsg as defined above
    }
}
パラメーター名 説明
path Logstash プラグインでは、イベントを Azure Data Explorer に送信する前に、それらを一時ファイルに書き込みます。 このパラメーターには、ファイルを書き込む場所のパスと、Azure Data Explorer サービスへのアップロードをトリガーするためのファイル ローテーションの時間表現が含まれます。
ingest_url インジェストに関連する通信の Kusto エンドポイント。
app_idapp_key、および app_tenant Azure Data Explorer に接続するために必要な資格情報。 取り込み特権を備えたアプリケーションを必ず使用してください。
database イベントを配置するデータベースの名前。
テーブル イベントを配置するターゲット テーブルの名前。
json_mapping マッピングは、受信イベント json 文字列を適切な行形式にマッピングするために使用されます (どのプロパティをどの列に入力するかを定義します)。

Logstash を実行する

Logstash を実行して設定をテストする準備ができました。

  1. コマンド シェルで Logstash ルート ディレクトリに移動し、次のコマンドを実行します。

    bin/logstash -f test.conf
    

    画面に情報が表示され、サンプル構成によって生成された 1,000 件のメッセージが表示されます。 この時点で、さらにメッセージを手動で入力することもできます。

  2. 数分後、次の Data Explorer クエリを実行して、お客様が定義したテーブル内のメッセージを確認します。

    logs
    | order by timestamp desc
    
  3. Ctrl + C キーを押して、Logstash を終了します

リソースをクリーンアップする

お客様のデータベースで次のコマンドを実行して、logs テーブルをクリーンアップします。

.drop table logs