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

NAME

6       pmlogger - create archive log for performance metrics
7

SYNOPSIS

9       pmlogger  [-c  configfile]  [-h  host]  [-K spec] [-l logfile] [-L] [-m
10       note] [-n pmnsfile] [-o] [-p pid] [-P] [-r] [-s endsize] [-t  interval]
11       [-T  endtime] [-u] [-U username] [-v volsize] [-V version] [-x fd] [-y]
12       archive
13

DESCRIPTION

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) or similar platform-specific commands to activate or
73       disable the  primary  pmlogger  instance),  $PCP_SYSCONFIG_DIR/pmlogger
74       (environment    variable    settings    for   the   primary   pmlogger)
75       $PCP_SYSCONF_DIR/pmlogger/pmlogger.options (command line options passed
76       to   the   primary   pmlogger)   and  $PCP_VAR_LIB/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
93       used.
94
95       When launched as a non-primary instance, pmlogger will exit immediately
96       if  the  configuration  file  causes no metric logging to be scheduled.
97       The -L option overrides this behavior, and causes a non-primary  pmlog‐
98       ger  instance to ``linger'', presumably pending some future dynamic re-
99       configuration and state change via pmlc(1).  pmlogger will also  linger
100       without  the  -L  option being used if all the metrics to be logged are
101       logged as once only metrics. When  the  once  only  metrics  have  been
102       logged,  a  warning  message  will  be generated stating that the event
103       queue is empty and no more events will be scheduled.
104
105       By default all diagnostics and errors from pmlogger are written to  the
106       file  pmlogger.log in the directory where pmlogger is launched.  The -l
107       option may be used to override the default behavior.  If the  log  file
108       cannot  be  created  or  is not writable, output is written to standard
109       error instead.
110
111       If specified, the -s option instructs pmlogger  to  terminate  after  a
112       certain  size in records, bytes or time units has been accumulated.  If
113       endsize is an integer then endsize records will be written to the  log.
114       If  endsize  is an integer suffixed by b or bytes then endsize bytes of
115       the archive data will be written out (note, however, that  archive  log
116       record  boundaries will not be broken and so this limit may be slightly
117       surpassed).  Other viable file size units include: K, Kb, Kbyte,  Kilo‐
118       byte  for kilobytes and M, Mb, Mbyte, Megabyte for megabytes and G, Gb,
119       Gbyte, Gigabyte for gigabytes.  These units may be optionally  suffixed
120       by  an  s  and  may  be of mixed case.  Alternatively endsize may be an
121       integer or a floating point  number  suffixed  using  a  time  unit  as
122       described in PCPIntro(1) for the interval argument (to the standard PCP
123       -t command line option).
124       Some examples of different formats:
125          -s 100
126          -s 100bytes
127          -s 100K
128          -s 100Mb
129          -s 10Gbyte
130          -s 10mins
131          -s 1.5hours
132       The default is for pmlogger to run forever.
133
134       The -r option causes the size of the physical record(s) for each  group
135       of  metrics  and  the expected contribution of the group to the size of
136       the PCP archive for one full day of collection to be  reported  in  the
137       log  file.   This  information is reported the first time each group is
138       successfully written to the archive.
139
140       The -U option specifies the user account under which to  run  pmlogger.
141       The  default is the current user account for interactive use.  When run
142       as a daemon, the unprivileged "pcp" account is used in current versions
143       of  PCP,  but in older versions the superuser account ("root") was used
144       by default.
145
146       The log file is potentially a multi-volume data set, and the -v  option
147       causes  pmlogger to start a new volume after a certain size in records,
148       bytes, or time units has been accumulated for the current volume.   The
149       format of this size specification is identical to that of the -s option
150       (see above).  The default is for pmlogger to  create  a  single  volume
151       log.   Additional  volume switches can also be forced asynchronously by
152       either using pmlc(1) or sending pmlogger a SIGHUP signal  (see  below).
153       Note,  if  a  scheduled  volume  switch  is  in operation due to the -v
154       option, then its counters will be reset after an asynchronous switch.
155
156       Independent of any -v option, each volume of an archive is  limited  to
157       no  more  than  2^31 bytes, so pmlogger will automatically create a new
158       volume for the archive before this limit is reached.
159
160       Normally pmlogger operates on the distributed Performance Metrics  Name
161       Space  (PMNS),  however  if  the  -n option is specified an alternative
162       local PMNS is loaded from the file pmnsfile.
163
164       Under normal circumstances, pmlogger will run forever (except for a  -s
165       option  or  a  termination signal).  The -T option may be used to limit
166       the execution time using the format of time  as  prescribed  by  PCPIn‐
167       tro(1).   The  time  is  interpreted  within  the time zone of the PMCD
168       server, unless the -y option is given, within which case the time  zone
169       at this logger host is used.
170       Some examples of different formats:
171          -T 10mins
172          -T '@ 11:30'
173       From this it can be seen that -T 10mins and -s 10mins perform identical
174       actions.
175
176       Alternatively, pmlogger runtime may  be  limited  to  the  lifetime  of
177       another  process by using the -p or --PID option to nominate the PID of
178       the process of interest.  In this case the pmlogger will exit when  the
179       other process no longer exists.
180
181       When  pmlogger  receives a SIGHUP signal, the current volume of the log
182       is closed, and a new volume is opened.  This mechanism (or the alterna‐
183       tive mechanism via pmlc(1)) may be used to manage the growth of the log
184       files - once a log volume is closed, that file may be archived  without
185       ill-effect  on  the  continued  operation of pmlogger.  See also the -v
186       option above.
187
188       Historically the buffers for the current log may  be  flushed  to  disk
189       using  the  flush  command of pmlc(1), or by sending pmlogger a SIGUSR1
190       signal or by using the -u option.  The current version of pmlogger  and
191       the   libpcp   routines  that  underpin  pmlogger  unconditionally  use
192       unbuffered writes and a single fwrite(3) for each logical record  writ‐
193       ten, and so ``flushing'' does not force any additional data to be writ‐
194       ten to the file system.  The -u option, the SIGUSR1  handling  and  the
195       pmlc(1) flush command are retained for backwards compatibility.
196
197       When  launched  with  the  -x option, pmlogger will accept asynchronous
198       control requests on the  file  descriptor  fd.   This  option  is  only
199       expected  to be used internally by PCP applications that support ``live
200       record mode''.
201
202       The -m option allows the string note to be appended to the map file for
203       this instance of pmlogger in the $PCP_TMP_DIR/pmlogger directory.  This
204       is currently used internally to document the file descriptor (fd)  when
205       the  -x  option is used, or to indicate that this pmlogger instance was
206       started under the control of pmlogger_check(1).
207

CONFIGURATION FILE SYNTAX

209       The configuration file may be specified with the -c option.  If  it  is
210       not, configuration specifications are read from standard input.
211
212       If  configfile  does  not exist, then a search is made in the directory
213       $PCP_VAR_LIB/config/pmlogger for a file of the same name, and if  found
214       that  file is used, e.g. if config.mumble does not exist in the current
215       directory and the file $PCP_VAR_LIB/config/pmlogger/config.mumble  does
216       exist,  then  -c config.mumble and -c $PCP_VAR_LIB/config/pmlogger/con‐
217       fig.mumble are equivalent.
218
219       The syntax for the configuration file is as follows.
220
221       1.   Words are separated by white space (space, tab or newline).
222
223       2.   The symbol ``#'' (hash) introduces a comment, and all text  up  to
224            the next newline is ignored.
225
226       3.   Keywords  (shown  in  bold  below)  must appear literally (i.e. in
227            lower case).
228
229       4.   Each specification begins with the optional keyword log,  followed
230            by one of the states mandatory on, mandatory off, mandatory maybe,
231            advisory on or advisory off.
232
233       5.   For the on states, a logging interval must follow using the syntax
234            ``once'',  or ``default'', or ``every N timeunits'', or simply ``N
235            timeunits'' - N is an unsigned integer, and timeunits  is  one  of
236            the  keywords msec, millisecond, sec, second, min, minute, hour or
237            the plural form of one of the above.
238            Internal limitations require  the  interval  to  be  smaller  than
239            (approximately)  74 hours.  An interval value of zero is a synonym
240            for once.  An interval of default means to use the default logging
241            interval  of  60  seconds;  this  default  value may be changed to
242            interval with the -t command line option.
243
244            The interval argument follows the syntax described in PCPIntro(1),
245            and  in  the simplest form may be an unsigned integer (the implied
246            units in this case are seconds).
247
248       6.   Following the state and possible interval specifications  comes  a
249            ``{'', followed by a list of one or more metric specifications and
250            a closing ``}''.  The list is white space  (or  comma)  separated.
251            If  there is only one metric specification in the list, the braces
252            are optional.
253
254       7.   A metric specification consists of a metric name  optionally  fol‐
255            lowed  by  a  set  of instance names.  The metric name follows the
256            standard PCP naming conventions, see pmns(5), and  if  the  metric
257            name  is  a non-leaf node in the PMNS (see pmns(5)), then pmlogger
258            will recursively descend the PMNS and apply the logging specifica‐
259            tion  to  all  descendent  metric names that are leaf nodes in the
260            PMNS.  The set of instance names is a ``['', followed by a list of
261            one  or more space (or comma) separated names, numbers or strings,
262            and a closing ``]''.  Elements in the list that  are  numbers  are
263            assumed  to  be  internal instance identifiers, other elements are
264            assumed to be external instance identifiers  -  see  pmGetInDom(3)
265            for more information.
266
267            If  no  instances  are  given,  then  the logging specification is
268            applied to all instances of the associated metric.
269
270       8.   There may be an arbitrary number of logging specifications.
271
272       9.   Following all of the  logging  specifications,  there  may  be  an
273            optional  access  control section, introduced by the literal token
274            [access].  Thereafter come access control rules that allow or dis‐
275            allow operations from particular hosts or groups of hosts.
276
277            The  operations  may  be  used to interrogate or control a running
278            pmlogger using pmlc(1) and fall into the following classes:
279
280            enquire        interrogate the status of pmlogger and the  metrics
281                           it is logging
282            advisory       Change advisory logging.
283            mandatory      Change mandatory logging.
284            all            All of the above.
285
286            Access  control  rules  are  of the form ``allow hostlist : opera‐
287            tionlist ;'' and ``disallow hostlist : operationlist ;''.
288
289            The hostlist follows the syntax and semantics for the access  con‐
290            trol  mechanisms used by PMCD and are fully documented in pmcd(1).
291            An operationslist is a comma  separated  list  of  the  operations
292            advisory, mandatory, enquire and all.
293
294            A  missing [access] section allows all access and is equivalent to
295            allow * : all;.
296
297       The configuration (either from standard input or  configfile)  is  ini‐
298       tially   scanned   by   pmcpp(1)   with   the   options   -rs   and  -I
299       $PCP_VAR_LIB/config/pmlogger.  This extends the configuration file syn‐
300       tax  with  include  file  processing  (%include),  a common location to
301       search for include files ($PCP_VAR_LIB/config/pmlogger), macro  defini‐
302       tions  (%define),  macro  expansion (%name and %{name}) and conditional
303       inclusion of lines (%ifdef name ... %else ... %endif and  %ifndef  name
304       ... %else ... %endif).
305

EXAMPLES

307       For  each  PCP  utility,  there is a sample pmlogger configuration file
308       that could be used to create an archive log suitable for replaying with
309       that  tool  (i.e.  includes  all of the performance metrics used by the
310       tool).  For a tool named foo this  configuration  file  is  located  in
311       $PCP_VAR_LIB/config/pmlogger/config.foo.
312
313       The  following  is  a  simple  default configuration file for a primary
314       pmlogger instance, and demonstrates most of  the  capabilities  of  the
315       configuration specification language.
316
317            log mandatory on once { hinv.ncpu hinv.ndisk }
318            log mandatory on every 10 minutes {
319                disk.all.write
320                disk.all.read
321                network.interface.in.packets [ "et0" ]
322                network.interface.out.packets [ "et0" ]
323                nfs.server.reqs [ "lookup" "getattr" "read" "write" ]
324            }
325
326            log advisory on every 30 minutes {
327                environ.temp
328                pmcd.pdu_in.total
329                pmcd.pdu_out.total
330            }
331
332            %include "macros.default"
333
334            %ifdef %disk_detail
335            log mandatory on %disk_detail_freq {
336                disk.dev
337            }
338            %endif
339
340            [access]
341            disallow * : all except enquire;
342            allow localhost : mandatory, advisory;
343

FILES

345       archive.meta
346                 metadata  (metric  descriptions,  instance domains, etc.) for
347                 the archive log
348       archive.0 initial volume of metrics  values  (subsequent  volumes  have
349                 suffixes 1, 2, ...)
350       archive.index
351                 temporal  index  to  support rapid random access to the other
352                 files in the archive log
353       $PCP_TMP_DIR/pmlogger
354                 pmlogger maintains the files in this  directory  as  the  map
355                 between  the  process id of the pmlogger instance and the IPC
356                 port that may be used to control each pmlogger  instance  (as
357                 used by pmlc(1))
358       $PCP_VAR_LIB/config/pmlogger/config.default
359                 default  configuration  file  for the primary logger instance
360                 launched from $PCP_RC_DIR/pmlogger
361       $PCP_VAR_LIB/config/pmlogger/config.*
362                 assorted configuration files suitable for creating logs  that
363                 may  be  subsequently replayed with the PCP visualization and
364                 monitoring tools
365       $PCP_LOG_DIR/pmlogger/hostname
366                 Default directory for PCP archive files for performance  met‐
367                 ric values collected from the host hostname.
368       $PCP_SYSCONFIG_DIR/pmlogger
369                 additional  environment  variables  that will be set when the
370                 primary pmlogger instance executes.   Only  settings  of  the
371                 form "PMLOGGER_VARIABLE=value" will be honoured.
372       ./pmlogger.log
373                 (or  $PCP_LOG_DIR/pmlogger/hostname/pmlogger.log when started
374                 automatically by either $PCP_RC_DIR/pmlogger or  one  of  the
375                 pmlogger(1) monitoring scripts such as pmlogger_check(1))
376                 all messages and diagnostics are directed here
377

ENVIRONMENT

379       Normally  pmlogger  creates  a  socket to receive control messages from
380       pmlc(1) on the first available TCP/IP port  numbered  4330  or  higher.
381       The environment variable PMLOGGER_PORT may be used to specify an alter‐
382       native starting port number.
383
384       If set to the value 1, the  PMLOGGER_LOCAL  environment  variable  will
385       cause  pmlogger  to run in a localhost-only mode of operation, where it
386       binds only to the loopback interface.
387
388       The PMLOGGER_MAXPENDING variable can be set  to  indicate  the  maximum
389       length to which the queue of pending pmlc connections may grow.
390

PCP ENVIRONMENT

392       Environment variables with the prefix PCP_ are used to parameterize the
393       file and directory names used by PCP.  On each installation,  the  file
394       /etc/pcp.conf  contains  the  local  values  for  these variables.  The
395       $PCP_CONF variable may be used to specify an alternative  configuration
396       file, as described in pcp.conf(5).
397

SEE ALSO

399       PCPIntro(1),   pmcd(1),   pmdumplog(1),   pmlc(1),   pmlogger_check(1),
400       __pmSpecLocalPMDA(3),  pcp.conf(5),  pcp.env(5),  pmns(5)  and  chkcon‐
401       fig(8).
402

DIAGNOSTICS

404       The archive logs are sufficiently precious that pmlogger will not trun‐
405       cate an existing physical file.  A message of the form
406        __pmLogNewFile: "foo.index" already exists, not over-written
407        __pmLogCreate: File exists
408       indicates this situation has arisen.  You must  explicitly  remove  the
409       files and launch pmlogger again.
410
411       There  may be at most one primary pmlogger instance per monitored host;
412       attempting to bend this rule produces the error:
413        pmlogger: there is already a primary pmlogger running
414
415       Various other messages relating to  the  creation  and/or  deletion  of
416       files  in  $PCP_TMP_DIR/pmlogger  suggest  a permission problem on this
417       directory, or some feral files have appeared therein.
418
419
420
421Performance Co-Pilot                  PCP                          PMLOGGER(1)
Impressum