'''metrics for which a certain forecasting method has successfully trained or re-trained its model'''
FORECASTING_METHOD="forecasting_method"
'''the method that is currently re-training its models'''
TIMESTAMP="timestamp"
'''date/time of model(s) (re-)training'''
classIntermediatePrediction(enumerate):
"""
[4] Forecasting Methods – to – Prediction Orchestrator Events Format
This event is produced by each of the Forecasting methods, and is used by the Prediction Orchestrator to determine the final prediction value for the particular metric.
* We note that any component will be able to subscribe to topics like:
* intermediate_prediction.*.MaxCPULoad → gets MaxCPULoad predictions produced by all forecasting methods or
* intermediate_prediction.ESHybrid.* → gets all metrics predictions from ESHybrid method
* We consider that each forecasting method publishes a static (but configurable) number m of predicted values (under the same timestamp) for time points into the future. These time points into the future are relevant to the reconfiguration time that it is needed (and can also be updated).
* For example if we configure m=5 predictions into the future and the reconfiguration time needed is TR=10 minutes, then at t0 a forecasting method publishes 5 events with the same timestamp and prediction times t0+10, t0+20, t0+30, t0+40, t0+50.
'''Predicted metric value (more than one such events will be produced for different time points into the future – this can be valuable to the Prediction Orchestrator in certain situations e.g., forecasting method is unreachable for a time period)'''
LEVEL="level"
'''Level of VM where prediction occurred or refers'''
TIMESTAMP="timestamp"
'''Prediction creation date/time from epoch'''
PROBABILITY="probability"
'''Probability of the predicted metric value (range 0..1)'''
CONFIDENCE_INTERVAL="confidence_interval"
'''the probability-confidence interval for the prediction'''
PREDICTION_TIME="predictionTime"
'''This refers to time point in the imminent future (that is relative to the time that is needed for reconfiguration) for which the predicted value is considered valid/accurate (in UNIX Epoch)'''
REFERS_TO="refersTo"
'''The id of the application or component or (VM) host for which the prediction refers to'''
CLOUD="cloud"
'''Cloud provider of the VM (with location)'''
PROVIDER="provider"
'''Cloud provider name'''
classPrediction(enumerate):
"""
[5] Prediction Orchestrator – to – Severity-based SLO Violation Detector Events Format
This event is used by the Prediction Orchestrator to inform the SLO Violation Detector about the current values of a metric, which can possibly lead to an SLO Violation detection.
'''Level of VM where prediction occurred or refers'''
TIMESTAMP="timestamp"
'''Prediction creation date/time from epoch'''
PROBABILITY="probability"
'''Probability of the predicted metric value (range 0..1)'''
CONFIDENCE_INTERVAL="confidence_interval"
'''the probability-confidence interval for the prediction'''
PREDICTIONTIME="predictionTime"
'''This refers to time point in the imminent future (that is relative to the time that is needed for reconfiguration) for which the predicted value is considered valid/accurate (in UNIX Epoch)'''
REFERSTO="refersTo"
'''The id of the application or component or (VM) host for which the prediction refers to'''
CLOUD="cloud"
'''Cloud provider of the VM (with location)'''
PROVIDER="provider"
'''Cloud provider name'''
classStopForecasting(enumerate):
"""
[6] Prediction Orchestrator – to – Forecasting Methods Events Format
This event is used by the Prediction Orchestrator to instruct a forecasting method to stop producing predicted values for a selection of metrics.
* Topic: stop_forecasting.[forecasting_method]
* Each component that implements a specific forecasting method it should subscribe to its relevant topic (e.g. the ES-Hybrid component should subscribe to stop_forecasting.eshybrid topic)
'''metrics for which a certain method should stop producing predictions (because of poor results)'''
TIMESTAMP="timestamp"
'''date/time of the command of the orchestrator'''
classStartForecasting(enumerate):
"""
[7] Prediction Orchestrator – to – Forecasting Methods Events Format
This event is used by the Prediction Orchestrator to instruct a forecasting method to start producing predicted values for a selection of metrics.
* Topic: start_forecasting.[forecasting_method]
* Each component that implements a specific forecasting method it should subscribe to its relevant topic (e.g. the ES-Hybrid component should subscribe to start_forecasting.eshybrid topic)
* We consider that each forecasting method should publish a static (but configurable) number m of predicted values (under the same timestamp) for time points into the future. These time points into the future are relevant to the reconfiguration time that it is needed (and can also be updated).
* For example if we configure m=5 predictions into the future and the reconfiguration time needed is TR=10 minutes, then at t0 a forecasting method publishes 5 events with the same timestamp and prediction times t0+10, t0+20, t0+30, t0+40, t0+50.