Git Product home page Git Product logo

chaos-genius / chaos_genius Goto Github PK

View Code? Open in Web Editor NEW
702.0 10.0 81.0 10.11 MB

ML powered analytics engine for outlier detection and root cause analysis.

Home Page: https://www.chaosgenius.io

License: MIT License

Python 79.45% HTML 8.06% Shell 3.93% CSS 0.08% JavaScript 3.32% Mako 0.05% Jupyter Notebook 4.30% Io 0.08% Dockerfile 0.05% Gherkin 0.67% Procfile 0.01%
anomaly-detection business-intelligence analytics machine-learning observability rootcauseanalysis monitoring-tool data-visualization dataquality monitoring

chaos_genius's Introduction

CG Header

WebsiteDocsBlogLinkedInCommunity Slack

All Contributors License Latest release Test status Give us a star! Last commit

ML powered analytics engine for outlier detection and root cause analysis


✨ What is Chaos Genius?

Chaos Genius is an open source ML powered analytics engine for outlier detection and root cause analysis. Chaos Genius can be used to monitor and analyse high dimensionality business, data and system metrics at scale.

Using Chaos Genius, users can segment large datasets by key performance metrics (e.g. Daily Active Users, Cloud Costs, Failure Rates) and important dimensions (e.g., countryID, DeviceID, ProductID, DayofWeek) across which they want to monitor and analyse the key metrics.

Use Chaos Genius if you want:

  • Multidimensional Drill Downs & Insights
  • Anomaly Detection
  • Smart Alerting
  • Seasonality Detection*
  • Automated Root Cause Analysis*
  • Forecasting*
  • What-If Analysis*

*in Short and Medium-term Roadmap

Demo

A small demo of Chaos Genius

⚙️ Quick Start

git clone https://github.com/chaos-genius/chaos_genius

cd chaos_genius

docker-compose up

Visit http://localhost:8080

Follow this Quick Start guide or read our Documentation for more details.

💫 Key Features

1. Automated DeepDrills

Generate multidimensional drilldowns to identify the key drivers of change in defined metrics (e.g. Sales) across a large number of high cardinality dimensions (e.g. CountryID, ProductID, BrandID, Device_type).

  • Techniques: Statistical Filtering, A* like path based search to deal with combinatorial explosion

DD

2. Anomaly Detection

Modular anomaly detection toolkit for monitoring high-dimensional time series with ability to select from different models. Tackle variations caused by seasonality, trends and holidays in the time series data.

  • Models: Prophet, EWMA, EWSTD, Neural Prophet, Greykite

Anomaly

3. Smart Alerts

Actionable alerts with self-learning thresholds. Configurations to setup alert frequency & reporting to combat alert fatigue.

  • Channels: Email, Slack

Alerting

:octocat: Community

For any help, discussions and suggestions feel free to reach out to the Chaos Genius team and the community here:

  • GitHub (report bugs, contribute, follow roadmap)

  • Slack (discuss with the community and Chaos Genius team)

  • Book Office Hours (set up time with the Chaos Genius team for any questions or help with setup)

  • Blog (follow us on latest trends on Data, Machine Learning, Open Source and more)

🚦 Roadmap

Our goal is to make Chaos Genius production ready for all organisations irrespective of their data infrasturcture, data sources and scale requirements. With that in mind we have created a roadmap for Chaos Genius. If you see something missing or wish to make suggestions, please drop us a line on our Community Slack or raise an issue.

🌱 Contributing

Want to contribute? Get started with:

  • Show us some love - Give us a 🌟!

  • Submit an issue.

  • Share a part of the documentation that you find difficult to follow.

  • Translate our Readme.

  • Create a pull request. Here's a list of issues to start with. Please review our contribution guidelines before opening a pull request. Thank you for contributing!

❤️ Contributors

Thanks goes to these wonderful people (emoji key):


pshrimal21

📆 📖 🤔 🎨

Harshit Surana

💻 🔣 🔬 🐛

Manas Solanki

💻 👀 🔧 🐛

Kartikay Bagla

💻 🚧 🔬

Varun P

💻 🚧 🔬

Keshav Pradeep

💻 🔣 📖

Daj Katal

🔌 📖

Amatullah Sethjiwala

💻 🔣 ⚠️

juzarbhori

💻 🎨

Amogh Dhar Diwan

💻 🔣 🐛

Samyak Sarnayak

💻 📦 🐛

Aayush Naik

💻 🐛 📦

Kshitij Agarwal

💻 🔧 🐛

Bhargav S. Kumar

💻 📦 🐛

moghankumar06

💻 🎨

Santhoshkumar1023

💻 🎨

Mansi-Chauhan27

🔌

davidhayter-karhoo

🐛

Marijn van Aerle

🐛

gxu-kangaroo

🐛

RamneekKaur983

💻

arvind-27

🔣

Josh Taylor

🐛

ChartistDev

💻 🎨 🐛 👀

Rajdeep Sharma

💻 👀

balakumar9493

💻 🎨

Ikko Ashimine

💻

rohit sohlot

💻

athul-osmo

🐛

Kumar Shivendu

🐛 🤔

Pratham Sharma

🐛

churchill1973

🤔

This project follows the all-contributors specification. Contributions of any kind welcome!

📜 License

Chaos Genius is licensed under the MIT license.

chaos_genius's People

Contributors

allcontributors[bot] avatar amatullah avatar balakumar9493 avatar bhargavsk1077 avatar chartistdev avatar dependabot[bot] avatar eltociear avatar fletchersan avatar hari696 avatar hariharank696 avatar juzarbhori avatar kartikay-bagla avatar keshprad avatar kshitij123456 avatar mahmoudelhalwany avatar manassolanki avatar mansi-chauhan27 avatar moghankumar06 avatar naikaayush avatar pshrimal21 avatar ramneekkaur983 avatar rjdp avatar rsohlot avatar sameer-codetrappers avatar samyak2 avatar santhoshkumar1023 avatar snyk-bot avatar suranah avatar varunp2k avatar

Stargazers

 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  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  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

chaos_genius's Issues

RCA analysis errors out which using agg="count"

Unable to use a count aggregation for the get_waterfall_and_impact_table functions

out = get_waterfall_and_impact_table(
    ecom_df.query('20110820 <= date < 20110827'),
    ecom_df.query('20110827 <= date < 20110903'),
    ['Country', 'PeriodOfDay', 'DayOfWeek'],
    'num_purchases',
    agg = 'count',
    n = [1, 2, 3],
    K=5,
    plot_in_mpl=True
)

Two exceptions are raised:
KeyError:
KeyError

ValueError:
ValueError
^ I think the problem is that count is used as one of the column names in compare_subgroups

Anomaly detection baseline implementation

This includes:

  • Anomaly UI
  • Anomaly drill downs
  • Anomaly computation - non-distributed
  • Anomaly severity scoring - baseline
  • DB storage of anomalies
  • API to serve anomalies from DB
  • Dataset driven anomaly testing

Dimensional integration in UI

Need to complete the following:

  • Multidimensional RCA
  • Single dimensional RCA
  • Overlap focussed table for multidimensional RCA
  • Overall group metrics

Zero division error while calculating the best subgroup combo

While calculating the best subgroup combination, there is a zero division error because len(indices) == 0 on line 440

Set indices is defined here, on line 420. I printed both indices & curr_filter_string. These are the values just before the error:

indices = set()
curr_filter_string = "1027.304 < `pressure` <= 1030.316 and 8.323 < `visibility` <= 9.142 and 0.814 < `humidity` <= 0.869"

The query with curr_filter_string returns 0 rows. A case is needed to handle this.

Here's the full error message:
Err msg

Scalability Issues for Anomaly Detection

The current implementation of Anomaly Detection works well for a demo, but needs to address these issues for scalability.

  • Training on the last 89 data points and predicting an anomaly for the next immediate data point.
  • Filtering various sub-dimensional groups.
  • For drill-downs in anomaly, we need to add sorting for various sub-dimensional series.
  • Testing with different frequencies of data (like an hourly series)
  • Testing and implementing at least another model (apart from Prophet)

Distributed execution framework & benchmarking

Some things to understand include:

  • #71
  • #72
  • Configurable execution modes that be picked via config at every level of execution pipeline
  • Task expiry

Benchmarking test:

  1. Load 10, 1000, 100000 randomly generated series of length 100 and 500
  2. Fit prediction models on them. There will be multiple prediction libraries including prophet, neural-prophet, statsmodels.
  3. Return a predicted value, store in Redis key

Metrics & measures to evaluate:

  1. Performance in terms of series fitted & predicted per min for single node setup
  2. Performance in terms of series fitted & predicted per min for multiple (2, 5) node setup
  3. Effect of performance & memory footprint when passing multiple ML library context
  4. Number of failed/ expired jobs in each run
  5. Median, 90th, 99th percentile task execution time

Multidimensional waterfall sometimes displays K+1 max subgroups

For the get_waterfall_and_impact_table, I've set K=3 max sub-groups; however, there are 4 subgroups displayed + an others sub-group if needed.

multi dim waterfall

In the single_dim function, this doesn't happen. Setting K=3 max subgroups, gives the intended 3 sub-groups + an others sub-group if needed. Here's the exact same situation as above, except with a single dimension as 'main_cat'

single dim waterfall

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.