[已淘汰]使用 Logstash 搭配 HTTP 資料收集 API 串流記錄 (舊版)
重要
許多設備與裝置的記錄收集現在都透過下列項目支援:透過 AMA 的常見事件格式 (CEF)、透過 AMA 的 Syslog,或透過 Microsoft Sentinel 中 AMA 資料連接器的自訂記錄。 如需詳細資訊,請參閱尋找您的 Microsoft Sentinel 資料連接器。
重要
使用 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 |
字串 | 輸入您的工作區識別碼 GUID (請參閱提示)。 |
workspace_key |
字串 | 輸入您的工作區主索引鍵 GUID (請參閱提示)。 |
custom_log_table_name |
字串 | 設定將擷取記錄的資料表名稱。 每個輸出外掛程式只能設定一個資料表名稱。 記錄資料表會出現在 Microsoft Sentinel 的 [記錄] 底下,於 [自訂記錄] 類別的 [資料表] 中,並具有 _CL 尾碼。 |
endpoint |
字串 | 選擇性欄位。 依預設,這是 Log Analytics 端點。 使用此欄位來設定替代端點。 |
time_generated_field |
字串 | 選擇性欄位。 此屬性會覆寫 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 |
數值 | 選擇性欄位。 只有在 amount_resizing 設定為 「false」 時才適用。用來設定訊息緩衝區大小的上限 (在記錄中)。 預設值為 2000。 |
azure_resource_id |
字串 | 選擇性欄位。 定義資料所在的 Azure 資源的識別碼。 如果您使用資源內容 RBAC 來僅提供特定資料的存取,則資源識別碼值特別有用。 |
提示
- 您可以在工作區資源中的 [代理程式管理] 下找到工作區識別碼和主索引鍵。
- 不過,由於在組態檔中以純文字儲存認證和其他敏感性資訊不符合安全性最佳做法,因此強烈建議您使用 Logstash 金鑰存放區,以便安全地在組態中包含您的工作區識別碼和工作區主索引鍵。 如需指示,請參閱 Elastic 的文件。
範例設定
以下是使用幾個不同選項的一些範例組態。
使用 filebeat 輸入管道的基本組態:
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 來偵測威脅。