1PMLOGGER(1) General Commands Manual PMLOGGER(1)
2
3
4
6 pmlogger - create archive log for performance metrics
7
9 pmlogger [-c configfile] [-h host] [-H hostname] [-K spec] [-l logfile]
10 [-L] [-m note] [-n pmnsfile] [-o] [-p pid] [-P] [-r] [-s endsize] [-t
11 interval] [-T endtime] [-u] [-U username] [-v volsize] [-V version] [-x
12 fd] [-y] archive
13
15 pmlogger creates the archive logs of performance metric values that may
16 be ``played back'' by other Performance Co-Pilot (see PCPIntro(1))
17 tools. These logs form the basis of the VCR paradigm and retrospective
18 performance analysis services common to the PCP toolkit.
19
20 The mandatory argument archive is the base name for the physical files
21 that constitute an archive log.
22
23 The -V option specifies the version for the archive that is generated.
24 By default a version 2 archive is generated, and the only value cur‐
25 rently supported for version is 2.
26
27 Unless directed to another host by the -h option or when directly using
28 PMDAs via the -o option, pmlogger will contact the Performance Metrics
29 Collector Daemon (PMCD) on the local host and use that as the source of
30 the metric values to be logged.
31
32 To support the required flexibility and control over what is logged and
33 when, pmlogger maintains an independent two level logging state for
34 each instance of each performance metric. At the first (mandatory)
35 level, logging is allowed to be on (with an associated interval between
36 samples), or off or maybe. In the latter case, the second (advisory)
37 level logging is allowed to be on (with an associated interval between
38 samples), or off.
39
40 The mandatory level allows universal specification that some metrics
41 must be logged, or must not be logged. The default state for all
42 instances of all metrics when pmlogger starts is mandatory maybe and
43 advisory off.
44
45 Use pmlc(1) to interrogate and change the logging state once pmlogger
46 is running.
47
48 If a metric's state is mandatory (on or off) and a request is made to
49 change it to mandatory maybe, the new state is mandatory maybe and
50 advisory off. If a metric's state is already advisory (on or off) and
51 a request is made to change it to mandatory maybe, the current state is
52 retained.
53
54 It is not possible for pmlogger to log specific instances of a metric
55 and all instances of the same metric concurrently. If specific
56 instances are being logged and a request to log all instances is made,
57 then all instances of the metric will be logged according to the new
58 request, superseding any prior logging request for the metric. A
59 request to log all instances of a metric will supersede any previous
60 request to log all instances. A request to log specific instances of a
61 metric when all instances are already being logged is refused. To do
62 this one must turn off logging for all instances of the metric first.
63 In each case, the validity of the request is checked first; for example
64 a request to change a metric's logging state to advisory on when it is
65 currently mandatory off is never permitted (it is necessary to change
66 the state to mandatory maybe first).
67
68 Optionally, each system running pmcd(1) may also be configured to run a
69 ``primary'' pmlogger instance. This pmlogger instance is launched by
70 $PCP_RC_DIR/pmlogger, and is affected by the files
71 $PCP_SYSCONF_DIR/pmlogger/control, $PCP_SYSCONF_DIR/pmlogger/control.d
72 (use chkconfig(8), systemctl(1) or similar platform-specific commands
73 to activate or disable the primary pmlogger instance), $PCP_SYSCON‐
74 FIG_DIR/pmlogger (environment variable settings for the primary pmlog‐
75 ger) $PCP_SYSCONF_DIR/pmlogger/pmlogger.options (command line options
76 passed to the primary pmlogger) and $PCP_VAR_DIR/config/pmlogger/con‐
77 fig.default (the default initial configuration file for the primary
78 pmlogger).
79
80 The primary pmlogger instance is identified by the -P option. There
81 may be at most one ``primary'' pmlogger instance on each system. The
82 primary pmlogger instance (if any) must be running on the same host as
83 the pmcd(1) to which it connects (if any), so the -h and -P options are
84 mutually exclusive.
85
86 Logging of some metrics is possible even in the absence of a local
87 pmcd(1), using the "local context" mode of operation. This is acti‐
88 vated using the -o option, and causes pmlogger to make use of local DSO
89 PMDAs instead of communicating with pmcd(1). When operating using a
90 local context, the -K option may be used to control the DSO PMDAs that
91 should be made accessible. The spec argument conforms to the syntax
92 described in pmSpecLocalPMDA(3). More than one -K option may be used.
93
94 When launched as a non-primary instance, pmlogger will exit immediately
95 if the configuration file causes no metric logging to be scheduled.
96 The -L option overrides this behavior, and causes a non-primary pmlog‐
97 ger instance to ``linger'', presumably pending some future dynamic re-
98 configuration and state change via pmlc(1). pmlogger will also linger
99 without the -L option being used if all the metrics to be logged are
100 logged as once only metrics. When the once only metrics have been
101 logged, a warning message will be generated stating that the event
102 queue is empty and no more events will be scheduled.
103
104 By default all diagnostics and errors from pmlogger are written to the
105 file pmlogger.log in the directory where pmlogger is launched. The -l
106 option may be used to override the default behavior. If the log file
107 cannot be created or is not writable, output is written to standard
108 error instead.
109
110 If specified, the -s option instructs pmlogger to terminate after a
111 certain size in records, bytes or time units has been accumulated. If
112 endsize is an integer then endsize records will be written to the log.
113 If endsize is an integer suffixed by b or bytes then endsize bytes of
114 the archive data will be written out (note, however, that archive log
115 record boundaries will not be broken and so this limit may be slightly
116 surpassed). Other viable file size units include: K, Kb, KiB, Kbyte,
117 Kilobyte for kilobytes and M, Mb, MiB, Mbyte, Megabyte for megabytes
118 and G, Gb, GiB, Gbyte, Gigabyte for gigabytes. These units may be
119 optionally suffixed by an s and may be of mixed case. Alternatively
120 endsize may be an integer or a floating point number suffixed using a
121 time unit as described in PCPIntro(1) for the interval argument (to the
122 standard PCP -t command line option).
123 Some examples of different formats:
124 -s 100
125 -s 100bytes
126 -s 100K
127 -s 100Mb
128 -s 10Gbyte
129 -s 10mins
130 -s 1.5hours
131 The default is for pmlogger to run forever.
132
133 The -r option causes the size of the physical record(s) for each group
134 of metrics and the expected contribution of the group to the size of
135 the PCP archive for one full day of collection to be reported in the
136 log file. This information is reported the first time each group is
137 successfully written to the archive.
138
139 The -U option specifies the user account under which to run pmlogger.
140 The default is the current user account for interactive use. When run
141 as a daemon, the unprivileged "pcp" account is used in current versions
142 of PCP, but in older versions the superuser account ("root") was used
143 by default.
144
145 The log file is potentially a multi-volume data set, and the -v option
146 causes pmlogger to start a new volume after a certain size in records,
147 bytes, or time units has been accumulated for the current volume. The
148 format of this size specification is identical to that of the -s option
149 (see above). The default is for pmlogger to create a single volume
150 log. Additional volume switches can also be forced asynchronously by
151 either using pmlc(1) or sending pmlogger a SIGHUP signal (see below).
152 Note, if a scheduled volume switch is in operation due to the -v
153 option, then its counters will be reset after an asynchronous switch.
154
155 Independent of any -v option, each volume of an archive is limited to
156 no more than 2^31 bytes, so pmlogger will automatically create a new
157 volume for the archive before this limit is reached.
158
159 Normally pmlogger operates on the distributed Performance Metrics Name
160 Space (PMNS), however if the -n option is specified an alternative
161 local PMNS is loaded from the file pmnsfile.
162
163 Under normal circumstances, pmlogger will run forever (except for a -s
164 option or a termination signal). The -T option may be used to limit
165 the execution time using the format of time as prescribed by PCPIn‐
166 tro(1). The time is interpreted within the time zone of the PMCD
167 server, unless the -y option is given, within which case the time zone
168 at this logger host is used.
169 Some examples of different formats:
170 -T 10mins
171 -T '@ 11:30'
172 From this it can be seen that -T 10mins and -s 10mins perform identical
173 actions.
174
175 Alternatively, pmlogger runtime may be limited to the lifetime of
176 another process by using the -p or --PID option to nominate the PID of
177 the process of interest. In this case the pmlogger will exit when the
178 other process no longer exists.
179
180 When pmlogger receives a SIGHUP signal, the current volume of the log
181 is closed, and a new volume is opened. This mechanism (or the alterna‐
182 tive mechanism via pmlc(1)) may be used to manage the growth of the log
183 files - once a log volume is closed, that file may be archived without
184 ill-effect on the continued operation of pmlogger. See also the -v
185 option above.
186
187 Historically the buffers for the current log may be flushed to disk
188 using the flush command of pmlc(1), or by sending pmlogger a SIGUSR1
189 signal or by using the -u option. The current version of pmlogger and
190 the libpcp routines that underpin pmlogger unconditionally use
191 unbuffered writes and a single fwrite(3) for each logical record writ‐
192 ten, and so ``flushing'' does not force any additional data to be writ‐
193 ten to the file system. The -u option, the SIGUSR1 handling and the
194 pmlc(1) flush command are retained for backwards compatibility.
195
196 When launched with the -x option, pmlogger will accept asynchronous
197 control requests on the file descriptor fd. This option is only
198 expected to be used internally by PCP applications that support ``live
199 record mode''.
200
201 The -m option allows the string note to be appended to the map file for
202 this instance of pmlogger in the $PCP_TMP_DIR/pmlogger directory. This
203 is currently used internally to document the file descriptor (fd) when
204 the -x option is used, or to indicate that this pmlogger instance was
205 started under the control of pmlogger_check(1).
206
207 The -H option allows the hostname written into the archive label to be
208 overridden. This mirrors the -H option of pmcd(1) , but allows it to
209 be specified on the pmlogger process. Without this option, the value
210 returned from the logged pmcd(1) is used.
211
213 The configuration file may be specified with the -c option. If it is
214 not, configuration specifications are read from standard input.
215
216 If configfile does not exist, then a search is made in the directory
217 $PCP_VAR_DIR/config/pmlogger for a file of the same name, and if found
218 that file is used, e.g. if config.mumble does not exist in the current
219 directory and the file $PCP_VAR_DIR/config/pmlogger/config.mumble does
220 exist, then -c config.mumble and -c $PCP_VAR_DIR/config/pmlogger/con‐
221 fig.mumble are equivalent.
222
223 The syntax for the configuration file is as follows.
224
225 1. Words are separated by white space (space, tab or newline).
226
227 2. The symbol ``#'' (hash) introduces a comment, and all text up to
228 the next newline is ignored.
229
230 3. Keywords (shown in bold below) must appear literally (i.e. in
231 lower case).
232
233 4. Each specification begins with the optional keyword log, followed
234 by one of the states mandatory on, mandatory off, mandatory maybe,
235 advisory on or advisory off.
236
237 5. For the on states, a logging interval must follow using the syntax
238 ``once'', or ``default'', or ``every N timeunits'', or simply ``N
239 timeunits'' - N is an unsigned integer, and timeunits is one of
240 the keywords msec, millisecond, sec, second, min, minute, hour or
241 the plural form of one of the above.
242 Internal limitations require the interval to be smaller than
243 (approximately) 74 hours. An interval value of zero is a synonym
244 for once. An interval of default means to use the default logging
245 interval of 60 seconds; this default value may be changed to
246 interval with the -t command line option.
247
248 The interval argument follows the syntax described in PCPIntro(1),
249 and in the simplest form may be an unsigned integer (the implied
250 units in this case are seconds).
251
252 6. Following the state and possible interval specifications comes a
253 ``{'', followed by a list of one or more metric specifications and
254 a closing ``}''. The list is white space (or comma) separated.
255 If there is only one metric specification in the list, the braces
256 are optional.
257
258 7. A metric specification consists of a metric name optionally fol‐
259 lowed by a set of instance names. The metric name follows the
260 standard PCP naming conventions, see pmns(5), and if the metric
261 name is a non-leaf node in the PMNS (see pmns(5)), then pmlogger
262 will recursively descend the PMNS and apply the logging specifica‐
263 tion to all descendent metric names that are leaf nodes in the
264 PMNS. The set of instance names is a ``['', followed by a list of
265 one or more space (or comma) separated names, numbers or strings,
266 and a closing ``]''. Elements in the list that are numbers are
267 assumed to be internal instance identifiers, other elements are
268 assumed to be external instance identifiers - see pmGetInDom(3)
269 for more information.
270
271 If no instances are given, then the logging specification is
272 applied to all instances of the associated metric.
273
274 8. There may be an arbitrary number of logging specifications.
275
276 9. As of PCP version 4.0 and later, any metric name specification
277 that does not resolve to a leaf node in the PMNS is added to an
278 internal list of possible dynamic subtree roots. PMDAs can dynam‐
279 ically create new metrics below a dynamic root node in their PMNS,
280 and send a notification to clients that the PMNS has changed, see
281 pmdaExtSetFlags(3) and in particular the METRIC CHANGES section
282 for API details. This mechanism is currently supported by
283 pmdaprometheus(1) and pmdammv(1). When a fetch issued by pmlogger
284 returns with the PMDA_EXT_NAMES_CHANGE flag set, pmlogger will
285 traverse the internal list of possible dynamic subtree nodes and
286 dynamically discover any new metrics. In effect, as of PCP ver‐
287 sion 4.0 and later, pmlogger can be configured to dynamically log
288 new metrics that appear in the future, after the configuration
289 file is initially parsed.
290
291 10. Following all of the logging specifications, there may be an
292 optional access control section, introduced by the literal token
293 [access]. Thereafter come access control rules that allow or dis‐
294 allow operations from particular hosts or groups of hosts.
295
296 The operations may be used to interrogate or control a running
297 pmlogger using pmlc(1) and fall into the following classes:
298
299 enquire interrogate the status of pmlogger and the metrics
300 it is logging
301 advisory Change advisory logging.
302 mandatory Change mandatory logging.
303 all All of the above.
304
305 Access control rules are of the form ``allow hostlist : opera‐
306 tionlist ;'' and ``disallow hostlist : operationlist ;''.
307
308 The hostlist follows the syntax and semantics for the access con‐
309 trol mechanisms used by PMCD and are fully documented in pmcd(1).
310 An operationslist is a comma separated list of the operations
311 advisory, mandatory, enquire and all.
312
313 A missing [access] section allows all access and is equivalent to
314 allow * : all;.
315
316 The configuration (either from standard input or configfile) is ini‐
317 tially scanned by pmcpp(1) with the options -rs and -I
318 $PCP_VAR_DIR/config/pmlogger. This extends the configuration file syn‐
319 tax with include file processing (%include), a common location to
320 search for include files ($PCP_VAR_DIR/config/pmlogger), macro defini‐
321 tions (%define), macro expansion (%name and %{name}) and conditional
322 inclusion of lines (%ifdef name ... %else ... %endif and %ifndef name
323 ... %else ... %endif).
324
326 For each PCP utility, there is a sample pmlogger configuration file
327 that could be used to create an archive log suitable for replaying with
328 that tool (i.e. includes all of the performance metrics used by the
329 tool). For a tool named foo this configuration file is located in
330 $PCP_VAR_DIR/config/pmlogger/config.foo.
331
332 The following is a simple default configuration file for a primary
333 pmlogger instance, and demonstrates most of the capabilities of the
334 configuration specification language.
335
336 log mandatory on once { hinv.ncpu hinv.ndisk }
337 log mandatory on every 10 minutes {
338 disk.all.write
339 disk.all.read
340 network.interface.in.packets [ "et0" ]
341 network.interface.out.packets [ "et0" ]
342 nfs.server.reqs [ "lookup" "getattr" "read" "write" ]
343 }
344
345 log advisory on every 30 minutes {
346 environ.temp
347 pmcd.pdu_in.total
348 pmcd.pdu_out.total
349 }
350
351 %include "macros.default"
352
353 %ifdef %disk_detail
354 log mandatory on %disk_detail_freq {
355 disk.dev
356 }
357 %endif
358
359 [access]
360 disallow * : all except enquire;
361 allow localhost : mandatory, advisory;
362
364 archive.meta
365 metadata (metric descriptions, instance domains, etc.) for
366 the archive log
367 archive.0 initial volume of metrics values (subsequent volumes have
368 suffixes 1, 2, ...)
369 archive.index
370 temporal index to support rapid random access to the other
371 files in the archive log
372 $PCP_TMP_DIR/pmlogger
373 pmlogger maintains the files in this directory as the map
374 between the process id of the pmlogger instance and the IPC
375 port that may be used to control each pmlogger instance (as
376 used by pmlc(1))
377 $PCP_VAR_DIR/config/pmlogger/config.default
378 default configuration file for the primary logger instance
379 launched from $PCP_RC_DIR/pmlogger
380 $PCP_VAR_DIR/config/pmlogger/config.*
381 assorted configuration files suitable for creating logs that
382 may be subsequently replayed with the PCP visualization and
383 monitoring tools
384 $PCP_LOG_DIR/pmlogger/hostname
385 Default directory for PCP archive files for performance met‐
386 ric values collected from the host hostname.
387 $PCP_SYSCONFIG_DIR/pmlogger
388 additional environment variables that will be set when the
389 primary pmlogger instance executes. Only settings of the
390 form "PMLOGGER_VARIABLE=value" will be honoured.
391 ./pmlogger.log
392 (or $PCP_LOG_DIR/pmlogger/hostname/pmlogger.log when started
393 automatically by either $PCP_RC_DIR/pmlogger or one of the
394 pmlogger(1) monitoring scripts such as pmlogger_check(1))
395 all messages and diagnostics are directed here
396
398 Normally pmlogger creates a socket to receive control messages from
399 pmlc(1) on the first available TCP/IP port numbered 4330 or higher.
400 The environment variable PMLOGGER_PORT may be used to specify an alter‐
401 native starting port number.
402
403 If set to the value 1, the PMLOGGER_LOCAL environment variable will
404 cause pmlogger to run in a localhost-only mode of operation, where it
405 binds only to the loopback interface.
406
407 The PMLOGGER_MAXPENDING variable can be set to indicate the maximum
408 length to which the queue of pending pmlc connections may grow.
409
410 The default sampling interval used by pmlogger can be set using the
411 PMLOGGER_INTERVAL variable (if not set, 60 seconds will be used). Both
412 the command line and directives in the configuration file will override
413 this value. It is an integer in units of seconds.
414
416 Environment variables with the prefix PCP_ are used to parameterize the
417 file and directory names used by PCP. On each installation, the file
418 /etc/pcp.conf contains the local values for these variables. The
419 $PCP_CONF variable may be used to specify an alternative configuration
420 file, as described in pcp.conf(5).
421
423 PCPIntro(1), pmcd(1), pmdumplog(1), pmlc(1), pmlogger_check(1), system‐
424 ctl(1), pmSpecLocalPMDA(3), pcp.conf(5), pcp.env(5), pmlogger(5),
425 pmns(5) and chkconfig(8).
426
428 The archive logs are sufficiently precious that pmlogger will not trun‐
429 cate an existing physical file. A message of the form
430 ...: "foo.index" already exists, not over-written
431 ...: File exists
432 indicates this situation has arisen. You must explicitly remove the
433 files and launch pmlogger again.
434
435 There may be at most one primary pmlogger instance per monitored host;
436 attempting to bend this rule produces the error:
437 pmlogger: there is already a primary pmlogger running
438
439 Various other messages relating to the creation and/or deletion of
440 files in $PCP_TMP_DIR/pmlogger suggest a permission problem on this
441 directory, or some feral files have appeared therein.
442
443
444
445Performance Co-Pilot PCP PMLOGGER(1)