Giter VIP home page Giter VIP logo

hawkular-datamining's Introduction

Hawkular

Build Status

Hawkular is a modular systems monitoring suite, that consists of several sub-projects for storing of metrics, alerting on incoming events and more. Those projects are developed in their own GitHub repositories and integrated in this project.

Sub-projects are currently:

score
dependencies
  • Hawkular-charts: Charts and other Angular visualization components used to graphically render data in Hawkular.

score
dependencies

About this repository

In this repository we are assembling the individual pieces, sub projects and UI into the overall Hawkular instance.

In the root pom.xml you can actually set the particular versions of the components, but we can’t guarantee the various permutation of component versions to work together.

Building

To build Hawkular, clone this repository and build from the top level.

$ git clone https://github.com/hawkular/hawkular.git
$ cd hawkular
$ mvn install

Once those steps are achieved, .zip and .tgz archives will be available in dist/target directory.

Tip
If you build with mvn install -Pdev, an uncompressed directory will be created in dist/target. A default user will be created, the username is jdoe and the password is password. This can be convenient when you are working on the project as you won’t have to unzip/untar and register a new user. The uncompressed directory can be found in dist/target/hawkular-${version}/hawkular-${version}/ and run with bin/standalone.sh as normally starting a WildFly server.

Please have a look at the developer documentation for more information.

License

Hawkular is released under Apache License, Version 2.0 as described in the LICENSE document.

   Copyright 2015-2016 Red Hat, Inc.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

hawkular-datamining's People

Contributors

jkremser avatar jmazzitelli avatar pavolloffay avatar ppalaga 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hawkular-datamining's Issues

Specify end time of precition

Currently it s possible to ask for n steps ahead predictions.

API should offer functionality for asking for predictions for any time in the future. Prediction time could be specified as future timestamp or time in seconds.

Get number positivity

I have a rule that throws numbers between -50 and 50 randomly, is there any way to predict the sign (positive or negative) of the next release with at least 90% accuracy based on a historical record?

Slim down distribution

At the moment app is deployed and distributed as wildfly server. The project uses only REST API, therefore it makes sense to use something "smaller" for example spring boot or wildfly swarm.

There are issues with the calculation of CollectionInterval and timestamp

    /**
     * @param collectionInterval collection interval in seconds
     */
    void setCollectionInterval(Long collectionInterval);

As declared by this interface, the interval of Metric should be in seconds.
However, in subsequent use, the modification of timestamp values based on collectionInterval was not consistent.

@Override
    public List<DataPoint> forecast(int nAhead) {

        List<DataPoint> result = new ArrayList<>(nAhead);

        for (int i = 1; i <= nAhead; i++) {
            PredictionResult predictionResult = calculatePrediction(i, null, null);
            DataPoint predictedPoint = new DataPoint(predictionResult.value,
                    lastTimestamp + i*metricContext.getCollectionInterval()*1000,
                    predictionResult.value + predictionIntervalMultiplier*predictionResult.sdOfResiduals,
                    predictionResult.value - predictionIntervalMultiplier*predictionResult.sdOfResiduals);

            result.add(predictedPoint);
        }

        return result;
    }

In this interface implementation, lastTimestamp+i * metricContext. getCollectionInterval() * 1000 is used to calculate the timestamp of the prediction point, indicating that Timestamp is measured in milliseconds.

However, in the subsequent calculation of the timestamp, the CollectionInterval was directly added without converting it to a timestamp in milliseconds.

@Override
    public DataPoint forecast() {
        PredictionResult predictionResult = calculatePrediction(1, null, null);

        return new DataPoint(predictionResult.value, lastTimestamp + metricContext.getCollectionInterval(),
                predictionResult.value + predictionIntervalMultiplier*predictionResult.sdOfResiduals,
                predictionResult.value - predictionIntervalMultiplier*predictionResult.sdOfResiduals);
    }

I am puzzled by the above phenomenon and hope to help answer it. If there is indeed an inconsistency issue, I am willing to assist with the modification.

Send AsyncResponse to Engine

  • Remove polling from RestPredictions. Async response should be sent over JMS and resumed in PredictionResultListener.
  • Add Async response object to predictionRequest

Metrics averaging before inserting to model.

Exponential smoothing models for metrics which are collected with high frequency (e.g. heap used metric) tend to work better for buckets. Therefore it is better to average N values and then use it as input to the model. Another solution could be use simple moving average to and use it as input for double exponential smoothing.

Rework ModelOptimizer

ModelOptimizer should be accessible from directly from TimeSeriesModel (builder).

Persist model metadata

Model weights should be probably persisted on application shutdown or on every update?

Remove duplicate log messages

In the log there are duplicate log messages which should be removed.

This is probably caused by

12:16:49,140 ERROR [stderr] (ServerService Thread Pool -- 59) Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 

https://github.com/apache/spark/blob/master/core/src/main/resources/org/apache/spark/log4j-defaults.properties

Log example:

12:16:49,370 INFO  [org.apache.spark.SecurityManager] (ServerService Thread Pool -- 59) Changing view acls to: pavol
15/09/23 12:16:49 INFO SecurityManager: Changing view acls to: pavol

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.