天天看點

CLI使用案例7:使用CLI進行高速跨域日志複制、曆史資料重新索引與數倉投遞

CLI使用案例7:使用CLI進行高速跨域日志複制、曆史資料重新索引與數倉投遞

背景

使用日志服務是不是常常遇到如下煩惱?

  1. 開啟了字段索引卻無法對曆史日志起作用,而手動重建索引又很困難怎麼辦?
  2. 需要遷移資料,複制資料到其他區域logstore,寫代碼實作大并發複制又很複雜怎麼辦?
  3. 投遞日志到OSS/ODPS僅僅對新資料起作用,又想投遞曆史日志怎麼辦?

現在使用CLI就可以幫你輕松實作這些操作。

介紹

複制資料(CopyData)支援将特定時間範圍内的logstore的資料複制到特定logstore中去。其具備如下一些特點:

  1. 沒有索引的資料也可以同步.
  2. 速度快, 易并發, 且支援傳輸壓縮.
  3. 拉取的資料按照伺服器接受的時間排序.
  4. 支援跨域、跨項目庫複制。
  5. 支援複制資料到同一個logstore(重新索引)。

前提

這裡假設已經完成了CLI的

安裝

.

配置多區域賬戶

首先CLI中配置多個區域賬戶, 以便後續操作, 這一步也是一次性的. 如果之前已經做過, 這裡可以跳過.

這裡配置2個域的賬戶, 一個杭州公有雲, 一個北京公有雲.

> aliyunlog configure AKID****123 AKKEY****123 cn-hangzhou.log.aliyuncs.com
> aliyunlog configure AKID****123 AKKEY****123 cn-beijing.log.aliyuncs.com bj           

注意: 這裡的最後一個參數, 僅僅用于表明這個賬戶的名字, 以便後續使用. 不傳入預設是

main

, 也是預設使用的賬戶, 這裡使用杭州的賬戶作為預設賬戶.

參考:

  • 關于秘鑰的配置, 可以參考 配置
  • 關于日志服務在各個域的Endpoint位址, 可以參考 入口服務

重新索引

如果因為某些特定原因,某個時間範圍内的日志沒有建立索引,無法被查詢和統計。可以如下操作将日志重新寫入,就可以實作重新索引的效果。

例如:

aliyunlog log copy_data --project="源project" --logstore="源logstore" --from_time="2018-09-05 0:0:0+8:00" --to_time="2018-09-06 0:0:0+8:00"           

這裡将杭州區域的

源project

源logstore

中伺服器在時間範圍["2018-09-05 0:0:0+8:00","2018-09-06 0:0:0+8:00")内接收到的資料,重新寫入到

源logstore

中去。

注意:

這裡僅僅是複制一份資料進入目标logstore,并在寫入時自動對其索引,原來的沒有被索引的日志依然存在。

跨區域複制資料

有時需要将某一個logstore的日志遷移到另外一個logstore中去時,可以如下操作:

準備好目标logstore

假設目标logstore已經建立好了,并且配置好了索引。這一步操作可以在Web控制台完成,也可以通過CLI的

複制logstore配置

來完成,或者使用CLI的

create_logstore

建立日志庫,再配置索引,通過指令

get_index_config

擷取索引,調用指令

create_index

來實作。

複制資料

aliyunlog log copy_data --project="源項目" --logstore="源logstore" --from_time="2018-09-05 0:0:0+8:00" --to_time="2018-09-06 0:0:0+8:00" --to_project="目标project" --to_logstore="目标logstore" --to_client="bj"           

源project

源logstore

中伺服器在時間範圍["2018-09-05 0:0:0+8:00","2018-09-06 0:0:0+8:00")内接收到的資料,寫入到

北京

區域的

目标project

目标logstore

注意:

這裡用

--to_client

指定操作目标project的賬戶為

bj

,是前面前提中配置的賬戶名。

投遞曆史日志到OSS/ODPS

日志服務的投遞任務配置好後,僅僅對新接受資料産生作用。這裡也可以借助複制資料來實作投遞曆史日志的效果:

  1. 建立一個臨時的logstore(不需要配置索引)
  2. 在臨時logstore上配置投遞OSS/ODPS的任務
  3. 複制需要投遞的日志到目标logstore
  4. 投遞結束後,删除臨時logstore

時間格式

時間格式推薦是

%Y-%m-%d %H:%M:%S %Z

, 如

2018-01-24 17:00:00+8:00

, 但也支援其他合法的時間格式, 例如:

Jan 01 2018 10:10:10+8:00

+8:00

是時區資訊.

CLI還支援更多其他格式的時間格式,例如

2 day ago

等,參考

這裡

時間範圍

傳入的時間範圍, 需要注意幾點:

  1. 這裡的時間指的是伺服器接受日志的時間
  2. 時間的範圍是左閉右開

    [)

    , 上面例子中

    16:00:00

    伺服器接受到的日志會被拉取到, 但是

    17:00:00

    伺服器所接受到的日志不會.

特殊的時間範圍

有時我們不關心資料的某一邊界, 例如期望獲得所有存儲的資料到某一天日期位置. 或者擷取從某一天開始到目前存儲的資料為止的話, 就可以使用特殊遊标.

特殊遊标包括

begin

end

. 例如:

aliyunlog log copy_data --project="p1" --logstore="l1" --from_time="begin" --to_time="2018-01-24 17:00:00+8:00" --to_logstore="l2"           

這裡複制所有

2018-01-24 17:00:00+8:00

之前伺服器接收到的日志到logstore

l2

又例如:

aliyunlog log copy_data --project="p1" --logstore="l1" --from_time="2018-01-24 17:00:00+8:00" --to_time="end" --to_logstore="l2"           

2018-01-24 17:00:00+8:00

開始及之後伺服器接收到的日志到logstore

l2

進一步參考