Provided by: libpcp3-dev_5.3.7-1_amd64 bug


       pmSeriesQuery, pmSeriesValues, pmSeriesLoad - fast, scalable time series querying


       #include <pcp/pmwebapi.h>

       int pmSeriesQuery(pmSeriesSettings *sp, sds *query, pmSeriesFlags flags, void *arg);
       int pmSeriesValues(pmSeriesSettings *sp, pmSeriesTimeWindow *window, int count, sds
               *series, void *arg);

       int pmSeriesLoad(pmSeriesSettings *sp, sds *query, pmSeriesFlags flags, void *arg);

       cc ... -lpcp_web


       Searching for time series identifiers and values  using  the  Performance  Co-Pilot  (PCP)
       fast,  scalable  time  series  services  is  achieved  using  the pmseries(1) utility, and
       associated pmproxy(1) REST API service.

       The implementation of these facilities is shared and available for other programs  to  use
       as  well.   The  functionality is provided through asynchronous APIs, which function in an
       event-driven fashion where callbacks are invoked for each set  of  series  identifiers  or
       values   structure   being   returned.    These   callbacks   must   be  registered  using
       pmSeriesSetup(3) before any query API calls are made.

       As a general pattern, these interfaces take an opaque (void  *  pointer)  parameter,  arg.
       This  pointer  will  be  passed  through  unchanged and is typically used to access a data
       structure maintaining state within the calling program.

       Depending on the pmseries query string provided, pmSeriesQuery  operates  in  one  of  two

       Firstly, if no time window specification is provided (square brackets), then the interface
       will return only matching  series  identifiers  and  no  values.   These  identifiers  are
       returned  via  the  on_match  callback  registered  using  pmSeriesSetup.   If  the  query
       expression includes function calls or arithmetic  operators  (rather  than  simple  metric
       names),  then  the  returned identifier is dynamically created and persistently associated
       with the expression.  The query expression may be retrieved with the pmSeriesExprs(3)  API
       call.  See also PMWEBAPI(3) and the -e option to pmseries(1).

       The  second mode is where a time window specification is used in the query string, or when
       the pmSeriesValues interface is used.  This mode provides values and time stamps  for  all
       matching  time  series identifiers having data points within the provided time window.  In
       this  case,  the  results  are  returned  via  the  on_value  callback  registered   using

       Further  metadata  (metric  names, labels, units, semantics, type, etc) about matched time
       series  and  their  values  can  be  obtained  using  the  interfaces  described  on   the
       pmSeriesDescs(3) manual page.

       Typically,  loading  of  time series is handled automatically by the pmproxy daemon, which
       uses the pmDiscoverSetup(3) series of interfaces to automatically detect and  load  logged
       time  series  from pmlogger(1).  However, it is also possible to manually load time series
       from a PCP archive using the pmSeriesLoad  interface.   The  provided  query  string  must
       provide an archive or directory to load data from using the source.path keyword.


       Where  these functions return a status code, this is always zero on success.  On failure a
       negative PMAPI error code is returned.


       pmproxy(1), pmlogger(1), pmSeriesSetup(3), pmSeriesDescs(3), pmDiscoverSetup(3),  PMAPI(3)
       and PMWEBAPI(3).