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

如何修改Logstash配置提取Oracle RDS XML审计日志AuditRecord片段

Logstash配置修改方案

核心处理逻辑

针对S3存储的gz格式Oracle审计日志,我们通过「输入适配+过滤层清理无效内容+结构化解析+ES输出」四个步骤实现需求,核心解决JSON前缀行报错的问题。


1. 输入层配置(适配S3 gz压缩文件)

使用S3输入插件直接读取压缩文件,指定纯文本解码避免JSON前缀行提前解析报错:

input {
  s3 {
    bucket => "你的S3存储桶名称"
    prefix => "Oracle审计日志在S3中的存储路径前缀"
    codec => plain { charset => "UTF-8" }
    sincedb_path => "/data/logstash/sincedb/oracle_audit_sincedb" # 记录已读取文件偏移,避免重复消费
    gzip_pattern => "\.gz$" # 自动识别gz格式并解压
    region => "你的AWS区域,例如ap-southeast-1"
  }
}

2. 过滤层核心处理

2.1 丢弃无效JSON前缀行

所有不包含<AuditRecord>标签的行(即你提到的JSON前缀行)直接丢弃,从根源避免解析报错:

filter {
  # 第一步:过滤无审计内容的无效行
  if "<AuditRecord>" not in [message] {
    drop {}
  }

  # 第二步:提取<AuditRecord>到</AuditRecord>区间的审计内容
  grok {
    match => { "message" => "<AuditRecord>%{DATA:oracle_audit_raw}</AuditRecord>" }
    tag_on_failure => [ "_audit_content_parse_fail" ]
  }

  # 可选:提取失败的行也丢弃,避免脏数据
  if "_audit_content_parse_fail" in [tags] {
    drop {}
  }

  # 第三步:结构化解析审计内容
  # 若审计记录为XML格式,推荐用XML过滤器解析,比Grok更稳定高效:
  xml {
    source => "oracle_audit_raw"
    store_xml => false # 不存储完整XML结构,节省存储空间
    xpath => {
      "//AuditType/text()" => "audit_type"
      "//DBUser/text()" => "db_username"
      "//ActionTime/text()" => "event_time"
      "//ActionName/text()" => "db_operation"
      "//ObjectName/text()" => "operated_object"
      "//ClientIP/text()" => "client_ip"
    }
    remove_field => [ "message", "oracle_audit_raw" ] # 清理冗余原始字段
  }

  # 若为非XML结构化文本,可自行编写Grok规则解析:
  # grok {
  #   match => { "oracle_audit_raw" => "你的自定义Grok规则" }
  # }
}

3. 输出层对接Amazon ES

使用Amazon ES官方适配插件输出解析后的结构化数据:

output {
  amazon_es {
    hosts => ["你的Amazon ES集群域名,例如https://es-domain.us-east-1.es.amazonaws.com"]
    region => "你的AWS区域"
    # 若Logstash运行的EC2已绑定有权限访问ES的IAM角色,无需配置以下AK/SK
    # aws_access_key_id => "你的AWS AK"
    # aws_secret_access_key => "你的AWS SK"
    index => "oracle-audit-log-%{+YYYY.MM.dd}" # 按天拆分索引
    ilm_enabled => false # 若未开索引生命周期管理可关闭
  }
}

注意事项

  • 如果审计日志存在非UTF-8编码,可在input的plain codec中修改charset参数适配
  • IAM角色需要配置S3读权限、ES写入权限,避免权限报错
  • 若单条日志跨行,可在input层配置multiline codec合并行,保证完整匹配<AuditRecord>标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:57:02