1.1.4 - the ionosphere branch

v1.1.4-beta-ionosphere - Jun 19, 2017

Upgrade NOTES

Any features profiles that were LEARNT prior to v1.1.4-beta-ionosphere had their generation details added to the DB incorrectly, this needs to be fixed in-situ against your Skyline database. The below pattern can be used replacing the DB user, password, etc to match you environment.

BACKUP_DIR="/tmp" # Where you want to backup the DB to
MYSQL_USER="<YOUR_MYSQL_USER>"
MYSQL_PASS="<YOUR_MYSQL_PASS>"
MYSQL_HOST="127.0.0.1" # Your MySQL IP
MYSQL_DB="skyline" # Your MySQL Skyline DB name

mkdir -p $BACKUP_DIR
mysqldump -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_DB > $BACKUP_DIR/pre.corrected.generations.dump.$MYSQL_DB.sql
mysql -u$MYSQL_USER -p$MYSQL_PASS -h $MYSQL_HOST $MYSQL_DB -sss -e "SELECT id, parent_id, generation FROM ionosphere WHERE generation > 1" | tr -s '\t' ',' > $BACKUP_DIR/skyline.original.fp_ids.generations.txt
for i_line in $(cat $BACKUP_DIR/skyline.original.fp_ids.generations.txt)
do
  FP_ID=$(echo "$i_line" | cut -d',' -f1)
  PARENT_ID=$(echo "$i_line" | cut -d',' -f2)
  GENERATION=$(echo "$i_line" | cut -d',' -f3)
  if [ $GENERATION -lt 2 ]; then
    continue
  fi
  PARENT_GENERATION=$(mysql -u$MYSQL_USER -p$MYSQL_PASS -h $MYSQL_HOST $MYSQL_DB -sss -e "SELECT generation FROM ionosphere WHERE id=$PARENT_ID")
  GEN_DIFF=$((GENERATION-PARENT_GENERATION))
  if [ $GEN_DIFF -ne 1 ]; then
    CORRECT_GENERATION=$((PARENT_GENERATION+1))
    echo "INCORRECT- fp_id $FP_ID generation is incorrect $GENERATION and parent generation is $PARENT_GENERATION, corrected to $CORRECT_GENERATION"
    mysql -u$MYSQL_USER -p$MYSQL_PASS -h $MYSQL_HOST $MYSQL_DB -sss -e "UPDATE ionosphere SET generation=$CORRECT_GENERATION WHERE id=$FP_ID"
  fi
done

Changes

  • Some debug choices for daylight savings countdown issue (Feature 1876: Ionosphere - training_data learn countdown)
  • Handle change in monotonicity with a check if a metric has its own Redis z.derivative_metric key that has not expired. (Bug 2050: analyse_derivatives - change in monotonicity)
  • Added D1 layer to features_profiles.html
  • Added D1 layer is required to ensure that layers do not inadvertently silence true anomalies due the D layer being a singular value, a D1 layer is required to allow the operator to mitigate against this, by setting a min and max threshold to skip the layer. (Feature 2048: D1 ionosphere layer)
  • Allow the operator to save a training_data set with save_training_data_dir in ionosphere_backend, etc (Feature 2054: ionosphere.save.training_data)
  • Updated docs with layers and misc modifications
  • Ionosphere - rate limiting profile learning.Rate limit Ionosphere to only learn one profile per resolution per metric per hour. This is to stop Ionosphere LEARNT from iteratively learning bad if something becomes anomalous and Skyline creates lots of training data sets for a metric. Ionosphere learn could come along and start to incrementally increase the range in LEARNT features profiles, with each iteration increasing a bit and going to the next training data set another profile to match. A spawn.c incident where Ionosphere learnt bad and badly. (Feature 2010: Ionosphere learn - rate limiting profile learning)
  • Ionosphere - analyse_derivatives (Feature 2034: analyse_derivatives). Add functionality that enables Skyline apps to convert a timeseries to the nonNegativeDerivative too properly analyse incremented count metrics. This will allow for Ionosphere to learn these types of metrics too, as previously it could only learn step changes at static rates as the features profiles change at every step. NON_DERIVATIVE_MONOTONIC_METRICS setting.
  • Added matched_greater_than query to the search features profile page. At the moment this only covers features profiles matches not layers matches. (Feature 1996: Ionosphere - matches page)
  • validated features profiles. Added a validated component to the features profiles (Feature 2000: Ionosphere - validated)