This series of shell scripts and associated control files may be used to
create a customized regime of administration and management for the
Performance Co-Pilot (see
PCPintro(1))
inference engine,
pmie(1).
pmie_daily
is intended to be run once per day, preferably in the early morning, as
soon after midnight as practicable. Its task is to rotate the log files
for the running
pmie
processes - these files may grow without bound if the
``print'' action is used, or any other
pme
action writes to its stdout/stderr streams.
After some period, old
pmie
log files are discarded.
This period is 14 days by default, but may be changed using the
-k
option. Two special values are recognized for the period (discard),
namely
0
to keep no log files beyond the current one, and
forever
to prevent any log files being discarded.
Log files can optionally be compressed after some period (compress),
to conserve disk space. This is particularly useful for large numbers of
pmie
processes under the control of
pmie_check.
The
-x
option specifies the number of days after which to compress archive data
files, and the
-X
option specifies the program to use for compression - by default this is
bzip2(1).
Use of the
-Y
option allows a regular expression to be specified causing files in
the set of files matched for compression to be omitted - this allows
only the data file to be compressed, and also prevents the program from
attempting to compress it more than once. The default
regex
is ".meta$|.index$|.Z$|.gz$|.bz2|.zip$" - such files are filtered using the
-v
option to
egrep(1).
Use of the
-m
option causes
pmie_daily
to construct a summary of the log files generated for all monitored hosts
in the last 24 hours (lines matching `` OK '' are culled), and e-mail that
summary to the set of space-separated
addresses.
pmie_check
may be run at any time, and is intended to check that the desired set
of
pmie(1)
processes are running, and if not to re-launch any failed inference engines.
Use of the
-s
option provides the reverse functionality, allowing the set of
pmie
processes to be cleanly shutdown.
Both
pmie_check
and
pmie_daily
are controlled by a PCP inference engine control file that specifies the
pmie
instances to be managed. The default control file is
$PCP_PMIECONTROL_PATH
but an alternate may be specified using the
-c
option.
The control file should be customized according to the following rules.
1.
Lines beginning with a ``#'' are comments.
2.
Lines beginning with a ``$'' are assumed to be
assignments to environment variables in the style of
sh(1),
and all text following the ``$'' will be
eval'ed
by the script reading the control file,
and the corresponding variable exported into the environment.
This is particularly
useful to set and export variables into the environment of
the administrative script, e.g.
$ PMCD_CONNECT_TIMEOUT=20
Warning:
The
$PCP_PMIECONTROL_PATH
file is a potential security risk if it is writable by any user other
than root.
3.
There should be one line in the control file
for each
pmie
instance of the form:
hosty|nlogfileargs
4.
Fields within a line of the control file
are separated by one or more spaces or tabs.
5.
The
first
field is the name of the host that is the default source of the
performance metrics for this
pmie
instance.
6.
The
second
field indicates whether this
pmie
instance needs to be started under the control of
pmsocks(1)
to connect to a
pmcd
through a firewall (y
or
n).
Note that
pmsocks
is part of the
pcp
product distribution, rather than the
pcp_eoe
distribution, and as such may not be installed on your system. Refer to
PCPintro (1)
for full details.
8.
The
third
field is the name of the
pmie
activity log file.
A useful convention is that
pmie
instances monitoring the local host
with hostname
myhost
are maintained in the directory
$PCP_LOG_DIR/pmie/myhost,
while activity logs for the remote host
mumble
are maintained in
$PCP_LOG_DIR/pmie/mumble.
This is consistent with the way
pmlogger(1)
maintains its activity logs and archive files.
9.
All other fields are interpreted as arguments to be passed to
pmie(1).
Most typically this would be the
-c
option.
The following sample control lines specify one
pmie
instance monitoring the local host (wobbly),
and another monitoring performance metrics from the host
splat.
wobbly n PCP_LOG_DIR/pmie/wobbly -c pmie/config.default
splat n PCP_LOG_DIR/pmie/splat -c pmie/splat/cpu.conf
A typical
crontab(5)
entry for periodic execution of
pmie_check
is given in
$PCP_VAR_DIR/config/pmie/crontab
and shown below.
# daily processing of pmie logs
14 0 * * * $PCP_BINADM_DIR/pmie_daily
# every 30 minutes, check pmie instances are running
28,58 * * * * $PCP_BINADM_DIR/pmie_check
Alternate redirection of the output from the
cron(1)
execution of the script may be controlled as follows:
(1)
The
-V
option to the script will enable verbose tracing of their activity.
By default the script generates no output unless some error or warning
condition is encountered.
(2)
To redirect the e-mail from
cron(1)
away from the root login,
+
Instead of using the ``root'' login,
create a special account with uid equal to 0, e.g. su_pcp.
The password may be locked and/or the shell invalid to prevent login
or
su (1),
but the home directory should exist.
For example the following entry in
/etc/passwd:
Create a
$HOME/.forward
for
su_pcp,
else an entry in
/usr/lib/aliases
for
su_pcp,
redirecting the e-mail to a real user or user(s).
+
Add the ``crontab'' entries above to the crontab file for
su_pcp
not
root,
e.g. in the file
/usr/spool/cron/crontabs/su_pcp
The
-N
option enables a ``show me'' mode, where the actions are echoed,
but not executed, in the style of ``make -n''.
Using
-N
in conjunction with
-V
maximizes the diagnostic capabilities for debugging.
FILES
$PCP_PMIECONTROL_PATH
the default PCP inference engine control file
Warning:
this file is a potential security risk if it is writable by any user
other than root.
$PCP_VAR_DIR/config/pmie/crontab
sample crontab for automated script execution by root
$PCP_LOG_DIR/pmie/hostname
default location for the pmie log file for the host
hostname
$PCP_LOG_DIR/pmie/hostname/lock
transient lock file to guarantee mutual exclusion during
pmie
administration for the host
hostname
- if present, can be safely removed if neither
pmie_daily
nor
pmie_check
are running
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(4).