全部產品
Search
文件中心

:背景資訊以及準備工作

更新時間:Jul 06, 2024

DLA可以在不移動OSS記錄檔的情況下讀取並分析記錄檔資料,定位服務故障原因等。

對於一個服務而言,記錄檔記錄了服務啟動並執行所有詳細資料。在進行故障排除、狀態監控或者預測警示時,都需要對記錄檔進行查詢分析。阿里雲Object Storage Service服務OSS(Object Storage Service),是阿里雲提供的海量、安全、低成本、高可靠的雲端儲存體服務。越來越多的使用者傾向於把大量的記錄檔儲存在OSS中,DLA可以在不移動OSS記錄檔的情況下讀取並分析記錄檔資料,定位服務故障原因等。

本文以Apache WebServer日誌、Nginx訪問日誌、Apache Log4j日誌為例,介紹如何通過DLA讀取並分析OSS記錄檔資料。

前提條件

通過DLA讀取OSS記錄檔資料前,您需要通過以下操作在OSS中準備測試資料。

  1. 開通OSS服務,詳情請參見開始使用OSS

  2. 建立儲存空間,詳情請參見控制台建立儲存空間

  3. 上傳記錄檔,詳情請參見控制台上傳檔案

    將記錄檔webserver.log、nginx_log、log4j_sample.log上傳到OSS的log目錄中。log目錄
    • Apache WebServer記錄檔webserver.log資料:
       127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
      127.0.0.1 - - [26/May/2009:00:00:00 +0000] "GET /someurl/?track=Blabla(Main) HTTP/1.1" 200 5864 - "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.XX Safari/525.19"
      Regex:
      ([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?
    • Nginx訪問記錄檔nginx_log資料:
        127.0.0.1 - - [14/May/2018:21:58:04 +0800] "GET /?stat HTTP/1.1" 200 182 "-" "aliyun-sdk-java/2.6.0(Linux/2.6.32-220.23.2.ali927.el5.x86_64/amd64;1.6.0_24)" "-"
        127.0.0.1 - - [14/May/2018:21:58:04 +0800] "GET /?prefix=&delimiter=%2F&max-keys=100&encoding-type=url HTTP/1.1" 200 7202 "https://XXX/XXX/XXX.html" "aliyun-sdk-java/2.6.0(Linux/2.6.32-220.23.2.ali927.el5.x86_64/amd64;1.6.0_24)" "-"
      Regex:
      ([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) (\".*?\") (-|[0-9]*) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) (\".*?\") (-|[0-9]*) (-|[0-9]*)
    • Apache Log4j記錄檔,以Hadoop預設產生的記錄檔log4j_sample.log資料為例:
        2018-11-27 17:45:23,128 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler: Minimum allocation = <memory:1024, vCores:1>
        2018-11-27 17:45:23,128 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler: Maximum allocation = <memory:8192, vCores:4>
        2018-11-27 17:45:23,154 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration: max alloc mb per queue for root is undefined
        2018-11-27 17:45:23,154 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration: max alloc vcore per queue for root is undefined
      Regex:
      ^(\\d{4}-\\d{2}-\\d{2})\\s+(\\d{2}.\\d{2}.\\d{2}.\\d{3})\\s+(\\S+)\\s+(\\S+)\\s+(.*)$

注意事項

通過DLA讀取日誌資料時,記錄檔需滿足以下條件:

  • 記錄檔的格式為純文字格式,且每行可以映射為表中的一條記錄。

  • 每行的內容有固定的模式,可以用一個Regex去匹配。

在DLA中建立記錄檔外表時,最繁瑣的一步是寫Regex,Regex說明如下:

  • Regex中的每個欄位用()作為邊界,通常日誌中的每個欄位以空格分隔。

  • 建表語句中定義的列的個數與Regex中的欄位數完全符合。

  • 通常,數字可以用([0-9]*)或者(-|[0-9]*)匹配,字串用(1*)`或者(“.*?”)匹配。