AppDynamics Process Monitoring Extension


Use Case

This extension requires AppDynamics Java Machine agent.

Process Monitoring Extension gathers process metrics from a Linux/Windows/Solaris/AIX machine and reports to AppDynamics Controller. It utilizes the ps command in Unix like systems and Sigar library in Windows to fetch basic process metrics.

This can also be used as a process checker (identify whether a process is running/not running) by its metric "Running Instances". If the configured process is not running, the "Running Instances" metric value reported is "ZERO".

Apart from the "Running Instances" metric, other process metrics are reported ONLY if the extension detects a single instance of the process running ("Running Instances" metric value is "ONE").

Note: If running on Windows, this extension has Sigar dependencies. Please make sure to copy Windows OS related Sigar files (sigar-*.jar, sigar-amd64-winnt.dll, sigar-x86-winnt.dll) from <MachineAgent>\lib to <MachineAgent>\monitorsLibs



Before the extension is installed, the prerequisites mentioned here need to be met. Please do not proceed with the extension installation if the specified prerequisites are not met.


  1. Download the attached
  2. Configure the extension by referring to the below section.
  3. Verify the extension output in workbench mode and make sure desired metrics are reported. Check in WorkBench section for details.
  4. Restart the Machine Agent



Note: Please make sure to not use tab (\t) while editing yaml files. You may want to validate the yaml file using a yaml validator

Note: Please use workbench mode to verify the metrics while experimenting with various configurations in config.yml to arrive at the desired result.

Edit the config.yml file in <MACHINE_AGENT_HOME>/monitors/ProcessMonitor/ to update the following.

  1. metricPrefix: The metricPrefix of the extension has to be configured as specified here. Please make sure that the right metricPrefix is chosen based on your machine agent deployment, otherwise this could lead to metrics not being visible in the controller.
  2. instances: process instances that are to be monitored. displayName which is mandatory is used to render the process name on the metric browser and all the process metrics are reported under this name. The process to be monitored can be configured in three ways: regex/pid/pidFile. regex is a regular expression used to match the process and is built based on the command line path to the process.
    For process checker use case with regex, please make sure the pattern uniquely identifies the process of interest.
    For help picking the regex in various OS's please refer to the Troubleshooting section Step 3.
   - displayName: "machine agent"
     regex: ".* machineagent.jar"
   - displayName: "ssh"
     pid: "1056"
   - displayName: "mysql"
     pidFile: "/opt/mysql/db/"
    While using regex, it is advisable to use any of the online regex validators (eg: regextester) to match the regex against the process command line path to verify if it matches.
  1. Commands (Optional). The underlying OS command can be modified to fetch any additional metrics if required. Please execute the command and make sure there is a valid output in a tabular format. Please check man pages for unix like systems. We do not support this option for Windows environment.
  process: "ps -eo pid,%cpu=CPU%,%mem=Memory%,rss=RSS,args"
  process: "ps -eo pid,pcpu=CPU%, -o pmem=Memory%, -o rss=RSS -o args"
  process: "ps -eo pid,pcpu=CPU%,pmem=Memory%,rss=RSS,args"
  1. metrics (Optional). Existing metric properties can be modified in this section. If additional metrics are added in the commands, please configure them here with appropriate metric properties for extension to report these metrics. Supported properties are alias, multiplier, delta.
  - CPU%:
     multiplier: 1
  - Memory%:
     alias: "Memory%"
  - RSS:
     alias: "Resident Set Size"
  - Running Instances:
     alias: "Running Instances"



  1. Running Instances: Count of the matched processes that are identified by regex. The following metrics are reported only if this metric value is ONE.
  2. CPU%
  3. Resident Set Size
  4. Memory% (Not reported for Windows)


Configuring additional Metrics

Additional metrics can be configured in unix like systems by adding them to the respective commands in config.yml. For example if Virtual Memory Size of a Linux process is needed, the linux command can be modified to the following

      process: "ps -eo pid,%cpu=CPU%,%mem=Memory%,rss=RSS,vsz=VSZ,args"

and the metric properties to

   - VSZ:
      alias: "Virtual Memory Size"


Credentials Encryption

Please visit this page to get detailed instructions on password encryption. The steps in this document will guide you through the whole process.

Extensions Workbench

Workbench is an inbuilt feature provided with each extension in order to assist you to fine tune the extension setup before you actually deploy it on the controller. Please review the following document on How to use the Extensions WorkBench


  1. Please look at the troubleshooting document and make sure that everything is followed correctly.
  2. In windows, if there is a java.lang.NoClassDefFoundError: org/hyperic/sigar/SigarException in machine-agent.log, please copy Windows OS related Sigar files (sigar-*.jar, sigar-amd64-winnt.dll, sigar-x86-winnt.dll) from <MachineAgent>/lib to <MachineAgent>/monitorsLibs.
  3. Retrieving command line path and building regex for a process:
    regex in config.yml is a regular expression used to match the process and is built on the command line path to the process. Command line of the process can be retrieved by executing ps/wmic command on a terminal in *nix/windows systems.
    Unix-like systems
    The args option in the command used (in config.yml) to fetch process statistics gives the command line path to the process.
    Linux command:
      ps -eo pid,%cpu=CPU%,%mem=Memory%,rss=RSS,args | grep "java"
      2877 57.3     1.6    264708 java -jar machineagent.jar
    command line here is "java -jar machineagent.jar" and regex could be ".*machineagent.jar" Windows
    The command line path to the process can be figured out either using Task Manager or by using wmic command.
    Task Manager:
    Open Task Manager and in the Processes tab, check if "Command Line" column is already displayed. If not, click on View -> Select Columns in the menu bar and checkbox the "Command Line" column to appear on the Processes page. Pick the Command Line of the process of interest.
    wmic process get /format:list | findstr java
     CommandLine=jre\bin\java.exe  -jar machineagent.jar
    command line here is "C:\machineagent-bundle-32bit-windows-\jre\bin\java.exe -jar machineagent.jar" and regex could be ".*java.exe -jar machineagent.jar"
  4. For regex, some examples and their outcomes:
 process command line: "/opt/push-jobs-client/bin/ruby /opt/push-jobs-client/bin/pushy-client -c /etc/push-jobs-clientb"
   regex                         Matches
   ".*pushy-client.*"            True
   ".*pushy-client .*"           True
   ".*pushy-client  .*"          False
   ".* pushy-client.*"           False

Please test your regex using any of the online validators (eg: regextester).

Support Tickets

If after going through the Troubleshooting Document you have not been able to get your extension working, please file a ticket and add the artifacts requested in Contacting Support.

For any support related questions, you can also contact


Metric Browser

Custom Dashboard

Screen Shot 2013-06-19 at 6.41.53 PM.png



Always feel free to fork and contribute any changes directly via GitHub.




Agent Compatibility:


Controller Compatibility:


Last Update:

24th Dec, 2020


ACE certified for Linux and Windows Server 2008 R2


2.0.1: Extension Revamped

2.0.2: Updated Licenses

2.2: Support for Machine Agent > 20.3

2.3: Upgraded to commons 2.2.4

Release Notes:

v2.3 - Updated to work with MachineAgent 21.x