This page describes the configuration requirements and considerations for using a Linux system as a Controller host machine. 

User Account Requirements

The user account you use to perform the installation must have the following permissions:

  • read, write and execute permissions on the directory where you install the Controller 
  • write permission on the /etc/.java/.systemprefs directory

If you are installing other AppDynamics Platform server components, such as the EUM Server or Application Analytics Processor, on the same machine, it is recommended that you perform the installation as the same user or a user with the same permissions on the target machine.

Virus Scanners  

Configure virus scanners on the target machine to ignore the AppDynamics Enterprise Console directory and database directory (or simply the entire Controller directory). Code is never executed from the data directory, so it is generally safe to exclude this directory from virus scanning. The default location of the data directory is <controller_home>/db/data

Also configure virus scanners to trust the Controller launcher, database executable, reporting service launcher, and events service (analytics processor) launchers. The launcher names are: 

  • Controller launcher: AppDynamicsDomain1Service.sh
  • MySQL executable: mysqld.sh
  • Events service launcher: analytics-processor.sh
  • Reporting service launcher: appdynamicsreportingservice.sh

Anti-virus Exclusions  

If you are running an antivirus program on your Linux system, it must meet one of the following conditions:

  • The anti-virus program is read-only; it only detects and reports issues but never modifies files
  • The anti-virus program excludes the MySQL data directory (datadir), which is often set to the path db/data.

If the program does not meet either of those conditions, it can randomly corrupt the MySQL database and hence the controller.

netstat Network Utility

Verify that your distribution of Linux includes the netstat network utility. If it does not, install the utility.  The Controller installation uses netstat to determine whether MySQL processes are running.

For example, you can install the package that includes netstat with the following command on CentOS: 

yum install net-tools

libaio Requirement

The Controller requires the libaio library to be on the system. This library facilitates asynchronous I/O operations on the system. Note if you have a NUMA based architecture, then you are required to install the numactl package.

Install libaio on the host machine if it does not already have it installed. The following table provides instructions on how to install libaio for some common flavors of Linux operating system.

Linux FlavorCommand
  • Red Hat
  • CentOS
  • Amazon

Use yum to install the library, such as:

  • yum install libaio
  • yum install numactl
  • yum install tzdata
  • yum install ncurses-libs-5.x

For RHEL8, CentOS8, and Amazon2, you install the ncurses-libs-5.x library using a rpm file downloaded from a trusted source:

sudo rpm -ivh --force ncurses-base-5.x.rpm
sudo rpm -ivh --force ncurses-libs-5.x.rpm

Note: The ncurses-libs depends on the ncurses-base so you should install the ncurses-base first.

Example of a trusted source for rpm download:

http://mirror.centos.org/centos/7/os/x86_64/Packages/ncurses-base-5.9-14.20130511.el7_4.noarch.rpm

http://mirror.centos.org/centos/7/os/x86_64/Packages/ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm

  • To install version 6, follow these steps:

You must either create symlinks for ncurses-libs-5 which points to ncurses-libs-6, or install the ncurses-compat-libs package, to provide ABI version 5 compatibility.

RHEL8 symlink:
sudo ln /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
sudo ln /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5

CentOS8 symlink:
sudo ln /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
sudo ln /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5

Amazon2 symlink:
sudo ln -s /usr/lib64/libncurses.so.6.0 /usr/lib64/libncurses.so.5
sudo ln -s /usr/lib64/libtinfo.so.6.0 /usr/lib64/libtinfo.so.5

RHEL8 compat-libs:
sudo yum install -y ncurses-compat-libs
CentOS8 compat-libs:

sudo yum install -y ncurses-compat-libs

Amazon2 compat-libs:
sudo yum install -y ncurses-compat-libs

Fedora

Install the library RPM from the Fedora website:

  • yum install libaio
  • yum install numactl
  • yum install tzdata
Ubuntu

Use apt-get, such as:

  • sudo apt-get install libaio1
  • sudo apt-get install numactl
  • sudo apt-get install tzdata
  • sudo apt-get install libncurses5

For Ubuntu20 you can install libncurses5 or libncurses6.

  • If you choose libncurses5:

    sudo apt-get install libncurses5

  • If you choose libncurses6:

    sudo apt-get install libncurses6

    Note: For libncurses6 you need to create symlink for libncurses5 pointing to libncurses6.

    sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6.2 /usr/lib/x86_64-linux-gnu/libncurses.so.5
    sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6.2 /usr/lib/x86_64-linux-gnu/libtinfo.so.5


DebianUse a package manager such as APT to install the library (as described for the Ubuntu instructions above). 
SLES12 and SLES15

Use zypper to install the library, such as:

sudo zypper install libxml2-2

sudo zypper install libxml2-tools

sudo zypper install libaio1

sudo zypper install numactl

sudo zypper install libcurses5

sudo zypper install tzdata

tzdata Requirement

Ubuntu version 16 and higher requires the tzdata package in order to install the Enterprise Console and Controller.

The tzdata package is also required by the MySQL connector.

To install tzdata, use apt-get, such as:

  • sudo apt-get install tzdata

Headless Chrome Requirement for the Reports Service

The Reports Service is a NodeJS-based service that uses a headless renderer to open, snapshot, and email PDFs of AppDynamics UI pages and data, including custom dashboards and audit logs. The  Controller sends jobs to the Reports Service at scheduled times or when requested by the user. The Reports Service is bundled with the Controller as part of the Enterprise Console installation. The Enterprise Console installation user interface allows the user to set Reports Service values like ports during setup. At the end of the on-premises Controller installation, the Reports Service is installed and started on the same machine as the controller.

The default renderer for the Reports Service is Headless Chrome, which runs the Google Chrome browser in a headless environment. Before you run Headless Chrome as the Reports Service renderer on Linux report server machines, you must perform a one-time setup as the root user. Setup is required on machines that have not been configured to include the prerequisite libraries as part of their image.

Prerequisites for Headless Chrome on Linux Operating Systems

If the prerequisite libraries are not already installed, run the yum or apt-get commands shown in the following sections. To check if the prerequisite libraries are installed, run the yum or apt-get commands and the output will specify if they are installed.

If you are already running Headless Chrome as the root user or running Headless Chrome on Docker, run the following commands without the sudo prefix.

CentOS 7 and Other YUM Systems

sudo yum update -y && \
sudo yum install -y \
  pango.x86_64 \
  libXcomposite.x86_64 \
  libXcursor.x86_64 \
  libXdamage.x86_64 \
  libXext.x86_64 \
  libXi.x86_64 \
  libXtst.x86_64 \
  cups-libs.x86_64 \
  libXScrnSaver.x86_64 \
  libXrandr.x86_64 \
  GConf2.x86_64 \
  alsa-lib.x86_64 \
  atk.x86_64 \
  gtk3.x86_64 \
  ipa-gothic-fonts \
  xorg-x11-fonts-100dpi \
  xorg-x11-fonts-75dpi \
  xorg-x11-utils \
  xorg-x11-fonts-cyrillic \
  xorg-x11-fonts-Type1 \
  xorg-x11-fonts-misc
CODE

Ubuntu and Other APT-GET Systems

sudo apt-get update -y && \
sudo apt-get install -y \
  gconf-service \
  libasound2 \
  libatk1.0-0 \
  libatk-bridge2.0-0 \
  libc6 \
  libcairo2 \
  libcups2 \
  libdbus-1-3 \
  libexpat1 \
  libfontconfig1 \
  libgcc1 \
  libgconf-2-4 \
  libgdk-pixbuf2.0-0 \
  libglib2.0-0 \
  libgtk-3-0 \
  libnspr4 \
  libpango-1.0-0 \
  libpangocairo-1.0-0 \
  libstdc++6 \
  libx11-6 \
  libx11-xcb1 \
  libxcb1 \
  libxcomposite1 \
  libxcursor1 \
  libxdamage1 \
  libxext6 \
  libxfixes3 \
  libxi6 \
  libxrandr2 \
  libxrender1 \
  libxss1 \
  libxtst6 \
  ca-certificates \
  fonts-liberation \
  libappindicator1 \
  libnss3 \
  lsb-release \
  xdg-utils \
  wget
CODE

Configure User Limits in Linux

AppDynamics requires the following hard and soft per-user limits in Linux: 

  • Open file descriptor limit (nofile): 65535
  • Process limit (nproc): 8192

The following log warnings may indicate insufficient limits:

  • Warning in database log: "Could not increase number of max_open_files to more than xxxx".
  • Warning in server log: "Cannot allocate more connections".

To check your existing settings, as the root user, enter the following commands:

ulimit -S -n
ulimit -S -u

The output indicates the soft limits for the open file descriptor and soft limits for processes, respectively. If the values are lower than recommended, you need to modify them. 

Where you configure the settings depends upon your Linux distribution:  

  • If your system has a /etc/security/limits.d directory, add the settings as the content of a new, appropriately named file under the directory.
  • If it does not have a /etc/security/limits.d directory, add the settings to /etc/security/limits.conf
  • If your system does not have a /etc/security/limits.conf file, it is possible to put the ulimit command in /etc/profile. However, check the documentation for your Linux distribution for the recommendations specific for your system.  

To configure the limits: 

  1. Determine whether you have a /etc/security/limits.d directory on your system, and take one of the following steps depending on the result:
    • If you do not have a /etc/security/limits.d directory:
      1. As the root user, open the limits.conf file for editing:

        /etc/security/limits.conf
      2. Set the open file descriptor limit by adding the following lines, replacing <login_user> with the operating system username under which the Controller runs:

        <login_user> hard nofile 65535
        <login_user> soft nofile 65535
        <login_user> hard nproc 8192
        <login_user> soft nproc 8192
    • If you do have a /etc/security/limits.d directory:
      1. As the root user, create a new file in the limits.d directory. Give the file a descriptive name, such as the following: 

        /etc/security/limits.d/appdynamics.conf
      2. In the file, add the configuration setting for the limits, replacing <login_user> with the operating system username under which the Controller runs: 

        <login_user> hard nofile 65535
        <login_user> soft nofile 65535
        <login_user> hard nproc 8192
        <login_user> soft nproc 8192
  2.  Enable the file descriptor and process limits as follows:

    This step is not required for RHEL/CentOS version 5 and later. The below file has been combined into /etc/pam.d/system-auth, and already contains the required line.


    1. Open the following file for editing:

      /etc/pam.d/common-session
    2.  Add the line:

      session required pam_limits.so
  3. Save your changes to the file. 

When you log in again as the user identified by login_user, the limits will take effect.

Fonts Needed for the Reporting Service

The Reporting Service depends upon certain system libraries and resources that are usually included in standard Linux distributions. However, certain lightweight flavors of Linux may be lacking the requirements, primarily font libraries. The Reporting Service requires Fontconfig and FreeType installed as well as at least one sans-serif font. Errors in the reporting server log will indicate missing components, such as a missing libfontconfig.so file.

The following table lists one operating systems and the commands to install the required libraries:

Operating SystemCommand

CentOS 6.1, 6.2; CentOS 6.3, 6.4, and 6.5, Fedora 14

$ yum install fontconfig freetype urw-base35-fonts

$ yum groupinstall hebrew-support

$ yum langinstall he_IL

CentOS 8.x, Redhat 8.x

$ yum install fontconfig

$ yum groupinstall Fonts # Only needed for Chinese/Japanese

Ubuntu 8, 12, 14

$ sudo apt-get update

$ sudo apt-get install libfreetype6 libfreetype6-dev libfontconfig

$ sudo apt-get install language-support-he language-pack-he

$ sudo apt-get install culmus culmus-fancy xfonts-efont-unicode xfonts-efont-unicode-ib xfonts-intl-european msttcorefonts

Ubuntu 13

$ sudo apt-get install libfontconfig

$ sudo apt-get install language-support-he language-pack-he

$ sudo apt-get install culmus culmus-fancy xfonts-efont-unicode xfonts-efont-unicode-ib xfonts-intl-european msttcorefonts

See Administer the Reporting Service for information on configuring the service.

GNU C Libraries 

The Reporting Service requires GLIBCXX_3.4.9 or later and GLIBC_2.7 or later to run.  

 For more information and download instructions, see https://www.gnu.org/software/libc/.