summaryrefslogtreecommitdiff
path: root/man/man5/pmieconf.5
diff options
context:
space:
mode:
Diffstat (limited to 'man/man5/pmieconf.5')
-rw-r--r--man/man5/pmieconf.5308
1 files changed, 308 insertions, 0 deletions
diff --git a/man/man5/pmieconf.5 b/man/man5/pmieconf.5
new file mode 100644
index 0000000..5314463
--- /dev/null
+++ b/man/man5/pmieconf.5
@@ -0,0 +1,308 @@
+'\"macro stdmacro
+.ie \(.g \{\
+.\" ... groff (hack for khelpcenter, man2html, etc.)
+.TH PMIECONF 5 "PCP" "Performance Co-Pilot"
+\}
+.el \{\
+.if \nX=0 .ds x} PMIECONF 5 "PCP" "Performance Co-Pilot"
+.if \nX=1 .ds x} PMIECONF 5 "Performance Co-Pilot"
+.if \nX=2 .ds x} PMIECONF 5 "" "\&"
+.if \nX=3 .ds x} PMIECONF "" "" "\&"
+.TH \*(x}
+.rr X
+\}
+.SH NAME
+pmieconf \- generalized pmie rules and customizations
+.SH DESCRIPTION
+The pmieconf file formats are used by the
+.BR pmieconf (1)
+tool as a way to generalize
+.BR pmie (1)
+rule sets such that they can be easily configured for different systems and
+different environments.
+There are two completely different (although closely related) file formats
+discussed here, namely ``pmieconf-rules'' and ``pmieconf-pmie''.
+.PP
+The directory
+.B $PCP_VAR_DIR/config/pmieconf
+contains information about all the default system
+.B pmie
+generalized rules and variables, including default values for all variables.
+These files are in the pmieconf-rules format.
+Although new pmieconf-rules files can be added, the files in this directory
+should never be changed.
+Instead, use the
+.B pmieconf
+utility to change variable values in the
+.B pmie
+configuration file.
+.PP
+The pmieconf-pmie format allows site specific customizations of the rules
+contained in pmieconf-rules files and their associated variables.
+The pmieconf-pmie format is generated by
+.B pmieconf
+and should not be edited by hand.
+This generated file is in the
+.B pmie
+format, with some additional information held at the head of the file \- thus,
+the pmieconf-pmie format is a superset of the
+.B pmie
+file format (extended to hold customizations to the generalized rules, but
+also containing the actual performance rules for
+.B pmie
+to evaluate) which can also be parsed by
+.B pmie
+(all extensions are hidden within comments, and are thus meaningless to
+.B pmie
+itself).
+.PP
+The file
+.B $PCP_VAR_DIR/config/pmieconf/config.pmie
+contains local system settings for
+.B pmieconf
+configurable variables.
+The variable settings in this file replace the default values specified in
+.BR $PCP_VAR_DIR/config/pmieconf/*/* .
+.SH PMIECONF-PMIE SYNTAX
+All rule customization lines in a valid pmieconf-pmie specification
+are prefixed by ``//'' and are located at the head of the file \-
+this allows files containing a pmieconf-pmie specification to be
+successfully parsed by
+.BR pmie .
+A pmieconf-pmie must always have the first line in the form:
+.sp
+.nf
+ // pmieconf-pmie \f2version\f1 \f2pmieconf_path\f1
+.fi
+.sp
+The
+.I version
+specifies which version of the pmieconf-pmie syntax should be used to
+parse this file.
+Currently the only supported version is 1. The
+.I pmieconf_path
+specifies the path to the pmieconf-rules files which were used, by
+.BR pmieconf ,
+to generate this file. This is discussed in the
+.BR pmieconf (1)
+man page (see the
+.B \-r
+option).
+.PP
+The remainder of the specification consists of one line entries for each
+of the modified variables. The syntax for each line is:
+.sp
+.nf
+ // \f2rule_version\f1 \f2rule_name\f1 \f2rule_variable\f1 = \f2value\f1
+.fi
+.sp
+The
+.I rule_version
+and
+.I rule_name
+are used to identify the rule with which to associate the customization.
+These are followed by the
+.I rule_variable
+name (i.e. the variable of rule
+.I rule_name
+which has been changed)
+for which the new
+.I value
+is to be used.
+.PP
+A pmieconf-pmie specification must be terminated with the ``end'' keyword.
+This is used by
+.B pmieconf
+to distinguish where the customizations ends, and the actual
+.B pmie
+rule component begins.
+.SH PMIECONF-PMIE EXAMPLE
+The following example is a valid pmieconf-pmie format file, as generated by
+.BR pmieconf .
+In order to make changes by hand which are preserved by
+.BR pmieconf ,
+see the comments contained in the generated file (below) as to where such
+changes should be made.
+.sp
+.nf
+ // pmieconf-pmie 1 $PCP_VAR_DIR/config/pmieconf
+ // 1 memory.exhausted delta = "4 minutes"
+ // 1 memory.exhausted enabled = yes
+ // 1 memory.exhausted pcplog_action = yes
+ // end
+ //
+ // --- START GENERATED SECTION (do not change this section) ---
+ // generated by pmieconf on: [DATESTAMP]
+ //
+
+ // 1 memory.exhausted
+ delta = 4 minutes;
+ some_host (
+ ( avg_sample (swap.pagesout @0..9 ) ) > 0 &&
+ 30 %_sample swap.pagesout >= 5
+ ) -> shell 10 min "$PCP_BINADM_DIR/pmpost Severe demand for real memory" \\
+ " %vpgsout/s@%h";
+
+ // --- END GENERATED SECTION (changes below will be preserved) ---
+.fi
+.sp
+.PP
+To see how this all works, you can generate this file as follows:
+.sp
+.nf
+ # cat \- | pmieconf \-f /tmp/pmieconf.out \\
+ \-r $PCP_VAR_DIR/config/pmieconf/memory:$PCP_VAR_DIR/config/pmieconf/global
+ modify memory.exhausted delta "4 minutes"
+ modify memory.exhausted enabled yes
+ modify memory.exhausted pcplog_action yes
+ ^D
+ #
+.fi
+.sp
+Then verify that the generated file is a valid
+.B pmie
+configuration file using:
+.sp
+.nf
+ # pmie \-C /tmp/pmieconf.out
+.fi
+.sp
+This parses the file, and then exits after reporting any syntax errors.
+Now replace \-C with \-v (above), and watch
+.B pmie
+do its work!
+.SH PMIECONF-RULES SYNTAX
+A pmieconf-rules specification consists of a number of separate data objects
+which together form a complete rule specification (note that a specification
+may span multiple files and even multiple subdirectories).
+Each object must have an
+.I identifier
+string and a data
+.IR type ,
+followed by an (optional) list of
+.IR attribute s.
+.PP
+The generic specification of a pmieconf-rules object is thus:
+.sp
+.nf
+ \f2type\f1 \f2identifier\f1 [ \f2attribute\f1 = \f2value\f1 ]* ;
+.fi
+.sp
+The set of valid
+.IR type s
+is: "rule" (rule definition), "string" (arbitrary, double-quote enclosed
+string), "double", "integer", "unsigned", "percent" (real number between 0
+and 100), "hostlist" (space separated list of host names), "instlist" (space
+separated list of metric instance names), and the four
+.B pmie
+action types, namely
+"print", "shell", "alarm", and "syslog".
+.PP
+Rule names use the ``.'' character to introduce the concept of a rule group,
+e.g. "memory.exhausted" associates this rule with the "memory" group.
+.B pmieconf
+can operate at either the level of rule groups or individual rules.
+The group name "global" is reserved and may not be used with any rule.
+.PP
+Usually when an object is created it is associated with the current rule.
+However, if an object's name is preceded by the reserved group name "global",
+then that object is visible to all rules.
+.PP
+The set of valid
+.IR attribute s
+is: "help" (descriptive text about this object), "modify" (\f2value\f1 is
+yes/no, flags whether
+.B pmieconf
+should allow changes), "enabled" (\f2value\f1 is yes/no, flags whether this is
+on or off - only meaningful for rules and actions), "display" (yes/no - flags
+whether
+.B pmieconf
+should show this object), "default" (\f2value\f1 determined by \f2type\f1, and
+is the default value for this object), and specific to objects of rule type
+are the "version", "predicate", and "enumerate" attributes. "version" and
+"predicate" are fairly self explanatory ("predicate" must equate to a valid
+.B pmie
+rule when expanded), but "enumerate" requires further discussion.
+.PP
+The "enumerate" clause is useful when you wish to generate multiple, similar
+.B pmie
+rules from a single predicate.
+This is most useful for rule definitions wishing to use the "some_inst"
+clause in the
+.B pmie
+language across multiple hosts.
+For a rule to use these together, it must be certain that the
+instance list is the same on all of the monitored hosts.
+This is rarely true, so the "enumerate" attribute allows us to generate
+multiple rules, expanded over variables of either type "instlist" or "hostlist".
+These variables make up the value for the "enumerate" attribute \- which is
+a space-separated list of "instlist" or "hostlist" variable names.
+.PP
+Objects can be incorporated into other object definitions using the
+$\f2identifier\f1$ syntax. See the example later for more insight into
+how this is useful.
+.PP
+When
+.B pmieconf
+is generating the
+.B pmie
+configuration file, it looks at each enabled rule with N enabled
+actions (where N > 0) and expands the string:
+.sp
+.nf
+ // "version" \f2identifier\f1
+ delta = $delta$;
+ "predicate" -> $threshold$ $action1$ & ... & $actionN$ ;
+.fi
+.sp
+The delta, threshold, and action variables are defined globally
+(using the "global" keyword) for all rules, but can, of course,
+be changed at the level of an individual rule or rule group.
+.SH PMIECONF-RULES EXAMPLE
+The following is an example of a single pmieconf-rules specification,
+showing a number of different aspects of the language discussed above.
+The example defines a rule ("memory.exhausted") and a string ("rule").
+.sp
+.nf
+ rule memory.exhausted
+ default = "$rule$"
+ predicate =
+ "some_host (
+ ( avg_sample (swap.pagesout $hosts$ @0..9 ) ) > 0 &&
+ $pct$ %_sample swap.pagesout $hosts$ @0..9 >= $threshold$
+ )"
+ enabled = yes
+ version = 1
+ help =
+ "The system is swapping modified pages out of main memory to the
+ swap partitions, and has been doing this on at least pct of the
+ last 10 evaluations of this rule.
+ There appears to be insufficient main memory to meet the resident
+ demands of the current workload.";
+
+ string rule
+ default = "Severe demand for real memory"
+ modify = no
+ display = no;
+.fi
+.sp
+Note that for the above rule to be complete, "threshold" and "pct" would
+also need to be defined - for the full expression of this rule, refer to
+.IR $PCP_VAR_DIR/config/pmieconf/memory/exhausted .
+.PP
+.SH FILES
+.PD 0
+.TP 10
+.IR $PCP_VAR_DIR/config/pmieconf/ */*
+generalized system resource monitoring rules
+.TP 10
+.I $PCP_VAR_DIR/config/pmieconf/config.pmie
+default super-user settings for system resource monitoring rules
+.TP 10
+.I $HOME/.pcp/pmie/config.pmie
+default user settings for system resource monitoring rules
+.PD
+.SH SEE ALSO
+.BR pmie (1)
+and
+.BR pmieconf (1).