• 【AWS】使用XRay做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/月的费用

    结论:这个费用值得承担。

    原创作者:郑立赛


    邮箱:zhenglisai@qq.com


    欢迎关注我们的公众号获取最新文章:运维自动化开发


    公众号
    公众号
  • 相关阅读:
    利用python 学习数据分析 (学习四)
    numpy 模块常用方法
    利用python 学习数据分析 (学习三)
    numpy 常用方法2
    瞎JB逆
    Codeforces 907 矩阵编号不相邻构造 团操作状压DFS
    AT Regular 086
    矩阵快速幂 求斐波那契第N项
    指数循环节(指数降幂)
    Educational Codeforces Round 32
  • 原文地址:https://www.cnblogs.com/zhenglisai/p/15602894.html
Copyright © 2020-2023  润新知