littlebot
Published on 2025-04-08 / 5 Visits
0

【源码】基于Go语言的Linux系统稳定性验证工具

项目简介

chaosArsenal是深信服开源的一款适用于Linux系统的通用可靠性测试工具。它能在系统中模拟软/硬件故障,以此验证系统面对可能出现的故障时的抵御能力,有助于发现系统潜在漏洞,满足分布式系统中对基础硬件、操作系统、中间件、业务应用等稳定性测试的需求。

项目的主要特性和功能

  1. 简单易用:核心设计理念是简单易用,工具解压即可使用,可快速部署上线。
  2. 丰富的故障注入能力:支持多种原子故障注入,覆盖CPU、内存、网络、文件系统、进程、磁盘、PCIE等多种软硬件场景。
  3. 良好的拓展性:可根据实际业务需求快速添加自定义原子故障注入能力,实现功能拓展。
  4. 多接口支持:支持cli和http两种控制接口,满足不同用户场景需求。
  5. 日志与数据库记录:使用sqlite数据库记录故障注入信息,用于重复注入检查、故障恢复和查询;日志路径为$arsenal_pacakge/logs/operations.log,有备份和压缩机制。

安装使用步骤

编译

  1. 依赖软件:确保已安装Go 1.18.x及以上版本。
  2. 编译环境:使用Linux系统(已验证系统为ubutnu、Centos)。
  3. 快速构建:在Makefile所在目录下执行make命令,编译生成的执行文件路径为output/chaosArsenal/

使用

OpenAPI调用

  1. 启动server服务端:
    • 不带参数启动,默认服务端口为http://127.0.0.1:9095,命令:./arsenal server start
    • ipport启动,如./arsenal server start --host=10.103.176.172 --port=9095
    • 只带ip启动,默认端口为9095,如./arsenal server start --host=10.103.176.172
    • 关闭server服务端,命令:./arsenal server stop --signal stop
  2. 注入:注入命令的所有参数放在http请求头,params为传入某个故障模式的所有参数,示例:curl -X 'POST' 'http://10.103.176.172:9095/arsenal/v1/faults' -H "Content-Type: application/json" -d '{"class": "os", "domain": "file", "fault-mode": "lost", "params": {"path":"/home/curtis/work/arsenal-os/kk.sh"}}'
  3. 清理:根据注入时返回的uuid清理已注入的命令,如curl -X 'DELETE' 'http://10.103.176.172:9095/arsenal/v1/faults/5d81e8f58ef7e8a1'
  4. 查询:支持匹配单一字段和多个字段,如curl -X 'GET' 'http://10.103.176.172:9095/arsenal/v1/faults?uuid=5d81e8f58ef7e8a1'

CLI命令调用

  1. 注入:
    • 常规命令,如./arsenal inject os file corruption --path /home/curtis/work/arsenal-os/kk.sh --length 3 --offset 2
    • timeout参数,如./arsenal inject os file corruption --path /home/curtis/work/arsenal-os/kk.sh --length 3 --offset 2 --timeout 1m:30s
  2. 清理:
    • cli命令完整命令清除,如./arsenal remove os file corruption --path /home/curtis/work/arsenal-os/kk.sh --length 3 --offset 2
    • 根据uuid参数清理,如./arsenal remove --uuid 5d81e8f58ef7e8a1
  3. 查询:支持匹配单一字段和多个字段,如./arsenal query --uuid 5d81e8f58ef7e8a1

cli命令补全

执行./arsenal completion bash

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】