Git Product home page Git Product logo

deck-kayenta's Introduction

Spinnaker Canary UI

Branch Build

PR Process

In order to commit to this repo, please fork the repository and submit Pull Requests from a fork rather than a branch. It requires additional permissions to push branches.

Development

Make sure that node and yarn are installed on your machine. The minimum versions for each are listed in package.json.

To develop this module, run it as a Deck dependency using either yalc (recommended) or npm link.

yarn

In the root of this repository and the main Deck repository, run

yarn

yalc

Globally install yalc.

From the root of this repository, run

yalc publish

From the root of the main Deck repository, run

yalc add @spinnaker/kayenta
yarn start

As you make additional changes in this repository, run

yalc publish --push

npm link

From the root of this repository, run

npm link

From the root of the main Deck repository, run

npm link @spinnaker/kayenta

You should only have to run these commands once.

Next, run yarn build --watch at the root of this repository. In a separate terminal, run yarn start at the root of the main Deck repository.

Publishing @spinnaker/kayenta

This module is published as an NPM package.

  • Create a pull request that increments package.json's patch version - e.g., to 0.0.57.
  • Once the pull request has been merged, @spinnaker/kayenta will be automatically published to NPM via a GitHub Action.

Once @spinnaker/kayenta has been published, the Deck dependency on deck-kayenta will be automatically updated by Dependabot. Keep an eye out for a PR against Deck from Dependabot.

Testing

To run deck-kayenta's tests, run yarn test.

To debug deck-kayenta's tests using https://jestjs.io/, run yarn test:debug. Add a debugger statement to the test you want to debug.

deck-kayenta's People

Contributors

anotherchrisberry avatar archana-s avatar ariefrahmansyah avatar caseyhebebrand avatar christopherthielen avatar danielpeach avatar dependabot[bot] avatar dotdotdotpaul avatar emjburns avatar erikmunson avatar fieldju avatar gcomstock avatar haleyw avatar ivanphdz avatar kathrynlewis avatar maggieneterval avatar ovidiupopa07 avatar ranihorev avatar shadystego avatar skandragon avatar stevenlandrydd avatar svachalek avatar vigneshm avatar ybai2-sc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

deck-kayenta's Issues

Disallow duplicate metric names

It is possible to add two metrics with the same name, which causes some confusion in the report. While Kayenta should also reject this, the UI should give a more UI-ish error and refuse to save.

Add group weighting information

@PoorImpulseCtrl Any thoughts on how this would look? I'm thinking this should probably go on the group tabs? Or all together in one view?

In the internal UI we're using percentages which are kind of intuitive but also a pain in that you have to insist they add up to 100 and increasing the weighting of one thing means pulling weight out of something, or everything, else. It would probably be better just to have a scale, low-high, or 1-10 or something like that.

Replacement for "filters" UI

Individual settings for directionality etc, with a category selector that automatically populates the right settings for common metric types like error, resource free, etc.

Config Diff

Show the unsaved changes in the configuration -- possibly as a JSON diff, but maybe this is also possible to do via highlighting fields?

Configure CI

Ideally a new release would also trigger a package push to NPM.

Change group assignment for a metric

In our current UI, we're using select2 in tagging mode to do this. I don't really think this is very intuitive though. Perhaps have checkboxes next to the metrics with "move" and "delete" buttons at the bottom - I can ask Jeremy.

(Metrics are allowed in multiple groups internally, and via the config format, but I'm not sure how useful this use case really is. It certainly adds confusion in scoring, and it's a bit wacky in the UI. My inclination would be to handle it in the UI, i.e. do something reasonable and don't blow up, but not to support it as in actually providing the option to multiple-group a metric.)

Share config button

Allows user to select other applications; associations with the selected applications are added to the config

Report UI feedback

  • When I click on various metrics to see the graph, the size of the graph area seems to change, causing some UI turmoil.
  • The canary config name is in the upper left, with the score. I'd prefer to see the config name somewhere else, and the score as a larger item. The first thing people look at is the score, so having it secondary after a randomly sized config name seems distracting.
  • "floor" the score to a single 0-100 integer range.

Strange editing group name behavior

If I am editing a group, and I click on a group name, and click on the rename icon, I can change the group name. However, if I don't do anything (leaving the text field open and alone) and select a DIFFERENT config to edit from the left-hand list, I get into a very strange state.

screen shot 2018-04-16 at 2 06 36 pm

After clicking on a different config:

screen shot 2018-04-16 at 2 07 19 pm

Hide references to Kayenta accounts

  • The metric source / report source links will still include the query parameter even if the configured storageAccountName is null, which is wrong.
  • Add a toggle to hide metric + storage accounts fields in the stage config.

Date picker for retrospective canary analysis

Inputing dates for a retrospective analysis is a pretty bad experience. Took me phoning an expert to figure out how to get this to work (yes, I could have read the java docs for iso instant better. But, I didn't ๐Ÿคทโ€โ™€๏ธ ). It would be ideal if there was a date picker, and even more ideal if there were some great buttons like "now" and "3 hours ago". I dislike the experience of having to put in a timestamp from the UI.

screen shot 2018-07-13 at 2 15 44 pm

move to group button doesn't work

No target groups are listed. Not sure if it works in some cases but I haven't found a case where it does.

Also I've had it suggested that the "Move to:" label is more explicit e.g. "Move to group:"

(might not matter if there were actually groups listed)

group weights saved with "0"

I think this issue came up a while back and I can't remember where we ended the discussion but currently the default behavior for new group weights isn't very intuitive. It creates them with weight "0" and allows them to be saved that way. There's a warning about adding to 100% but no warning about 0% weights, and the server happily allows saving whatever.

The current server behavior is to auto-weight any groups that don't have explicit weights. I think we need either the UI to support letting a weight float (and making that the default for new groups), or the UI should not allow saving unweighted groups or groups not adding to 100, and the server should validate for same.

Rename group

Have a pencil icon next to the group name in the active tab that allows editing when clicked

Add links back to data explorer (for Atlas)

For deep diving, we need a way to generate links back into Atlas (and probably other data explores) from the UI.

The legacy system at Netflix did this, and it's been noticed that we don't have it in Kayenta yet.

The links from Canary Reports view to config and report sometimes don't work

When viewing this set of reports:
image

none of the MySamplePrometheusCanaryConfig config or report links work. All of the DemoStackdriverCanaryConfig ones work.

This is the console error thrown:

vendor.js:53416 Transition Rejection($id: 11 type: 6, message: The transition errored, detail: Error: Param values not valid for state 'home.applications.application.canary.report.reportDetail'. Invalid params: [ configId ])
$defaultErrorHandler @ vendor.js:53416
(anonymous) @ vendor.js:53737
processQueue @ vendor.js:111006
(anonymous) @ vendor.js:111050
$digest @ vendor.js:112145
$apply @ vendor.js:112443
(anonymous) @ vendor.js:112744
completeOutstandingRequest @ vendor.js:100448
(anonymous) @ vendor.js:100728
setTimeout (async)
Browser.self.defer @ vendor.js:100726
scheduleApplyAsync @ vendor.js:112743
$applyAsync @ vendor.js:112475
wrappedState.go @ spinnaker.js:54758
handleClick @ index.js:850
callCallback @ vendor.js:174300
invokeGuardedCallbackDev @ vendor.js:174339
invokeGuardedCallback @ vendor.js:174196
invokeGuardedCallbackAndCatchFirstError @ vendor.js:174210
executeDispatch @ vendor.js:174594
executeDispatchesInOrder @ vendor.js:174616
executeDispatchesAndRelease @ vendor.js:174714
executeDispatchesAndReleaseTopLevel @ vendor.js:174725
forEachAccumulated @ vendor.js:174693
processEventQueue @ vendor.js:174870
runEventQueueInBatch @ vendor.js:177365
handleTopLevel @ vendor.js:177374
handleTopLevelImpl @ vendor.js:177105
batchedUpdates @ vendor.js:184840
batchedUpdates @ vendor.js:176088
dispatchEvent @ vendor.js:177179
vendor.js:53418 Error: Param values not valid for state 'home.applications.application.canary.report.reportDetail'. Invalid params: [ configId ]
    at invalidTransitionHook (vendor.js:84337)
    at invokeCallback (vendor.js:22347)
    at TransitionHook.invokeHook (vendor.js:22359)
    at Function.TransitionHook.invokeHooks (vendor.js:22318)
    at Transition.run (vendor.js:27008)
    at StateService.transitionTo (vendor.js:53741)
    at StateService.go (vendor.js:53640)
    at spinnaker.js:54758
    at Scope.$eval (vendor.js:112335)
    at $applyAsyncExpression (vendor.js:112478)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.