Coder Social home page Coder Social logo

hastic-zzz / hastic-server Goto Github PK

View Code? Open in Web Editor NEW
329.0 8.0 23.0 3 MB

Hastic data management server for analyzing patterns and anomalies from Grafana

License: GNU General Public License v3.0

JavaScript 2.66% TypeScript 94.46% Python 1.26% Dockerfile 0.53% Makefile 0.30% Shell 0.79%
timeseries analytics anomaly-detection monitor monitoring-server hastic-server alerting pattern-recognition selfhosted self-hosted

hastic-server's People

Contributors

amper43 avatar corpglory-dev avatar jonyrock avatar jonyrock-back avatar mattchaley avatar mstapfner avatar rozetko avatar sankerust avatar sblrok avatar vargburz 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

hastic-server's Issues

Missing pattern detection

Sometimes you want to detect when you don't have a pattern in your data and get notifications about it

image

Any thoughts?

ImportError: cannot import name 'isna'

Steps to reproduce:

  • clone repo
  • go to analytics/
  • pip3 install -r requirements.txt
  • python3 server.py

You would see error:

Traceback (most recent call last):
  File "server.py", line 7, in <module>
    from worker import Worker
  File "/mnt/c/Users/rozetko/git/hastic-server/analytics/worker.py", line 2, in <module>
    from anomaly_model import AnomalyModel
  File "/mnt/c/Users/rozetko/git/hastic-server/analytics/anomaly_model.py", line 2, in <module>
    from data_provider import DataProvider
  File "/mnt/c/Users/rozetko/git/hastic-server/analytics/data_provider.py", line 1, in <module>
    import pandas as pd
  File "/home/rozetko/.local/lib/python3.5/site-packages/pandas/__init__.py", line 42, in <module>
    from pandas.core.api import *
  File "/home/rozetko/.local/lib/python3.5/site-packages/pandas/core/api.py", line 10, in <module>
    from pandas.core.groupby import Grouper
  File "/home/rozetko/.local/lib/python3.5/site-packages/pandas/core/groupby/__init__.py", line 2, in <module>
    from pandas.core.groupby.groupby import (
  File "/home/rozetko/.local/lib/python3.5/site-packages/pandas/core/groupby/groupby.py", line 42, in <module>
    from pandas.core.dtypes.missing import isna, isnull, notna, _maybe_fill
ImportError: cannot import name 'isna'

Case-sensitive anomaly name

Now anomaly name is case-sensitive
If you create anomaly with capital letter(s) in name - you get "Not found" or "Internal error" alert
We should change all names to lower-case

Leave only node 6.14 build

Guess we don't need 2 types of build because node 6.14 build would work in any 6.14+ version.
Also, documentation with different types of build looks confusing.
@jonyrock what do you think?

Smart automatic correlation searching

We want to send data source where we will find correlated metrics automatically. When just reports than metrics which analytic found.
Sounds futuristic , but lets make subtasks.

Push metric data from server to analytics

I believe that analytics should know about how extract data. It is server responsibility.
We need to send data for initial learning and then data about new data from datasource.

There are many benefits from this.

@rozetko lets stop querying grafana from python

Tolerance to missing data

We haven't defined how system should behave when we have no data. We need to understand requirements to the system first.

node 6.14 support

We want to support old versions of Node.js
I think we better setup CI for this and update it in docker

Use anomaly IDs

We still use anomaly names in some cases instead of IDs
It is really confusing
We should use only IDs

Persistence only on node.js

We want to make node.js part the service which responsible for data processing.
So python doesn't write to anywhere.

Index transform bug

There is a bug when indices get transformed to time
image
In this screenshot all segments have the same length in indices, but the one on the left has a lot larger length

Analytics / server messaging

We want to use zeromq for messaging between node.js / python

It will allow to separate processes and debug easier

  • ZeroMQ Node/Python worker refactoring
  • Docs to new installation
  • Remove redundant deps after refactoring
  • Return analytics status
  • Fix building for production

Task model on node.js side

we use any - like definitions for task, but we can do it more accurate

let task = {
    type: 'learn',
    anomaly_id: anomalyId,
    pattern,
    segments: segments
  };

Return version of server

We can face a problem where user has an older version of hastic-panel and we need to return version of hastic-server. Also it is necessary for bug reports.

So we need to

  • keep track of current version of server with is the same as release
  • return server version when get status (root) url

The first time we get this problem: https://github.com/hastic/hastic-server/pull/65

Multiple metrics patterns

We now want to have pattern for multiple series.

We need to make

  • Algorithms with multiple series
  • Node Server part
  • UI

Documentation about entities naming

We have entities like:

  • anomaly
  • pattern
  • segment
  • and so on
    It can be hard to understand them sometimes.
    We should create doc with their interpretation.

Filter features

It would be nice to have Kalman filter for example before we do analytics

all_anomalies.json gets rewrited after restart

Steps to reproduce:

  • create anomaly
  • find it in data/anomalies/all_anomalies.json
  • restart server
  • create new anomaly

Now there is only new anomaly in all_anomalies.json
It happens because loadAnomaliesMap() method doesn't get executed on anomaly insert

Release docs

We need to add documentation on how to build release version

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.