全部產品
Search
文件中心

Simple Log Service:將Logstore中的日誌欄位轉換MetricStore中的度量指標

更新時間:Jun 30, 2024

如果您需要監控日誌庫(Logstore)的日誌中某欄位的指標變化趨勢,可以使用資料加工函數e_to_metric將日誌欄位轉換為時序庫(MetricStore)中的度量指標(Metric),然後通過時序庫查看該指標的變化趨勢。本文以Nginx訪問日誌為例介紹操作步驟。

背景資訊

應用程式的運行資料,主要有Log、Trace和Metric這三大類資料。Log是離散的事件,Trace可以認為是帶請求追蹤的事件,Metric是帶統計量的事件。Log、Trace、Metric本質上都是事件,滿足事件儲存的系統都可以用來儲存這三類資料。Log Service提供兩種儲存:

  • Logstore

    Log Service中Log的採集、儲存和查詢單元。更多資訊,請參見日誌庫(Logstore)

  • MetricStore

    Log Service中Metric的採集、儲存和查詢單元。Log ServiceMetricStore針對Metric做了大量最佳化,提供PromQL查詢能力,支援Prometheus協議。更多資訊,請參見時序庫(MetricStore)

很多應用的Log資料往往比Metric全面,Metric可以認為是特定格式的Log,因此在Log Service中可以將Log轉換為Metric。常見的Log轉Metric的方法如下:

  • 使用Log Service的定時SQL功能彙總日誌產生指標。更多資訊,請參見從Logstore到MetricStore

  • 使用資料加工e_to_metric函數將Logstore中的日誌欄位轉換為時序資料的Metric。

情境描述

某企業在華東1(杭州)地區建立了名為nginx-demo的Logstore,用於儲存Nginx服務的訪問日誌。

該企業需要監控後端伺服器(Host)的每次請求耗時request_time和響應耗時upstream_response_time變化情況,並通過儀錶盤展示變化趨勢。為實現需求,您需要將Logstore中request_timeupstream_response_time欄位轉換為Metric,並加上Host標籤。

body_bytes_sent:1750
host:www.example.com
http_referer:www.guide.example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:203.0.113.10
remote_addr:203.0.113.10
remote_user:p288
request_length:13741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
status:200
time_local:11/Aug/2021:06:52:27
upstream_response_time:0.66

前提條件

已採集到日誌資料。更多資訊,請參見資料擷取

步驟一:建立時序庫

建立名稱為service-metric的時序庫,用於儲存資料加工後的時序資料。

  1. 登入Log Service控制台

  2. 在Project列表地區,單擊目標Project。

    image

  3. 時序儲存 > 時序庫頁簽中,單擊+表徵圖。

  4. 建立MetricStore面板,配置如下參數,單擊確定

    參數

    說明

    MetricStore名稱

    MetricStore名稱在其所屬Project內必須唯一,建立後不能修改。

    資料儲存時間

    Log Service採集的時序資料在MetricStore中的儲存時間。

    • 選擇資料儲存模式為限定天數儲存,並按需設定資料儲存時間。單位為天,取值範圍:1~3000。

      警告
      • 當日誌儲存時間達到您所設定的儲存時間後,日誌將被刪除。

      • 縮短資料儲存時間後,Log Service將在1小時內刪除所有已超過儲存時間的資料。但Log Service控制台首頁的用量明細將於次日更新。例如您原本的資料儲存時間為5天,現修改為1天,則Log Service將在1小時內刪除前4天的日誌。

    • 選擇資料儲存模式為永久儲存時,Log Service將永久儲存採集到的時序資料。

      說明

      通過SDK方式擷取資料儲存時間時,如果對應值為3650則表示永久儲存。

    Shard數目

    Log Service使用Shard讀寫資料。一個Shard提供的寫入能力為5 MB/s、500次/s,讀取能力為10 MB/s、100次/s。每個MetricStore中最多建立10個Shard,每個Project中最多建立200個Shard。更多資訊,請參見分區(Shard)

    自動分裂Shard

    開啟自動分裂Shard開關後,如果您寫入的資料量超過已有Shard服務能力,Log Service會自動根據資料量增加Shard數量。更多資訊,請參見管理Shard

    最大分裂數

    開啟自動分裂shard開關後,最多支援自動分裂至256個readwrite狀態的Shard。

步驟二:建立資料加工任務

使用e_to_metric函數建立資料加工任務,將加工結果輸出到步驟一中建立的時序庫。

  1. 進入資料加工頁面

  2. 在資料加工頁面右上方,選擇資料的時間範圍,確保頁面下方原始日誌頁簽中有目標日誌。

    image

  3. 在編輯框中,輸入資料加工語句。將Logstore中的request_timeupstream_response_time欄位轉換為Metric,將host欄位重新命名為hostname後作為新增的labels欄位。

    e_to_metric(
        names=[("request_time", "RequestTime"), ("upstream_response_time", "ResponseTime")],
        labels=[("host", "hostname")],
    )
  4. 單擊預覽資料,查看加工結果頁簽。

    image

  5. 建立資料加工任務。

    1. 單擊儲存資料加工

    2. 建立資料加工任務面板,配置如下資訊,然後單擊確定。更多參數說明,請參見建立資料加工任務

      參數

      說明

      任務名稱、顯示名稱

      任務名稱唯一。顯示名稱由使用者自訂,例如log2metric。

      授權方式

      選擇預設角色讀取源Logstore資料。

      儲存目標

      目標名稱

      儲存目標的名稱。例如log2metric。

      目標Region

      選擇目標Project所在地區。例如華東1(杭州)。

      目標Project

      用於儲存資料加工結果的目標Project名稱。

      目標庫

      用於儲存資料加工結果的目標MetricStore名稱。例如service-metric。

      授權方式

      選擇預設角色將資料加工結果寫入目標時序庫service-metric。

      加工範圍

      時間範圍

      時間範圍選擇所有

  1. 查看資料加工任務的進度。

    image

步驟三:查詢時序資料

  1. 在左側導覽列,選擇時序儲存 > 時序庫,然後選擇目標時序庫。

    image

  2. 在頁面右上方,單擊15分鐘(相對),設定查詢和分析的時間範圍。

    說明

    查詢和分析結果相對於指定的時間範圍,有1min以內的誤差。

  3. 單擊預覽未經處理資料,然後在右側面板選擇時間範圍,查看目標日誌是否上傳成功。

    image

  4. 通過如下方式輸入查詢和分析語句。查詢時序資料的具體步驟,請參見查詢和分析時序資料

    • 直接輸入PromQL語句,單擊立即執行

      Log Service支援添加多個查詢和分析操作以及在時序圖中疊加展示多個查詢和分析結果。

    • Metrics探索框中,單擊目標監控項對應的加號表徵圖,Log Service將自動產生查詢和分析語句。

      您也可以在Metrics探索框中,單擊目標監控項對應的繼續探索,設定標籤值。Log Service將根據您的設定,自動產生查詢和分析語句。具體操作,請參見指標探索

    • 每個Host的請求時間RequestTime變化趨勢RequestTime

    • 每個Host的回應時間ReponseTime變化趨勢ReponseTime