使用 Logstash 搭配 HTTP 資料收集 API 串流記錄 (舊版)
重要
使用 Logstash 輸出外掛程式的資料擷取目前處於公開預覽狀態。 此功能在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
注意
較新版本的 Logstash 外掛程式 可以使用 DCR 型 API,將記錄從外部資料源轉送至自訂和標準資料表。 新的外掛程式允許完全控制輸出架構,包括資料行名稱和類型的設定。
針對 Logstash 資料收集引擎 使用 Microsoft Sentinel 的輸出外掛程式 ,您可以直接透過 Logstash 將所需的任何類型的記錄傳送至 Microsoft Sentinel 中的 Log Analytics 工作區。 您的記錄將會傳送至您使用輸出外掛程式定義的自訂資料表。 此版本的外掛程式會使用 HTTP 資料收集 API。
若要深入瞭解如何使用 Logstash 資料收集引擎,請參閱 開始使用 Logstash 。
概觀
架構和背景
Logstash 引擎由三個元件組成:
- 輸入外掛程式:從各種來源自訂資料收集。
- 篩選外掛程式:根據指定的準則操作和正規化資料。
- 輸出外掛程式:自訂傳送已收集及處理的資料至各種目的地。
注意
Microsoft 僅支援這裡討論的 Microsoft Sentinel 提供的 Logstash 輸出外掛程式。 此外掛程式的目前版本為 v1.0.0,發行日期為 2020-08-25。 您可以 針對輸出外掛程式的任何問題開啟支援票證 。
Microsoft 不支援 Microsoft Sentinel 的協力廠商 Logstash 輸出外掛程式,或任何類型的任何其他 Logstash 外掛程式或元件。
Microsoft Sentinel 的 Logstash 輸出外掛程式僅 支援 Logstash 7.0 至 7.17.10 版,以及 8.0 至 8.9 和 8.11 版。 如果您使用 Logstash 8,建議您 在管線 中停用 ECS。
Logstash 的 Microsoft Sentinel 輸出外掛程式會使用 Log Analytics HTTP 資料收集器 REST API,將 JSON 格式的資料傳送至 Log Analytics 工作區。 資料會內嵌到自訂記錄中。
- 深入瞭解 Log Analytics REST API 。
- 深入瞭解 自訂記錄 。
在 Logstash 中部署 Microsoft Sentinel 輸出外掛程式
步驟 1:安裝
Logstash 集合中提供 Microsoft Sentinel 輸出外掛程式。
請遵循 Logstash 使用外掛程式 檔中的指示來安裝 microsoft-logstash-output-azure-loganalytics 外掛程式。
如果您的 Logstash 系統沒有網際網路存取權,請遵循 Logstash 離線外掛程式管理 檔中的指示來準備及使用離線外掛程式套件。 (這將要求您建置另一個具有網際網路存取權的 Logstash 系統。
步驟 2:設定
使用設定檔 檔的 Logstash 結構中的資訊,並使用下列索引鍵和值,將 Microsoft Sentinel 輸出外掛程式新增至組態。 (資料表之後會顯示適當的組態檔語法。
欄位名稱 | 資料類型 | 描述 |
---|---|---|
workspace_id |
string | 輸入您的工作區識別碼 GUID (請參閱提示)。 |
workspace_key |
string | 輸入您的工作區主鍵 GUID(請參閱提示)。 |
custom_log_table_name |
string | 設定要內嵌記錄的資料表名稱。 每個輸出外掛程式只能設定一個資料表名稱。 記錄資料表會出現在 Microsoft Sentinel 的 [記錄 ] 底下 ,[ 自訂記錄 ] 類別的 [資料表 ] 中 ,並加上 _CL 尾碼。 |
endpoint |
string | 選擇性欄位。 根據預設,這是 Log Analytics 端點。 使用此欄位來設定替代端點。 |
time_generated_field |
string | 選擇性欄位。 此屬性會覆寫 Log Analytics 中的預設 TimeGenerated 欄位。 在資料來源中輸入時間戳記欄位的名稱。 欄位中的資料必須符合 ISO 8601 格式 ( YYYY-MM-DDThh:mm:ssZ ) |
key_names |
陣列 | 輸入 Log Analytics 輸出架構欄位的清單。 每個清單專案都應該以單引號括住,並以逗號分隔的專案,以及以方括弧括住的整個清單。 請參閱以下範例。 |
plugin_flush_interval |
數值 | 選擇性欄位。 設定為定義訊息傳輸至 Log Analytics 之間的最大間隔(以秒為單位)。 預設值為 5。 |
amount_resizing |
boolean | true 或 false。 啟用或停用自動調整機制,它會根據收到的記錄資料量調整訊息緩衝區大小。 |
max_items |
數值 | 選擇性欄位。 只有在設定為 「false」 時才 amount_resizing 適用。使用 來設定訊息緩衝區大小的上限(在記錄中)。 預設值為 2000。 |
azure_resource_id |
string | 選擇性欄位。 定義資料所在的 Azure 資源識別碼。 如果您使用 資源內容 RBAC 只提供特定資料的存取權,資源識別碼值特別有用。 |
提示
- 您可以在工作區資源中,在 [代理程式管理 ] 底 下找到工作區識別碼和主鍵。
- 不過 ,由於將認證和其他機密資訊儲存在組態檔中的純文字不符合安全性最佳做法,因此強烈建議 您使用 Logstash 金鑰存放區 ,以便安全地在設定中包含工作區 識別碼 和 工作區主鍵 。 如需指示,請參閱 彈性檔 。
範例設定
以下是一些使用幾個不同選項的範例組態。
使用檔案訊號輸入管道的基本組態:
input { beats { port => "5044" } } filter { } output { microsoft-logstash-output-azure-loganalytics { workspace_id => "<your workspace id>" workspace_key => "<your workspace key>" custom_log_table_name => "tableName" } }
使用 tcp 輸入管道的基本組態:
input { tcp { port => "514" type => syslog #optional, will effect log type in table } } filter { } output { microsoft-logstash-output-azure-loganalytics { workspace_id => "<your workspace id>" workspace_key => "<your workspace key>" custom_log_table_name => "tableName" } }
進階設定:
input { tcp { port => 514 type => syslog } } filter { grok { match => { "message" => "<%{NUMBER:PRI}>1 (?<TIME_TAG>[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}T[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})[^ ]* (?<HOSTNAME>[^ ]*) %{GREEDYDATA:MSG}" } } } output { microsoft-logstash-output-azure-loganalytics { workspace_id => "<WS_ID>" workspace_key => "${WS_KEY}" custom_log_table_name => "logstashCustomTable" key_names => ['PRI','TIME_TAG','HOSTNAME','MSG'] plugin_flush_interval => 5 } }
更進階的組態,可從非結構化文字資料剖析自訂時間戳記和 JSON 字串,並使用擷取的時間戳記將一組選取的欄位記錄到 Log Analytics 中:
# Example log line below: # Mon Nov 07 20:45:08 2022: { "name":"_custom_time_generated", "origin":"test_microsoft", "sender":"test@microsoft.com", "messages":1337} # take an input input { file { path => "/var/log/test.log" } } filter { # extract the header timestamp and the Json section grok { match => { "message" => ["^(?<timestamp>.{24}):\s(?<json_data>.*)$"] } } # parse the extracted header as a timestamp date { id => 'parse_metric_timestamp' match => [ 'timestamp', 'EEE MMM dd HH:mm:ss yyyy' ] timezone => 'Europe/Rome' target => 'custom_time_generated' } json { source => "json_data" } } # output to a file for debugging (optional) output { file { path => "/tmp/test.txt" codec => line { format => "custom format: %{message} %{custom_time_generated} %{json_data}"} } } # output to the console output for debugging (optional) output { stdout { codec => rubydebug } } # log into Log Analytics output { microsoft-logstash-output-azure-loganalytics { workspace_id => '[REDACTED]' workspace_key => '[REDACTED]' custom_log_table_name => 'RSyslogMetrics' time_generated_field => 'custom_time_generated' key_names => ['custom_time_generated','name','origin','sender','messages'] } }
注意
請流覽輸出外掛程式 GitHub 存放庫 ,以深入瞭解其內部工作、組態和效能設定。
步驟 3:重新開機 Logstash
步驟 4:在 Microsoft Sentinel 中檢視傳入記錄
確認訊息已傳送至輸出外掛程式。
從 [Microsoft Sentinel] 導覽功能表中,按一下 [ 記錄 ]。 在 [ 資料表] 標題下,展開 [ 自訂記錄] 類別。 尋找並按一下您在組態中指定的資料表名稱(後
_CL
綴為尾碼)。若要查看資料表中的記錄,請使用資料表名稱作為架構來查詢資料表。
監視輸出外掛程式稽核記錄
若要監視 Microsoft Sentinel 輸出外掛程式的連線能力和活動,請啟用適當的 Logstash 記錄檔。 如需記錄檔位置,請參閱 Logstash 目錄配置 檔。
如果您沒有看到此記錄檔中的任何資料,請在本機產生並傳送一些事件(透過輸入和篩選外掛程式),以確定輸出外掛程式正在接收資料。 Microsoft Sentinel 僅支援與輸出外掛程式相關的問題。
下一步
在本檔中,您已瞭解如何使用 Logstash 將外部資料源連線到 Microsoft Sentinel。 若要深入了解 Microsoft Sentinel,請參閱下列文章:
- 瞭解如何 瞭解您的資料和潛在威脅 。
- 使用內 建或 自訂 規則,開始使用 Microsoft Sentinel 偵測威脅。
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: