help | logout
procinfo

procinfo

Name

procinfo -- Monitors specific processes or groups of processes.

Description

The procinfo module allows you to monitor the details of specific processes. The modules cpustat, memstat, and proccount report globally on processes on the system. With procinfo, you can view the CPU, memory, runtime, and state (on non-Windows platforms) on desired processes. Processes can be specified by name (full or match), PID, parent PID, pidfile, parent pidfile, or user. If only one process matches the input, procinfo will report its name, CPU usage, memory usage, runtime, and state. Should multiple processes match the criteria, procinfo will give the number of processes, total CPU and memory usage, average runtime, and all process states.

On Linux, process information is collected through files in the "/proc" directory. Specifically, "/proc/meminfo", "/proc/uptime", "/proc/x/cmdline", and "/proc/x/stat" are used, where in the last two "x" represents the PIDs of processes on the machine.

On the Solaris OS, information is gathered through "/proc/x/psinfo" and "/proc/x/lwp", where "x" represents the PIDs of processes on the machine.

Windows 2000/XP/2003 uses the Performance Data Helper to gather all process information. Unfortunately this module is not available in Windows 9x/NT.

Configuration

Procinfo can be configured to access any number of processes. Each entry is given a name, and some method of indentifying the specific process (or processes). These methods include specifying exact process names, partial matches of process names, a PID, a parent PID (PPID), pidfile, parent pidfile (ppidfile), or owning user (on non-Windows machines). Multiple forms of identification may be given to further specify an entry.

Windows users may input this information by accessing the Configuration tab for procinfo in the RSPD configuration dialog box (see Chapter 2).

In the RSPD config file, entries are specified in a manner similar to thresholds. Each entry is given a name, and then fields of the entry may be filled in by giving the name followed by a dot and then the field name. The following example should make this clear.

config
{
	# Any process with "qmail" in the name
	name = qmail
	qmail.matches = qmail

	# Process must have "/usr/sbin/mysqld" as the exact name
	name = mysqld
	mysqld.equals = /usr/sbin/mysqld

	# The specific process whose parent PID is in the file
	name = sshd
	sshd.ppidfile = /var/run/sshd.pid

	# All processes with 921 as the parent PID
	name = children
	children.ppid = 921

	# Process with jsmith as the owner and "perl" in the name
	name = smith_perl
	smith_perl.user = jsmith
	smith_perl.matches = perl
}
		

There are many ways of indentifying processes. If available, pidfiles are preferable to inputing specific PIDs as these PIDs may change if the program is restarted, whereas the name of the pidfile should remain constant. If multiple matching criteria are given, such as in the last example, all criteria must be true for a process to match.

Thresholds

Thresholds may be set on any of the defined process entries by specifying to their names. The thresholds may refer to any of the information gathered by procinfo.

All thresholds be compared to values with any of the basic logical operators (==, !=, <, >, <=, >=). CPU and memory usage are referred to by "cpu" and "mem", and may be compared to percent values. The number of matching processes is referred to as "count" and may be compared to a number with any basic logical operator. Runtime, referred to as "runtime", can be compared to lengths of time. Examples are "2 hours", "5 days, 2 hours, 2 minutes", "1 min". Finally, on non-Windows platforms, each process state may be compared against the number of matching processes with that state. The following states are allowed: unint_sleep, running, runnable, sleeping, stopped (also known as traced), paging, dead and zombie.

Here are some example thresholds:

# Example thresholds for procinfo
thresh1.threshold = ProcInfo.sshd.mem > 10%
thresh2.threshold = ProcInfo.qmail.count == 0
thresh3.threshold = ProcInfo.smith_perl.runtime > 3 days
thresh4.threshold = ProcInfo.mysqld.dead > 0 OR ProcInfo.mysqld.zombie > 0
		

History Data

The procinfo module will save each piece of process information. This data, using the RSP History Viewer or RSP Web tools, can be used to show trends in all kinds of process statistics over time.