Ddosify 作为压测工具的使用指南

发布时间:2024年01月22日

1. 写在最前面

由于不同供应商的机房机器的水平参差不齐,而我司负责的服务就需要在不稳定的机器上为我们的客户提供一个高质量的服务水平。不出意外,能够保障这种水平的方式只有一个,那就是压测,即 1:1 客户的用量来模拟一次客户的请求,保障压测期间质量是可靠的。(ps:写到这里明白了,为什么打仗之前都要演练一遍了

注:不要问,为什么不同供应商的机器水平差这么多,因为有的供应商会超卖!

那就让我们通过压测这个引子,引入今天的主角「Ddosify」,请注意这个工具是可以用来作为压测,但是人家不是只能用来压测,它的定位是「做 Kubernetes 的监控和性能测试」

1.1 Kubernetes 监控

  • Automatic Serivice Map Creation:Ddosify 会自动创建机器的服务映射,无需代码检测或 sidecar。这样可以轻松的找到系统中的瓶颈。

  • Performance Insight:它可以帮助发现服务响应时间过长或 SQL 查询速度慢等问题。

  • Real-Time Metrics:Ddosify 可以跟踪并显示有关集群实例 CPU 、内存、磁盘和网络使用情况的实时数据

  • Ease of Use:得益于 eBPF 技术,你可以无需更改代码、重新启动服务或添加额外的组件(如 sidecar)即可获得这些分析。

  • Alerts for Anomailes: 如果 k8s 集群中发生异常情况,例如 CPU 使用率突然增加,Ddosify 会立即向 Slack 发送警报

注:介绍 k8s 监控上的使用是防止见到 Ddosify 这个工具,大家只知道它可以做压测

1.2 Performance Testing

  • Multi-Location Based:生成来自全球 25 个国家/地区的负载/性能测试。它可以在 Ddosify 云上使用。

  • Easy Scenario Builder:无需编写任何代码既可以轻松创建测试场景。

  • Seamless Integration with Kubernetes Monitoring:性能测试与 k8s 监控原生集成,以获得统一的体验。

  • Postman Integraion:直接从 Postman 导入测试,方便那些已经使用 Postman 进行 API 开发和测试的人。

2. 命令行安装 & 使用

2.1 安装

笔者使用的 mac ,所以使用的是 brew install ddosify/tap/ddosify ,不过 Ddosify 也支持 curl 等其他方式安装。

curl -sSfL https://raw.githubusercontent.com/ddosify/ddosify/master/scripts/install.sh | sh

go install -v go.ddosify.com/ddosify@latest

2.2 使用

2.2.1 默认的例子

$> ddosify -t 'https://www.baidu.com',表示以 GET method 压测 `https://www.baidu.com’ 域名,请求 100 次,持续 10s。

注:-t :表示压测的目标 URL

测试效果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注:不得不说,这个命令行工具在压测结果的展示上还挺友好

2.2.2 定制的例子

$> ddosify -t "https://www.badu.com" -d 15 -n 1000 -m POST 表示以 POST method 压测 `https://www.badu.com’ 这个不存在的域名,请求 1000 次,持续 15s。

在这里插入图片描述

注:除了以上的命令行之外, ddosify 还支持通过 -a 指定 basic auth,-T 指定超时,-h 指定 header

3. Dashboard 安装 & 使用

Ddosify 除了支持命令行之外,还有更完善的 Dashboard 支持。以下介绍如何在单机部署 Ddosify Dashboard 的过程。

3.1 安装

  • Clone the repository

    git clone https://github.com/ddosify/ddosify.git
    cd ddosify/selfhosted
    
  • Deploy the services

    docker-compose up -d
    
  • Access the dashboard

    The dashboard is available at http://localhost:8014

  • Show the logs

    docker-compose logs
    

3.2 使用

3.2.1 简单使用

同样以压测 https://www.baidu.com 为例

  • 创建一个 test

    在这里插入图片描述

  • 运行一个 test

    在这里插入图片描述

  • 可视化的分析测试结果

    在这里插入图片描述

3.2.3 依赖的服务介绍
ServiceDescription
HammerThe engine responsible for executing load tests. You can add multiple hammers to scale your load testing capabilities.
Hammer ManagerManages the engines (Hammers) involved in load testing.
BackendHandles load test management and stores results.
InfluxDBDatabase that stores metrics collected during testing.
PostgresDatabase that preserves load test results.
RabbitMQMessage broker enabling communication between Hammer Manager and Hammers.
SeaweedFS Object StorageObject storage for multipart files and test data (CSV) used in load tests.
NginxReverse proxy for backend and frontend services.
PrometheusCollects the Kubernetes Monitoring metrics from the Backend service.

4. 碎碎念

是在一月尾巴把这个月学习的小目标完成的一天,完结撒花

  • 要感激生命中那些包容你,对你好的人,因为他们本可以不那么做

  • 新的一年要开开心心顺顺利利,祝我们前程似锦未来可期,在顶峰相见吧

  • 因为她争强好胜、得意洋洋、不服输、性格倔强、自我意识过强、很少奉献牺牲,却能让他人为自己所用,但很不巧,我们的文化有一部分,就是喜欢打压和攻击别人的得意。除此之外她又有棱角、有心机甚至有点腹黑,不完美、不是天使圣母、不符合世人对传统女性的刻板印象

5. 参考资料

文章来源:https://blog.csdn.net/phantom_111/article/details/135758384
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。