Provided by: libpcp4-dev_7.0.2-1_amd64 bug

NAME

       pmLoadDerivedConfig - load derived metric definitions from files

C SYNOPSIS

       #include <pcp/pmapi.h>

       int pmLoadDerivedConfig(char *path);

       cc ... -lpcp

DESCRIPTION

       Derived  metrics  may  be  used  to  extend the available metrics with new (derived) metrics using simple
       arithmetic expressions.  The definitions of these metrics can be persisted and loaded programmatically by
       monitor tools using pmLoadDerivedConfig.

       The path parameter defines a colon separated list of files and/or directories (the syntax is the same  as
       for  the $PATH variable for sh(1)), from which derived metric specifications are to be sourced.  The path
       components are expanded into a list of files as follows: if a component is a  file,  then  that  file  is
       added  to  the  list,  else if a component is a directory then recursive descent is used to enumerate all
       files below that directory and these are added to the list.  Each file in the resulting list is parsed in
       order, and according to the derived metrics syntax described below.

       Each line of the file(s) identified by path is either a comment line (with a ``#'' in the first  position
       of the line) or the declaration of a derived performance metric, specified as:

       * the name of the derived metric, using the same ``dot notation'' syntax that is used for PCP performance
         metrics, see PCPIntro(1) and PMNS(5).
       * an equals sign (``='')
       * a valid expression for a derived metric, as described in pmRegisterDerived(3).

       For  each line containing a derived metric definition, pmRegisterDerived(3) is called to register the new
       derived metric.

       Once a derived metric has been declared, it may be assigned additional attributes  with  a  line  of  the
       form:

       * the name of the derived metric,
       * a left parenthesis, an attribute type and a right parenthesis,
       * an equals sign (``=''),
       * an attribute value.

       Currently,  attribute  type  may  be either oneline or helptext to designate the ``one line'' or expanded
       help text to be associated with the derived metric, see pmLookupText(3).

       The attribute value may be either arbitrary text following the ``='' and ending at the end of  the  line,
       else  a  string  enclosed  in either single quotes (') or double quotes (").  In the latter case, the at‐
       tribute value may span multiple lines, and a simple escape mechanism is supported, namely for any charac‐
       ter ``x'', ``\x'' is replaced by ``x'' (this allows quotes to be escaped within a string,  for  example),
       and  there is a special case when the ``\'' comes at the end of the line in which case the following new‐
       line is not included in the attribute value.

       Outside of attribute values, white space is ignored in the lines, and blank lines are ignored altogether.

       Because pmLoadDerivedConfig may process many files, each of which may contain many derived metric  speci‐
       fications,  it  is  not possible to provide a specific error status on return.  Hence the result from pm‐
       LoadDerivedConfig will be the number of derived metrics successfully loaded from files on the given path.
       Catastrophic errors such as not being able to open one of the files on the given path will cause an imme‐
       diate return with a negative return value that can be passed to pmErrStr(3) to obtain the associated  er‐
       ror message.

       When errors are encountered in the derived metric specifications diagnostic messages are generated by pm‐
       RegisterDerived(3) and displayed via pmprintf(3).

EXAMPLE

       # sample derived metric definitions
       bad_in_pkts = network.interface.in.errors + network.interface.in.drops
       # note the following would need to be on a single line ...
       disk.dev.read_pct = 100 * delta(disk.dev.read) /
                   (delta(disk.dev.read) + delta(disk.dev.write))
       disk.dev.read_pct(oneline) = percentage of disk reads
       disk.dev.read_pct(helptext) = '\
       Percentage of disk reads compared to the total number of
       disk reads and disk writes.'

SEE ALSO

       sh(1), PCPIntro(1), PMAPI(3), pmLookupText(3), pmRegisterDerived(3), pmprintf(3) and PMNS(5).

Performance Co-Pilot                                                                      PMLOADDERIVEDCONFIG(3)