- Can you use Kayenta as a standalone service without the rest of Spinnaker?
- Where are the API docs?
- What metric sources does Kayenta support?
- How does Kayenta decide if a metric passes or fails?
- How do I report metrics in a way that is compatible with Kayenta and canary analysis
- My metric failed and I don't agree with the results, can I change how sensitive Kayenta is to change?
- Why doesn't my Google account have access to get bucket metadata?
- Halyard doesn't support feature X in Kayenta, how do I use it?
Yes, Kayenta has an API that can be used to perform canary analysis outside of Spinnaker. See Kayenta Standalone for more information.
When Kayenta is running, it serves its API docs at http://localhost:8090/swagger-ui/index.html.
You can control what endpoints show up on that page via the swagger config section of the main config.
This list may not encompass all current metric sources. See the services that implement MetricService for current info.
Metric decisions are handled by the judge that you use.
This judge takes in metrics from a control group and an experiment group. It uses your configuration settings to then transform the data and apply the Mann Whitney U statistical test to determine the results.
See Spinnaker Judge Docs for additional information.
See Instrumenting Application Metrics For Kayenta.
My metric failed and I don't agree with the results, can I change how sensitive Kayenta is to change?
Warning: This is a beta feature and may be removed.
Yes, there are a couple of settings available for you. See EffectSize for more information.
In order for Kayenta to read and write from a GCS bucket, it first needs to checks for the existence of the bucket. It does this by making a GET request to the storage/v1/b/{bucket}
API which returns some metadata about the bucket. In order to interact with this API you need a role that has the storage.buckets.get
permission. This permission used to be included in Google's Standard Roles, but has since been removed and put into Legacy Roles. In order to get that permission, you can create a custom role and apply storage.buckets.get
to it, add the roles/storage.legacyBucketReader
as explained in the Legacy Roles section, or use the roles/storage.admin
role.
This question comes up time to time, Kayenta is used by many companies as a standalone service outside of Spinnaker. So when one of these companies add a feature they don't always add the corresponding support required in Halyard (or Deck).
Luckily Halyard has a mechanism for supporting features that haven't been explicitly added to halyard.
Halyard has a concept of custom profiles.
The tl;dr of it is that you can create a file called ~/.hal/default/profiles/kayenta-local.yml
and add any unsupported config you want to it.
This config will be left merged into the configuration that halyard auto generates (kayenta.yml
)
So if I wanted to add a New Relic account to my config and Halyard didn't have explicit support for New Relic, I would add the following to ~/.hal/default/profiles/kayenta-local.yml
kayenta:
newrelic:
enabled: true
accounts:
- name: my-newrelic-account
apiKey: xxxx
applicationKey: xxxx
# defaultScopeKey: server_scope # Optional, if omitted every request must supply the _scope_key param in extended scope params
# defaultLocationKey: server_region # Optional, if omitted requests must supply the _location_key if it is needed.
supportedTypes:
- METRICS_STORE
endpoint.baseUrl: https://insights-api.newrelic.com
See the Halyard page on custom configuration for more information.