天空混沌工具箱毒物代理支持

sky-chaostoolkit-toxiprox的Python项目详细描述


混沌工具包Tokiproxy驱动程序

pypitravisreadthedocs

此模块提供了配置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()

启用所有代理并删除所有服务器的所有主动毒物

重置服务器
  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的规则。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面java,使用gui连接到另一台计算机/服务器的文件系统   运行sbt的ubuntu返回错误:“javahome需要<path>参数”   java如何在Android中处理许多ImageView而不出现内存问题?   查询中非法字符的java相同URL失败   安卓取消引用可能会产生“java”。lang.NullPointerException'   java中的indexoutofboundsexception“java.lang.ArrayIndexOutOfBoundsException”错误   xml Java将dom保存到文件>文件在程序结束后由另一个进程打开   Java的垃圾收集器是如何工作的?   Java如何筛选值(列表)   java处理字符串我怎样才能像在真实的书籍中一样在上面部分生成“小数字”呢?   java SonarQube是否有一个API来获取所有项目分析的一部分?   java startActivity(intent)什么都不做   JAVAutil。扫描器类Java   java如何从Firebase更新电子邮件?UpdateMail方法已被弃用   java Hibernate。如何正确组织带有注释的onetomany关系?   在java中获得卷标和驱动器号之间的映射(而不是FileSystemView)的解决方法是什么   java查找文件的路径