本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
如果您需要監控日志庫(Logstore)的日志中某字段的指標變化趨勢,可以使用數據加工函數e_to_metric將日志字段轉換為時序庫(MetricStore)中的度量指標(Metric),然后通過時序庫查看該指標的變化趨勢。本文以Nginx訪問日志為例介紹操作步驟。
背景信息
應用程序的運行數據,主要有Log、Trace和Metric這三大類數據。Log是離散的事件,Trace可以認為是帶請求追蹤的事件,Metric是帶統計量的事件。Log、Trace、Metric本質上都是事件,滿足事件存儲的系統都可以用來存儲這三類數據。日志服務提供兩種存儲:
Logstore
日志服務中Log的采集、存儲和查詢單元。更多信息,請參見日志庫(Logstore)。
MetricStore
日志服務中Metric的采集、存儲和查詢單元。日志服務MetricStore針對Metric做了大量優化,提供PromQL查詢能力,支持Prometheus協議。更多信息,請參見時序庫(MetricStore)。
很多應用的Log數據往往比Metric全面,Metric可以認為是特定格式的Log,因此在日志服務中可以將Log轉換為Metric。常見的Log轉Metric的方法如下:
使用日志服務的定時SQL功能聚合日志產生指標。更多信息,請參見從Logstore到MetricStore。
使用數據加工e_to_metric函數將Logstore中的日志字段轉換為時序數據的Metric。
場景描述
某企業在華東1(杭州)地域創建了名為nginx-demo
的Logstore,用于存儲Nginx服務的訪問日志。
該企業需要監控后端服務器(Host)的每次請求耗時request_time
和響應耗時upstream_response_time
變化情況,并通過儀表盤展示變化趨勢。為實現需求,您需要將Logstore中request_time
和upstream_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
的時序庫,用于保存數據加工后的時序數據。
登錄日志服務控制臺。
在Project列表區域,單擊目標Project。
在
頁簽中,單擊+圖標。在創建MetricStore面板,配置如下參數,單擊確定。
參數
說明
MetricStore名稱
MetricStore名稱在其所屬Project內必須唯一,創建后不能修改。
數據保存時間
日志服務采集的時序數據在MetricStore中的保存時間。
選擇數據保存模式為限定天數保存,并按需設置數據保存時間。單位為天,取值范圍:1~3000。
警告當日志保存時間達到您所設置的保存時間后,日志將被刪除。
縮短數據保存時間后,日志服務將在1小時內刪除所有已超過保存時間的數據。但日志服務控制臺首頁的用量明細將于次日更新。例如您原本的數據保存時間為5天,現修改為1天,則日志服務將在1小時內刪除前4天的日志。
選擇數據保存模式為永久保存時,日志服務將永久保存采集到的時序數據。
說明通過SDK方式獲取數據保存時間時,如果對應值為3650則表示永久保存。
Shard數目
日志服務使用Shard讀寫數據。一個Shard提供的寫入能力為5 MB/s、500次/s,讀取能力為10 MB/s、100次/s。每個MetricStore中最多創建10個Shard,每個Project中最多創建200個Shard。更多信息,請參見分區(Shard)。
自動分裂Shard
打開自動分裂Shard開關后,如果您寫入的數據量超過已有Shard服務能力,日志服務會自動根據數據量增加Shard數量。更多信息,請參見管理Shard。
最大分裂數
打開自動分裂shard開關后,最多支持自動分裂至256個readwrite狀態的Shard。
步驟二:創建數據加工任務
使用e_to_metric函數創建數據加工任務,將加工結果輸出到步驟一中創建的時序庫。
在數據加工頁面右上角,選擇數據的時間范圍,確保頁面下方原始日志頁簽中有目標日志。
在編輯框中,輸入數據加工語句。將Logstore中的
request_time
和upstream_response_time
字段轉換為Metric,將host
字段重命名為hostname
后作為新增的labels字段。e_to_metric( names=[("request_time", "RequestTime"), ("upstream_response_time", "ResponseTime")], labels=[("host", "hostname")], )
單擊預覽數據,查看加工結果頁簽。
創建數據加工任務。
單擊保存數據加工。
在創建數據加工任務面板,配置如下信息,然后單擊確定。更多參數說明,請參見創建數據加工任務。
參數
說明
任務名稱、顯示名稱
任務名稱唯一。顯示名稱由用戶自定義,例如log2metric。
授權方式
選擇默認角色讀取源Logstore數據。
存儲目標
目標名稱
存儲目標的名稱。例如log2metric。
目標Region
選擇目標Project所在地域。例如華東1(杭州)。
目標Project
用于存儲數據加工結果的目標Project名稱。
目標庫
用于存儲數據加工結果的目標MetricStore名稱。例如service-metric。
授權方式
選擇默認角色將數據加工結果寫入目標時序庫service-metric。
加工范圍
時間范圍
時間范圍選擇所有。
查看數據加工任務的進度。
步驟三:查詢時序數據
在左側導航欄,選擇
,然后選擇目標時序庫。在頁面右上角,單擊15分鐘(相對),設置查詢和分析的時間范圍。
說明查詢和分析結果相對于指定的時間范圍,有1min以內的誤差。
單擊預覽原始數據,然后在右側面板選擇時間范圍,查看目標日志是否上傳成功。
通過如下方式輸入查詢和分析語句。查詢時序數據的具體步驟,請參見查詢和分析時序數據。
直接輸入PromQL語句,單擊立即執行。
日志服務支持添加多個查詢和分析操作以及在時序圖中疊加展示多個查詢和分析結果。
在Metrics探索框中,單擊目標監控項對應的圖標,日志服務將自動生成查詢和分析語句。
您也可以在Metrics探索框中,單擊目標監控項對應的繼續探索,設置標簽值。日志服務將根據您的設置,自動生成查詢和分析語句。具體操作,請參見指標探索。
每個Host的請求時間RequestTime變化趨勢
每個Host的響應時間ReponseTime變化趨勢