Process - Monitoring Extension

Use Case

The AppDynamics Process extension observes active processes on a Linux/Windows/Solaris/AIX machine and displays them in the AppDynamics Metric Browser.

 

This extension works only with the standalone machine agent.

 

The Process extension retrieves the following metrics of each process/process group: 

    • CPU utilization in %
    • Memory utilization in MB
    • Memory utilization in %

There are two ways of reporting these metrics to controller by changing the flag displayByPid in config.yml.

  • If false, the aggregate metrics (sum) are reported. For eg. If there are multiple processes with the same name (i.e. 3 "java.exe" processes), the aggregate metrics with process group name are reported with an additional metric (Number of running instances). 
  • If true, each individual process metrics are reported under PID.

 

Note : By default, a Machine agent or a AppServer agent can send a fixed number of metrics to the controller. To change this limit, please follow the instructions mentioned here. For eg.

    java -Dappdynamics.agent.maxMetrics=2500 -jar machineagent.jar

 

Note: If you are running Windows, make sure that the file 'csv.xsl' is in 'C:\Windows\System32' for 32bit or 'C:\Windows\SysWOW64' or 'C:\Windows\SysWOW64\webem\en-US\csv.xsl' for 64bit OS versions (standard under Windows Server 2003). If this file is not found, the process monitor will output an error to the log file (logs/machine-agent.log) .

 

Installation

1. Download the attached ProcessMonitor.zip.

2. Unzip and deploy the downloaded file into <MACHINE_AGENT_HOME>/monitors

3. Configure the extension by referring to the below section.

4. Restart the Machine Agent.

 

In the AppDynamics Metric Browser, look for: Application Infrastructure Performance | <Tier> | Custom Metrics | <Windows/Linux> Processes or your specified path under Application Infrastructure Performance | <Tier> |.

 

Configuration

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

  1. Configure the extension by editing the config.yml file in <MACHINE_AGENT_HOME>/monitors/ProcessMonitor/.

    For eg.

        # Option to view process metrics in MetricBrowser per pid or processgroup wise.
        # If false, all the processes with same name are grouped and collective metrics are reported to AppDynamics Metric Browser.
        # If true, each process with PID can be viewed but since PID changes with process restart, this might not be the best option.
        displayByPid: false
    
        # comma-separated names of processes you want to exclude out of the reported metrics.
        #Example Linux  : java,bash,sshd
        #Example Windows: java.exe,chrome.exe
        excludeProcesses: [ ]
    
        # comma-separated Process IDs (pids) to be excluded out of the reported metrics.
        # Example: 2,343,1235,34
        excludePIDs: [ ]
    
        # Processes with an aggregated absolute memory consumption of LESS than this number
        # in Megabytes will be filtered out of the reported metrics. Default value is 100 [MB]
        memoryThreshold: 100
    
        # ONLY for OS - WINDOWS
        # csv.xsl file path - leave null for default location,
        # i.e. C:/Windows/SysWOW64/csv.xsl OR C:\\Windows\\SysWOW64\\webem\\en-US\\csv.xsl (for 64bit)
        # OR C:/Windows/System32/csv.xsl (32 bit)
        csvFilePath: ""
    
        # this is the path to the file .monitored-processes
        monitoredProcessFilePath: "monitors/ProcessMonitor/.monitored-processes"
    
        metricPrefix: "Custom Metrics|"
    
    
  2. Configure the path to the config.yml file by editing the in the monitor.xml file in the <MACHINE_AGENT_HOME>/monitors/ProcessMonitor/ directory. Below is the sample

     <task-arguments>
         <!-- config file-->
         <argument name="config-file" is-required="true" default-value="monitors/ProcessMonitor/config.yml" />
          ....
     </task-arguments>
    

 

Custom Dashboard

 

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

 

Metric Browser

 

Screen Shot 2013-06-11 at 5.52.20 PM.png

 

 Screen Shot 2013-06-11 at 5.24.41 PM.png

 

 

Contributing

 

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

 

Support

 

For any questions or feature request, please contact AppDynamics Support.

 

 

Version:

1.5.1

Compatibility:

3.7

Last Update:

06/18/2015

Platforms:

ACE certified for Linux and Windows Server 2008 R2

 

1.1.0: corrected metric aggregation, tier-specific metric reporting

1.1.1: 

  • Main part and Windows part of the Process Monitor now have debug level logging. To see the debug level logs, configure the log4j.xml file in your MachineAgent.
  • Minor bug fixes

1.2.0: Continued reporting of processes that fell below the memory threshold, even after restarting of the machine agent. 

1.3.1: Made compatible with JDK 1.5.

1.3.2: Externalized configurable path to monitored-processes file in monitor.xml

1.4: Configuration files changed and fix for Windows

1.5.1: Support for Solaris, AIX and custom flag to view metrics per pid or group