由于云产品日志通常由系统自动生成,用户无法直接控制其内容,因此可以通过配置写入处理器来处理这些日志。文中列举了部分常用的数据处理方式作为参考。
前提条件
已创建Project、标准型Logstore并完成日志采集配置。具体操作,请参见创建项目Project、创建Logstore和数据采集概述。
说明
写入处理器使用步骤请参见创建写入处理器。
ACK
审计日志仅保留写操作
需求描述
ACK的审计日志包含读写操作,具体通过
verb
字段来区分,取值包括create / get / list / patch / update / watch
等。如果希望仅保留写操作从而减少数据存储量,可以配置写入处理器进行处理。SPL语句
* | where verb not in ('get', 'watch', 'list')
控制平面日志字段提取
需求描述
希望对 content 字段进行字段提取。
原始日志
_container_name_: kube-controller-manager _source_: stderr _time_: 2024-12-19T11:10:16.251374622+08:00 content: I1219 11:10:16.251299 1 httplog.go:134] "HTTP" verb="GET" URI="/healthz" latency="45.911µs" userAgent="kube-probe/1.30+" audit-ID="" srcIP="7.8.44.1:40092" resp=200 contentType="text/plain; charset=utf-8" resp=200
SPL语句
* | parse-regexp content, '\S+\s+\S+\s+\S+\s+(\S+)\]\s+"([^"]+)"\s+(.*)' as caller, msg, kvs | parse-kv -regexp kvs, '([\S+]+)="?([^"]*)"?(?:\s+|$)' | project-away content, kvs
处理结果
_container_name_: kube-controller-manager _source_: stderr _time_: 2024-12-19T11:10:16.251374622+08:00 URI: /healthz audit-ID: caller: httplog.go:134 contentType: text/plain; charset=utf-8 latency: 45.911µs msg: HTTP resp: 200 srcIP: 7.8.44.1:40092 userAgent: kube-probe/1.30+ verb: GET
OSS
保留满足特定条件的数据
需求描述
仅保留 Object 相关操作的日志。
SPL语句
* | where operation like '%Object%'
对object和request_uri进行 URL 解码
需求描述
OSS 访问日志中,
object
和request_uri
默认是做了URL编码的,希望对这两个字段进行URL解码。原始日志
object: image%2Flogo.png request_uri: /image%2Flogo.png HTTP/1.1
SPL语句
* | extend object=url_decode(object), request_uri=url_decode(request_uri)
处理结果
object: image/logo.png request_uri: /image/logo.png HTTP/1.1
负载均衡
仅保留失败请求的日志
需求描述
ALB访问日志中,
status
字段表示了请求的状态码,希望仅保留失败请求的日志。SPL语句
* | where cast(status as bigint) >= 400
七层访问日志request_uri脱敏
需求描述
ALB 访问日志中,
request_uri
字段是包含完整的请求路径和请求参数,希望移除请求参数部分,仅保留请求路径。原始日志
request_uri: /api/v1/some-resource?token=xxxxxxx
SPL语句
* | extend request_uri=url_extract_path(request_uri)
处理结果
request_uri: /api/v1/some-resource
文档内容是否对您有帮助?