閱讀778 返回首頁    go windows


使用指南__訂閱日誌服務數據_鏈接計算_表格存儲-阿裏雲

本章節主要介紹日誌數據傳送服務的使用指南,更詳細的信息請參見用戶手冊搭建指南。閱讀該指南前,請確保日誌數據傳送服務已經搭建完成。

服務詳情查看

  1. 登錄容器服務控製台

  2. 單擊頁麵左側的服務,進入服務列表。

  3. 單擊服務名稱欄下麵的服務名稱(如示例中創建的 loghub-shipper),進入服務詳情頁麵。請根據需要,在“容器”列表欄中執行如下操作:

    • 查看服務日誌

      單擊“操作”欄下的日誌,查看傳送服務的實時日誌。

    • 查看運行狀態及報警規則

      1. 單擊“操作”欄下的監控,查看容器的運行狀態。

      2. 單擊查看曆史監控數據/設置報警規則,查看監控圖表和報警規則。您還可以在該頁麵創建報警規則。

使用示例

以使用如下的配置為例:

  1. loghub:{"endpoint":"https://lhshipper-test.cn-hangzhou.log.aliyuncs.com", "logstore":"test-store","consumer_group":"defaultcg"}
  2. tablestore:{"endpoint":"https://lhshipper-test.cn-hangzhou.ots.aliyuncs.com", "instance":"lhlshipper-test", "target_table":"loghub_target", "status_table":"loghub_status"}
  3. exclusive_columns: ["__source__", "__time__"]
  4. transform: {"rename":"original", "trans-pkey":"(->int 10 original)"}

寫入數據

如下示例為使用日誌服務的 API 想在日誌服務中寫入一條數據。

  1. LogItem log = new LogItem();
  2. log.PushBack("original", "12345");
  3. log.PushBack("keep", "hoho");
  4. ArrayList logs = new ArrayList<LogItem>();
  5. logs.add(log);
  6. loghub.PutLogs("lhshipper-test", "test-store", "smile", logs, "");

這是一條有兩個用戶字段的日誌,其中 original 字段的值為“12345”,keep 字段的值為“hoho”。此外,還有三個日誌服務添加的字段,其中 topic 為“smile”,而 __source__ 和 __time__ 字段隨環境變化而變化。

數據查看

使用工具馬上可以看到表格存儲中數據表已經有了一條數據(轉成 json 格式方便描述)。

  1. [{"rename": "12345", "trans-pkey": 12345, "keep": "hoho"},
  2. {"__topic__": "smile", "original": "12345"}]

其中,rename、trans-pkey、keep 為主鍵列,__topic__ 與 original 為屬性列。

根據環境變量中的配置:

  • 在 transform 中定義 "rename": "original",日誌數據中 original 的值為“12345”,故表格存儲中該行的 rename 的值也為“12345”。

  • 在 transform 中定義 "trans-pkey": "(->int 10 original)",傳送服務將 original 的值以十進製的方式轉成整數寫入表格存儲中的 trans-pkey 列。

  • keep 沒有任何轉換規則,在表格存儲中,屬性類 keep 的值與日誌數據中的保持一致。

  • 日誌數據中的 __source__ 和 __time__ 字段由於在 exclusive_columns 中配置了 [“__source__“, “__time__“ ],這兩個字段的數據不會寫入數據表中。

  • __topic__ 和 original 兩個字段以屬性列的方式寫入數據表。

同步狀態查詢

每個傳送服務的進程每隔五分鍾會在狀態表中添加一行狀態數據,狀態數據示例如下(轉成 json 格式方便描述):

  1. [{"project_logstore": "lhshipper-test|test-store", "shard": 0, "target_table": "loghub_target", "timestamp": 1469100705202},
  2. {"skip_count": 0, "shipper_id": "fb0d62cacc94-loghub-shipper-loghub-shipper-1", "cu_count": 1, "row_count": 1, "__time__": 1469100670}]

其涵義為傳送服務的某個 worker(”shipper_id”: “fb0d62cacc94-loghub-shipper-loghub-shipper-1”), 在 2016-07-21 T11:31:45.202000Z 添加了這條狀態(”timestamp”: 1469100705202)。

在之前的五分鍾裏,該 worker 從名為 lhshipper-test 的日誌 project 中的 test-store 這個 log store(“project_logstore”: “lhshipper-test|test-store”)0 號 shard(“shard”: 0)消費了 1 條日誌,其中跳過日誌 0 條(“skip_count”: 0),向數據表寫入 1 條日誌(“row_count”: 1),消耗了 1 個 CU(“cu_count”: 1)。

錯誤格式日誌提醒

在狀態表中,會給出最近 5 分鍾內跳過日誌的條數信息,這是因為係統異常或者係統升級等會不可避免地輸出一些不符合格式規範的日誌數據,導致傳送服務無法對這些日誌進行轉換,這部分日誌則會被跳過。

例如寫入如下的日誌數據:

  1. LogItem log = new LogItem()
  2. log.PushBack("original", "abcd")
  3. log.PushBack("keep", "hoho")
  4. ArrayList logs = new ArrayList<LogItem>()
  5. logs.add(log)
  6. loghub.PutLogs("lhshipper-test", "test-store", "smile", logs, "")

由於在環境設置中將日誌中的 original 字段轉成整數寫入數據表中的 trans-pkey 列,但是該條日誌中 original 並不是一個數字,所以狀態表中的數據如下:

  1. [{"project_logstore": "lhshipper-test|test-store", "shard": 0, "target_table": "loghub_target", "timestamp": 1469102805207},
  2. {"skip_sample": "{"__time__":1469102565,"__topic__":"smile","__source__":"10.0.2.15","original":"abcd","keep":"hoho"}", "skip_count": 1, "shipper_id": "fb0d62cacc94-loghub-shipper-loghub-shipper-1", "cu_count": 0, "row_count": 0, "__time__": 0}]

在狀態表中,“skip_count” 為 1,屬性列“skip_sample”表示被忽略的原始日誌數據。

同時,在容器服務的日誌中也可以查看到如下的日誌信息:

  1. loghub-shipper_loghub-shipper_1 | 2016-07-21T12:02:56.113581003Z 12:02:56.111 [pool-4-thread-3] ERROR shipper.error - abcd is not 10-based int
  2. loghub-shipper_loghub-shipper_1 | 2016-07-21T12:02:56.114039933Z 12:02:56.111 [pool-4-thread-3] INFO shipper.core - skip 1 rows
  3. loghub-shipper_loghub-shipper_1 | 2016-07-21T12:02:56.139854766Z 12:02:56.139 [pool-4-thread-3] INFO shipper.core - skip: {"__time__" 1469102565, "__topic__" "smile", "__source__" "10.0.2.15", "original" "abcd", "keep" "hoho"}

可以看到,日誌中詳細描述了該數據被跳過的原因為“abcd is not 10-based int”。

鏡像升級

表格存儲官方團隊會不斷提供新功能,所以會不定時更新傳送服務鏡像。您可以按照如下步驟進行升級:

  1. 登錄容器服務控製台

  2. 單擊應用,進入應用頁麵。

  3. 找到傳送服務,單擊其右側操作欄下的重新部署

  4. 單擊確定

擴容與縮容

傳送服務具有良好的擴展性,會自動根據容器實例的數量進行 shard 分配,當傳送服務的數據傳送能力達不到業務要求時,可以方便地進行擴容與縮容。

擴容

當傳送服務將日誌數據同步到表格存儲的效率達不到您的要求時,可以按照如下步驟對傳送服務進行擴容:

  1. 登錄容器服務控製台

  2. 單擊頁麵左側的服務,進入服務列表頁麵。

  3. 單擊傳送服務右側“操作欄”下的變更配置,進入更新服務頁麵。

  4. 添加容器數量

  5. 單擊確定,完成擴容。

縮容

縮容的步驟正好和擴容相反,詳情如下:

  1. 登錄容器服務控製台

  2. 單擊頁麵左側的服務,進入服務列表頁麵。

  3. 單擊傳送服務右側操作欄下的變更配置,進入更新服務頁麵。

  4. 減少容器數量

  5. 單擊確定,返回服務列表頁麵。

  6. 單擊傳送服務右側操作欄下的重新調度

  7. 單擊頁麵左側的節點,進入節點列表頁麵。

  8. 找到容器減少的雲服務器,並單擊其右側操作欄下的更多 > 移除節點

  9. 和擴容不同,容器服務並不會主動釋放摘除的雲服務器。需要您去ECS控製台手工釋放。如下圖所示:

    縮容

最後更新:2016-11-23 16:04:15

  上一篇:go 限製項匯總__開發指南_表格存儲-阿裏雲
  下一篇:go 用戶手冊__訂閱日誌服務數據_鏈接計算_表格存儲-阿裏雲