allegro / marathon-appcop Goto Github PK
View Code? Open in Web Editor NEWMarathon applications law enforcement
License: Apache License 2.0
Marathon applications law enforcement
License: Apache License 2.0
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.
AppCop
should provide metric of each application status change (TASK_RUNNING, TASK_STAGING, TASK_KILLED) in the form of graphite metrics, based on events.
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 }
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.
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.
AppCop
should provide .leader
metric which is indicating that it is leading (subscribed to event-stream and polling events).
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.
Currently we use our manual scripts and Docker release project.
We should consider moving this to Travis.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.