使用Spring Boot的混乱猴子的方法

总结

我发现了一个类似于Netflix Chaos Monkey的名为Chaos Monkey for Spring Boot的工具,它可以随机产生错误。于是我决定试用一下。

文件

解说视频

在公式文档中可以找到。

github

解释

Spring Boot的混沌猴能够随机引发以下三种错误

    • 速度遅延

 

    • 例外発生

 

    Spring Bootの停止

其他主要功能如下:

    • 障害を発生させる頻度(10%単位)を指定できる

 

    • 速度遅延時間の範囲(単位ms)を指定できる

 

    • 障害を発生させるBeanの種類(@Controller, @Service, @Componentなど)を指定できる

 

    Chaos Monkeyの有効/無効や設定は、actuator経由で変更できる

嵌入方式 ɡrù ɡshì)

Spring Boot的混沌猴子可以通过以下三个步骤进行引入。

    • pomに依存追加

 

    • active profilesの指定

 

    applicationプロパティーの設定追加

添加依赖到pom文件

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>chaos-monkey-spring-boot</artifactId>
    <version>2.0.0</version>
</dependency>

如果您使用SNAPSHOT,请参考文档中的Snapshots。

活跃档案的设定

将active profiles指定为chaos-monkey。

如果要在application.properties中指定:

spring.profiles.active=chaos-monkey

如果在Spring Boot启动时需要指定的话,可以使用以下方法:

java -jar your-app.jar --spring.profiles.active=chaos-monkey

添加application属性的设置

可以通过使用actuator来更改,将chaos.monkey.enabled配置到application.properties文件中。

在application.properties文件中:

chaos.monkey.enabled=true

如果是application.xml文件:

chaos:
  monkey:
    enabled: true

如果通过执行器进行设置的话:

如果要使用actuator,请参考下一章的”使用actuator进行配置确认和更改”。

通过以上三个设置(pom 、active profiles和application.properties),Chaos Monkey将被启用。

请确认启动

当启动Spring Boot时,启动日志中会显示以下的AA。

     _____ _                       __  __             _
    / ____| |                     |  \/  |           | |
   | |    | |__   __ _  ___  ___  | \  / | ___  _ __ | | _____ _   _
   | |    | '_ \ / _` |/ _ \/ __| | |\/| |/ _ \| '_ \| |/ / _ | | | |
   | |____| | | | (_| | (_) \__ \ | |  | | (_) | | | |   |  __| |_| |
    \_____|_| |_|\__,_|\___/|___/ |_|  |_|\___/|_| |_|_|\_\___|\__, |
                                                                __/ |
    _ready to do evil!                                         |___/

:: Chaos Monkey for Spring Boot                                    ::

提示

改变发生障碍的频率

障害的发生频率可以通过一个属性(level)进行设定。障害发生率可以用1-10的数字,每10%为一个单位,进行指定。

    1は発生率10%、10は発生率100%

请选择发生故障的类型。

種類内容プロパティ遅延指定した時間(ms)の範囲でレイテンシを悪化させますlatencyActive例外Exceptionを発生させますexceptionsActiveアプリケーションダウンSpring Bootアプリケーションを停止しますkillApplicationActive
    • 遅延の障害は、遅延範囲開始(latencyRangeStart)と遅延範囲停止(latencyRangeEnd)に指定したミリ秒の数値の範囲でランダムで遅延が発生します。中身はThread.sleepです。

 

    • 例外の障害は、RuntimeException(“Chaos Monkey – RuntimeException”)を発生させます。

 

    アプリケーションダウンは、Spring Boot ApplicationをexitCode0で終了させます。

导致障碍发生的地方

在watcherProperties中可以指定导致故障的位置。我们通过扫描带有以下注解的类来选择导致故障的目标。

アノテーションRight align@Controllercontroller@RestControllerrestController@Serviceservice@Repositoryrepository@Componentcomponent

如果Watcher的所有设定都是false,那么请注意Chaos Monkey将不会运行。

使用动作器进行设置确认和设置变更。

启用actuator功能

可以通过添加以下配置来通过执行器更改Chaos Monkey的设置。

如果是application.properties的情况下:

management.endpoint.chaosmonkey.enabled=true
management.endpoints.web.exposure.include=chaosmonkey

如果是application.xml文件:

management:
  endpoint:
    chaosmonkey:
      enabled: true
  endpoints:
    web:
      exposure:
        include: chaosmonkey

确认一下Chaos Monkey的设置。

指令
curl http://localhost:8080/actuator/chaosmonkey
结果

答案

{
  "chaosMonkeyProperties": {
    "enabled": false
  },
  "assaultProperties": {
    "level": 5,
    "latencyRangeStart": 1000,
    "latencyRangeEnd": 3000,
    "latencyActive": true,
    "exceptionsActive": false,
    "killApplicationActive": false
  },
  "watcherProperties": {
    "controller": false,
    "restController": false,
    "service": true,
    "repository": false,
    "component": true
  }
}

启用混沌猴

如果”chaosMonkeyProperties.enabled”被设置为false,那么Chaos Monkey将被禁用。你可以通过actuator将其修改为true。

{
  "chaosMonkeyProperties": {
    "enabled": false
  },
  ...
}
命令 (Ming4 ling4)
curl -X POST -H "Content-type: application/json" http://localhost:8080/actuator/chaosmonkey/enable

请注意POST请求的类型
请注意Content-type设置为application/json

结果 –

Alternatively:
最终的成果 – de .

Chaos Monkey is enabled

修改其他项目(袭击)。

其他项目也可以通过执行器进行更改。以下是更改“Assault”的示例。

指令
curl -X POST -H "Content-type: application/json" http://localhost:8080/actuator/chaosmonkey/assaults -d '{
    "level": 5,
    "latencyRangeStart": 1000,
    "latencyRangeEnd": 3000,
    "latencyActive": true,
    "exceptionsActive": false,
    "killApplicationActive": false
  }'

结果

As an AI language model, I can provide multiple options for paraphrasing the word “结果” in Chinese:

– 成果
– 完成的效果 de
– 终局
– 输出
– 后果

Please let me know if you would like more options or if you have any specific requirements.

Assault config has changed

总结

上述是Chaos Monkey for Spring Boot的简易使用方法。

广告
将在 10 秒后关闭
bannerAds