如何从磁盘利用率告警事件日志中解析FQDN与Aspect Name字段
事件日志字段提取解决方案
核心逻辑
观察待解析行的固定结构:每行均为「FQDN + Aspect Name + 磁盘使用率数值 + %」格式,其中FQDN无空白字符,末尾使用率统一为「数字(可含小数点)+ 空格 + %」,可通过正则分组一次性捕获两类目标字段,同时自动跳过日志中的表头、描述类非数据行。
可用正则表达式
^(\S+)\s+(.*?)\s+\d+\.?\d*\s+%$
- 第1个捕获组:匹配连续非空白字符,对应完整FQDN(比你之前使用的
^[^.]+更精准,可直接拿到完整域名而非仅主机名) - 第2个捕获组:非贪婪匹配FQDN后、使用率前的所有内容,对应Aspect Name,支持带空格、特殊字符的卷名场景
- 末尾固定匹配使用率格式,自动过滤非数据行,避免误匹配
不同环境使用示例
Python 实现
import re # 可替换为读取本地日志文件的逻辑 log_lines = [ "Test1.test.local System Reserved 73.2 %", "test-stage.test.local \\\\?\\Volume{c2e5b983-0000-0000-0000-006225000000}\\ 83.3 %", "test2.test.local E:\\ - Data 62.5 %" ] pattern = re.compile(r'^(\S+)\s+(.*?)\s+\d+\.?\d*\s+%$') for line in log_lines: match = pattern.match(line) if match: fqdn = match.group(1) aspect_name = match.group(2) print(f"FQDN = {fqdn}") print(f"Aspect Name = {aspect_name}")
PowerShell 实现
# 替换为你的日志文件实际路径 $logContent = Get-Content "C:\event_log.txt" $pattern = '^(\S+)\s+(.*?)\s+\d+\.?\d*\s+%$' foreach ($line in $logContent) { if ($line -match $pattern) { Write-Host "FQDN = $($matches[1])" Write-Host "Aspect Name = $($matches[2])" } }
内容的提问来源于stack exchange,提问作者Brandon Wilson
相关产品推荐
相关产品推荐

