PMIECTL(1) | General Commands Manual | PMIECTL(1) |
pmiectl - manage and control Performance Co-Pilot inference engines
pmiectl [-afmNV?] [-C check_args] [-c class] [-i ident] [-p policy] command [host ...]
pmiectl may be used to manage non-primary instances of the Performance Co-Pilot (PCP) inference engine pmie(1). This would be most relevant in a PCP inference engine ``farm'' where many pmie(1) instances would be evaluating rules against the performance data collected from pmcd(1) on many remote hosts.
The primary pmie(1) instance is closely linked to the local pmcd(1) process and as a consequence shares the same control infrastructure, namely systemd(1) or the PCP init(1) ``rc scripts''. This is why the primary pmie(1) instance cannot be managed with pmiectl.
For brevity in the description below, the term ``instance'' means a pmie(1) instance.
All instances managed by pmiectl, pmie_check(1) and pmie_daily(1) abide by the following rules:
Each pmiectl execution manages one or more instances updating the associated control files and then running pmie_check(1) to effect the desired change.
The host arguments are usually valid host names. For all commands except create and cond-create (described below) the host arguments may also be egrep(1) regular expressions that match the whole of a valid host name, so the pattern used is actually ^host$. For example foo.* (matches all host names beginning with ``foo'') or .*foo (matches all host names ending with ``foo'') or .*[fF][oO][oO].* (matches all host names containing ``foo'' in upper, lower or mixed case).
The combination of a class from the optional -c option (or default) and the host arguments to each command identifies a target of set instances to which the command operation should be applied.
The -i option may be used with the create or cond-create commands to override the instance identity that is specified in the ident section of the class policy file (see the CLASS POLICY FILE section below). Since the identifier must be unique across all instances and all classes, it only makes sense to use this option when there is a single host argument.
Given the tasks that pmiectl is undertaking it usually must be run as ``root'', the exceptions being the status command or when the -N option is specified.
command is one of the following:
The -p option may be used to identify a class policy file other than the one found in the standard place, i.e. $PCP_SYSCONF_DIR/pmie/class.d/classname.
At least one host must be specified for the create command.
If a -c option is specified, then only the class classname will be considered, otherwise all classes will be considered. In the latter case, if none of the conditions in any of the classes evaluates to true, the the special pmfind class is used (this is the ``default'' class for the cond-create command when all else fails).
If more than one class evaluates to true then a composite pmie(1) configuration file is created and the instance is also assigned to the special pmfind class. The composite configuration file may contain a mix of explicit configuration clauses and the more general conditional configuration clauses as understood by the pmieconf(1) tool.
If the target set intentionally contains more than one instance, then the -a option should be used (this is designed to reduce the risk of accidentally starting a potentially large number of pmie(1) processes).
If an instance in the target set is already started, no change is made (see the restart command to force new instances to be launched).
If the target set intentionally contains more than one instance, then the -a option should be used (this is designed to reduce the risk of accidentally stopping a potentially large number of pmie(1) processes).
If an instance in the target set is already stopped, no change is made but a warning is issued.
If the target set intentionally contains more than one instance, then the -a option should be used (this is designed to reduce the risk of accidentally stopping and starting a potentially large number of pmie(1) processes).
If an instance in the target set is already stopped, a warning is issued before the instance is started.
If the target set intentionally contains more than one instance, then the -a option should be used (this is designed to reduce the risk of accidentally terminating a potentially large number of pmie(1) processes and removing their pmie_check(1) configurations).
The policy file linked to the class of an instance to be destroyed may contain a destroy section that may influence if and how the destroy operation should be performed. This may require a -p option to find the associated class policy file.
The class policy checking can be by-passed using the -f (force) command line option.
A class policy file contains a number of sections, each section begins with a line that simply starts with the name of the section followed enclosed by ``['' and ``]''.
Lines beginning with a hash (#) are treated as comments and ignored. Blank or empty lines are also ignored.
The typical location of the policy file for the class foo is $PCP_SYSCONF_DIR/pmie/class.d/foo.
Before the control line there should be a line that defines
the version of the control line that follows, i.e.
$version=1.1
If this is missing, pmiectl will assume the version is 1.1 and insert
the line when the instance is created.
pmiectl will also add the class name during creation. e.g.
$class=foo
Each non-blank line in the create section is a condition of the form function(arg), where function is one of the following:
The intent is to allow different decisions to be made when discovery service, e.g. pmfind(1), notices that a host associated with an instance is no longer present. But in the current version this is not implemented and the destroy section syntax and semantics is not yet defined.
A sample class policy file is as follows:
# policy file for the foo class [class] foo [ident] foo-%h [control] $version=1.1 %h n n PCP_LOG_DIR/pmie/%i/pmie.log -c foo-metrics.config [create] # matches all hosts hostname(.*) [destroy] # still to be defined
The available command line options are:
Environment variables with the prefix PCP_ are used to parameterize the file and directory names used by PCP. On each installation, the file /etc/pcp.conf contains the local values for these variables. The $PCP_CONF variable may be used to specify an alternative configuration file, as described in pcp.conf(5).
egrep(1), init(1), PCPIntro(1), pmcd(1), pmieconf(1), pmie(1), pmie_check(1), pmie_daily(1), systemd(1), PMAPI(3), pmDerivedRegister(3) and pcp.conf(5).
PCP | Performance Co-Pilot |