全部產品
Search
文件中心

Simple Log Service:使用寫入處理器處理雲產品日誌

更新時間:Dec 28, 2024

由於雲產品日誌通常由系統自動產生,使用者無法直接控制其內容,因此可以通過配置寫入處理器來處理這些日誌。文中列舉了部分常用的資料處理方式作為參考。

前提條件

已建立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 訪問日誌中,objectrequest_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