Upgrade EclecticIQ Intelligence Center Rocky Linux#
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.4.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 toeclecticiq-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
# Compatible with any version 11 or 14
systemctl stop postgresql-*
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.
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