3.0.2

v3.0.2 - May 6, 2022

This is a minor release with minor bug fixes for v3.0.0

Changes

  • Change error to warning for Graphite timeseries is unavailable (4164: luminosity - cloudbursts)
  • Wrapped opentelemetry instrument functions in try. Fail gracefully if breaks it breaks (4514: Integrate opentelemetry)
  • Handle metrics with url encoded names try fetch with %25 if % fails (4374: webapp - handle url encoded chars)
  • If there is only 1 data point in the timeseries determine_data_frequency will not return a resolution so set a sensible default as it does not matter, it will be boring (4518: settings - LAST_KNOWN_VALUE_NAMESPACES)
  • Wrapped aligned_timeseries.append in try (4518)
  • Remove all nan from downsampled data because they break histogram_bins (3866: MIRAGE_ENABLE_HIGH_RESOLUTION_ANALYSIS)
  • If the downsampled data is not anomalous, remove the entry from (3866)
  • Prune entries older than 1 day from the trigger_history (3866)
  • Change to correct setex method so the keys expire (4536: Handle Redis failure)
  • Declare use_old_timestamp_keys before the ignore_submitted_timestamps (4536)
  • Clean up tmp timings and count files (3486: analyzer_batch)
  • waterfall alerts - handle single value timeseries (3734: waterfall alerts)
  • Added functions and API methods and documentation (4530: namespace.analysed_events)
  • Change from using skyline_functions correlate_or_relate_with to (4544: Handle EXTERNAL_SETTINGS in correlate_or_relate_with)
  • Deprecated correlate_or_relate_with in skyline_functions (4544, 3858: skyline_functions - correlate_or_relate_with)
  • Added as functions.metrics.correlate_or_relate_with with the ability to handle external settings (4544)
  • Added illuminance Redis hashes to track all anomalous events for future R&D (2580: illuminance)
  • Correct misspelt missing function in v3.0.0 (4530: namespace.analysed_events)
  • Handle cluster data in api metric endpoint (4530)
  • Use str for fp_id in cluster data (3890: metrics_manager - sync_cluster_files)

Upgrade notes

  • These update instructions apply to upgrading from v3.0.0 to v3.0.2 ONLY
  • There are no changes to the DB in v3.0.2
  • There are no changes to settings.py in v3.0.2

How to update from v3.0.0

  • Download the new release tag or clone/update to get it to a temp location, ready to be deployed.
  • Copy your settings.py from v3.0.0 and replace the v3.0.2 settings.py
  • Stop the Skyline apps, backup the database and Redis, move to the new version, start the Skyline apps.
# Get the new version
NEW_SKYLINE_VERSION="v3.0.2"    # Your new Skyline version
OLD_SKYLINE_VERSION="v3.0.0"    # Your old Skyline version

CURRENT_SKYLINE_PATH="/opt/skyline/github/skyline"                 # Your Skyline path
NEW_SKYLINE_PATH="${CURRENT_SKYLINE_PATH}.${NEW_SKYLINE_VERSION}"  # Your new Skyline path

mkdir -p "${CURRENT_SKYLINE_PATH}.${NEW_SKYLINE_VERSION}"
cd "${CURRENT_SKYLINE_PATH}.${NEW_SKYLINE_VERSION}"
git clone https://github.com/earthgecko/skyline .
git checkout "$NEW_SKYLINE_VERSION"

# settings.py
cp "$NEW_SKYLINE_PATH/skyline/settings.py" "$NEW_SKYLINE_PATH/skyline/settings.py.${NEW_SKYLINE_VERSION}.bak"

# Create a new settings.py file in the new version based on your existing
# settings.py file
cat "${CURRENT_SKYLINE_PATH}/skyline/settings.py" > "$NEW_SKYLINE_PATH/skyline/settings.py"

# **TEST**
# Test your new settings.py BEFORE continuing with the upgrade,
# test_settings.sh runs the validate_settings.py that the Skyline apps run
# when they start
$NEW_SKYLINE_PATH/bin/test_settings.sh

# Stop/disable any/all service controls like monit, etc that are controlling
# Skyline services.

# NOTE ALL SKYLINE SERVICES ARE LISTED HERE, REMOVE TO ONES YOU DO NOT RUN
# or do not wish to run.
SKYLINE_SERVICES="analyzer
analyzer_batch
mirage
crucible
boundary
ionosphere
luminosity
panorama
webapp
vista
snab
flux
horizon"
for i in $SKYLINE_SERVICES
do
  systemctl stop "$i"
done
  • Move your current Skyline directory to a backup directory and move the new Skyline v3.0.2 with your new settings.py from the temp location to your working Skyline directory, (change your paths as appropriate) e.g.
mv "$CURRENT_SKYLINE_PATH" "${CURRENT_SKYLINE_PATH}.${OLD_SKYLINE_VERSION}"
mv "$NEW_SKYLINE_PATH" "$CURRENT_SKYLINE_PATH"

# Set permission on the dump dir
chown skyline:skyline "$CURRENT_SKYLINE_PATH"/skyline/webapp/static/dump
  • Start the all Skyline services (change as appropriate for your set up) e.g.
# NOTE ALL SKYLINE SERVICES ARE LISTED HERE, REMOVE TO ONES YOU DO NOT RUN
# apart from the new thunder Skyline app

# Start all other Skyline services
SKYLINE_SERVICES="horizon
flux
panorama
webapp
vista
analyzer
analyzer_batch
mirage
crucible
boundary
ionosphere
luminosity
snab
thunder"
for i in $SKYLINE_SERVICES
do
  systemctl start "$i"
  if [ $? -ne 0 ]; then
    echo "failed to start $i"
  else
    echo "started $i"
  fi
done
# Restart any/all service controls like monit, etc that are controlling
# Skyline services.
  • Check the logs
# How are they running
tail -n 20 /var/log/skyline/*.log

# Any errors - each app
find /var/log/skyline -type f -name "*.log" | while read skyline_logfile
do
  echo "#####
# Checking for errors in $skyline_logfile"
  cat "$skyline_logfile" | grep -B2 -A10 -i "error ::\|traceback" | tail -n 60
  echo ""
  echo ""
done

Congratulations, you are now running the best open source anomaly detection stack in the world (probably).