
diunipisocc/chaosechoChaos Echo是一个混沌测试服务,用于测试多服务应用的故障恢复能力,可模拟服务处理请求、调用后端服务及各种故障场景,帮助验证系统在故障情况下的恢复能力、检测机制和根因分析能力。
每个Chaos Echo服务实例通过调用后端服务(如有)来模拟处理入站请求的过程。
服务实例可能因以下原因处理请求失败:
处理请求时,后端服务的调用概率可自定义,每个请求会随机调用部分后端服务。服务实例处理请求的失败概率同样可自定义,失败时存在两种等概率情况:
应用事件按以下级别记录:
ERROR:错误事件(如后端服务返回错误、处理请求失败;服务崩溃时可能无法记录日志,模拟服务意外故障无日志的场景)INFO:其他事件(如接收/响应请求、发送消息到后端服务)DEBUG:所有重要事件的详细记录,确保提供事件的真实情况容器化服务需通过环境变量配置,必填参数如下:
BACKEND_SERVICES:后端服务主机名,用冒号(:)分隔TIMEOUT:等待后端服务响应的超时时间(秒)PICK_PERCENTAGE:调用后端服务的概率(百分比,0-100的整数)FAIL_PERCENTAGE:处理请求失败的概率(百分比,0-100的整数)服务内部使用80端口,需通过Docker端口映射暴露到主机,例如:
bashdocker run -p 8080:80 diunipisocc/chaosecho
通过仓库中的generate_traffic.sh脚本可向暴露的服务发送请求,使用方法:
bash./generate_traffic.sh \ [-a|--address <address>:<port>] \ # 服务地址,默认localhost:8080 [-n|--number <numberOfRequests>] \ # 请求数量,默认1000 [-p|--period <timeIntervalInSeconds> ] # 请求间隔(秒),默认0.001
使用Chaos Echo Composer工具可生成多服务拓扑的Docker Compose文件。
bashdocker run -d \ --name chaos-echo-service \ -p 8080:80 \ -e BACKEND_SERVICES="service1:8081:service2:8082" \ -e TIMEOUT=5 \ -e PICK_PERCENTAGE=30 \ -e FAIL_PERCENTAGE=20 \ diunipisocc/chaosecho
yamlversion: '3' services: frontend: image: diunipisocc/chaosecho ports: - "8080:80" environment: - BACKEND_SERVICES=backend1:80:backend2:80 - TIMEOUT=3 - PICK_PERCENTAGE=50 - FAIL_PERCENTAGE=10 backend1: image: diunipisocc/chaosecho environment: - BACKEND_SERVICES= - TIMEOUT=2 - PICK_PERCENTAGE=0 - FAIL_PERCENTAGE=5 backend2: image: diunipisocc/chaosecho environment: - BACKEND_SERVICES= - TIMEOUT=2 - PICK_PERCENTAGE=0 - FAIL_PERCENTAGE=15
仓库的deploy/examples目录提供多服务互联的Docker Compose示例,部署步骤:
bashdocker stack deploy -c docker-compose.yml echo
http://<ip地址>:8080访问generate_traffic.sh脚本加载服务,日志会保存为echo-YYYY-MM-DD.log并可在Kibana(http://<ip地址>:5601)中查看manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务