先進安全資訊模型 (ASIM) 使用者在查詢中使用 統一解析器 取代資料表名稱,以正規化格式查看資料,並將所有與結構相關的資料納入查詢中。 統一解析器則使用 來源特定的解析器 來處理每個來源的具體細節。
Microsoft Sentinel 為許多資料來源提供內建的、針對特定來源的解析器。 你可能想修改或 開發這些針對來源的特定解析器,以符合以下情況:
當你的裝置提供符合 ASIM 結構的事件,但 Microsoft Sentinel 中沒有針對你裝置及相關結構的來源解析器時,
當你的裝置有 ASIM 特定原始碼解析器,但裝置傳送事件的方法或格式與 ASIM 解析器預期不同時, 例如:
你的來源裝置可能被設定成以非標準方式傳送事件。
你的裝置可能有與 ASIM 解析器支援的不同版本。
事件可能會被中介系統收集、修改並轉發。
要了解解析器如何融入 ASIM 架構,請參考 ASIM 架構圖。
自訂 ASIM 解析器開發流程
以下工作流程說明開發自訂ASIM(針對特定來源的解析器)的高階步驟:
識別來源事件所代表的結構或結構。 更多資訊請參閱 結構概述。
將來源事件欄位對應到已識別的結構。
為你的來源開發一個或多個 ASIM 解析器。 你需要為每個與來源相關的結構開發過濾解析器和無參數解析器。
測試 你的解析器。
將解析器部署到你的 Microsoft Sentinel 工作空間中。
更新相關的 ASIM 統一解析器以參考新的自訂解析器。 欲了解更多資訊,請參閱 管理 ASIM 解析器。
你也可以考慮把 解析器貢獻 到主要的 ASIM 發行版。 貢獻的解析器也可以作為內建解析器在所有工作區中提供。
本文將引導您了解流程的開發、測試與部署步驟。
提示
也請觀看 Microsoft Sentinel 正規化解析器與正規化內容的深入網路研討會,或參考相關的投影片。 欲了解更多資訊,請參閱 「下一步步驟」。
收集樣本日誌
要建立有效的 ASIM 解析器,你需要一組具代表性的日誌,通常需要設定原始碼系統並將其連接到 Microsoft Sentinel。 如果你沒有原始裝置,雲端隨用付費服務可以讓你部署許多裝置進行開發與測試。
此外,找到廠商文件與日誌範例,有助於加速開發並減少錯誤,確保日誌格式涵蓋廣泛。
一組具代表性的日誌應包括:
- 不同事件結果的事件。
- 事件有不同的反應動作。
- 使用者名稱、主機名稱、ID 及其他需要正規化的欄位格式不同。
提示
用現有的解析器為同一架構啟動一個新的自訂解析器。 使用現有的解析器對於過濾解析器尤其重要,以確保它們接受結構所需的所有參數。
規劃繪圖
在開發解析器之前,請將來源事件中可用的資訊映射到你所識別的結構:
- 將所有必填欄位映射,最好也標示推薦欄位。
- 試著將來源中所有可取得的資訊映射到正規化欄位。 若所選結構中無法提供,請考慮將欄位映射到其他結構中可用的欄位。
- 將來源欄位的值映射到 ASIM 允許的正規化值。 原始值儲存在獨立欄位,例如
EventOriginalResultDetails。
開發中的解析器
為每個相關結構開發過濾解析器與無參數解析器。
自訂解析器是一種在 Microsoft Sentinel Logs 頁面開發的 KQL 查詢。 解析器查詢包含三個部分:
篩選>解析>準備欄位
篩選
篩選相關紀錄
在許多情況下,Microsoft Sentinel 中的一個資料表包含多種類型的事件。 例如:
- Syslog 資料表包含多個來源的資料。
- 自訂資料表可能包含來自單一來源的資訊,提供多種事件類型,並可適用於多種結構。
因此,解析器應先過濾與目標結構相關的紀錄。
KQL 的過濾是透過運算 where 子完成的。 例如, Sysmon 事件 1 會報告程序建立,因此會正規化為 ProcessEvent 架構。
Sysmon 事件 1 是表格的一部分Event,因此你會使用以下篩選條件:
Event | where Source == "Microsoft-Windows-Sysmon" and EventID == 1
重要事項
解析器不應該以時間來篩選。 使用解析器的查詢會套用一個時間範圍。
利用監視清單依來源類型篩選
在某些情況下,事件本身並不包含可過濾特定來源類型的資訊。
例如,Infoblox 的 DNS 事件以 Syslog 訊息形式傳送,且難以與其他來源發送的 Syslog 訊息區分。 在這種情況下,解析器依賴於定義相關事件的來源清單。 此名單在 Sources_by_SourceType 觀察名單中維護。
要在解析器中使用 ASimSourceType 的 watchlist,請使用 _ASIM_GetSourceBySourceType 解析器過濾區塊中的函式。 例如,Infoblox 的 DNS 解析器在過濾區塊包含以下內容:
| where Computer in (_ASIM_GetSourceBySourceType('InfobloxNIOS'))
要在你的解析器中使用這個範例:
請將包含來源資訊的欄位名稱替換
Computer。 你可以把這點和任何基於 Syslog 的解析器一樣Computer保留。用你選擇的解析器值替換標記
InfobloxNIOS。 告知解析器使用者必須使用你選定的值更新ASimSourceType監視清單,以及發送此類事件的來源清單。
基於解析器參數的過濾
在開發 過濾解析器時,請確保你的解析器接受相關結構的過濾參數,這在該結構的參考文章中有說明。 以現有的解析器作為起點,確保解析器包含正確的函式簽名。 在大多數情況下,實際的過濾程式碼也類似於針對同一結構的過濾解析器。
篩選時,請確保你:
- 在解析物理場前先過濾。 如果篩選結果不夠準確,解析後再重複測試以微調結果。 欲了解更多資訊,請參閱 篩選優化。
- 如果參數未定義且仍維持預設值,請勿進行篩選。
以下範例展示了如何實作字串參數的過濾,預設值通常是「*」,以及串列參數的篩選,預設值通常是空的清單。
srcipaddr=='*' or ClientIP==srcipaddr
array_length(domain_has_any) == 0 or Name has_any (domain_has_any)
請參閱 Kusto 文件中以下項目的更多資訊:
過濾優化
為確保解析器效能,請注意以下過濾建議:
- 一定要在內建欄位過濾,而不是解析欄位。 雖然有時使用解析欄位過濾較為簡單,但會大幅影響效能。
-
使用能提供最佳效能的運算子。 特別地,
==,has, 和startswith。 使用像contains或matches regex這類運算子也會大幅影響效能。
針對效能的過濾建議不一定容易遵循。 例如,使用 has 的準確度低於 contains。 在其他情況下,匹配內建欄位(如 SyslogMessage,)比起比較擷取的欄位(如 DvcAction)準確度較低。 在這種情況下,我們建議你仍會先用效能優化運算子在內建欄位上進行預過濾,並在解析後以更精確的條件重複過濾。
舉例來說,請參考以下 Infoblox DNS 解析器摘要。 解析器首先檢查 SyslogMessage 欄位 has 是否為 client。 然而,該術語可能在訊息中其他位置使用,因此解析器在解析 Log_Type 欄位後,會再次檢查該字 client 是否為欄位的值。
Syslog | where ProcessName == "named" and SyslogMessage has "client"
…
| extend Log_Type = tostring(Parser[1]),
| where Log_Type == "client"
注意事項
解析器不應以時間來篩選,因為使用解析器的查詢本身已經會過濾時間。
語法分析
查詢選擇相關紀錄後,可能需要解析它們。 通常,若多個事件欄位在單一文字欄位中傳達,則需要解析。
執行解析的 KQL 運算子依效能優化排序如下。 前者提供最優化的效能,後者則提供最不優化的效能。
| 運算子/函數 () | 描述 |
|---|---|
| 分裂 () 函數 | 解析一串分隔值。 |
| parse_csv () 功能 | 解析一串格式為 CSV 的數值, (逗號分隔的數值) 行。 |
| 解析 KV 運算子 | 從字串表達式中擷取結構化資訊,並以鍵值形式表示該資訊。 |
| 解析 運算子 | 使用模式(可為效能較佳的簡化模式)解析任意字串的多個值,或是正則表達式。 |
| extract_all () 功能 | 使用正則表達式解析任意字串中的單一值。
extract_all 其效能與 parse 後者使用正則表達式時類似。 |
| 擷取 () 函數 | 使用正則表達式從任意字串中提取單一值。 使用 extract時的效能會比parseextract_all需要單一值或需要時更好。 然而,在同一源字串上多次激活 的 extract 效率低於單一 parse 或 extract_all ,應避免。 |
| parse_json () 功能 | 解析以 JSON 格式的字串來解析這些值。 如果只需要從 JSON 中取得少數值,使用 parse、 extract或 extract_all 會帶來更好的效能。 |
| parse_xml () 功能 | 解析以 XML 格式排列的字串中的數值。 如果只需要從 XML 中取得少數值,使用 parse、 extract、 extract_all 或 會提供更好的效能。 |
正規化
欄位名稱映射
最簡單的正規化形式是將原始欄位重新命名為其正規化後的名稱。 用操作員 project-rename 來處理。 使用 project-rename 可確保欄位仍以實體欄位管理,且處理欄位的效能提升。 例如:
| project-rename
ActorUserId = InitiatingProcessAccountSid,
ActorUserAadId = InitiatingProcessAccountObjectId,
ActorUserUpn = InitiatingProcessAccountUpn,
欄位格式與類型正規化
在許多情況下,原始提取的值需要正規化。 例如,在 ASIM 中,MAC 位址使用冒號作為分隔符,而來源則可能傳送連字號分隔的 MAC 位址。 變換值的主要運算子是 extend,並搭配廣泛的 KQL 字串、數值及日期函數。
此外,確保解析器輸出欄位與結構中定義的類型相符,對解析器運作至關重要。 例如,你可能需要將代表日期和時間的字串轉換成 datetime 欄位。 像 和 tohex 這類函數todatetime在這些情況下很有幫助。
例如,原始事件 ID 可能以整數形式傳送,但 ASIM 要求該值為字串,以確保資料來源間的廣泛相容性。 因此,當指派來源欄位時,會用 extend 和 tostring 代替 project-rename:
| extend EventOriginalUid = tostring(ReportId),
導出欄位與值
擷取後,來源欄位的值可能需要映射到目標結構欄位指定的值集合。 函數 iff、 case、 lookup 有助於將可用資料映射到目標值。
例如,Microsoft DNS 解析器根據事件 ID 與回應碼,使用iff以下陳述來指派欄位:EventResult
extend EventResult = iff(EventId==257 and ResponseCode==0 ,'Success','Failure')
要映射多個值,請使用 datatable 運算子定義映射,並使用 來 lookup 執行映射。 例如,有些來源會報告數字 DNS 回應碼和網路協定,而結構則要求兩者都使用較常用的文字標籤表示。 以下範例示範如何利用 datatable 和 lookup推導所需值:
let NetworkProtocolLookup = datatable(Proto:real, NetworkProtocol:string)[
6, 'TCP',
17, 'UDP'
];
let DnsResponseCodeLookup=datatable(DnsResponseCode:int,DnsResponseCodeName:string)[
0,'NOERROR',
1,'FORMERR',
2,'SERVFAIL',
3,'NXDOMAIN',
...
];
...
| lookup DnsResponseCodeLookup on DnsResponseCode
| lookup NetworkProtocolLookup on Proto
注意,當映射只有兩個可能值時,查找也很有用且高效。
當映射條件更複雜時,將 、 case、 lookup和 結合iff。 以下範例展示了如何結合 lookup 和 case。
lookup上述範例若找不到查詢值,欄位中回傳一個空值DnsResponseCodeName。
case以下範例補充了這個方法,如果有操作結果lookup,並指定額外條件。
| extend DnsResponseCodeName =
case (
DnsResponseCodeName != "", DnsResponseCodeName,
DnsResponseCode between (3841 .. 4095), 'Reserved for Private Use',
'Unassigned'
)
Microsoft Sentinel 提供方便的常見查詢值函式。 例如, DnsResponseCodeName 上述查找可透過以下函數之一實作:
| extend DnsResponseCodeName = _ASIM_LookupDnsResponseCode(DnsResponseCode)
| invoke _ASIM_ResolveDnsResponseCode('DnsResponseCode')
第一個選項接受要查找的值作為參數,讓你選擇輸出欄位,因此作為一般的查找功能非常有用。 第二種選項較偏向解析器,輸入來源欄位名稱,並更新所需的 ASIM 欄位,在此例 DnsResponseCodeName中為 。
欲了解完整的 ASIM 說明功能列表,請參考 ASIM 函式
濃縮場
除了來源提供的欄位外,產生的 ASIM 事件還包含解析器應產生的豐富欄位。 在許多情況下,解析器可以為欄位指派一個常數值,例如:
| extend
EventCount = int(1),
EventProduct = 'M365 Defender for Endpoint',
EventVendor = 'Microsoft',
EventSchemaVersion = '0.1.0',
EventSchema = 'ProcessEvent'
另一種應設定的豐富欄位是類型欄位,它指定相關欄位中儲存的值類型。 例如,欄位 SrcUsernameType 指定欄位中儲存 SrcUsername 的值類型。 您可以在 實體描述中找到更多關於類型欄位的資訊。
在大多數情況下,類型也會被賦予一個常數值。 然而,在某些情況下,類型必須根據實際值來決定,例如:
DomainType = iif (array_length(SplitHostname) > 1, 'FQDN', '')
Microsoft Sentinel 提供了處理豐富化的實用功能。 例如,使用以下函數自動指派欄位 SrcHostname、 SrcDomain, 並SrcFQDNSrcDomainType根據欄位Computer中的值 。
| invoke _ASIM_ResolveSrcFQDN('Computer')
此函式將設置欄位如下:
| 電腦領域 | 輸出欄位 |
|---|---|
| 伺服器1 | SrcHostname:server1 SrcDomain、SrcDomainType、SrcFQDN 皆為空 |
| server1.microsoft.com | SrcHostname:server1 SrcDomain: microsoft.com SrcDomainType:FQDN SrcFQDN:server1.microsoft.com |
函式 _ASIM_ResolveDstFQDN 和 _ASIM_ResolveDvcFQDN 執行類似任務,填充相關 Dst 欄位 Dvc 。 欲了解完整的 ASIM 說明功能列表,請參考 ASIM 函式
選擇結果集中的欄位
解析器可選擇結果集中的欄位。 移除不必要的欄位可以提升效能並增加清晰度,避免混淆正規化欄位與剩餘來源欄位。
以下 KQL 運算子用於選擇結果集中的欄位:
| 運算子 | 描述 | 何時用於解析器 |
|---|---|---|
| 遠征計畫 | 移除場域。 | 用於 project-away 你想從結果集中移除的特定欄位。 我們建議不要從結果集中移除未正規化的原始欄位,除非它們造成混淆或體積過大且可能影響效能。 |
| 專案 | 選取先前存在或作為陳述句一部分建立的欄位,並移除所有其他欄位。 | 不建議用於解析器,因為解析器不應移除未正規化的其他欄位。 如果你需要移除特定欄位,例如解析時使用的臨時值,請使用 project-away 它們從結果中移除。 |
例如,在解析自訂日誌表時,請使用以下方法移除仍帶有型別描述符的原始欄位:
| project-away
*_d, *_s, *_b, *_g
處理句法分析變體
重要事項
不同的變體代表 不同的 事件類型,通常映射到不同的結構,並開發出獨立的解析器
在許多情況下,事件串流中的事件包含需要不同解析邏輯的變體。 要在單一解析器中解析不同變體,可以使用條件 iff 語句如 和 case,或使用聯集結構。
若要 union 處理多種變體,請為每個變體建立獨立函式,並使用 union 語句將結果合併:
let AzureFirewallNetworkRuleLogs = AzureDiagnostics
| where Category == "AzureFirewallNetworkRule"
| where isnotempty(msg_s);
let parseLogs = AzureFirewallNetworkRuleLogs
| where msg_s has_any("TCP", "UDP")
| parse-where
msg_s with networkProtocol:string
" request from " srcIpAddr:string
":" srcPortNumber:int
…
| project-away msg_s;
let parseLogsWithUrls = AzureFirewallNetworkRuleLogs
| where msg_s has_all ("Url:","ThreatIntel:")
| parse-where
msg_s with networkProtocol:string
" request from " srcIpAddr:string
" to " dstIpAddr:string
...
union parseLogs, parseLogsWithUrls…
為避免重複事件與過度處理,請確保每個函式起始時,使用原生欄位篩選其預期解析的事件。 另外,如果需要,可以在每個分支合併前使用 project-away。
部署解析器
手動部署解析器,方法是複製到 Azure Monitor 的日誌頁面,並將查詢存為函式。 此方法對測試非常有用。 欲了解更多資訊,請參閱 建立函式。
為了部署大量解析器,我們建議使用解析器 ARM 範本,具體如下:
根據每個結構的相關範本建立一個 YAML 檔案,並將你的查詢納入其中。 從與你的結構和解析器類型相關的 YAML 範本 開始,無論是過濾還是無參數。
使用 ASIM 的 YAML 轉 ARM 範本轉換 器,將你的 YAML 檔案轉換成 ARM 範本。
若部署更新,請使用入口網站或 功能刪除 PowerShell 工具刪除舊版本的函式。
用 Azure 入口網站或 PowerShell 部署你的範本。
你也可以利用連結範本將多個範本合併成單一部署流程
提示
ARM 範本可以結合不同資源,因此解析器可以與連接器、分析規則或監控清單等多種實用選項同時部署。 例如,你的解析器可以參考與它同時部署的監視清單。
測試解析器
本節說明 ASIM 提供的測試工具,讓你能測試解析器。 話雖如此,解析器是程式碼,有時複雜,建議除了自動化測試外,還會採用標準的品質保證措施,例如程式碼審查。
安裝 ASIM 測試工具
要測試 ASIM,請將 ASIM 測試工具部署到 Microsoft Sentinel 工作空間,該處包括:
- 你的解析器已經部署。
- 解析器使用的原始資料表是可取得的。
- 解析器使用的來源表中包含多樣的相關事件集合。
驗證輸出結構
為了確保你的解析器產生的結構有效,請使用 ASIM 結構測試器,在 Microsoft Sentinel Logs 頁面執行以下查詢:
<parser name> | getschema | invoke ASimSchemaTester('<schema>')
結果處理方式如下:
| 錯誤 | 動作 |
|---|---|
| 缺少強制欄位 [<欄位>] | 把欄位加入你的解析器。 在許多情況下,這會是導出值或常數值,而非來源已提供的欄位。 |
| 缺失欄位 [<欄位>] 是必須的,當必須欄位 [<欄位>] 存在時 | 把欄位加入你的解析器。 在許多情況下,此欄位表示它所指的現有欄位的類型。 |
| 當欄位 [<欄位>]存在時,缺失欄位 [<欄位>] 是必須的 | 把欄位加入你的解析器。 在許多情況下,此欄位表示它所指的現有欄位的類型。 |
| 缺少強制別名 [<欄位>],將現有欄位 [<欄位>] | 把別名加到你的解析器裡 |
| 缺少推薦別名 [<欄位>],將現有欄位 [<欄位>] | 把別名加到你的解析器裡 |
| 缺少可選別名 [<欄位>],將現有欄位 [<欄位>] | 把別名加到你的解析器裡 |
| 缺少強制別名 [<欄位>] 別名 缺失欄位 [<欄位>] | 此錯誤伴隨鋸齒場類似錯誤。 修正別名欄位錯誤,並將這個別名加入你的解析器。 |
| 欄位 [<Field>] 的類型不匹配。 目前屬於[<Type>],應該是[<Type>] | 確保正規化場的類型正確,通常會使用像 tostring這樣的轉換函數。 |
| Info | 動作 |
|---|---|
| 缺少推薦欄位 [<欄位>] | 考慮把這個欄位加到你的解析器裡。 |
| Info | 動作 |
|---|---|
| 缺少推薦別名 [<欄位>] 無別名欄位 [<欄位>] | 如果你把別名欄位加到解析器裡,記得也要加上這個別名。 |
| 缺少可選別名 [<欄位>] 別名 不存在欄位 [<欄位>] | 如果你把別名欄位加到解析器裡,記得也要加上這個別名。 |
| 缺少可選欄位 [<欄位>] | 雖然選填欄位常常缺失,但值得檢視清單以判斷是否有選填欄位能從來源映射。 |
| 額外非正規化場 [<場>] | 雖然未正規化欄位有效,但值得檢視清單,判斷是否有未正規化值可映射到可選欄位。 |
注意事項
錯誤會導致使用解析器的內容無法正常運作。 警告不會阻止內容運作,但可能會降低結果品質。
驗證輸出值
為了確保你的解析器產生的值有效,請使用 ASIM 資料測試器,在 Microsoft Sentinel Logs 頁面執行以下查詢:
<parser name> | limit <X> | invoke ASimDataTester ('<schema>')
指定結構是可選的。 若未指定 EventSchema 結構,欄位用來識別事件應遵循的結構。 若事件不包含欄位 EventSchema ,則僅驗證共用欄位。 若以參數形式指定結構,該結構將用於測試所有紀錄。 這對於不設定 EventSchema 欄位的舊式解析器非常有用。
注意事項
即使未指定結構,函式名稱後仍需使用空括號。
此檢定資源密集,可能無法涵蓋整個資料集。 將 X 設定為查詢不會逾時的最大數字,或使用時間範圍選擇器設定查詢的時間範圍。
結果處理方式如下:
| 訊息 | 動作 |
|---|---|
| (0) 錯誤:欄位 [<欄位>] 類型不符。 目前屬於[<Type>],應該是[<Type>] | 確保正規化場的類型正確,通常會使用像 tostring這樣的轉換函數。 |
| (0) 錯誤:欄位[<欄位>]欄位(類型為[<邏輯型別>])) (無效值 (s,最多列出10個) | 確保解析器正確地將來源欄位對應到輸出欄位。 若映射正確,請更新解析器將來源值轉換成正確的類型、值或格式。 有關各邏輯型態正確值與格式的更多資訊,請參閱邏輯 型別清單 。 請注意,測試工具只列出 10 個無效值的樣本。 |
| (1) 警告:必填欄位 [<欄位>] 為空值 | 強制欄位應該被填滿,而非僅僅定義。 檢查該欄位是否能從其他來源填入當前來源為空的紀錄。 |
| (2) 資訊:推薦欄位 [<欄位>] 中的空值 | 建議欄位通常會被填入。 檢查該欄位是否能從其他來源填入當前來源為空的紀錄。 |
| (2) 資訊:可選欄位 [<欄位>] 中的空值 | 檢查該別名欄位是強制還是建議,如果是,是否能從其他來源填入。 |
許多訊息也會報告產生該訊息的紀錄數量及其佔總樣本的百分比。 這個比例是該議題重要性的良好指標。 例如,推薦領域:
- 90% 的值為空可能表示一般的解析問題。
- 25% 的空值可能表示事件變體未正確解析。
- 幾個空值可能只是微不足道的問題。
注意事項
錯誤會導致使用解析器的內容無法正常運作。 警告不會阻止內容運作,但可能會降低結果品質。
貢獻解析器
你也可以考慮把解析器貢獻到主要的 ASIM 發行版。 若被接受,解析器將作為 ASIM 內建解析器提供給所有客戶。
貢獻你的解析器:
- 同時開發過濾解析器和無參數解析器。
- 依照上述 部署解析器 所述,建立一個 YAML 檔案。
- 確保你的解析器能順利通過所有 測試 ,沒有錯誤。 如果有任何警告,請在解析器 YAML 檔案中記錄。
- 針對 Microsoft Sentinel GitHub 倉庫建立一個拉取請求,包括:
記錄已接受的警告
如果ASIM測試工具列出的警告被視為對解析器有效,請使用範例中的例外部分,將被接受的警告記錄在解析器的YAML檔案中。
Exceptions:
- Field: DnsQuery
Warning: Invalid value
Exception: May have values such as "1164-ms-7.1440-9fdc2aab.3b2bd806-978e-11ec-8bb3-aad815b5cd42" which are not valid domains names. Those are related to TKEY RR requests.
- Field: DnsQuery
Warning: Empty value in mandatory field
Exception: May be empty for requests for root servers and for requests for RR type DNSKEY
YAML 檔案中指定的警告應是警告訊息的簡短形式,且能唯一識別。 該值用於在執行自動化測試時匹配警告訊息並忽略它們。
範例提交指引
在排除解析器問題及確保未來解析器更新符合較舊範例時,需要樣本資料。 你提交的範例應該包含解析器支援的任何事件變體。 確保範例事件包含所有可能的事件類型、活動格式及變化,例如代表成功與失敗活動的事件。 同時也要確保價值格式的變化都有呈現。 例如,如果主機名稱可以表示為 FQDN 或簡單主機名稱,範例事件應包含兩者格式。
要提交活動樣本,請依照以下步驟進行:
- 在畫面中
Logs執行查詢,只從解析器選擇的事件從來源資料表中擷取。 例如,對於 Infoblox DNS 解析器,請使用以下查詢:
Syslog
| where ProcessName == "named"
使用「匯出成 CSV」選項將結果匯出到一個名為
<EventVendor>_<EventProduct>_<EventSchema>_IngestedLogs.csv、 、EventProductEventProduct的EventSchema檔案,這些都是解析器指派給這些欄位的數值。在畫面中
Logs執行查詢,輸出結構或解析器輸入表。 例如,對於同一 Infoblox DNS 解析器,查詢為:
Syslog
| getschema
利用匯 出成 CSV 選項將結果匯出到一個名為
<TableName>_schema.csv的檔案,其中TableName是解析器使用的來源資料表名稱。把兩個檔案都放進你的 PR 資料夾
/Sample Data/ASIM裡。 如果檔案已經存在,請在名稱中加入你的 GitHub 帳號,例如:<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest_<GitHubHandle>.csv
測驗結果提交指引
測試結果對於驗證解析器的正確性及理解任何報告的異常非常重要。
要提交檢測結果,請依照以下步驟進行:
執行解析器測試,並說明在 測試 部分。
並使用匯出至CSV選項,將測試結果匯出到分別命名為與
<EventVendor>_<EventProduct>_<EventSchema>_SchemaTest.csv<EventVendor>_<EventProduct>_<EventSchema>_DataTest.csv的檔案。把兩個檔案都放進你的 PR 資料夾
/Parsers/ASim<schema>/Tests裡。
後續步驟
本文討論開發ASIM解析器。
了解更多關於 ASIM 解析器:
了解更多關於ASIM的資訊: