Automated Canary Service
Clone or download
skandragon Add more retries to more components (#423)
* feat(retry): add a retry util

* bug(retry): retry Atlas actions

* bug(retry): improve retry in ConfigBin

* bug(retry): retry some s3 calls that seem prone to failure
Latest commit 4375fe7 Nov 14, 2018
Permalink
Failed to load latest commit information.
.github chore(readme): Add readme, debug config and pull request template. (#284 Apr 7, 2018
gradle chore(builds): Introduces composite builds via gradle plugin (#407) Oct 25, 2018
halconfig chore(halyard): Cleanup halconfig file. (#266) Mar 29, 2018
kayenta-atlas Add more retries to more components (#423) Nov 14, 2018
kayenta-aws chore(dependencies): update spinnaker-dependencies (#391) Oct 9, 2018
kayenta-core Add more retries to more components (#423) Nov 14, 2018
kayenta-datadog feat(datadog): Add support for metric name typeahead. (#406) Oct 23, 2018
kayenta-gcs fix(buckets): Implicitly create non-existent buckets during config in… Jul 12, 2018
kayenta-google chore(metric-source): Refator to make metric sources fully modular (#350 Jul 18, 2018
kayenta-influxdb feat(stackdriver): Add dryRun support. (#404) Oct 23, 2018
kayenta-judge fix(judge): Return a reason when a metric is classified as Nodata (#392) Oct 15, 2018
kayenta-mannwhitney chore(mann-whitney): Clean-up Mann-Whitney test suite (#346) Jul 12, 2018
kayenta-newrelic-insights feat(newrelic): implemention for newrelic insights as a metrics store ( Nov 12, 2018
kayenta-objectstore-configbin Add more retries to more components (#423) Nov 14, 2018
kayenta-objectstore-memory chore(dependencies): move to using spinnaker-dependencies (#315) May 31, 2018
kayenta-orca chore(dependencies): update spinnaker-dependencies (#391) Oct 9, 2018
kayenta-prometheus feat(stackdriver): Add dryRun support. (#404) Oct 23, 2018
kayenta-s3 Add more retries to more components (#423) Nov 14, 2018
kayenta-signalfx fix(signalfx): Fixed bug where an orphaned 'and' is added to the Sign… Oct 26, 2018
kayenta-stackdriver feat(stackdriver): Add dryRun support. (#404) Oct 23, 2018
kayenta-web feat(newrelic): implemention for newrelic insights as a metrics store ( Nov 12, 2018
scratch feat(newrelic): implemention for newrelic insights as a metrics store ( Nov 12, 2018
.gitignore feat(signalfx): Add SignalFx integration (#385) Oct 17, 2018
.travis.yml chore(build): build on openjdk8 (#417) Nov 5, 2018
AUTHORS Project structure (#1) Jan 27, 2017
Dockerfile chore(docker): Add Dockerfiles. (#274) Apr 2, 2018
Dockerfile.slim Fix typo in Dockerfile.slim (#292) Apr 19, 2018
LICENSE.txt Project structure (#1) Jan 27, 2017
OSSMETADATA update oss lifecycle to active May 23, 2018
README.md chore(build): update travis link Jun 4, 2018
build.gradle chore(dependencies): Autobump spinnaker-dependencies (#422) Nov 12, 2018
gradle.properties chore(dependencies): update spinnaker-dependencies (#391) Oct 9, 2018
gradlew chore(build): update gradle and build scripts (#318) Jun 4, 2018
gradlew.bat chore(build): update gradle and build scripts (#318) Jun 4, 2018
json-formats.md feat(signalfx): Add SignalFx integration (#385) Oct 17, 2018
lombok.config First pass at: Feb 18, 2017
settings.gradle feat(newrelic): implemention for newrelic insights as a metrics store ( Nov 12, 2018

README.md

Kayenta

Build Status

Kayenta is a platform for Automated Canary Analysis (ACA). It is used by Spinnaker to enable automated canary deployments. Please see the comprehensive canary documentation for more details.

Canary Release

A canary release is a technique to reduce the risk from deploying a new version of software into production. A new version of software, referred to as the canary, is deployed to a small subset of users alongside the stable running version. Traffic is split between these two versions such that a portion of incoming requests are diverted to the canary. This approach can quickly uncover any problems with the new version without impacting the majority of users.

The quality of the canary version is assessed by comparing key metrics that describe the behavior of the old and new versions. If there is significant degradation in these metrics, the canary is aborted and all of the traffic is routed to the stable version in an effort to minimize the impact of unexpected behavior.

Canaries are usually run against deployments containing changes to code, but they can also be used for operational changes, including changes to configuration.

Debugging

To start the JVM in debug mode, set the Java system property DEBUG=true:

./gradlew -DDEBUG=true

The JVM will then listen for a debugger to be attached on port 8191. The JVM will not wait for the debugger to be attached before starting Kayenta; the relevant JVM arguments can be seen and modified as needed in build.gradle.