Netflix / SimianArmy

Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot set up janitor monkey without simpleDB

jamesalford opened this issue · comments

I have adjusted the config in "client.properties" to have the setting as follows

# Uncomment to use a version of Monkey recorder that does not rely on AWS SDB
simianarmy.client.recorder.class=com.netflix.simianarmy.basic.LocalDbRecorder

I am getting the following error which looks like the code is still using AmazonSimpleDB and not local recorder:
2017-12-06 14:50:32.645 - ERROR BasicJanitorMonkey - [BasicJanitorMonkey.java:137] Got an exception while LAUNCH_CONFIG janitor was cleaning for region eu-west-1 com.amazonaws.services.simpledb.model.NoSuchDomainException: The specified domain does not exist. (Service: AmazonSimpleDB; Status Code: 400; Error Code: NoSuchDomain; Request ID: xxxxxxxxxxxxx) at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1386) at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:939) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:714) at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:465) at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:427) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:376) at com.amazonaws.services.simpledb.AmazonSimpleDBClient.doInvoke(AmazonSimpleDBClient.java:1058) at com.amazonaws.services.simpledb.AmazonSimpleDBClient.invoke(AmazonSimpleDBClient.java:1028) at com.amazonaws.services.simpledb.AmazonSimpleDBClient.select(AmazonSimpleDBClient.java:977) at com.netflix.simianarmy.aws.janitor.SimpleDBJanitorResourceTracker.querySimpleDBItems(SimpleDBJanitorResourceTracker.java:209) at com.netflix.simianarmy.aws.janitor.SimpleDBJanitorResourceTracker.getResources(SimpleDBJanitorResourceTracker.java:108) at com.netflix.simianarmy.janitor.AbstractJanitor.getTrackedMarkedResources(AbstractJanitor.java:290) at com.netflix.simianarmy.janitor.AbstractJanitor.cleanupResources(AbstractJanitor.java:303) at com.netflix.simianarmy.basic.janitor.BasicJanitorMonkey.doMonkeyBusiness(BasicJanitorMonkey.java:134) at com.netflix.simianarmy.Monkey.run(Monkey.java:134) at com.netflix.simianarmy.Monkey$1.run(Monkey.java:155) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

Make sure you set the other properties that are required, the code isn't very forgiving if any of these are missing:

# database settings
simianarmy.recorder.db.driver=org.postgresql.Driver
simianarmy.recorder.db.user=dbuser
simianarmy.recorder.db.pass=dbpassword
simianarmy.recorder.db.url=jdbc:postgresql://yourserver.us-west-2.rds.amazonaws.com:5432/simianarmy

# recorder class
simianarmy.client.recorder.class=com.netflix.simianarmy.aws.RDSRecorder

# db tables
simianarmy.janitor.resources.db.table=janitor
simianarmy.conformity.resources.db.table=conformity
simianarmy.recorder.db.table=event

@ebukoski
Thanks for the response.

Do you have any information on just using a local on server db file and not one in AWS?

I tried enabling this bit of config as well as the LocalDB class but that didnt do much.

# Following should be a writeable location, for monkey events when SimpleDB is not used
#simianarmy.recorder.localdb.file=/tmp/simianarmy_events

A local JDBC friendly database should work as long as all the simianarmy.recorder.db. settings are correct. It won't work to simply point it at a file though.