摘要: 日誌服務相比自建 ELK 在功能、性能、規模和成本等方面有諸多優點。對於已經存儲在 Elasticsearch 中的數據,用戶只須要一行命令就能方便地將數據遷移至日誌服務。
日誌服務相比自建 ELK 在功能、性能、規模和成本等方面有諸多優點,參閱自建ELK vs 日誌服務(SLS)全方位對比。對於已經存儲在 Elasticsearch 中的數據,用戶只須要一行命令就能方便地將數據遷移至日誌服務。python
數據遷移顧名思義是指將數據從某個數據源遷移到另一個數據源。根據不一樣數據源存儲引擎是否相同,可分爲同源遷移和異構遷移。根據遷移類型的不一樣,可分爲全量遷移和增量遷移。nginx
目前,各大雲計算廠商都提供了各自的數據遷移方案,如 AWS DMS,Azure DMA,阿里雲 DTS。這些方案主要專一於解決關係型數據庫間的數據遷移問題,還未覆蓋到 Elasticsearch 場景。數據庫
針對 Elasticsearch 場景,日誌服務團隊提供了基於 aliyun-log-python-sdk 和 aliyun-log-cli 的解決方案。該方案主要針對歷史數據作全量遷移。app
原理ide
• 使用 Scroll API 從 Elasticsearch 抓取數據。Scroll API 能夠從 Elasticsearch 裏高效取出大量數據而無須付出深度分頁的代價。工具
• 針對 Elasticsearch 每一個 index 的每一個 shard 建立一個數據遷移任務,提交到內部進程池中執行,用來提升並行度和吞吐量。性能
功能阿里雲
• 支持用戶將 Elasticsearch 中的全部文檔或某些索引中的文檔遷移至日誌服務指定的 project 中,工具會自動初始化好與索引同名的 logstore。雲計算
• 支持用戶自定義過濾條件,只遷移符合條件的文檔至日誌服務。spa
• 支持用戶自定義 Elasticsearch 的索引和日誌服務的 logstore 之間的映射關係。
• 支持用戶經過參數 pool_size 來控制數據遷移任務的並行度。
• 支持用戶自定義日誌字段 time、__source__、__topic__ 的取值。
• 支持使用 HTTP 基本認證從 Elasticserch 中遷移數據。
映射關係
Elasticsearch 數據模型中包含 - 索引(index),類型(type),文檔(document),映射(mapping),數據類型(field datatypes)等概念,它們和日誌服務中數據模型的映射關係以下表所示。
使用樣例
下面經過一段視頻向您展現如何使用 CLI 將 nginx 訪問日誌從 Elasticsearch 遷移至日誌服務,以及如何對這批數據進行查詢分析。
1.以天爲單位統計各狀態碼的數量。
2.統計請求分佈在哪些國家。
性能調優
工具的性能主要取決於從 Elasticsearch 中讀取數據的速度以及向日志服務寫入數據的速度。
Elasticsearch 中每一個 index 由多個 shard 組成。工具會爲每一個 index 的每一個 shard 建立一個數據遷移任務,並提交到內部進程池中執行(進程池大小可經過參數 pool_size 指定)。理論上目標 index 的 shard 越多,總體吞吐量越高。
日誌服務也有 shard 的概念,單個 shard 提供 5MB/s,500次/s 的寫入能力。您能夠經過爲 logstore 開啓更多的 shard 來提升向日志服務寫入數據的速度。
在 Elasticsearch 目標 index 只有1個 shard,日誌服務 logstore 也只有1個 shard,單個文檔大小 100B 的狀況下,平均數據遷移速率爲 3MB/s。
本文做者:吳波bruce_wu
本文爲雲棲社區原創內容,未經容許不得轉載。