github.com/mlafeldt/chaosmonkey


Properties

Last built 10 months ago using go version go1.6.2 linux/amd64 and 138 seconds of time

Downloads
Filename
File Size
 
chaosmonkey_master_darwin-386.zip
2.8MiB
chaosmonkey_master_darwin-amd64.zip
3.1MiB
chaosmonkey_master_linux-386.zip
2.8MiB
chaosmonkey_master_linux-amd64.zip
3.0MiB
chaosmonkey_master_linux-arm.zip
2.7MiB
chaosmonkey_master_windows-386.zip
2.8MiB
chaosmonkey_master_windows-amd64.zip
3.0MiB
Project-Readme for this version

chaosmonkey

Build Status GoDoc

Go client to the Chaos Monkey REST API that can be used to trigger and retrieve chaos events.

This project was started for the purpose of controlled failure injection during GameDay events.

Prerequisites

First of all, you need a running Simian Army that exposes its REST API via HTTP.

In order to trigger chaos events via the API, Chaos Monkey must be unleashed and on-demand termination must be enabled via these configuration properties:

simianarmy.chaos.leashed = false
simianarmy.chaos.terminateOndemand.enabled = true

CLI

Installation

If you’re on Mac OS X, the easiest way to get the chaosmonkey command-line tool is via Homebrew:

brew tap mlafeldt/formulas
brew install chaosmonkey

You can also build the tool from source, provided you have Go installed:

go get -u github.com/mlafeldt/chaosmonkey

Usage

Use the tool to:

  • Trigger a new chaos event:

    chaosmonkey -endpoint http://example.com:8080 -group ExampleAutoScalingGroup -strategy ShutdownInstance
    
  • Get a list of past chaos events:

    chaosmonkey -endpoint http://example.com:8080
    
  • List available chaos strategies, which you may pass to -strategy:

    chaosmonkey -list-strategies
    
  • List all auto scaling groups for a given AWS account, which you may then pass to -group:

    export AWS_ACCESS_KEY_ID=...
    export AWS_SECRET_ACCESS_KEY=...
    export AWS_REGION=...
    chaosmonkey -list-groups
    
  • Wipe state of Chaos Monkey by deleting its SimpleDB domain (named SIMIAN_ARMY by default):

    export AWS_ACCESS_KEY_ID=...
    export AWS_SECRET_ACCESS_KEY=...
    export AWS_REGION=...
    chaosmonkey -wipe-state SIMIAN_ARMY
    

    Warning: Requires a restart of Chaos Monkey.

As always, invoke chaosmonkey -h for a list of all available options.

In addition to command-line options, the tool also understands these environment variables:

  • CHAOSMONKEY_ENDPOINT - the same as -endpoint
  • CHAOSMONKEY_USERNAME - the same as -username
  • CHAOSMONKEY_PASSWORD - the same as -password

Use with Docker

This Docker image allows you to deploy Chaos Monkey with a single command:

docker run -it --rm -p 8080:8080 \
    -e SIMIANARMY_CLIENT_AWS_ACCOUNTKEY=$AWS_ACCESS_KEY_ID \
    -e SIMIANARMY_CLIENT_AWS_SECRETKEY=$AWS_SECRET_ACCESS_KEY \
    -e SIMIANARMY_CLIENT_AWS_REGION=$AWS_REGION \
	-e SIMIANARMY_CHAOS_LEASHED=false \
	-e SIMIANARMY_CHAOS_TERMINATEONDEMAND_ENABLED=true \
    mlafeldt/simianarmy

Afterwards, you can use chaosmonkey to talk to the dockerized Chaos Monkey:

chaosmonkey -endpoint http://$DOCKER_HOST_IP:8080 ...

Go library

In addition to the CLI tool, the project also provides the chaosmonkey Go library for use in other Go projects. To install it from source:

go get -u github.com/mlafeldt/chaosmonkey/lib

For usage and examples, see the Godoc documentation.

Further resources

Author

This project is being developed by Mathias Lafeldt.