kayentactl

command module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 2, 2021 License: Apache-2.0 Imports: 1 Imported by: 0

README

kayentactl

A CLI tool for running canary analysis using Kayenta.

Disclaimer

kayentactl is under active development and not recommended for production use. If you encounter any bugs, feel free to file an issue or pull request!

Prerequisites

In order to use kayentactl you must have an instance of Kayenta configured and running.

Installation

Builds for Linux, OSX and Windows are available on the releases page.

Note: The Windows builds are untested and may contain bugs.

Canary config

kayentactl requires a user-defined canary config to run. This config is what Kayenta uses to determine which metrics to consider when evaluating whether a canary is performing properly. When deciding which metrics to measure, you can reference this best practices guide.

By default, kayentactl reads the canary config from canary.json. Both JSON and YAML formats are supported so if you're more comfortable with YAML, feel free to use it! Below is an example canary config that uses Datadog to measure IO, CPU, and Memory utilization.

Example Canary config

classifier:
  groupWeights:
    MEM: 40
    CPU: 35
    IO: 25
configVersion: "1"
judge:
  name: NetflixACAJudge-v1.0
metrics:
  - groups:
      - MEM
    name: mem-rss
    query:
      metricName: max:docker.mem.rss
      serviceType: datadog
      type: datadog
    scopeName: default
  - groups:
      - MEM
    name: mem-in-use
    query:
      metricName: max:docker.mem.in_use
      serviceType: datadog
      type: datadog
    scopeName: default
  - groups:
      - CPU
    name: cpu-total
    query:
      metricName: avg:docker.cpu.usage
      serviceType: datadog
      type: datadog
    scopeName: default
  - groups:
      - CPU
    name: cpu-sys
    query:
      metricName: avg:docker.cpu.system
      serviceType: datadog
      type: datadog
    scopeName: default
  - groups:
      - CPU
    name: cpu-user
    query:
      metricName: avg:docker.cpu.user
      serviceType: datadog
      type: datadog
    scopeName: default
  - groups:
      - CPU
    name: cpu-threads
    query:
      metricName: max:docker.thread.count
      serviceType: datadog
      type: datadog
    scopeName: default
  - groups:
      - IO
    name: io-bytes-rcvd
    query:
      metricName: avg:docker.net.bytes_rcvd
      serviceType: datadog
      type: datadog
    scopeName: default
  - groups:
      - IO
    name: io-bytes-sent
    query:
      metricName: avg:docker.net.bytes_rcvd
      serviceType: datadog
      type: datadog
    scopeName: default
name: democonfig

Perform a retrospective analysis over a specific time period (typically in the past)

Note: the scope below represents a namespace and deployment name, separated by a /.

kayentactl analysis start --scope=production/webserver \
  --start-time-iso 2021-02-24T15:00:00Z \
  --end-time-iso 2021-02-25T15:00:00Z \
  --canary-config config.yml \
  --thresholds marginal=50,pass=90
Simple usage with default canary configuration
kayentactl analysis start --scope=kube_deployment:myappname --canary-config config.yaml
Adding a duration allows you to determine the duration of the experiment
kayentactl analysis start --scope=kube_deployment:spud-stories --lifetime-duration=2m --canary-config config.yaml
Accessing an analysis result

If you've started an analysis but opted not to wait for it's completion (using the --no-wait flag), you can use the analysis ID to get the analysis at your convenience.

kayentactl analysis get {ANALYSIS-ID} # add -o json for JSON output instead of the pretty report
Help
Usage:
  kayentactl [command]

Available Commands:
  analysis    commands for interacting with canary analysis like starting or retrieving an analysis
  help        Help about any command

Flags:
  -h, --help                 help for kayentactl
  -u, --kayenta-url string   kayenta url (default "http://localhost:8090")
      --no-color             disable output colors
  -v, --verbosity string     log level (debug, info, warn, error, fatal, panic) (default "info")

Use "kayentactl [command] --help" for more information about a command.

TODO

  • Add documentation about how to install/configure Kayenta OR how to access hosted Kayenta.
  • Add example/default canary config templates.
  • Jenkins Plugin
  • Github Action
  • Think of more awesome things!

Documentation

Overview

Copyright © 2020 NAME HERE <EMAIL ADDRESS>

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Directories

Path Synopsis
cmd
internal
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL