1PMPROXY(1)                  General Commands Manual                 PMPROXY(1)
2
3
4

NAME

6       pmproxy - proxy for performance metrics collector and querying
7

SYNOPSIS

9       pmproxy  [-AdfFt?]   [-c conffile] [-C certdb] [-h host[,host ...]  [-i
10       ipaddress] [-l logfile] [-L bytes] [-M certname]  [-p  port[,port  ...]
11       [-P passfile] [-r port[,port ...]  [-s sockname] [-U username] [-x out‐
12       file]
13

DESCRIPTION

15       pmproxy acts as a protocol proxy, allowing Performance  Co-Pilot  (PCP)
16       monitoring  clients  to  connect  to  one or more pmcd(1) and/or redis-
17       server(1) instances via pmproxy.
18
19       In its default mode of operation, on platforms supporting this, pmproxy
20       provides  the  REST  API  for all PCP services (see PMWEBAPI(3) for de‐
21       tails) and interfaces to the fast, scalable time series query capabili‐
22       ties  offered  by  PCP  in  conjunction with a redis-server(1) (see pm‐
23       series(1) for details).
24
25       pmproxy can be deployed in a firewall domain, or on a cluster  ``head''
26       node  where  the IP (Internet Protocol) address of the hosts where pmcd
27       and/or redis-server are running may be unknown to  the  PCP  monitoring
28       clients,  but where the IP address of the host running pmproxy is known
29       to these clients.  Similarly, the clients may have network connectivity
30       only  to the host where pmproxy is running, while there is network con‐
31       nectivity from that host to the hosts of interest where pmcd and/or re‐
32       dis-server are running.
33
34       The behaviour of the PCP monitoring clients is controlled by either the
35       PMPROXY_HOST environment variable  or  through  the  extended  hostname
36       specification (see PCPIntro(1) for details).  If neither of these mech‐
37       anisms is used, clients will make their PMAPI(3)  connections  directly
38       to  pmcd.  If the proxy hostname syntax is used or PMPROXY_HOST is set,
39       then this should be the hostname or IP address of the system where  pm‐
40       proxy  is running, and the clients will connect to pmcd or redis-server
41       indirectly through the protocol proxy services of pmproxy.
42

OPTIONS

44       The available command line options are:
45
46       -A   Disable service advertisement.  By default, pmproxy will advertise
47            its  presence  on the network using any available mechanisms (such
48            as Avahi/DNS-SD), assisting remote monitoring tools  with  finding
49            it.  These mechanisms are disabled with this option.
50
51       -c conffile, --config=conffile
52            Specify  the path to an optional configuration conffile, with for‐
53            mat as described in the ``CONFIGURATION''  section.   This  option
54            implies pmproxy is running in timeseries mode.
55
56       -C certdb, --certdb=certdb
57            Specify  the  path  to  the  Network Security Services certificate
58            database, for (optional) secure connections.  This option  implies
59            pmproxy   is   running   in   deprecated  mode.   The  default  is
60            /etc/pki/nssdb.  Refer also to the -P option.  If it does not  al‐
61            ready  exist,  this  database can be created using the certutil(1)
62            utility.  This process and other certificate database  maintenance
63            information is provided in the PCPIntro(1) manual page and the on‐
64            line PCP tutorials.
65
66       -d, --deprecated
67            By default pmproxy prefers to run in the new timeseries mode, pro‐
68            viding  REST APIs, asynchronous network I/O, scalable time series,
69            and secure connections using OpenSSL.  However, legacy deployments
70            may  wish  to  use the original synchronous pmproxy implementation
71            using NSS and libpcp networking; this can be achieved  using  this
72            option.  Note that the -d and -t options are mutually exclusive.
73
74       -f, --foreground
75            By  default  pmproxy  is started as a daemon.  The -f option indi‐
76            cates that it should run in the foreground.  This is  most  useful
77            when trying to diagnose problems with establishing connections.
78
79       -F, --systemd
80            Like  -f,  the  -F option runs pmproxy in the foreground, but also
81            does some housekeeping (like create a ``pid'' file and change user
82            id).   This is intended for use when pmproxy is launched from sys‐
83            temd(1) and the daemonizing has already been  done  by  systemd(1)
84            and  does  not need to be done again by pmproxy, which is the case
85            when neither -f nor -F is specified.
86
87            At most one of -f and -F may be specified.
88
89       -h host, --redishost=host
90            Specify an alternate Redis host to  connect  to  for  time  series
91            querying, overriding any configuration file settings.  This option
92            implies pmproxy is running in timeseries mode.
93
94       -i ipaddress, --interface=ipaddress
95            This option is usually only used on hosts with more than one  net‐
96            work  interface  (very common for firewall and ``head'' node hosts
97            where pmproxy is likely to be deployed to arbitrate access  to  an
98            internal network).  If no -i options are specified pmproxy accepts
99            PCP client connections on any of its host's IP addresses.  The  -i
100            option is used to specify explicitly an IP address that PCP client
101            connections should be accepted on.  ipaddress  should  be  in  the
102            standard  dotted  form  (e.g.  100.23.45.6).  The -i option may be
103            used multiple times to define a list of IP addresses.  When one or
104            more  -i  options  is specified, attempted connections made on any
105            other IP addresses will be refused.
106
107       -l logfile, --log=logfile
108            By default a log file named pmproxy.log is written in the  current
109            directory.   The  -l option causes the log file to be written to a
110            given logfile instead of the default.  If this logfile  cannot  be
111            created  or is not writable, output is written to the standard er‐
112            ror instead.
113
114       -L bytes
115            PDUs received by pmproxy  from  PCP  monitoring  clients  are  re‐
116            stricted  to  a  maximum  size of 65536 bytes by default to defend
117            against Denial of Service attacks.  The -L option may be  used  to
118            change the maximum incoming PDU size.
119
120       -M certname, --certname=certname
121            By  default  pmproxy will try to use a certificate called PCP Col‐
122            lector certificate in its server role.  The -M option allows  this
123            certificate  certname  to be changed.  This option implies pmproxy
124            is running in deprecated mode.
125
126       -p port, --port=port
127            Specify an alternate port number to listen on for  client  connec‐
128            tions.  The default value is 44322.
129
130       -P passfile, --passfile=passfile
131            Specify  the  path  to  a passfile containing the Network Security
132            Services certificate database password for (optional) secure  con‐
133            nections, and for databases that are password protected.  This op‐
134            tion implies pmproxy is running in deprecated mode.  Refer also to
135            the -C option.  When using this option, great care should be exer‐
136            cised to ensure appropriate ownership ("pcp" user, typically)  and
137            permissions on this file (0400, so as to be unreadable by any user
138            other than the user running the pmproxy process).
139
140       -r port, --redisport=port
141            Specify an alternate Redis port number to connect to for time  se‐
142            ries  querying,  overriding any configuration file settings.  This
143            option implies pmproxy is running in timeseries mode.
144
145       -s sockname, --socket=sockname
146            Specify the path to a local unix domain socket (for platforms sup‐
147            porting   this   socket   family  only).   The  default  value  is
148            $PCP_RUN_DIR/pmproxy.socket.  This option implies pmproxy is  run‐
149            ning in timeseries mode.
150
151       -t, --timeseries
152            Operate in automatic archive timeseries discovery mode.  This mode
153            of operation will enable the PMWEBAPI(3) REST APIs, dynamiclly and
154            automatically  detect  active system archives being written by pm‐
155            logger(1) and import them into a redis-server(1), for fast,  scal‐
156            able  time series querying described in pmseries(1).  Note that in
157            this mode of operation, pmproxy only "log-tails" and  ingests  ac‐
158            tively  growing  archives,  e.g.  as written by one or more pmlog‐
159            ger(1) instances.  When an archive is  first  discovered  (usually
160            but  not  limited  to pmproxy startup), all metadata is loaded and
161            sent to the configured redis-server(1) however note that only  new
162            archive metric value data from the tail end of each archive is in‐
163            gested.  Compressed archives never grow and so are  ignored.   See
164            the  --load  option  to  pmseries(1) for a supported mechanism for
165            manually loading all of the metric value data from previously col‐
166            lected  (inactive)  archives, whether compressed or not.  It would
167            be normal, though not mandated, for a set of archives being  manu‐
168            ally loaded to cover the same time period, e.g. archive data for a
169            particular week for one or more hosts in the same data-centre.
170
171       -U username, --username=username
172            Assume the identity of the given username before starting  to  ac‐
173            cept incoming packets from PCP monitoring clients.
174
175       -x outfile
176            Before  the pmproxy logfile can be opened, pmproxy may encounter a
177            fatal error which prevents it from starting.  By default the  out‐
178            put  describing  this  error  is sent to /dev/tty but it may redi‐
179            rected to outfile.
180
181       -?, --help
182            Display usage message and exit.
183

CONFIGURATION

185       When running in the timeseries mode of operation, runtime configuration
186       is    relatively    complex    and    typically    handled    via   the
187       $PCP_SYSCONF_DIR/pmproxy/pmproxy.conf file.  This file is in the common
188       ``ini''  format, with section headers and individual variables and val‐
189       ues with each section.  The configuration file installed as part of PCP
190       documents every available section and option.
191
192       At a high level, the [pmproxy] section can be used to explicitly enable
193       or disable each of the different protocols.
194
195       The [redis] section allows connection information for one or more back‐
196       ing  redis-server  processes  to  be  configured (hostnames and ports).
197       Note to access multiple (scalable) Redis servers, the servers  variable
198       in  this  section can be a comma-separated list of hostname:port pairs.
199       Alternatively, it can be  a  single  redis-server  host  that  will  be
200       queried  using  the  "CLUSTER  INFO" command to automatically configure
201       multiple backing hosts, described  at  https://redis.io/topics/cluster-
202       spec.
203
204       In earlier versions of PCP (before 6) an alternative configuration set‐
205       ting section was used for this purpose - Redis servers  were  specified
206       in  the [pmseries] section and this is still accepted as a fallback for
207       backwards compatibility.
208

STARTING AND STOPPING PMPROXY

210       Normally, pmproxy is started automatically at  boot  time  and  stopped
211       when  the system is being brought down.  Under certain circumstances it
212       is necessary to start or stop pmproxy manually.  To do  this  one  must
213       become superuser and type
214
215       # $PCP_RC_DIR/pmproxy start
216
217       to start pmproxy, or
218
219       # $PCP_RC_DIR/pmproxy stop
220
221       to  stop  pmproxy.   Starting pmproxy when it is already running is the
222       same as stopping it and then starting it again.
223
224       Normally pmproxy listens for PCP client connections on TCP/IP port num‐
225       ber  44322  (as  well  as  44323 with timeseries enabled) registered at
226       https://www.iana.org/.  Either the environment variable PMPROXY_PORT or
227       the -p command line option may be used to specify alternative port num‐
228       ber(s) when pmproxy is started; in each case, the  specification  is  a
229       comma-separated  list  of  one  or more numerical port numbers.  Should
230       both methods be used or multiple -p options appear on the command line,
231       pmproxy  will listen on the union of the set of ports specified via all
232       -p options and the PMPROXY_PORT environment variable.   If  non-default
233       ports  are  used  with  pmproxy care should be taken to ensure that PM‐
234       PROXY_PORT is also set in the environment  of  any  client  application
235       that  will  connect to pmproxy, or that the extended host specification
236       syntax is used (see PCPIntro(1) for details).
237

DIAGNOSTICS

239       If pmproxy is already running  the  message  "Error:  OpenRequestSocket
240       bind: Address already in use" will appear.  This may also appear if pm‐
241       proxy was shutdown with an outstanding request from a client.  In  this
242       case,  a  request socket has been left in the TIME_WAIT state and until
243       the system closes it down (after some timeout period) it  will  not  be
244       possible to run pmproxy.
245
246       In  addition  to  the standard PCP debugging options, see pmdbg(1), pm‐
247       proxy currently supports  the  debugging  option  context  for  tracing
248       client connections and disconnections.
249

FILES

251       PCP_PMPROXYOPTIONS_PATH
252            command    line   options   for   pmproxy   when   launched   from
253            $PCP_RC_DIR/pmproxy All the command line option lines should start
254            with a hyphen as the first character.
255
256       $PCP_SYSCONFIG_DIR/pmproxy
257            Environment  variables  that  will  be  set when pmproxy executes.
258            Only settings of the form "PMPROXY_VARIABLE=value"  will  be  hon‐
259            oured.
260
261       ./pmproxy.log
262            (or $PCP_LOG_DIR/pmproxy/pmproxy.log when started automatically)
263            All messages and diagnostics are directed here
264
265       /etc/pki/tls
266            default  OpenSSL certificate database directory, used for optional
267            Secure Socket Layer connections in timeseries mode  of  operation.
268            These  certificates  can  be created and queried using the openssl
269            tool, amongst others.
270
271       /etc/pki/nssdb
272            default Network Sercity Services (NSS)  database  directory,  used
273            for optional Secure Socket Layer connections in deprecated mode of
274            operation.  This database can be created and queried using the NSS
275            certutil  tool, amongst others.  This is only used when pmproxy is
276            running in deprecated mode.
277

ENVIRONMENT

279       In addition to the PCP environment variables described in the PCP ENVI‐
280       RONMENT section below, there are several environment variables that in‐
281       fluence the interactions between a PCP monitoring client,  pmproxy  and
282       pmcd.
283
284       PMCD_PORT
285              For  the PCP monitoring client this (or the default port number)
286              is passed to pmproxy and used to connect to pmcd.  In the  envi‐
287              ronment of pmproxy PMCD_PORT is not used.
288
289       PMPROXY_HOST
290              For the PCP monitoring client this is the hostname or IP address
291              of the host where pmproxy is running.  In recent versions of PCP
292              (since version 3) this has been superseded by the extended host‐
293              name syntax (see PCPIntro(1) for details).
294
295       PMPROXY_PORT
296              For the PCP monitoring client this is the port on which  pmproxy
297              will accept connections.  The default is 44322, as well as 44323
298              with timeseries enabled.
299
300       PMCD_CONNECT_TIMEOUT, PMCD_RECONNECT_TIMEOUT and PMCD_REQUEST_TIMEOUT
301              (see PCPIntro(1)) For the PCP monitoring client,  setting  these
302              environment variables will modify the timeouts used for interac‐
303              tions between the client and pmproxy (independent of which  pmcd
304              is  being  used).   For pmproxy these same environment variables
305              control the timeouts between pmproxy and all  pmcd(1)  instances
306              (independent of which monitoring client is involved).
307
308       If  set  to  the  value  1, the PMPROXY_LOCAL environment variable will
309       cause pmproxy to run in a localhost-only mode of  operation,  where  it
310       binds only to the loopback interface.
311
312       The  PMPROXY_MAXPENDING  variable  can  be  set to indicate the maximum
313       length to which the queue of pending client connections may grow.
314

PCP ENVIRONMENT

316       Environment variables with the prefix PCP_ are used to parameterize the
317       file  and  directory names used by PCP.  On each installation, the file
318       /etc/pcp.conf contains the  local  values  for  these  variables.   The
319       $PCP_CONF  variable may be used to specify an alternative configuration
320       file, as described in pcp.conf(5).
321
322       For environment variables affecting PCP tools, see pmGetOptions(3).
323

SEE ALSO

325       PCPIntro(1),  pmcd(1),  pmdbg(1),  pmlogger(1),   pmseries(1),   redis-
326       server(1),  PMAPI(3),  PMWEBAPI(3),  pmGetOptions(3),  pcp.conf(5)  and
327       pcp.env(5).
328
329
330
331Performance Co-Pilot                  PCP                           PMPROXY(1)
Impressum