將數據從 Logstash 擷取至 Azure 數據總管

重要

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

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

注意

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

必要條件

  • Microsoft帳戶或Microsoft Entra 使用者身分識別。 不需要 Azure 訂用帳戶。
  • Azure 資料總管叢集和資料庫。 建立叢集和資料庫
  • Logstash 第 6 版+ 安裝指示

建立表格

擁有叢集和資料庫之後,就可以建立數據表了。

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

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

    logs
    | count
    

建立對應

Azure 資料總管會使用對應,將傳入數據轉換成目標數據表架構。 下列命令會建立名為 basicmsg 的新對應,從 傳入 JSON 擷取屬性,如 所 path 指出,並將其輸出至 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_id、app_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