Coder Social home page Coder Social logo

intuit / foremast-brain Goto Github PK

View Code? Open in Web Editor NEW
17.0 10.0 23.0 2.39 MB

Foremast-brain is a component of Foremast project.

Home Page: https://github.com/intuit/foremast

License: Apache License 2.0

Dockerfile 0.05% Python 31.82% Shell 0.01% Jupyter Notebook 68.12%
machine-learning deep-learning statistics application-monitoring system-monitoring distributed-systems shared-nothing near-real-time

foremast-brain's Introduction

Foremast Brain

Build Status Slack Chat

Foremast-brain makes health judgments of Foremast, a service health detection and canary analysis system for Kubernetes. There are two main criteria that Foremast-brain evaluates:

  1. Check if the baseline and current health metric have the same distribution pattern.
  2. Calculate the historical model and detect current metric anomalies.

Foremast-brain will make a judgment, Healthy or Unhealthy, based on the evaluation result.

Please check out the architecture and design for more details.

How to use

Overwriting default algorithm and parameters

There are multiple sets of parameters that can be overwritten.

Machine learning algorithm related parameters -- used for post-deployment use cases

  • ML_ALGORITHM -- Algorithm which you want to run. Please refer to AI_MODEL for all the supported algorithms
  • MIN_HISTORICAL_DATA_POINT_TO_MEASURE -- Minimum historical data points size
  • ML_BOUND -- Measurement is upper bound, lower bound or upper and lower bound
  • ML_THRESHOLD -- Machine learning algorithm threshold

Performance, fault-tolerant related parameters

  • MAX_STUCK_IN_SECONDS -- Max process time until another foremast-brain process will take over and reprocess
  • MAX_CACHE_SIZE -- Max cached model size

Pairwise algorithm parameters -- used for pre-deployment use cases

  • ML_PAIRWISE_ALGORITHM -- There are multiple options: ALL, ANY, MANN_WHITE, WILCOXON, KRUSKAL, etc.
  • ML_PAIRWISE_THRESHOLD -- Pairwise algorithm threshold
  • MIN_MANN_WHITE_DATA_POINTS -- Minimum data points required by Mann-Whitney U algorithm
  • MIN_WILCOXON_DATA_POINTS -- Minimum data points required by Wilcoxon algorithm
  • MIN_KRUSKAL_DATA_POINTS -- Minimum data points required by Kruskal algorithm

How to make changes:

You can add algorithm names and different parameters. Please refer foremast-brain for details.

The following is an example of ES_ENDPOINT:

env:
- name: ES_ENDPOINT
  value: "http://elasticsearch-discovery.foremast.svc.cluster.local:9200"

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

License

This project is licensed under the Apache License - see the LICENSE file for details

foremast-brain's People

Contributors

bowbahdoe avatar dwding18 avatar formuzi avatar ghostwriternr avatar hipstersmoothie avatar kianjones4 avatar pzou1974 avatar rociomontes avatar shaoxt 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

foremast-brain's Issues

Maybe use Pipenv instead of a requirements.txt?

A requirements.txt cannot track versions of transitive dependencies without explicit freezing which makes for the possibility of dependency drift and unpredictible builds. It also leaves it up to each developer to use virtualenvs, which can make for a "it works on my machine" type scenario to occur with specific dependency versions.

The current officially recommended packaging tool from Python.org is Pipenv and it manages quite a few of these issues with lockfiles and automatic virtual environments. It can also generate a requirements.txt on the fly to fit in with existing build pipelines. I think it is something worth considering, although it isn't pressing until a transitive dependency breaks on an update and causes an issue.

This is a talk from the most recent pycon about the tool, which might answer more questions than I can off the top of my head.

Multi-Metric support

We'd like to support multiple health metrics for example error, latency, volume, cpu/memory/io/network related metric
The rough idea is

  1. two metrics: bivariable Normal distribution
    2.two or metrics: LSTM deep learning, etc.

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.