將資料從 Logstash 擷取至 Azure 資料總管

重要

此連接器可用於 Microsoft Fabric 中的 即時分析 。 使用本文中的指示,但有下列例外狀況:

Logstash 是開放原始碼的伺服器端資料處理管線,可同時從許多來源擷取資料、轉換資料,然後將資料傳送至您最愛的「隱藏」。 在本文中,您會將該資料傳送至 Azure Data Explorer,這是記錄和遙測資料的快速且高度可調整的資料探索服務。 您一開始會在測試叢集中建立資料表和資料對應,然後指示 Logstash 將資料傳送至資料表並驗證結果。

注意

此連接器目前僅支援 json 資料格式。

必要條件

建立資料表

具備叢集和資料庫之後,即可建立資料表。

  1. 在資料庫查詢視窗中執行下列命令,以建立資料表:

    .create table logs (timestamp: datetime, message: string)
    
  2. 執行下列命令,確認新的資料表 logs 已建立,並且是空的:

    logs
    | count
    

建立對應

Azure 資料總管會使用對應將傳入的資料轉換成目標資料表結構描述。 下列命令會建立名為 basicmsg 的新對應,以依照 path 的指示從傳入的 Json 擷取屬性,並將其輸出至 column

在查詢視窗中執行下列命令:

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

安裝 Logstash 輸出外掛程式

Logstash 輸出外掛程式會與 Azure 資料總管通訊,並將資料傳送至服務。 如需詳細資訊,請參閱 Logstash 外掛程式

在命令殼層中,流覽至 Logstash 根目錄,然後執行下列命令來安裝外掛程式:

bin/logstash-plugin install logstash-output-kusto

設定 Logstash 以產生範例資料集

Logstash 可產生用來測試端對端管線的範例事件。 如果您已使用 Logstash,並且可以存取您自己的事件串流,請跳至下一節。

注意

如果要使用您自己的資料,請變更前幾個步驟中所定義的資料表和對應物件。

  1. 編輯將包含必要管線設定的新文字檔 (使用 vi):

    vi test.conf
    
  2. 貼上下列設定,以指示 Logstash 產生 1000 個測試事件:

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

這項設定也包含 stdin 輸入外掛程式,此外掛程式可讓您自行撰寫更多訊息 (請務必使用 Enter 鍵將其提交至管線中)。

設定 Logstash 以將資料傳送至 Azure 資料總管

將下列設定貼到上一個步驟所使用的相同組態檔中。 請將所有預留位置都取代為設定的相關值。 如需詳細資訊,請參閱建立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 資料總管。 此參數會包含應寫入檔案的路徑,以及檔案輪替在觸發上傳至 Azure 資料總管服務的動作時所使用的時間運算式。
ingest_url 擷取相關通訊的 Kusto 端點。
app_idapp_keyapp_tenant 連線至 Azure 資料總管所需的認證。 請務必使用具有擷取權限的應用程式。
database 要放置事件的資料庫名稱。
table 要放置事件的目標資料表名稱。
json_mapping 對應可用來將傳入事件 Json 字串對應至正確的資料列格式 (定義哪個屬性會進入哪個資料行)。

執行 Logstash

我們現在已準備好執行 Logstash 並測試我們的設定。

  1. 在命令殼層中,流覽至 Logstash 根目錄,然後執行下列命令:

    bin/logstash -f test.conf
    

    您應該會看到列印在畫面上的資訊,然後看到我們的範例組態所產生的 1000 則訊息。 此時,您也可以手動輸入更多訊息。

  2. 在幾分鐘後執行下列資料總管查詢,以在您定義的資料表中查看這些訊息:

    logs
    | order by timestamp desc
    
  3. 選取 Ctrl+C 以結束 Logstash

清除資源

在資料庫中執行下列命令,以清除 logs 資料表:

.drop table logs