You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Sentinel中原始Syslog事件解析问题求助

解决Azure Sentinel中SyslogMessage的结构化解析问题

以下是几种可行的方法,帮你把类JSON格式的SyslogMessage转换成可直接提取字段的结构化数据:

1. 清理提取内容+容错解析

正则提取后可能残留空格、转义错误或不合法字符,先清理再尝试解析,避免查询报错:

// 替换为你的实际Syslog表名
Syslog_CL
// 提取大括号内的类JSON内容,根据实际前缀调整正则表达式
| extend CleanedJson = extract(@"^\w+\s+\d+\s+\d+:\d+:\d+\s+(.*)$", 1, SyslogMessage)
// 去除前后无关字符,修复单引号转双引号(如果存在此类格式问题)
| extend FixedJson = replace(@"'", "\"", trim(" \t\n\r", CleanedJson))
// 用try_parse_json避免解析失败导致整条数据丢失
| extend ParsedData = try_parse_json(FixedJson)
// 过滤出解析成功的条目,提取目标字段
| where isnotnull(ParsedData)
| extend EventID = ParsedData.event_id, User = ParsedData.user_name
| project TimeStamp, Computer, EventID, User

2. 修复不标准JSON格式

很多类JSON存在键名未加双引号的问题,用正则批量补全后再解析:

Syslog_CL
| extend RawJsonStr = extract(@"\{(.*)\}", 1, SyslogMessage)
// 给未加双引号的键名添加双引号
| extend ValidJsonStr = replace(@"(?<!\")(\w+)(?=:)", "\"$1\"", RawJsonStr)
| extend StructuredData = parse_json(ValidJsonStr)
| extend SourceIP = StructuredData.src_ip, DestinationIP = StructuredData.dst_ip

3. 用parse运算符直接拆分固定结构

如果SyslogMessage的前缀和内部字段位置固定,无需转JSON,直接用parse拆分:

Syslog_CL
| parse SyslogMessage with "Jan " Day:int " " Time:datetime " " ComputerName " " AppName " {"event_id":" " EventID:int ", \"user_name\":\"" User:string "\", \"src_ip\":\"" SourceIP:string "\"}"
| project TimeStamp, ComputerName, EventID, User, SourceIP

4. 摄入阶段提前结构化(长期优化方案)

如果这类Syslog是持续摄入的,建议在数据采集阶段配置解析规则:

  • 在Log Analytics工作区的数据源 > Syslog中,针对对应Facility配置自定义字段提取
  • 或者使用Azure Sentinel的数据连接器中的高级解析选项,提前将SyslogMessage拆分为结构化字段,减少查询时的计算开销

内容的提问来源于stack exchange,提问作者mfalde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:10:31