RHEL / Rocky Linux (x86)

Overview of XorMon requirements:
  • Node.js 20
  • PostgreSQL 16
  • 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
  • Disable SELinux (as root)

    • one-liner
      sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
    • edit manually
      vi /etc/selinux/config
      SELINUX=disabled

    Reboot
    reboot
    In case you don't want to disable SELinux then follow this manual to configure SELinux in enforcing mode

  • Create xormon user (as root)
    adduser xormon
    passwd xormon
  • Increase user system limits (as root)
    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 (as root)

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

      RHEL 8.x
      subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
      RHEL 9.x
      subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
      Rocky Linux 8.x
      dnf config-manager --set-enabled powertools
      Rocky Linux 9.x
      dnf config-manager --enable crb
    • Install packages
      dnf install perl ed libxml2 epel-release wget curl gnupg net-tools sblim-wbemcli libaio wget curl strace 
      dnf install perl-TimeDate perl-XML-Simple perl-XML-SAX perl-XML-LibXML perl-Env perl-CGI perl-Data-Dumper
      dnf install perl-LWP-Protocol-https perl-libwww-perl perl-Time-HiRes perl-IO-Tty openldap-clients perl-Time-Piece 
      dnf install perl-JSON perl-JSON-PP perl-JSON-XS net-snmp-perl net-snmp-utils
      dnf install libjpeg-devel zlib-devel libpng-devel libjpeg-turbo-devel libjpeg-turbo-utils
      dnf install perl-DBI perl-DBD-ODBC unixODBC unixODBC-devel freetds perl-DBD-Pg
      • RHEL / Rocky Linux 8.x only
        dnf install perl-Net-INET6Glue
      • RHEL / Rocky Linux 9.x only
        dnf install perl-FindBin
    • Python

      Required only for prediction graphs
      You can run XorMon without it if you have trouble downloading necessary Python modules
      dnf install -y 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.
    dnf install -y java-11-openjdk-headless
  • Install Node.js (as root)

  • Install PostgreSQL and TimescaleDB extension (as root)

    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
      dnf -qy module disable postgresql
    • Add PostgreSQL repository

      • RHEL / Rocky Linux 8.x
        dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
      • RHEL / Rocky Linux 9.x
        dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    • Add TimescaleDB repository

      Copy and paste the following text as a single command in the commandline
      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
    • Install PostgeSQL and TimescaleDB extension
      dnf install -y timescaledb-2-postgresql-16 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)

      • Create new folder for the database
        mkdir /opt/pgsql
        chown postgres:postgres /opt/pgsql/
        chmod 750 /opt/pgsql/
      • Edit postgres-16 systemd service and put below under [Service] section
        vi /usr/lib/systemd/system/postgresql-16.service
        Environment=PGDATA=/opt/pgsql
      • Reload services
        systemctl daemon-reload
      • Edit 'postgres' user bash profile
        vi /var/lib/pgsql/.bash_profile
        PGDATA=/opt/pgsql
    • Initialize DB
      /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
        timescaledb-tune -yes --pg-config=/usr/pgsql-16/bin/pg_config
        sed -i 's/#synchronous_commit = on/synchronous_commit = off/' /var/lib/pgsql/16/data/postgresql.conf
        sed -i 's/#password_encryption/password_encryption/' /var/lib/pgsql/16/data/postgresql.conf
        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.
        timescaledb-tune -yes --pg-config=/usr/pgsql-16/bin/pg_config -conf-path=/opt/pgsql/postgresql.conf
        sed -i 's/#synchronous_commit = on/synchronous_commit = off/' /opt/pgsql/postgresql.conf
        sed -i 's/#password_encryption/password_encryption/' /opt/pgsql/postgresql.conf
        sed -ie 's/32\s ident/32 scram-sha-256/' /opt/pgsql/pg_hba.conf
    • Enable automatic start
      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 (optional, as root)

    Open XorMon port in the firewall 8443 TCP (XorMon UI) and 8162 TCP (OS agent communication).
    firewall-cmd --zone=public --add-port=8443/tcp --permanent
    firewall-cmd --zone=public --add-port=8162/tcp --permanent
    firewall-cmd --reload
    firewall-cmd --list-port

  • Follow XorMon application install