由于不同供应商的机房机器的水平参差不齐,而我司负责的服务就需要在不稳定的机器上为我们的客户提供一个高质量的服务水平。不出意外,能够保障这种水平的方式只有一个,那就是压测,即 1:1 客户的用量来模拟一次客户的请求,保障压测期间质量是可靠的。(ps:写到这里明白了,为什么打仗之前都要演练一遍了
注:不要问,为什么不同供应商的机器水平差这么多,因为有的供应商会超卖!
那就让我们通过压测这个引子,引入今天的主角「Ddosify」,请注意这个工具是可以用来作为压测,但是人家不是只能用来压测,它的定位是「做 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 这个工具,大家只知道它可以做压测
Multi-Location Based:生成来自全球 25 个国家/地区的负载/性能测试。它可以在 Ddosify 云上使用。
Easy Scenario Builder:无需编写任何代码既可以轻松创建测试场景。
Seamless Integration with Kubernetes Monitoring:性能测试与 k8s 监控原生集成,以获得统一的体验。
Postman Integraion:直接从 Postman 导入测试,方便那些已经使用 Postman 进行 API 开发和测试的人。
笔者使用的 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
$> ddosify -t 'https://www.baidu.com'
,表示以 GET method 压测 `https://www.baidu.com’ 域名,请求 100 次,持续 10s。
注:-t :表示压测的目标 URL
测试效果:
注:不得不说,这个命令行工具在压测结果的展示上还挺友好
$> 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
Ddosify 除了支持命令行之外,还有更完善的 Dashboard 支持。以下介绍如何在单机部署 Ddosify Dashboard 的过程。
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
同样以压测 https://www.baidu.com
为例
创建一个 test
运行一个 test
可视化的分析测试结果
Service | Description |
---|---|
Hammer | The engine responsible for executing load tests. You can add multiple hammers to scale your load testing capabilities. |
Hammer Manager | Manages the engines (Hammers) involved in load testing. |
Backend | Handles load test management and stores results. |
InfluxDB | Database that stores metrics collected during testing. |
Postgres | Database that preserves load test results. |
RabbitMQ | Message broker enabling communication between Hammer Manager and Hammers. |
SeaweedFS Object Storage | Object storage for multipart files and test data (CSV) used in load tests. |
Nginx | Reverse proxy for backend and frontend services. |
Prometheus | Collects the Kubernetes Monitoring metrics from the Backend service. |
是在一月尾巴把这个月学习的小目标完成的一天,完结撒花
要感激生命中那些包容你,对你好的人,因为他们本可以不那么做
新的一年要开开心心顺顺利利,祝我们前程似锦未来可期,在顶峰相见吧
因为她争强好胜、得意洋洋、不服输、性格倔强、自我意识过强、很少奉献牺牲,却能让他人为自己所用,但很不巧,我们的文化有一部分,就是喜欢打压和攻击别人的得意。除此之外她又有棱角、有心机甚至有点腹黑,不完美、不是天使圣母、不符合世人对传统女性的刻板印象
https://github.com/ddosify/ddosify/tree/master/selfhosted