Upgrade EclecticIQ Intelligence Center RHEL#

Deprecated: Use installation playbooks instead

Instructions to manually install and upgrade EclecticIQ Intelligence Center, and using rundoc to install or upgrade EclecticIQ Intelligence Center, are deprecated.

Use EclecticIQ Intelligence Center installation playbooks instead.

Upgrade operating system

When upgrading an EclecticIQ Intelligence Center instance on hosts running older operating systems such as CentOS 7 or RHEL 7, you must upgrade the operating system to Rocky Linux 8 or RHEL 8 before attempting to install or upgrade EclecticIQ Intelligence Center 3.0 and newer. See:

Prepare systems for upgrade#

Follow the instructions in this section to prepare your systems to upgrade the Intelligence Center.

Update repository config#

Edit /etc/yum.repos.d/platform-packages-centos.repo to update the version number in baseurl:

# Update this line
baseurl=https://downloads.eclecticiq.com/platform-packages-centos/<target_minor_version>

⚠️ Do not update the version specified in /etc/yum.repos.d/platform-dependencies-centos.repo

If these files do not exist on your system, see the “Set up the repositories” page for your OS for instructions to create them.

Install Python 3.8#

Release 2.12.0 and newer use Python 3.8.

When upgrading from 2.11 and older to 2.12.0 and newer, you must also install Python 3.8 using EclecticIQ-provided packages.

✅ Installing EclecticIQ-provided Python 3.8 packages installs Python 3.8 alongside the system Python packages.

To do this, follow the instructions on the “Set up the repositories” page for your OS to create a platform-dependencies-centos-python38.repo file on your IC host before following the rest of the upgrade instructions.

Set environment variables#

Set the following environment variables on your system:

extensions_repo_protocol=https
extensions_repo_domain=downloads.eclecticiq.com
extensions_repo_path=Extensions
extensions_packages=eclecticiq-extension-all~=3.2.0

These are used later when installing extensions.

📔 The version set in extensions_packages must only match the minor version of the IC. E.g., for IC 2.9.3, extensions_packages must be set to eclecticiq-extension-all~=2.9.0.

Stop the services#

Intelligence Center host#

If the IC instance is distributed across more than one host, carry out these actions only in the machine hosting the eclecticiq-platform-backend-* components.

  • Stop all platform services, Kibana, and Statsite:

# Stop platform services, kibana and statsite
systemctl stop eclecticiq-platform-backend-services
systemctl stop eclecticiq-platform-backend-workers
systemctl stop kibana
systemctl stop statsite
  • Enforce stricter access rights for selected platform files:

chown root:eclecticiq /etc/default/eclecticiq-platform*
chmod 640 /etc/default/eclecticiq-platform*
  • Back up the IC settings file to restore custom settings, in case they are overwritten during the upgrade:

# Back up platform settings
cp /etc/eclecticiq/platform_settings.py{,.$(date +%s).bak}

Database machines#

  • Stop all databases and log aggregator components; that is, Elasticsearch, Logstash, PostgreSQL, and Redis:

systemctl stop elasticsearch
systemctl stop logstash
systemctl stop postgresql-14
systemctl stop redis

Perform the upgrade#

Intelligence Center host#

Remove Neo4j and related components, if present:

# We remove them via rpm so it keeps all the meta-packages in place, and we can safely upgrade
rpm -e --nodeps eclecticiq-neo4jbatcher eclecticiq-platform-backend-graphindex eclecticiq-neo4j neo4j || true

All machines#

  • Update all yum packages in all machines hosting the IC instance:

# Update all packages
ES_PATH_CONF=/etc/eclecticiq-elasticsearch yum -y upgrade
  • Ensure Java 11 is installed and used.

yum -y install java-11-openjdk-headless tzdata-java
update-alternatives --set java $(readlink -f /usr/lib/jvm/jre-11/bin/java)
  • Ensure that Elasticsearch, Kibana and Logstash are no longer using the -oss packages.

yum reinstall -y elasticsearch kibana logstash eclecticiq-elasticsearch eclecticiq-kibana eclecticiq-logstash

The Elasticsearch configuration path environment variable must point to the location where the Elasticsearch configuration files are stored, in the machine where Elasticsearch is installed: ES_PATH_CONF=/etc/eclecticiq-elasticsearch.

After completing the update, yum -upgrade automatically (re)starts the services to load any configuration changes.
The Elasticsearch service may fail to start automatically. This is expected; the upgrade handles it by starting all database services later on in the process (see Start the services — Database machines below).
If you want to manually start it at this point:

systemctl start elasticsearch

Reinstall the extensions#

By default, the upgrade reinstalls all extensions:

# Uninstall old extensions from venv
/opt/eclecticiq-platform-backend/bin/pip freeze | grep '^eclecticiq-extension-' | grep -v '^eclecticiq-extension-api=' | cut -d= -f1 | xargs -r /opt/eclecticiq-platform-backend/bin/pip uninstall -y

# Install specified extensions in venv
/opt/eclecticiq-platform-backend/bin/pip install $extensions_packages

Start the services#

Database machines#

  • Start all databases and log aggregator components; that is, Elasticsearch, Logstash, PostgreSQL, and Redis:

systemctl start elasticsearch
systemctl start logstash
systemctl start postgresql-14
systemctl start redis

Intelligence Center host#

  • Start Kibana and Statsite.
    Do not start the IC services, yet:

# Start kibana and statsite
systemctl start kibana
systemctl start statsite
  • Manually compare /etc/eclecticiq/platform_settings.py with the file with the same name, a timestamp, and a .bak extension; restore any overwitten custom settings, if necessary.

Database migrations#

As a last step in the IC installation process, you must run the database migration scripts.

  • In an installation on two machines, make sure you run the database migrations on the server hosting the IC.
  • In a distributed installation, make sure you run the database migrations on the server hosting the IC backend.

Important

To complete the installation procedure, make sure you run the database migrations before continuing with the other configuration steps.

(Optional) Remove Neo4j data directory#

In addition to removing Neo4j and its related packages, you may remove the Neo4j data directory. This is usually mounted at /media/neo4j on the host that runs Neo4j (both single node and multi-node deployments).

To remove the Neo4j datastore permanently, run on the Neo4j host as root:

rm -rf /media/neo4j/databases/graph.db