1.2.9 - the luminosity branch

v1.2.9-luminosity - October 30, 2018

Security update and minor bug fixes

  • Secuirty update - update Python requests library to 2.20.0 for CVE-2018-18074. A manual update of the requests version is possible in-situ without needed to deploy the full release, in your venv simply activate the venv and run bin/pip2.7 install requests==2.20.0

  • Minor bug fixes are described below.

Changes from v1.2.8

  • Bumped version to v1.2.9

  • A fix mirage issue when slack alert tuples were added where the hours_to_resolve was interpolating to hours_to_resolve = “t” from the metric_vars (2618)

  • Added date and time info so you do not have to mouseover the slack message to determine the time at which the alert came in (2618)

  • SQL update. Changed anomalies anomalous_datapoint column data type from DECIMAL(18,6) to DECIMAL(65,6) for very long numbers (2638)

  • Updated docs, some typos and docstrings in settings.py (2642)

  • Update requests dependency to 2.22.0 (2652) CVE-2018-18074

Update notes

  • NOTE: If you are running v1.x you CANNOT upgrade from v1.x directly to v1.2.9

  • You can only upgrade to v1.2.9 from v1.2.8

  • There is a change to the DB and a SQL update

  • There are no functional changes to settings.py other than some changes to docstrings

How to update from v1.2.8

  • Update the pip requests dependency for CVE-2018-18074, e.g.

PYTHON_MAJOR_VERSION="2.7"
PYTHON_VIRTUALENV_DIR="/opt/python_virtualenv"
PROJECT="skyline-py2714"
cd "${PYTHON_VIRTUALENV_DIR}/projects/${PROJECT}"
source bin/activate
bin/"pip${PYTHON_MAJOR_VERSION}" install requests==2.20.0
deactivate
# Restart all Skyline services
# Restart Apache
  • Download the new release tag or clone/update to get it to a temp location, ready to be deployed.

NEW_SKYLINE_VERSION="v1.2.9-stable-luminosity"    # Your new Skyline version
OLD_SKYLINE_VERSION="v1.2.8-stable-luminosity"    # 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 "$NEW_SKYLINE_PATH"
cd "$NEW_SKYLINE_PATH"
git clone https://github.com/earthgecko/skyline .
git checkout "$NEW_SKYLINE_VERSION"
  • Create the new settings.py from your existing settings.py as there are no changes between v1.2.8 and v1.2.9.

# Create the settings.py from your existing settings.py as there are no
# changes between v1.2.8 and v1.2.9
cat "${CURRENT_SKYLINE_PATH}/skyline/settings.py" > "${NEW_SKYLINE_PATH}/skyline/settings.py"
  • Stop Skyline Ionosphere and Panorama services.

  • Backup your Skyline database.

  • Apply the SQL update to your Skyline database as per described below, change the below variables as appropriate to your set up.

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

# Backup DB
mkdir -p $BACKUP_DIR
mysqldump -u$MYSQL_USER -p $MYSQL_DB > $BACKUP_DIR/pre.v1.2.9.$MYSQL_DB.sql

# Update DB
mysql -u$MYSQL_USER -p $MYSQL_DB < "${NEW_SKYLINE_PATH}/updates/sql/luminosity-v1.2.9-stable.sql
  • Stop all the Skyline services and ensure any service controls such as monit, supervisor or systemd do not start them again, (change as appropriate for your set up) e.g.

# Stop all other Skyline services
SKYLINE_SERVICES="horizon
analyzer
mirage
crucible
boundary
ionosphere
luminosity
panorama
webapp"
for i in $SKYLINE_SERVICES
do
  /etc/init.d/$i stop
done
  • Move your current Skyline directory to a backup directory and move the new Skyline v1.2.9 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" "/opt/skyline/github/skyline.$OLD_SKYLINE_VERSION"
mv "$NEW_SKYLINE_PATH" "$CURRENT_SKYLINE_PATH"
  • Start the all Skyline services (change as appropriate for your set up) e.g.

# Start all other Skyline services
SKYLINE_SERVICES="panorama
luminosity
horizon
analyzer
mirage
crucible
boundary
ionosphere
webapp"
for i in $SKYLINE_SERVICES
do
  /etc/init.d/$i start
done
# RESTART Apache if it was not restarted when requests was updated above
  • 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