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:
  • MySQL executable:
  • Events service launcher:
  • Reporting service launcher:

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 and CentOS

Use yum to install the library, such as:

  • yum install libaio
  • yum install numactl

Install the library RPM from the Fedora website:

  • yum install libaio
  • yum install numactl

Use apt-get, such as:

  • sudo apt-get install libaio1
  • sudo apt-get install numactl
DebianUse a package manager such as APT to install the library (as described for the Ubuntu instructions above). 

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

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:

      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: 

      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:

    2.  Add the line:

      session required
  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 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 7.x, Redhat 7.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