Provided by: libpcp-pmda3-dev_5.3.7-1_amd64 bug

NAME

       pmdaLabel, pmdaSetLabelCallBack - fill pmdaLabelSet structures with metric labels

C SYNOPSIS

       #include <pcp/pmapi.h>
       #include <pcp/pmda.h>

       int pmdaLabel(int ident, int type, pmLabelSet **sets, pmdaExt *pmda);
       int pmdaSetLabelCallBack(pmdaInterface *dispatch, pmdaLabelCallBack callback);

       cc ... -lpcp_pmda -lpcp

DESCRIPTION

       As  part  of the Performance Metrics Domain Agent (PMDA) API (see PMDA(3)), pmdaLabel uses
       the standard PMDA(3) data structures to return the labels for performance domain, instance
       domain, metric or individual instances in "JSONB" format in the given sets data structure.

       The  type argument determines the interpretation of ident and the requested form of label,
       as follows:

       PM_LABEL_DOMAIN
           when ident is a PMDA domain identifier,

       PM_LABEL_CLUSTER
           when ident is a metric identifier and labels for the cluster  containing  that  metric
           are being requested.

       PM_LABEL_ITEM
           when ident is a metric identifier,

       PM_LABEL_INDOM
           when ident is an instance domain identifier, or

       PM_LABEL_INSTANCES
           when  ident  is  a  metric  identifier and labels for all instances of that metric are
           being requested.

       The label sets pointer must be initialised to NULL before calling pmdaLabel and  space  is
       only  to be allocated when labels are present and returned.  In this case, the return code
       must indicate the number of label sets that have been allocated.  This will only  ever  be
       greater than one in the PM_LABEL_INSTANCES case.

       This  is one of the few generic callbacks in libpcp_pmda (see PMDA(3)) that is incomplete,
       requiring a further pmdaLabelCallBack method of its own.  The additional  callback  should
       be  registered  using  pmdaSetLabelCallBack  and  the  pmdaLabelCallBack  method  has  the
       following prototype:
       int func(pmInDom indom, unsigned int inst, pmLabelSet **set)

       The purpose of the pmdaLabelCallBack routine is to return the label(s) for  an  individual
       instance  inst  of  a  given  instance  domain, indom.  Its successful return code differs
       significantly to pmdaLabel, as described below.

CAVEAT

       The PMDA must be using PMDA_PROTOCOL_7 or later, as specified in the call to pmdaDSO(3) or
       pmdaDaemon(3).

DIAGNOSTICS

       On  success  pmdaLabel  returns the number of label sets created.  This is usually zero or
       one, except in the case of PM_LABEL_INSTANCES where more than one label sets will often be
       returned, one for each instance of the requested metric.

       By contrast, on success of the pmdaLabelCallBack routine the number of labels successfully
       added to the provided labelset pointer must be returned (and not the total number of label
       sets).

       If  labels  for  the requested entity could not be obtained due to a catastrophic failure,
       such as an out of memory condition, these routines will return a negative error code.

SEE ALSO

       pminfo(1),  malloc(3),  PMAPI(3),  PMDA(3),  pmdaDaemon(3),  pmdaDSO(3),  pmdaInit(3)  and
       pmLookupLabels(3).