天空混沌工具箱毒物代理支持
sky-chaostoolkit-toxiprox的Python项目详细描述
混沌工具包Tokiproxy驱动程序
此模块提供了配置ToXXixAgent代理和毒素的操作。
警告:此模块公开对您的 集群。虽然混沌工程是关于破坏和弱点的, 重要的是要花时间充分了解这些行动 以及他们是如何做到的。
安装
要从实验中使用,此包必须安装在python中 chaostoolkit已经存在的环境。
$ pip install sky-chaostoolkit-toxiproxy
用法
配置
在您的实验配置节中,可以设置ToXAgent服务器 与本地主机不同的地址:
"configuration":{"toxiproxy_host":"<defaults to localhost...>","toxiproxy_port":1234}如果需要处理多个服务器,则可以设置列表。 使用“ToXAgent”配置键:
"configuration":{"toxiproxy":[{"host":"<defaults to localhost>","port":"<defaults to 8474>"},]
导出操作
添加有毒
add_toxic(
server: Dict = {'host': 'localhost', 'port': 8474},
random_server: bool = False,
proxy_name: str = None,
toxic_name: str = None,
type: str = None,
stream: str = 'downstream',
toxicity: float = 1.0,
attributes: str = None
)
向代理添加有毒物质
服务器可以指定为参数传递。或者, 如果“toxAgent”配置节存在,则是随机的 选择服务器,将“random_server”参数设置为true。
< >可以指定添加有毒物质的代理的名称, 否则将获取服务器的随机代理创建新代理
create_proxy(
proxy_name,
upstream,
listen,
enabled: bool = True,
server: Dict = {'host': 'localhost', 'port': 8474}
删除所有附加到服务器的代理
delete_all_proxies(
server: Dict = {'host': 'localhost', 'port': 8474}
)
删除附件中的所有有毒物质
delete_all_toxics(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
删除代理
delete_proxy(
proxy_name: str,
server: Dict = {'host': 'localhost', 'port': 8474}
)
删除有毒
delete_toxic(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None,
stream: str = 'downstream',
type: str = None
)
禁用代理
disable_proxy(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
启用代理
enable_proxy(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
填充服务器
populate(
proxies,
server: Dict = {'host': 'localhost', 'port': 8474}
)
重置所有服务器
reset_all()
create_proxy(
proxy_name,
upstream,
listen,
enabled: bool = True,
server: Dict = {'host': 'localhost', 'port': 8474}
delete_all_proxies(
server: Dict = {'host': 'localhost', 'port': 8474}
)
delete_all_toxics(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
delete_proxy(
proxy_name: str,
server: Dict = {'host': 'localhost', 'port': 8474}
)
删除有毒
delete_toxic(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None,
stream: str = 'downstream',
type: str = None
)
禁用代理
disable_proxy(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
启用代理
enable_proxy(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
填充服务器
populate(
proxies,
server: Dict = {'host': 'localhost', 'port': 8474}
)
重置所有服务器
reset_all()
disable_proxy(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
enable_proxy(
server: Dict = {'host': 'localhost', 'port': 8474},
proxy_name: str = None
)
填充服务器
populate(
proxies,
server: Dict = {'host': 'localhost', 'port': 8474}
)
重置所有服务器
reset_all()
populate(
proxies,
server: Dict = {'host': 'localhost', 'port': 8474}
)
reset_all()
启用所有代理并删除所有服务器的所有主动毒物
重置服务器
reset_server(
server: Dict = {'host': 'localhost', 'port': 8474}
)
reset_server(
server: Dict = {'host': 'localhost', 'port': 8474}
)
启用所有代理并删除所有活性毒物
样品实验
{"version":"1.0.0","title":"What happens if a latency is introduced on a proxy for cassandra","description":"We introduce a 400 ms latency on a single cassandra node","tags":["proxy"],"steady-state-hypothesis":{"title":"Proxy is found","probes":[{"type":"probe","name":"proxy-is-found","tolerance":"c1","provider":{"type":"python","module":"chaostp.proxy.probes","func":"get_proxy","arguments":{"name":"c1"}}}]},"method":[{"type":"action","name":"delete_all_toxics","provider":{"type":"python","module":"chaostp.proxy.actions","func":"delete_all_toxics","arguments":{"proxy_name":"localhost","name":"c1"}}},{"type":"action","name":"add-a-latency-toxic","provider":{"type":"python","module":"chaostp.proxy.actions","func":"add_toxic","arguments":{"proxy_name":"c1","toxic_name":"t1","type":"latency","stream":"upstream","toxicity":0.5,"attributes":{"latency":100}}},"pauses":{"before":10,"after":40}},{"type":"action","name":"add-a-bandwidth-degradation-toxic","provider":{"type":"python","module":"chaostp.proxy.actions","func":"add_toxic","arguments":{"proxy_name":"c1","toxic_name":"bandwidth_degradation_toxic","type":"bandwidth","stream":"upstream","toxicity":0.5,"attributes":{"rate":400}}},"pauses":{"before":10,"after":40}},{"type":"action","name":"delete_all_toxics","provider":{"type":"python","module":"chaostp.proxy.actions","func":"delete_all_toxics","arguments":{"name":"c1"}}}],"rollbacks":[]}
请查看代码以查看现有的探针和操作。
发现
您可以使用Chaos工具包来发现此扩展的功能:
$ chaos discover sky-chaostoolkit-toxiproxy --no-install
配置
<>模块期望在默认端口8474上运行和侦听ToxAgent服务器, 当前无法配置其他服务器地址。贡献
如果您希望为这个包贡献更多的功能,那么 欢迎这么做。请分叉此项目,根据 通常的PEP 8代码样式,添加适当的测试并提交 回顾。
混沌工具包项目要求所有贡献者必须签署 Developer Certificate of Origin每次提交时,它们都希望合并 进入存储库的主分支。请确保你能遵守 提交PR前DCO的规则。