【AWS】使用X-Ray做AWS雲上全鏈路追蹤監控系統


功能

AWS X-Ray 是一項服務,收集應用程序所請求的相關數據,並提供用於查看、篩選和獲取數據洞察力的工具,以確定問題和發現優化的機會。

對於任何被跟蹤的對您應用程序的請求,不僅可以查看請求和響應的詳細信息,還可以查看應用程序對下游AWS 資源、微服務、數據庫和 HTTP Web API 進行的調用的詳細信息。

類似的全鏈路追蹤監控系統還有:

pinpoint

zipkin

skywalking

總結:X-Ray本質上是一個適用於AWS的分布式系統調用鏈追蹤工具,我們選擇X-Ray的原因是我們的應用都是原生在AWS雲上,能夠很好的跟X-Ray實現集成,尤其是對於AWS服務的調用記錄,X-Ray原生支持。

缺點:與AWS強綁定,犧牲了使用多雲的靈活性。

雲架構的設計是一個多因素綜合結果,前期的過度設計可能會導致成本和復雜度過高,需要根據公司實際業務需求選擇合適的設計方案。

關於X-Ray詳見:X-Ray

用途

1,快速定位程序故障原因,降低MTTR

2,自動生成雲端架構圖,統一視圖

3,發現系統中可以優化的點

特點

自動根據請求生成雲端結構圖

圖中:app_1和app_2為我們開發的程序,其他部分結構為自動生成

可以根據此圖,快速的定位到接口問題,比如響應慢,返回錯誤等等

分析接口每一步操作延時

通過跟蹤請求,能夠詳細分析請求中每一步的操作時間。

能夠協助排查問題,優化方案。

如何使用

引入X-Ray的SDK即可,對開發改動不大

適用於 .NET 的 AWS X-Ray 開發工具包 - AWS X-Ray

以Python為例

僅需在原始代碼部分增加上部分的引入庫,以及下面的初始化X-Ray的SDK即可。

from aws_xray_sdk.core import patch_all
patch_all()
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.ext.flask.middleware import XRayMiddleware
<原始代碼部分>
xray_recorder.configure(service='app-2')
XRayMiddleware(app, xray_recorder)

性能影響測試

接口性能影響

使用X-Ray

10000次請求,分別測試10次取平均值

使用X-Ray:129.1466495196024

不用X-Ray:121.5133796532948

結論:初步測試,使用X-Ray約有6%的性能損失。

實例影響

CPU占用:0.1%

內存占用:0.0%

結論:幾乎沒影響

壓力測試

按照我們的一個中等項目的訪問量:

250000/分鍾,100台服務器計算

每台服務器的速率為42QPS

上述測試性能時,單台服務器的QPS為77,未出現任何性能問題。

由此結論:再達到中等項目的量級2倍之前,不會存在性能問題。

AWS技術支持關於性能問題的回復:

監控

目前X-Ray提供的是問題排查工具,未提供告警功能。

可以借助AWS SDK,在發生問題時,獲取X-Ray的圖表,集成到現有的告警體系中。

費用

以us-west-2區域計算

每月記錄的前 100000 條軌跡免費。

超出免費套餐的限額后,每一百萬條的記錄軌跡費用為 5.00 USD(每條軌跡 0.000005 USD)。

超出免費套餐的限額后,每一百萬條的接收軌跡費用為 0.50 USD(每條軌跡 0.000005 USD)。

以中等項目的API訪問量為例,計算使用X-Ray的費用:

25萬/分鍾*60*24h*30d/100萬*$0.5*5%采樣率=$270/月

即,如開啟X-Ray,則增加$270/月的費用

結論:這個費用值得承擔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM