1PMPROXY(1) General Commands Manual PMPROXY(1)
2
3
4
6 pmproxy - proxy for performance metrics collector and querying
7
9 pmproxy [-AFft?] [-C dirname] [-i ipaddress] [-l logfile] [-L bytes]
10 [-M certname] [-p port[,port ...] [-P passfile] [-U username] [-x
11 file]
12
14 pmproxy acts as a protocol proxy, allowing Performance Co-Pilot (PCP)
15 monitoring clients to connect to one or more pmcd(1) and/or redis-
16 server(1) instances via pmproxy.
17
18 In its default mode of operation, on platforms supporting this, pmproxy
19 provides the REST API for all PCP services (see PMWEBAPI(3) for
20 details) and interfaces to the fast, scalable time series query capa‐
21 bilities offered by PCP in conjunction with a redis-server(1) (see
22 pmseries(1) for details).
23
24 pmproxy can be deployed in a firewall domain, or on a cluster ``head''
25 node where the IP (Internet Protocol) address of the hosts where pmcd
26 and/or redis-server are running may be unknown to the PCP monitoring
27 clients, but where the IP address of the host running pmproxy is known
28 to these clients. Similarly, the clients may have network connectivity
29 only to the host where pmproxy is running, while there is network con‐
30 nectivity from that host to the hosts of interest where pmcd and/or
31 redis-server are running.
32
33 The behaviour of the PCP monitoring clients is controlled by either the
34 PMPROXY_HOST environment variable or through the extended hostname
35 specification (see PCPIntro(1) for details). If neither of these mech‐
36 anisms is used, clients will make their PMAPI(3) connections directly
37 to pmcd. If the proxy hostname syntax is used or PMPROXY_HOST is set,
38 then this should be the hostname or IP address of the system where
39 pmproxy is running, and the clients will connect to pmcd or redis-
40 server indirectly through the protocol proxy services of pmproxy.
41
43 The available command line options are:
44
45 -A Disable service advertisement. By default, pmproxy will advertise
46 its presence on the network using any available mechanisms (such
47 as Avahi/DNS-SD), assisting remote monitoring tools with finding
48 it. These mechanisms are disabled with this option.
49
50 -c file, --config=file
51 Specify the path to an optional configuration file, with format as
52 described in the ``CONFIGURATION'' section. This option implies
53 pmproxy is running in timeseries mode.
54
55 -C dirname, --certpath=dirname
56 Specify the path to the Network Security Services certificate
57 database, for (optional) secure connections. This option implies
58 pmproxy is running in deprecated mode. The default is
59 /etc/pki/nssdb. Refer also to the -P option. If it does not
60 already exist, this database can be created using the certutil
61 utility. This process and other certificate database maintenance
62 information is provided in the PCPIntro(1) manual page and the
63 online PCP tutorials.
64
65 -d, --deprecated
66 By default pmproxy prefers to run in the new timeseries mode, pro‐
67 viding REST APIs, asynchronous network I/O, scalable time series,
68 and secure connections using OpenSSL. However, legacy deployments
69 may wish to use the original synchronous pmproxy implementation
70 using NSS and libpcp networking; this can be achieved using this
71 option. Note that the -d and -t options are mutually exclusive.
72
73 -f, --foreground
74 By default pmproxy is started as a daemon. The -f option indi‐
75 cates that it should run in the foreground. This is most useful
76 when trying to diagnose problems with establishing connections.
77
78 -F, --systemd
79 Like -f, the -F option runs pmproxy in the foreground, but also
80 does some housekeeping (like create a ``pid'' file and change user
81 id). This is intended for use when pmproxy is launched from sys‐
82 temd(1) and the daemonizing has already been done by systemd(1)
83 and does not need to be done again by pmproxy, which is the case
84 when neither -f nor -F is specified.
85
86 At most one of -f and -F may be specified.
87
88 -h host, --redishost=host
89 Specify an alternate Redis host to connect to for time series
90 querying, overriding any configuration file settings. This option
91 implies pmproxy is running in timeseries mode.
92
93 -i ipaddress
94 This option is usually only used on hosts with more than one net‐
95 work interface (very common for firewall and ``head'' node hosts
96 where pmproxy is likely to be deployed to arbitrate access to an
97 internal network). If no -i options are specified pmproxy accepts
98 PCP client connections on any of its host's IP addresses. The -i
99 option is used to specify explicitly an IP address that PCP client
100 connections should be accepted on. ipaddress should be in the
101 standard dotted form (e.g. 100.23.45.6). The -i option may be
102 used multiple times to define a list of IP addresses. When one or
103 more -i options is specified, attempted connections made on any
104 other IP addresses will be refused.
105
106 -l file, --log=file
107 By default a log file named pmproxy.log is written in the current
108 directory. The -l option causes the log file to be written to a
109 given file instead of the default. If this file cannot be created
110 or is not writable, output is written to the standard error
111 instead.
112
113 -L bytes
114 PDUs received by pmproxy from PCP monitoring clients are
115 restricted to a maximum size of 65536 bytes by default to defend
116 against Denial of Service attacks. The -L option may be used to
117 change the maximum incoming PDU size.
118
119 -M name, --certname=name
120 By default pmproxy will try to use a certificate called PCP Col‐
121 lector certificate in its server role. The -M option allows this
122 certificate name to be changed. This option implies pmproxy is
123 running in deprecated mode.
124
125 -p port, --redisport=port
126 Specify an alternate Redis port number to connect to for time
127 series querying, overriding any configuration file settings. This
128 option implies pmproxy is running in timeseries mode.
129
130 -P file, --passfile=file
131 Specify the path to a file containing the Network Security Ser‐
132 vices certificate database password for (optional) secure connec‐
133 tions, and for databases that are password protected. This option
134 implies pmproxy is running in deprecated mode. Refer also to the
135 -C option. When using this option, great care should be exercised
136 to ensure appropriate ownership ("pcp" user, typically) and per‐
137 missions on this file (0400, so as to be unreadable by any user
138 other than the user running the pmproxy process).
139
140 -s sockname, --socket=sockname
141 Specify the path to a local unix domain socket (for platforms sup‐
142 porting this socket family only). The default value is
143 $PCP_RUN_DIR/pmproxy.socket. This option implies pmproxy is run‐
144 ning in timeseries mode.
145
146 -t, --timeseries
147 Operate in automatic archive timeseries discovery mode. This mode
148 of operation will enable the PMWEBAPI(3) REST APIs, detect system
149 archives created by pmlogger(1) and import them into a redis-
150 server(1) automatically, for fast, scalable time series querying
151 described in pmseries(1).
152
153 -U user, --username=user
154 Assume the identity of the given user before starting to accept
155 incoming packets from PCP monitoring clients.
156
157 -x file
158 Before the pmproxy logfile can be opened, pmproxy may encounter a
159 fatal error which prevents it from starting. By default the out‐
160 put describing this error is sent to /dev/tty but it may redi‐
161 rected to file.
162
164 When running in the timeseries mode of operation, runtime configuration
165 is relatively complex and typically handled via the
166 $PCP_SYSCONF_DIR/pmproxy/pmproxy.conf file. This file is in the common
167 ``ini'' format, with section headers and individual variables and val‐
168 ues with each section. The configuration file installed as part of PCP
169 documents every available section and option.
170
171 At a high level, the [pmproxy] section can be used to explicitly enable
172 or disable each of the different protocols.
173
174 The [pmseries] section allows connection information for one or more
175 backing redis-server processes to be configured (hostnames and ports).
176 Note to access multiple (scalable) Redis servers, the servers variable
177 in this section can be a comma-separated list of hostname:port pairs.
178 Alternatively, it can be a single redis-server host that will be
179 queried using the "CLUSTER INFO" command to automatically configure
180 multiple backing hosts, described at https://redis.io/topics/cluster-
181 spec.
182
184 Normally, pmproxy is started automatically at boot time and stopped
185 when the system is being brought down. Under certain circumstances it
186 is necessary to start or stop pmproxy manually. To do this one must
187 become superuser and type
188
189 # $PCP_RC_DIR/pmproxy start
190
191 to start pmproxy, or
192
193 # $PCP_RC_DIR/pmproxy stop
194
195 to stop pmproxy. Starting pmproxy when it is already running is the
196 same as stopping it and then starting it again.
197
198 Normally pmproxy listens for PCP client connections on TCP/IP port num‐
199 ber 44322 (as well as 44323 with timeseries enabled) registered at
200 https://www.iana.org/. Either the environment variable PMPROXY_PORT -p
201 command line option may be used to specify alternative port number(s)
202 when PMPROXY_PORT or the -p command line option may be used to specify
203 alternative port number(s) when pmproxy is started; in each case, the
204 specification is a comma-separated list of one or more numerical port
205 numbers. Should both methods be used or multiple -p options appear on
206 the command line, pmproxy will listen on the union of the set of ports
207 specified via all -p options and the PMPROXY_PORT environment variable.
208 If non-default ports are used with pmproxy care should be taken to
209 ensure that PMPROXY_PORT is also set in the environment of any client
210 application that will connect to pmproxy, or that the extended host
211 specification syntax is used (see PCPIntro(1) for details).
212
214 If pmproxy is already running the message "Error: OpenRequestSocket
215 bind: Address already in use" will appear. This may also appear if
216 pmproxy was shutdown with an outstanding request from a client. In
217 this case, a request socket has been left in the TIME_WAIT state and
218 until the system closes it down (after some timeout period) it will not
219 be possible to run pmproxy.
220
221 In addition to the standard PCP debugging options, see pmdbg(1),
222 pmproxy currently supports the debugging option context for tracing
223 client connections and disconnections.
224
226 PCP_PMPROXYOPTIONS_PATH
227 command line options for pmproxy when launched from
228 $PCP_RC_DIR/pmproxy All the command line option lines should start
229 with a hyphen as the first character.
230
231 $PCP_SYSCONFIG_DIR/pmproxy
232 additional environment variables that will be set when pmproxy
233 executes. Only settings of the form "PMPROXY_VARIABLE=value" will
234 be honoured.
235
236 ./pmproxy.log
237 (or $PCP_LOG_DIR/pmproxy/pmproxy.log when started automatically)
238 All messages and diagnostics are directed here
239
240 /etc/pki/tls
241 default OpenSSL certificate database directory, used for optional
242 Secure Socket Layer connections in timeseries mode of operation.
243 These certificates can be created and queried using the openssl
244 tool, amongst others.
245
246 /etc/pki/nssdb
247 default Network Sercity Services (NSS) database directory, used
248 for optional Secure Socket Layer connections in deprecated mode of
249 operation. This database can be created and queried using the NSS
250 certutil tool, amongst others. This is only used when pmproxy is
251 running in deprecated mode.
252
254 In addition to the PCP environment variables described in the PCP ENVI‐
255 RONMENT section below, there are several environment variables that
256 influence the interactions between a PCP monitoring client, pmproxy and
257 pmcd.
258
259 PMCD_PORT
260 For the PCP monitoring client this (or the default port number)
261 is passed to pmproxy and used to connect to pmcd. In the envi‐
262 ronment of pmproxy PMCD_PORT is not used.
263
264 PMPROXY_HOST
265 For the PCP monitoring client this is the hostname or IP address
266 of the host where pmproxy is running. In recent versions of PCP
267 (since version 3) this has been superseded by the extended host‐
268 name syntax (see PCPIntro(1) for details).
269
270 PMPROXY_PORT
271 For the PCP monitoring client this is the port on which pmproxy
272 will accept connections. The default is 44322, as well as 44323
273 with timeseries enabled.
274
275 PMCD_CONNECT_TIMEOUT, PMCD_RECONNECT_TIMEOUT and PMCD_REQUEST_TIMEOUT
276 (see PCPIntro(1)) For the PCP monitoring client, setting these
277 environment variables will modify the timeouts used for interac‐
278 tions between the client and pmproxy (independent of which pmcd
279 is being used). For pmproxy these same environment variables
280 control the timeouts between pmproxy and all pmcd(1) instances
281 (independent of which monitoring client is involved).
282
283 If set to the value 1, the PMPROXY_LOCAL environment variable will
284 cause pmproxy to run in a localhost-only mode of operation, where it
285 binds only to the loopback interface.
286
287 The PMPROXY_MAXPENDING variable can be set to indicate the maximum
288 length to which the queue of pending client connections may grow.
289
291 Environment variables with the prefix PCP_ are used to parameterize the
292 file and directory names used by PCP. On each installation, the file
293 /etc/pcp.conf contains the local values for these variables. The
294 $PCP_CONF variable may be used to specify an alternative configuration
295 file, as described in pcp.conf(5).
296
297 For environment variables affecting PCP tools, see pmGetOptions(3).
298
300 PCPIntro(1), pmcd(1), pmdbg(1), pmlogger(1), pmseries(1), redis-
301 server(1), PMAPI(3), PMWEBAPI(3), pmGetOptions(3), pcp.conf(5) and
302 pcp.env(5).
303
304
305
306Performance Co-Pilot PCP PMPROXY(1)