-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ba28e1e
commit 87f223c
Showing
39 changed files
with
144 additions
and
106 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,78 +1,74 @@ | ||
<p align="center"> | ||
<a href="https://cueobserve.cuebook.ai" target="_blank"> | ||
<img alt="CueObserve Logo" width="300" src="docs/images/cueObserve.png"> | ||
</a> | ||
</p> | ||
<p align="center"> | ||
<a href="https://codeclimate.com/github/cuebook/CueObserve/maintainability"><img src="https://api.codeclimate.com/v1/badges/a70e071b59d5dbc38846/maintainability" /></a> | ||
<a href="https://codeclimate.com/github/cuebook/CueObserve/test_coverage"><img src="https://api.codeclimate.com/v1/badges/a70e071b59d5dbc38846/test_coverage" /></a> | ||
<a href="https://github.com/cuebook/cueobserve/actions/workflows/pr_checks.yml"> | ||
<img src="https://github.com/cuebook/cueobserve/actions/workflows/pr_checks.yml/badge.svg" alt="Test Coverage"> | ||
</a> | ||
<a href="https://github.com/cuebook/cueobserve/blob/main/LICENSE.md"> | ||
<img src="https://img.shields.io/github/license/cuebook/cueobserve" alt="License"> | ||
</a> | ||
</p> | ||
<br> | ||
# Overview | ||
|
||
[![CueObserve Logo](.gitbook/assets/cueObserve.png)](https://cueobserve.cuebook.ai) | ||
|
||
[![](https://api.codeclimate.com/v1/badges/a70e071b59d5dbc38846/maintainability)](https://codeclimate.com/github/cuebook/CueObserve/maintainability) [![](https://api.codeclimate.com/v1/badges/a70e071b59d5dbc38846/test\_coverage)](https://codeclimate.com/github/cuebook/CueObserve/test\_coverage) [![Test Coverage](https://github.com/cuebook/cueobserve/actions/workflows/pr\_checks.yml/badge.svg) ](https://github.com/cuebook/cueobserve/actions/workflows/pr\_checks.yml)[![License](https://img.shields.io/github/license/cuebook/cueobserve)](https://github.com/cuebook/cueobserve/blob/main/LICENSE.md) | ||
|
||
\ | ||
|
||
|
||
CueObserve helps you monitor your metrics. Know when, where, and why a metric isn't right. | ||
|
||
CueObserve uses **timeseries Anomaly detection** to find **where** and **when** a metric isn't right. It then offers **one-click Root Cause analysis** so that you know **why** a metric isn't right. | ||
|
||
CueObserve works with data in your SQL data warehouses and databases. It currently supports Snowflake, BigQuery, Redshift, Druid, Postgres, MySQL, SQL Server and ClickHouse. | ||
|
||
![CueObserve Anomaly](<.gitbook/assets/Overview\_Anomaly (1).png>) ![CueObserve RCA](<.gitbook/assets/Overview\_RCA (1).png>) | ||
|
||
![CueObserve Anomaly](docs/images/Overview_Anomaly.png) | ||
![CueObserve RCA](docs/images/Overview_RCA.png) | ||
### Getting Started | ||
|
||
|
||
## Getting Started | ||
Install via Docker | ||
|
||
``` | ||
wget https://raw.githubusercontent.com/cuebook/CueObserve/latest_release/docker-compose.yml -q -O cueobserve-docker-compose.yml | ||
docker-compose -f cueobserve-docker-compose.yml up -d | ||
``` | ||
Now visit [http://localhost:3000](http://localhost:3000) in your browser. | ||
|
||
## Demo Video | ||
<a href="http://www.youtube.com/watch?feature=player_embedded&v=VZvgNa65GQU" target="_blank"> | ||
<img src="http://img.youtube.com/vi/VZvgNa65GQU/hqdefault.jpg" alt="Watch CueObserve video"/> | ||
</a> | ||
Now visit [http://localhost:3000](http://localhost:3000) in your browser. | ||
|
||
### Demo Video | ||
|
||
[![Watch CueObserve video](http://img.youtube.com/vi/VZvgNa65GQU/hqdefault.jpg)](http://www.youtube.com/watch?feature=player\_embedded\&v=VZvgNa65GQU) | ||
|
||
### How it works | ||
|
||
## How it works | ||
You write a SQL GROUP BY query, map its columns as dimensions and measures, and save it as a virtual Dataset. | ||
|
||
![Dataset SQL](docs/images/Dataset_SQL_cropped.png) | ||
![Dataset SQL](<.gitbook/assets/Dataset\_SQL\_cropped (1).png>) | ||
|
||
![Dataset Schema Map](docs/images/Dataset_Mapping_cropped.png) | ||
![Dataset Schema Map](<.gitbook/assets/Dataset\_Mapping\_cropped (1).png>) | ||
|
||
You then define one or more anomaly detection jobs on the dataset. | ||
|
||
![Anomaly Definition](docs/images/AnomalyDefinitions.png) | ||
![Anomaly Definition](<.gitbook/assets/AnomalyDefinitions (1).png>) | ||
|
||
When an anomaly detection job runs, CueObserve does the following: | ||
|
||
1. Executes the SQL GROUP BY query on your data warehouse and stores the result as a Pandas dataframe. | ||
2. Generates one or more timeseries from the dataframe, as defined in your anomaly detection job. | ||
3. Generates a forecast for each timeseries using [Prophet](https://github.com/facebook/prophet). | ||
4. Creates a visual card for each timeseries. Marks the card as an anomaly if the last data point is anomalous. | ||
|
||
## Features | ||
- Automated SQL to timeseries transformation. | ||
- Run anomaly detection on the aggregate metric or split it by any dimension. Limit the split to significant dimension values. | ||
- Use Prophet or simple mathematical rules to detect anomalies. | ||
- In-built Scheduler. CueObserve uses Celery as the executor and celery-beat as the scheduler. | ||
- Slack alerts when anomalies are detected. | ||
- Monitoring. Slack alert when a job fails. CueObserve maintains detailed logs. | ||
### Features | ||
|
||
* Automated SQL to timeseries transformation. | ||
* Run anomaly detection on the aggregate metric or split it by any dimension. Limit the split to significant dimension values. | ||
* Use Prophet or simple mathematical rules to detect anomalies. | ||
* In-built Scheduler. CueObserve uses Celery as the executor and celery-beat as the scheduler. | ||
* Slack alerts when anomalies are detected. | ||
* Monitoring. Slack alert when a job fails. CueObserve maintains detailed logs. | ||
|
||
### Limitations | ||
- Currently supports Prophet for timeseries forecasting. | ||
- Not being built for real-time anomaly detection on streaming data. | ||
#### Limitations | ||
|
||
## Support | ||
For general help using CueObserve, read the [documentation](https://cueobserve.cuebook.ai/), or go to [Github Discussions](https://github.com/cuebook/cueobserve/discussions). | ||
* Currently supports Prophet for timeseries forecasting. | ||
* Not being built for real-time anomaly detection on streaming data. | ||
|
||
### Support | ||
|
||
For general help using CueObserve, read the [documentation](https://cueobserve.cuebook.ai), or go to [Github Discussions](https://github.com/cuebook/cueobserve/discussions). | ||
|
||
To report a bug or request a feature, open an [issue](https://github.com/cuebook/cueobserve/issues). | ||
|
||
## Contributing | ||
We'd love contributions to CueObserve. Before you contribute, please first discuss the change you wish to make via an [issue](https://github.com/cuebook/cueobserve/issues) or a [discussion](https://github.com/cuebook/cueobserve/discussions). Contributors are expected to adhere to our [code of conduct](https://github.com/cuebook/cueobserve/blob/main/CODE_OF_CONDUCT.md). | ||
### Contributing | ||
|
||
We'd love contributions to CueObserve. Before you contribute, please first discuss the change you wish to make via an [issue](https://github.com/cuebook/cueobserve/issues) or a [discussion](https://github.com/cuebook/cueobserve/discussions). Contributors are expected to adhere to our [code of conduct](https://github.com/cuebook/cueobserve/blob/main/CODE\_OF\_CONDUCT.md). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,7 +12,7 @@ description: >- | |
CueObserve has multi-service architecture, with services as mentioned: | ||
|
||
1. `Frontend` single-page application written on [ReactJS](https://reactjs.org). It's code can be found in `ui` folder and runs on [http://localhost:3000/](https://reactjs.org). | ||
2. `API` is based on [Django](https://www.djangoproject.com) (python framework) & uses REST API. It is the main service, responsible for connections, authentication and anomaly. | ||
2. `API` is based on [Django](https://www.djangoproject.com) (python framework) & uses REST API. It is the main service, responsible for connections, authentication and anomaly.  | ||
3. `Alerts` micro-service, currently responsible for sending alerting/notifications only to slack. It's code is in `alerts-api` folder and runs on [localhost:8100](http://localhost:8100). | ||
4. [Celery](https://docs.celeryproject.org) to execute the tasks asynchronously. Tasks like anomaly detection are handled by Celery. | ||
5. [Celery beat](https://docs.celeryproject.org/en/stable/userguide/periodic-tasks.html) scheduler to trigger the scheduled tasks. | ||
|
@@ -25,14 +25,14 @@ Get the code by cloning our open source [github repo](https://github.com/cuebook | |
``` | ||
git clone https://github.com/cuebook/CueObserve.git | ||
cd CueObserve | ||
docker-compose -f docker-compose-dev.yml --env-file .env up --build | ||
docker-compose -f docker-compose-dev.yml --env-file .env.dev up --build | ||
``` | ||
|
||
`docker-compose`'s build command will pull several components and install them on local, so this will take a few minutes to complete. | ||
|
||
### Backend Development | ||
|
||
The code for the backend is in `/api` directory. As mentioned in the overview it is based on Django framework. | ||
The code for the backend is in `/api` directory. As mentioned in the overview it is based on Django framework.  | ||
|
||
#### Configure environment variables | ||
|
||
|
@@ -57,17 +57,17 @@ export DJANGO_SUPERUSER_EMAIL="[email protected]" | |
export `=False | ||
``` | ||
|
||
Change the values based on your running PostgreSQL instance. If you do not wish to use PostgreSQL as your database for development, comment lines 4-8 and CueObserve will create a SQLite database file at the location `api/db/db.sqlite3`. | ||
Change the values based on your running PostgreSQL instance. If you do not wish to use PostgreSQL as your database for development, comment lines 4-8 and CueObserve will create a SQLite database file at the location `api/db/db.sqlite3`.  | ||
|
||
The backend server can be accessed on [http://localhost:8000/](https://www.djangoproject.com). | ||
The backend server can be accessed on [http://localhost:8000/](https://www.djangoproject.com).  | ||
|
||
#### Celery Development | ||
#### Celery Development  | ||
|
||
CueObserve uses Celery for executing asynchronous tasks like anomaly detection. There are three components needed to run an asynchronous task, i.e. Redis, Celery and Celery Beat. Redis is used as the message queue by Celery, so before starting Celery services, Redis server should be running. Celery Beat is used as the scheduler and is responsible to trigger the scheduled tasks. Celery workers are used to execute the tasks. | ||
CueObserve uses Celery for executing asynchronous tasks like anomaly detection. There are three components needed to run an asynchronous task, i.e. Redis, Celery and Celery Beat. Redis is used as the message queue by Celery, so before starting Celery services, Redis server should be running. Celery Beat is used as the scheduler and is responsible to trigger the scheduled tasks. Celery workers are used to execute the tasks.  | ||
|
||
### Testing | ||
|
||
At the moment, we have test cases only for the backend service, test cases for UI are in our roadmap. | ||
At the moment, we have test cases only for the backend service, test cases for UI are in our roadmap.  | ||
|
||
Backend for API and services is tested using [PyTest](https://docs.pytest.org/en/6.2.x/). To run test cases `exec` into cueo-backend and run command | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.