noble (3) pmLoadDerivedConfig.3.gz

Provided by: libpcp3-dev_6.2.0-1.1build4_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 programatically  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
       attribute  value  may  span  multiple  lines,  and a simple escape mechanism is supported, namely for any
       character ``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 newline 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
       specifications,  it  is not possible to provide a specific error status on return.  Hence the result from
       pmLoadDerivedConfig 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 immediate return with a negative return value  that  can  be  passed  to  pmErrStr(3)  to  obtain  the
       associated error message.

       When  errors  are  encountered  in the derived metric specifications diagnostic messages are generated by
       pmRegisterDerived(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).