RHEL / Rocky Linux (x86)

Supported OS versions:
  • RHEL 8, 9, 10
  • Rocky Linux 8, 9, 10
Overview of XorMon requirements:
  • Node.js 24.x
  • PostgreSQL 16 or 17
  • Python 3.11+
  • TimescaleDB Community Edition (latest)
Prerequisites
  • HW sizing
  • supported Linux OS
  • access to internet repositories
  • 5 GB of free space in the "/home" filesystem for the application
  • enough free space in the "/var" filesystem for the data (see Sizing)
Host OS installation procedure
  • Create xormon user (as root)
    sudo adduser xormon
    sudo passwd xormon
  • Increase user system limits
    sudo vi /etc/security/limits.conf
    Append following lines before the end of the file
    xormon          hard    stack           -1
    xormon          soft    stack           -1
    xormon          hard    data            -1
    xormon          soft    data            -1
    xormon          hard    nofile          32768
    xormon          soft    nofile          32768
    xormon          hard    nproc           64000
    xormon          soft    nproc           64000
  • Install required packages

    • Enable CodeReady Builder (RHEL) or PowerTools (Rocky Linux) repository

      RHEL 8, 9, 10
      sudo subscription-manager repos --enable codeready-builder-for-rhel-$(rpm -E %rhel)-x86_64-rpms
      Rocky Linux 8
      sudo dnf config-manager --set-enabled powertools
      Rocky Linux 9, 10
      sudo dnf config-manager --enable crb
    • Install EPEL repository

      RHEL 8, 9, 10
      sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm
      Rocky Linux 8, 9, 10
      sudo dnf install epel-release
    • Install packages
      sudo dnf install perl ed libxml2 gnupg net-tools sblim-wbemcli libaio wget curl strace
      sudo dnf install perl-TimeDate perl-XML-Simple perl-XML-SAX perl-XML-LibXML perl-Env perl-CGI perl-Data-Dumper
      sudo dnf install perl-LWP-Protocol-https perl-libwww-perl perl-Time-HiRes perl-IO-Tty openldap-clients perl-Time-Piece 
      sudo dnf install perl-JSON perl-JSON-PP perl-JSON-XS net-snmp-perl net-snmp-utils
      sudo dnf install libjpeg-devel zlib-devel libpng-devel libjpeg-turbo-devel libjpeg-turbo-utils
      sudo dnf install perl-DBI perl-DBD-Pg
      • RHEL / Rocky Linux 8 only
        sudo dnf install perl-Net-INET6Glue
      • RHEL / Rocky Linux 9, 10
        sudo dnf install perl-FindBin
    • Python

      Required only for prediction graphs
      You can run XorMon without it if you have trouble downloading necessary Python modules
      sudo dnf install python3-virtualenv python3-pip libpq-devel python3-devel gcc-c++ gcc

  • Install Java 11

    Required only by Hitachi Export Tool for Hitachi VSP monitoring.
    Skip if you don't need to monitor Hitachi VSP storage systems.
    sudo dnf install java-11-openjdk-headless
  • Install Node.js

    • RHEL / Rocky Linux 8, 9
      sudo dnf module enable nodejs:24
      sudo dnf install nodejs
      sudo npm update -g npm
      node -v
    • RHEL / Rocky Linux 10
      sudo dnf install nodejs24
      
      sudo ln -s /usr/bin/node-24 /usr/bin/node
      sudo ln -s /usr/bin/npm-24 /usr/bin/npm
      sudo ln -s /usr/bin/npx-24 /usr/bin/npx
      
      node -v
  • Allow the node binary to use privileged ports (< 1024)
    This is necessary for XorMon to run on the standard HTTPS port (443).
    Otherwise, XorMon will run on port 8443.
    sudo /usr/sbin/setcap 'cap_net_bind_service=+ep' $(readlink -f $(which node))
    
    # verify
    sudo /usr/sbin/getcap $(readlink -f $(which node))
      # Output should be:
      /usr/bin/node cap_net_bind_service=ep
    Note: this must be done after every Node.js upgrade.

  • Install PostgreSQL and TimescaleDB extension

    XorMon requires TimescaleDB Community Edition.

    Do NOT install TimescaleDB extension from PostgreSQL PGDG repository.
    This version is missing some key features required by XorMon.

    • Disable built-in PostgreSQL module
      RHEL / Rocky Linux 8, 9
      sudo dnf -qy module disable postgresql
    • Add PostgreSQL repository
      sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %rhel)-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    • Add TimescaleDB repository

      This procedure requires access to the online repository at https://packagecloud.io/
      If you can't access the repostiroy from XorMon VM, skip this step and proceed to the optional step: "Download TimescaleDB packages"

      Copy and paste the following text as a single command in the commandline
      sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
      [timescale_timescaledb]
      name=timescale_timescaledb
      baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      metadata_expire=300
      EOL
    • Optional: Download TimescaleDB packages

      Perform this step only if your environment does not allow access to the TimescaleDB internet repository.

      Download the following files from https://packagecloud.io/timescale/timescaledb
      You can use any device with internet access, such as your laptop.


      Create a folder on the XorMon VM:
      mkdir ~/tsdb
      Upload the downloaded files to this folder.

    • Install PostgeSQL and TimescaleDB extension

      Installation from the TimescaleDB repository
      sudo dnf install -y timescaledb-2-postgresql-16 postgresql16-contrib
      Installation from downloaded RPM files
      cd ~/tsdb
      sudo dnf install ./timescaledb*.rpm postgresql16-contrib
    • Optional: Change database location if necessary

      Default database location is '/var/lib/pgsql/16/data/'
      Note: database requires at least 100GB (500GB in large environment)
      Follow this docu in case you want to migrate already running database to a different directory.

      • Create new folder for the database
        sudo mkdir /opt/pgsql
        sudo chown postgres:postgres /opt/pgsql/
        sudo chmod 750 /opt/pgsql/
      • Create a drop-in file to change the database location in postgresql-16 service
        sudo mkdir -p /etc/systemd/system/postgresql-16.service.d
        Run the following lines as a single command
        sudo cat > /etc/systemd/system/postgresql-16.service.d/override.conf <<EOF
        [Service]
        Environment=PGDATA=/opt/pgsql
        EOF
      • Reload services
        sudo systemctl daemon-reload
      • Edit 'postgres' user bash profile
        sudo vi /var/lib/pgsql/.bash_profile
        PGDATA=/opt/pgsql
    • Initialize DB
      sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
    • Tune DB

      Make sure you are using the correct configuration file if your database is not in the default location

      • Defaul DB location
        sudo timescaledb-tune -yes --pg-config=/usr/pgsql-16/bin/pg_config
        sudo sed -i 's/#synchronous_commit = on/synchronous_commit = off/' /var/lib/pgsql/16/data/postgresql.conf
        sudo sed -i 's/#password_encryption/password_encryption/' /var/lib/pgsql/16/data/postgresql.conf
        sudo sed -ie 's/32\s ident/32 scram-sha-256/' /var/lib/pgsql/16/data/pg_hba.conf
      • Alternative DB location

        Use only if you have changed the default PostgreSQL DB location during installation.
        sudo timescaledb-tune -yes --pg-config=/usr/pgsql-16/bin/pg_config -conf-path=/opt/pgsql/postgresql.conf
        sudo sed -i 's/#synchronous_commit = on/synchronous_commit = off/' /opt/pgsql/postgresql.conf
        sudo sed -i 's/#password_encryption/password_encryption/' /opt/pgsql/postgresql.conf
        sudo sed -ie 's/32\s ident/32 scram-sha-256/' /opt/pgsql/pg_hba.conf
    • Enable automatic start
      sudo systemctl enable --now postgresql-16
    • Set password for user postgres
      sudo -u postgres psql
      
      postgres=# \password postgres
      postgres=# ALTER USER postgres VALID UNTIL 'infinity';
      postgres=# \q
      Make note of the password. It will be needed later during XorMon installation.

  • Configure firewall

    Required ports

    XorMon UI
    port 8443 or the standard HTTPS port 443 (how to switch to 443)
    depending on whether you have enabled binding low numbered ports for Node.js.

    OS Agent
    port 8162

    Configure ports
    sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --zone=public --add-port=8162/tcp --permanent
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-port

  • SELinux (optional)

    An installation performed according to this procedure will work even with SELiunx enabled in enforcing mode.
    No additional configuration is required with regards to SELinux.
    However, it is important to note that the PostgreSQL database is installed by default with the "unconfined_service_t" domain.
    PostgreSQL can be configured with its own SELinux domain so that the database can access only its own files (data, logs).

    To configure PostgreSQL with SELinux, please follow the instructions on our website: SELinux setup

  • XorMon Application

    Follow XorMon application install