You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.2 KiB

EPSILON = 1e-7
COL_TIMESTAMP = 'timestamp'
COL_DATE = 'date'
COL_VALUE = 'value'
COL_SPLUNK_TIME = '_time'
NAB_TIMESTAMP_FORMAT = '%Y-%m-%d %H:%M:%S'
ITSI_TIMESTAMP_FORMAT = '%Y-%m-%dT%H:%M:%S.000%z'
ITSI_TIMESTAMP_FORMAT_PD = '%Y-%m-%d %H:%M:%S%z'
# The default value of the threshold on the test statistic for window method of level drift detection
LEVEL_DRIFT_THRESHOLD = 2.5
# The default window length for window_method of level drift detection
WINDOW_LENGTH = 7
# For continuous PLA model fitting:
# The smoothing factor regulate the balance of the smoothing spline:
# being as smooth as possible, while
# closely fitting the input data
# This default value is empirically decided on available dataset in developing the solution.
SMOOTH_FACTOR = 2.5
# The number of points for local LOWESS smoothing, used in SND calculation for drift detection
LOWESS_POINTS = 7
# Heuristical parameters, for post-processing to avoid reporting small or temporary level drifts
THRESHOLD_SMALL_DRIFT = 10.0
THRESHOLD_TEMPORARY_DRIFT_LENGTH = 14
THRESHOLD_TEMPORARY_DRIFT = 20.0
DEFAULT_THRESHOLD = 80
NO_DRIFT = 0
DRIFTED = 1
DRIFT_PART = 2
DRIFT_DIRECTION_BOTH = 'both'
DRIFT_DIRECTION_UP = 'up'
DRIFT_DIRECTION_DOWN = 'down'
ZERO_LEVEL_TOLERANCE = 0.005
FEATURE_SCALED = False
# Constants for Column and Field Names
ALERT_VALUE = 'alert_value'
PART_OR_WHOLE = 'part_or_whole'
DRIFT_TYPE = 'drift_type'
PERCENT_DRIFT = 'percent_drift'
START_TIME = 'start_time'
END_TIME = 'end_time'
THRESHOLD_TIME = 'threshold_time'
KPI_ID = 'itsi_kpi_id'
SERVICE_ID = 'itsi_service_id'
DRIFT_DETECTION_RESULTS_COLLECTION = 'drift_detection_results'
DRIFT_TIME_WINDOWS = 'drift_time_windows'
IS_DRIFT_DETECTED = 'is_drift_detected'
END_TIMESTAMP = "end_timestamp"
LAST_DRIFT_AT = "last_drift_at"
ALERT_TYPE = "alert_type"
# HTTP error messages
MISSING_KPI_ID = "Missing kpi_id."
METHOD_NOT_ALLOWED = "Method not allowed."
PATH_INFO = "path_info"
USER = "_user"
KVSTORE_KEY = "_key"
ITSI_DRIFT_DETECTION_CONFIGURATION = "drift_detection_configuration"
START_TIME_MISSING_MSG = f"{START_TIME} is missing from the query parameters"
START_TIME_INVALID_FORMAT_MSG = f"{START_TIME} is not in a valid epoch format"
END_TIME_INVALID_FORMAT_MSG = f"{END_TIME} is not in a valid epoch format"
START_TIME_GREATER_THAN_END_TIME_MSG = f"{START_TIME} can't be greater than {END_TIME}"
# ITSI Base Endpoint URI
ITSI_APP_NAME = 'SA-ITOA'
ITSI_APP_OWNER = 'nobody'
ITSI_BASE_URI = "itoa_interface"
# Specific ITSI Endpoint URIs
ITSI_DRIFT_DETECTION_KPIS_URI = f"{ITSI_BASE_URI}/get_drift_kpis"
# ITSI Alerting Events Endpoint URI
ITSI_ALERT_URI = "event_management_interface/drift_event_action"
# Template Info Keys
LOOKBACK_PERIOD = "lookback_period"
AGGREGATION_SPAN = "aggregation_span"
AGGREGATION_FUNCTION = "aggregation_function"
TOLERANCE_IN_PERCENT = "tolerance_in_percent"
THRESHOLD_DIRECTION = "threshold_direction"
# Drift comparing hyper-parameters, used in comparing drift
# The threshold for starting day difference; values larger than this are considered a different drift.
DAYS_DIFFERENCE_THRESHOLD = 1
# The threshold for drift length difference; values larger than this are considered a different drift.
LENS_DIFFERENCE_THRESHOLD = 3
# Used to convert an epoch time(in seconds) to days
SECONDS_PER_DAY = 60 * 60 * 24 # 86400 seconds
DEFAULT_DATA_SPAN = "1m"
ADJUSTED_DATA_SPAN = "5m"
DAYS_OF_TWO_YEARS = 365 * 2
class ComparisonStatusConstants:
"""
A class containing constants that represent the possible outcomes
of the drift detection process.
"""
COLLECTION_NOT_FOUND = "collection_not_found"
NO_EXISTING_DRIFTS = "no_existing_drift"
NO_NEW_DRIFTS = "no_new_drifts"
SAME_DRIFT_FOUND = "same_drift_found"
NEW_DRIFT_DETECTED = "new_drift_detected"
EXISTING_TREND_CLEARING = "existing_trend_clearing"
class AlertTypeConstants:
"""
A class containing constants that represent the alert types,
used for sending alerts to ITSI
"""
NEW_DRIFT_DETECTED = "new"
CLEARING = "clearing"
class PostReturnStatusConstants:
"""
A class containing constants that represent the status of posting,
used for checking return status of sending alerts to ITSI
"""
SUCCESS = "success"
FAILURE = "failure"
EXCEPTION = "exception"