Provided by: libpcp3-dev_5.3.6-1build1_amd64 bug

NAME

       pmDiscoverSetup,       pmDiscoverSetSlots,       pmDiscoverSetEventLoop,      pmDiscoverSetConfiguration,
       pmDiscoverSetMetricRegistry, pmDiscoverClose -  asynchronous  archive  location  and  contents  discovery
       services

C SYNOPSIS

       #include <pcp/pmwebapi.h>

       int pmDiscoverSetup(pmDiscoverModule *module, pmDiscoverCallBacks *callbacks, void *arg);

       int pmDiscoverSetSlots(pmDiscoverModule *module, void *slots);
       int pmDiscoverSetEventLoop(pmDiscoverModule *module, void *uvloop);
       int pmDiscoverSetConfiguration(pmDiscoverModule *module, struct dict *config);
       int pmDiscoverSetMetricRegistry(pmDiscoverModule *module, struct mmv_registry *registry);

       int pmDiscoverClose(pmDiscoverModule *module);

       cc ... -lpcp_web

DESCRIPTION

       The  pmDiscoverSetup and related functions are an integral part of the libpcp_web API library, as used by
       and described in  pmwebapi(3),  pmproxy(1),  pmseries(1)  and  elsewhere.   These  functions  provide  an
       asynchronous event driven mechanism to automatically discover PCP archives created by pmlogger(1) and any
       other application capable of writing PCP archives.  This includes pmrep(1) and other  applications  using
       the LOGIMPORT(3) API for importing performance data into the PCP infrastructure and writing PCP archives.

       The  pmDiscover API services dynamically discover, monitor and manage directories of PCP archives as they
       are created, written to, compressed  and  eventually  deleted.   The  underlying  archive  life-cycle  is
       normally  managed  by the PCP log management infrustructure (see pmlogger_daily(1)).  Discovered archives
       that are active (currently being written) are "log-tailed" to  extract  near  live/real-time  performance
       data  which  is  then  passed  off  via  registered  callbacks for further processing.  Archives that are
       compressed or inactive are tracked/monitored but not log-tailed.

       The pmDiscover routines can be configured to automatically discover and monitor PCP archives  in  one  or
       more   directories  as  specified  in  the  pmDiscoverModule,  which  is  initially  set  up  by  calling
       pmDiscoverSetConfiguration to create  a  module  of  type  pmDiscoverModule,  as  described  above.   The
       resulting  module  is  then passed to pmDiscoverSetup along with an initialized structure of callbacks of
       type pmDiscoverCallBacks.

       Setting up a discovery module and callbacks would normally declare  an  instance  of  pmDiscoverSettings,
       e.g.

            #include <pcp/pmwebapi.h>

            static pmDiscoverSettings someapp_discover = {
                .callbacks.on_source        = pmSomeappDiscoverSource,
                .callbacks.on_closed        = pmSomeappDiscoverClosed,
                .callbacks.on_labels        = pmSomeappDiscoverLabels,
                .callbacks.on_metric        = pmSomeappDiscoverMetric,
                .callbacks.on_values        = pmSomeappDiscoverValues,
                .callbacks.on_indom         = pmSomeappDiscoverInDom,
                .callbacks.on_text          = pmSomeappDiscoverText,
                .module.on_info             = someapp_logging_function,
            };

       And then initialize this with API calls similar to the following:

            pmDiscoverSetEventLoop(&someapp_discover.module, myevents);
            pmDiscoverSetConfiguration(&someapp_discover.module, myconfig);
            pmDiscoverSetMetricRegistry(&someapp_discover.module, metric_registry);
            pmDiscoverSetup(&someapp_discover.module, &someapp_discover.callbacks, &privatedata);

       The  above  code  must then implement each of the declared callbacks etc. to do whatever is required with
       the data passed in to the callback.  Prototypes for these  callbacks  can  be  found  in  the  pmwebapi.h
       header.  The callbacks will be made asynchronously, as archives are discovered or deleted and as new data
       is written to active archive log volume and metadata files.

       In the case of pmproxy(1), callbacks are registered to capture performance data, which is  then  sent  to
       redis(1)  as  the  database  back-end for fast scalable time-series queries by clients of the PMWEBAPI(3)
       REST API services.  Such clients include the pmseries(1) application and pmproxy(1), which is  the  back-
       end REST API server for grafana-pcp, a native grafana-server(1) data-source for PCP.

DIAGNOSTICS

       Generally zero on success, or on error a negative return code, see pmerr(1).

FILES

       The  default  archive  directory  is  $PCP_LOG_DIR,  which  is  normally  /var/log/pcp/pmlogger.  The API
       recursively descends all sub-directories and also dynamically discovers any new directories  or  archives
       found therein.

SEE ALSO

       grafana-server(1),  pmerr(1),  pmlogger(1),  pmproxy(1), pmseries(1), PMWEBAPI(3), mmv_stats_registry(3),
       PMAPI(3), pmErrStr(3), pcp.conf(5) and pcp.env(5).