Git Product home page Git Product logo

marathon-appcop's People

Contributors

adamdubiel avatar ojagodzinski avatar tomez avatar

Stargazers

 avatar  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

Forkers

tomez ykankaya

marathon-appcop's Issues

Immunity support

AppCop should honor immunity of chosen applications, by excusing app from most Marathon criminal laws.

Immunity should be set for each app, as a Marathon label APP_IMMUNITY=true. When the label is set to true, then AppCop will not count score for this application.

Application restarts metrics

AppCop should provide metric of each application status change (TASK_RUNNING, TASK_STAGING, TASK_KILLED) in the form of graphite metrics, based on events.

Configuration intervals more human readable.

Right now intervals are provided as integer nanoseconds. We need to allow user to specify it as formated string in order to make configuration more readable and less error prone.

Instead of:
"Score": { "EvaluateInterval": 1800000000000 }

Should be:
"Score": { "EvaluateInterval": 30m }

Empty group collection, recursive.

Right now AppCop is collecting groups only from root directory, if empty group is nested it is not collected.

We need to implement recursive group traversal and remove last empty group (leaf node) to address that.

reverse implementtion of APP_IMMUNITY

I was looking at the possibility to have the reverse functionality of APP_IMMUNITY. Say app cop will only check apps that have a certain flag set. Instead of setting APP_IMMUNITY to a lot of apps, only certain apps will be monitored for the frequency of the events.

Use case:
If some of the apps in the cluster are very critical and need to be up and running at any cost, having appcop scale down these containers will serious availability issues to the entire set of services.

Leader metric

AppCop should provide .leader metric which is indicating that it is leading (subscribed to event-stream and polling events).

notification support

Each time AppCop is making action it should push notification message, stating what app was action commenced on.

We should use JSON format and send HTTP POST to specified endpoint where some message broker should intercept it (e.g Hermes).

Example message:

{ 
  "timestamp": "1970-01-01T00:00:00+00:00",
  "appID": "com.example.testApp",
  "Action": "scaleDown"
}

Notifications should be disabled by default via config.

Releases on Travis

Currently we use our manual scripts and Docker release project.
We should consider moving this to Travis.

appcop is moving from ogier/pflag

At this point AppCop is using ogier/pflag for parsing command line flags and it is considered abandoned. We should consider using other solution.

Cobra / Viper has big community and is considered easy to use.

Dry Run mode

We could implement dry-run flag, when enabled AppCop will not make any changes, only do a dry run of the scaling and suspend operations.

Dry run should continue to log and send metrics.

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.