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

NAME

6       pmlogger_daily - administration of Performance Co-Pilot archive files
7

SYNOPSIS

9       $PCP_BINADM_DIR/pmlogger_daily   [-DEfKMNoprRVzZ?]   [-c  control]  [-k
10       time] [-l logfile] [-m addresses] [-s size] [-t  want]  [-x  time]  [-X
11       program] [-Y regex]
12

DESCRIPTION

14       pmlogger_daily and the related pmlogger_check(1) tools along with asso‐
15       ciated control files (see pmlogger.control(5)) may be used to create  a
16       customized  regime  of administration and management for historical ar‐
17       chives of performance data within the Performance Co-Pilot (see  PCPIn‐
18       tro(1)) infrastructure.
19
20       pmlogger_daily  is  intended  to be run once per day, preferably in the
21       early morning, as soon after midnight as practicable.  Its task  is  to
22       aggregate,  rotate and perform general housekeeping one or more sets of
23       PCP archives.
24
25       To accommodate the evolution of PMDAs and changes in production logging
26       environments,  pmlogger_daily is integrated with pmlogrewrite(1) to al‐
27       low optional and automatic rewriting of archives  before  merging.   If
28       there are global rewriting rules to be applied across all archives men‐
29       tioned  in   the   control   file(s),   then   create   the   directory
30       $PCP_SYSCONF_DIR/pmlogrewrite  and  place any pmlogrewrite(1) rewriting
31       rules in this directory.  For rewriting rules that are specific to only
32       one family of archives, use the directory name from the control file(s)
33       - i.e. the fourth field - and create a file, or a directory, or a  sym‐
34       bolic  link  named pmlogrewrite within this directory and place the re‐
35       quired rewriting rule(s) in the pmlogrewrite file or  in  files  within
36       the  pmlogrewrite  subdirectory.   pmlogger_daily will choose rewriting
37       rules from the archive directory if they exist,  else  rewriting  rules
38       from  $PCP_SYSCONF_DIR/pmlogrewrite  if  that directory exists, else no
39       rewriting is attempted.
40
41       As an alternate  mechanism,  if  the  file  $PCP_LOG_DIR/pmlogger/.Nee‐
42       dRewrite  exists  when  pmlogger_daily  starts then this is treated the
43       same as specifying -R  on  the  command  line  and  $PCP_LOG_DIR/pmlog‐
44       ger/.NeedRewrite will be removed once all the rewriting has been done.
45

OPTIONS

47       -c control, --control=control
48            Both  pmlogger_daily  and  pmlogger_check(1) are controlled by PCP
49            logger control file(s) that specifies the pmlogger instances to be
50            managed.   The  default control file is $PCP_PMLOGGERCONTROL_PATH,
51            but an alternate may be specified using the -c option.  If the di‐
52            rectory  $PCP_PMLOGGERCONTROL_PATH.d (or control.d from the -c op‐
53            tion) exists, then the contents of any  additional  control  files
54            therein  will be appended to the main control file (which must ex‐
55            ist).
56
57       -D, --noreport
58            Do not perform the conditional pmlogger_daily_report(1) processing
59            as described below.
60
61       -E, --expunge
62            This  option  causes  pmlogger_daily to pass the -E flag to pmlog‐
63            ger_merge(1) in order to expunge metrics with  metadata  inconsis‐
64            tencies and continue rather than fail.  This is intended for auto‐
65            mated daily archive rotation where  it  is  highly  desirable  for
66            unattended  daily  archive  merging,  rewriting and compression to
67            succeed.  For further details, see pmlogger_merge(1) and  descrip‐
68            tion for the -x flag in pmlogextract(1).
69
70       -f, --force
71            This  option forces pmlogger_daily to attempt compression actions.
72            Using this option in production is not recommended.
73
74       -k time, --discard=time
75            After some period, old PCP archives are discarded.  time is a time
76            specification  in  the  syntax of find-filter(1), so DD[:HH[:MM]].
77            The optional HH (hours) and MM (minutes) parts are 0 if not speci‐
78            fied.   By  default  the  time  is  14:0:0  or 14 days, but may be
79            changed using this option.
80
81            Some special values are recognized for the time, namely 0 to  keep
82            no  archives beyond the the ones being currently written by pmlog‐
83            ger(1), and forever or never to prevent any  archives  being  dis‐
84            carded.
85
86            The time can also be set using the $PCP_CULLAFTER variable, set in
87            either the environment or in a control file.   If  both  $PCP_CUL‐
88            LAFTER  and -k specify different values for time then the environ‐
89            ment variable value is used and  a  warning  is  issued,  i.e.  if
90            $PCP_CULLAFTER  is  set in the control file, it overrides -k given
91            on the command line.
92
93            Note that the semantics of time are that it is measured  from  the
94            time of last modification of each archive, and not from the origi‐
95            nal archive creation date.  This has subtle implications for  com‐
96            pression (see below) - the compression process results in the cre‐
97            ation of new archive files which have new modification times.   In
98            this  case,  the  time period (re)starts from the time of compres‐
99            sion.
100
101       -K   When this option is specified for  pmlogger_daily  then  only  the
102            compression  tasks  are  attempted,  so  no  pmlogger rotation, no
103            culling, no rewriting, etc.  When -K is used and a period of 0  is
104            in  effect  (from  -x on the command line or $PCP_COMPRESSAFTER in
105            the environment or via the control file) this is intended for  en‐
106            vironments  where  compression  of  archives is desired before the
107            scheduled daily processing happens.  To achieve this, once  pmlog‐
108            ger_check(1)  has  completed  regular  processing, it calls pmlog‐
109            ger_daily with just the -K option.  Provided $PCP_COMPRESSAFTER is
110            set  to  0  along  with  any other required compression options to
111            match the scheduled invocation of pmlogger_daily, then  this  will
112            compress  all  volumes  except the ones being currently written by
113            pmlogger(1).  If $PCP_COMPRESSAFTER is set to a value greater than
114            zero,  then manually running pmlogger_daily with the -x option may
115            be used to compress volumes that are younger  than  the  $PCP_COM‐
116            PRESSAFTER  time.  This may be used to reclaim filesystem space by
117            compressing volumes earlier than they would  have  otherwise  been
118            compressed.   Note  that  since the default value of $PCP_COMPRES‐
119            SAFTER is 0 days, the -x option has no effect unless  the  control
120            file  has  been  edited  and  $PCP_COMPRESSAFTER has been set to a
121            value greater than 0.
122
123       -l file, --logfile=file
124            In order to ensure that mail  is  not  unintentionally  sent  when
125            these  scripts  are run from cron(8) or systemd(1) diagnostics are
126            always  sent  to  log   files.    By   default,   this   file   is
127            $PCP_LOG_DIR/pmlogger/pmlogger_daily.log  but  this can be changed
128            using the -l option.  If this log file  already  exists  when  the
129            script starts, it will be renamed with a .prev suffix (overwriting
130            any log file saved earlier) before diagnostics  are  generated  to
131            the log file.  The -l and -t options cannot be used together.
132
133       -m addresses, --mail=addresses
134            Use of this option causes pmlogger_daily to construct a summary of
135            the ``notices'' file entries which were generated in the  last  24
136            hours,  and  e-mail that summary to the set of space-separated ad‐
137            dresses.    This   daily   summary   is   stored   in   the   file
138            $PCP_LOG_DIR/NOTICES.daily,  which will be empty when no new ``no‐
139            tices'' entries were made in the previous 24 hour period.
140
141       -M   This option may be used to disable archive merging  (or  renaming)
142            and rewriting (-M implies -r).  This is most useful in cases where
143            the archives are being incrementally copied to  a  remote  reposi‐
144            tory,  e.g.  using  rsync(1).  Merging, renaming and rewriting all
145            risk an increase in the synchronization load,  especially  immedi‐
146            ately  after  pmlogger_daily has run, so -M may be useful in these
147            cases.
148
149       -N, --showme
150            This option enables a ``show me'' mode, where the programs actions
151            are  echoed, but not executed, in the style of ``make -n''.  Using
152            -N in conjunction with -V maximizes  the  diagnostic  capabilities
153            for debugging.
154
155       -o   By  default all possible archives will be merged.  This option re‐
156            instates the old behaviour in which only yesterday's archives will
157            be considered as merge candidates.  In the special case where only
158            a single input archive needs to be merged, pmlogmv(1) is  used  to
159            rename  the  archive, otherwise pmlogger_merge(1) is used to merge
160            all of the archives for a single host and a single day into a  new
161            PCP archive and the individual archives are removed.
162
163       -p   If  this option is specified for pmlogger_daily then the status of
164            the daily processing is polled and if the daily pmlogger(1)  rota‐
165            tion,  culling, rewriting, compressing, etc.  has not been done in
166            the last 24 hours then it is done now.  The intent is to have  pm‐
167            logger_daily  called regularly with the -p option (at 30 mins past
168            the hour, every hour in the default  cron(8)  set  up)  to  ensure
169            daily  processing  happens as soon as possible if it was missed at
170            the regularly scheduled time (which is 00:10 by default), e.g.  if
171            the  system  was down or suspended at that time.  With this option
172            pmlogger_daily simply exits if the previous day's  processing  has
173            already been done.  Note that this option is not used on platforms
174            supporting systemd(1)  because  the  pmlogger_daily.timer  service
175            unit  specifies  a timer setting with Persistent=true.  The -K and
176            -p options to pmlogger_daily are mutually exclusive.
177
178       -r, --norewrite
179            This command line option acts as an override and prevents all  ar‐
180            chive  rewriting  with pmlogrewrite(1) independent of the presence
181            of any rewriting rule files or directories.
182
183       -R, --rewriteall
184            Sometimes PMDA changes require all archives to be  rewritten,  not
185            just  the  ones involved in any current merging.  This is required
186            for example after a PCP upgrade where a new version of an existing
187            PMDA  has  revised metadata.  The -R command line forces this uni‐
188            versal-style of rewriting.  The -R option to pmlogger_daily is mu‐
189            tually exclusive with both the -r and -M options.
190
191       -s size, --rotate=size
192            If  the PCP ``notices'' file ($PCP_LOG_DIR/NOTICES) is larger than
193            20480 bytes, pmlogger_daily will rename the file with  a  ``.old''
194            suffix,  and  start  a new ``notices'' file.  The rotate threshold
195            may be changed from 20480 to size bytes using the -s option.
196
197       -t period
198            To assist with debugging or diagnosing intermittent  failures  the
199            -t  option  may  be  used.  This will turn on very verbose tracing
200            (-VV)  and  capture   the   trace   output   in   a   file   named
201            $PCP_LOG_DIR/pmlogger/daily.datestamp.trace,  where  datestamp  is
202            the time pmlogger_daily was run in the format YYYYMMDD.HH.MM.   In
203            addition, the period argument will ensure that trace files created
204            with -t will be kept for period days and then discarded.
205
206       -V, --verbose
207            The output from the cron execution of the scripts may be  extended
208            using the -V option to the scripts which will enable verbose trac‐
209            ing of their activity.  By default the scripts generate no  output
210            unless  some  error or warning condition is encountered.  A second
211            -V increases the verbosity.  Using -N in conjunction with -V maxi‐
212            mizes the diagnostic capabilities for debugging.
213
214       -x time, --compress-after=time
215            Archive  data files can optionally be compressed after some period
216            to conserve disk space.  This is  particularly  useful  for  large
217            numbers of pmlogger processes under the control of pmlogger_daily.
218
219            time  is  a time specification in the syntax of find-filter(1), so
220            DD[:HH[:MM]].  The optional HH (hours) and MM (minutes) parts  are
221            0 if not specified.
222
223            Some special values are recognized for the time, namely 0 to apply
224            compression as soon as possible, and forever or never  to  prevent
225            any compression being done.
226
227            If transparent_decompress is enabled when libpcp was built (can be
228            checked with the pmconfig(1) -L option), then the  default  behav‐
229            iour  is  compression  ``as soon as possible''.  Otherwise the de‐
230            fault behaviour is to not compress files (which matches  the  his‐
231            torical default behaviour in earlier PCP releases).
232
233            The  time  can  also be set using the $PCP_COMPRESSAFTER variable,
234            set in either the environment or  in  a  control  file.   If  both
235            $PCP_COMPRESSAFTER  and  -x specify different values for time then
236            the environment variable value is used and a  warning  is  issued.
237            For  important other detailed notes concerning volume compression,
238            see the -K and -k options (above).
239
240       -X program, --compressor=program
241            This option specifies the program to use for compression - by  de‐
242            fault  this  is xz(1).  The environment variable $PCP_COMPRESS may
243            be used as an alternative mechanism to define  program.   If  both
244            $PCP_COMPRESS  and  -X specify different compression programs then
245            the environment variable value is used and a warning is issued.
246
247       -Y regex, --regex=regex
248            This option allows a regular expression to  be  specified  causing
249            files  in the set of files matched for compression to be omitted -
250            this allows only the data file to be compressed, and also prevents
251            the  program  from  attempting to compress it more than once.  The
252            default regex is ".(index|Z|gz|bz2|zip|xz|lzma|lzo|lz4)$"  -  such
253            files  are filtered using the -v option to egrep(1).  The environ‐
254            ment variable $PCP_COMPRESSREGEX may be  used  as  an  alternative
255            mechanism  to  define  regex.   If  both $PCP_COMPRESSREGEX and -Y
256            specify different values for regex then the  environment  variable
257            value is used and a warning is issued.
258
259       -z   This  option  causes pmlogger_daily to not ``re-exec'', see pmlog‐
260            ger(1), when it would otherwise choose to do so  and  is  intended
261            only for QA testing.
262
263       -Z   This option causes pmlogger_daily to ``re-exec'', see pmlogger(1),
264            whenever that is possible and is intended only for QA testing.
265
266       -?, --help
267            Display usage message and exit.
268

CALLBACKS

270       Additionally pmlogger_daily supports the following ``hooks''  to  allow
271       auxiliary  operations  to  be performed at key points in the daily pro‐
272       cessing of the archives.  These callbacks are controlled via  variables
273       that may be set in the environment or via the control file.
274
275       Note  that  merge  callbacks and autosaving described below are not en‐
276       abled when only compression tasks are being  attempted,  i.e.  when  -K
277       command line option is used.
278
279       All  of the callback script execution and the autosave file moving will
280       be executed as the non-privileged user ``pcp'' and  group  ``pcp'',  so
281       appropriate permissions may need to have been set up in advance.
282
283       $PCP_MERGE_CALLBACK
284            As  each  day's  archive is created by merging and before any com‐
285            pression takes place, if $PCP_MERGE_CALLBACK is defined,  then  it
286            is  assumed  to  be a script that will be called with one argument
287            being the name of the archive (stripped of any suffixes), so some‐
288            thing of the form /some/directory/path/YYYYMMDD.  The script needs
289            to be either a full pathname, or something that will be  found  on
290            the  shell's $PATH .  The callback script will be run in the fore‐
291            ground, so pmlogger_daily will wait for it to complete.
292
293            If the control file contains  more  than  one  $PCP_MERGE_CALLBACK
294            specification  then  these  will be run serially in the order they
295            appear in the control file.  If $PCP_MERGE_CALLBACK is defined  in
296            the  environment  when  pmlogger_daily  is run, this is treated as
297            though this option was the first in the control file, i.e. it will
298            be run before any merge callbacks mentioned in the control file.
299
300            If  the  pcp-zeroconf  packages is installed, then a special merge
301            callback is added to call pmlogger_daily_report(1)  first,  before
302            any  other  merge  callback  options.  Refer to pmlogger_daily_re‐
303            port(1) for an explanation of the pcp-zeroconf requirements.
304
305            If pmlogger_daily is in ``catch up'' mode  (more  than  one  day's
306            worth of archives need to be combined) then each call back is exe‐
307            cuted once for each day's archive that is generated.
308
309            A typical use might be to produce daily reports from the  PCP  ar‐
310            chive  which needs to wait until the archive has been created, but
311            is more efficient if it is done before any  potential  compression
312            of the archive.
313
314       $PCP_COMPRESS_CALLBACK
315            If  pmlogger_daily  is run with -x 0 or $PCP_COMPRESSAFTER=0, then
316            compression is done immediately after merging.  As each day's  ar‐
317            chive is compressed, if $PCP_COMPRESS_CALLBACK is defined, then it
318            is assumed to be a script that will be called  with  one  argument
319            being the name of the archive (stripped of any suffixes), so some‐
320            thing of the form /some/directory/path/YYYYMMDD.  The script needs
321            to  be  either a full pathname, or something that will be found on
322            the shell's $PATH .  The callback script will be run in the  fore‐
323            ground, so pmlogger_daily will wait for it to complete.
324
325            If  the control file contains more than one $PCP_COMPRESS_CALLBACK
326            specification then these will be run serially in  the  order  they
327            appear  in the control file.  If $PCP_COMPRESS_CALLBACK is defined
328            in the environment when pmlogger_daily is run, this is treated  as
329            though this option was the first in the control file, i.e. it will
330            be run first.
331
332            If pmlogger_daily is in ``catch up'' mode  (more  than  one  day's
333            worth  of  archives  need to be compressed) then each call back is
334            executed once for each day's archive that is compressed.
335
336            A typical use might be to keep  recent  archives  in  uncompressed
337            form  for  efficient querying, but move the older archives to some
338            other storage location once the compression has been done.
339
340       $PCP_AUTOSAVE_DIR
341            Once the merging and possible compression has been done by  pmlog‐
342            ger_daily,  if $PCP_AUTOSAVE_DIR is defined then all of the physi‐
343            cal files that make up one day's archive will be moved (autosaved)
344            to the directory specified by $PCP_AUTOSAVE_DIR.
345
346            The  basename  of  the  archive  is used to set the reserved words
347            DATEYYYY (year), DATEMM (month) and DATEDD (day) and these  (along
348            with LOCALHOSTNAME) may appear literally in $PCP_AUTOSAVE_DIR, and
349            will be substituted at execution time to generate the  destination
350            directory name.  For example:
351                  $PCP_AUTOSAVE_DIR=/gpfs/LOCALHOSTNAME/DATEYYYY/DATEMM-DATEDD
352
353            Note  that these ``date'' reserved words correspond to the date on
354            which the archive data was collected, not  the  date  that  pmlog‐
355            ger_daily was run.
356
357            If  $PCP_AUTOSAVE_DIR  (after LOCALHOSTNAME and ``date'' substitu‐
358            tion) does not exist then pmlogger_daily will attempt to create it
359            (along  with  any  parent directories that do not exist).  Just be
360            aware that this directory creation runs under the uid of the  user
361            ``pcp'',  so  directories  along the path to $PCP_AUTOSAVE_DIR may
362            need to be writeable by this non-root user.
363
364            By ``move'' the archives we mean a  paranoid  checksum-copy-check‐
365            sum-remove  (using the -c option for pmlogmv(1)) that will bail if
366            the copy fails or the checksums do not match (the archives are im‐
367            portant  so  we  cannot risk something like a full filesystem or a
368            permissions issue messing with the copy process).
369
370            If pmlogger_daily is in ``catch up'' mode  (more  than  one  day's
371            worth  of archives need to be combined) then the archives for more
372            than one day could be copied in this step.
373
374            A typical use might be to create PCP archives on a local  filesys‐
375            tem  initially,  then  once all the data for a single day has been
376            collected and merged, migrate  that  day's  archive  to  a  shared
377            filesystem  or  a  remote  filesystem.   This  may allow automatic
378            backup to off-site storage and/or reduce the number of I/O  opera‐
379            tions  and  filesystem  metadata  operations  on  the (potentially
380            slower) non-local filesystem.
381

CONFIGURATION

383       Refer to pmlogger.control(5) for a description of  the  contol  file(s)
384       that  are  used  to control which pmlogger instances and which archives
385       are managed by pmlogger_check and pmlogger_daily(1).
386

FILES

388       $PCP_VAR_DIR/config/pmlogger/config.default
389            default pmlogger configuration file location for the local primary
390            logger, typically generated automatically by pmlogconf(1).
391
392       $PCP_ARCHIVE_DIR/<hostname>
393            default location for archives of performance information collected
394            from the host hostname
395
396       $PCP_ARCHIVE_DIR/<hostname>/lock
397            transient lock file to guarantee mutual exclusion during  pmlogger
398            administration  for  the host hostname - if present, can be safely
399            removed if neither pmlogger_daily nor pmlogger_check(1)  are  run‐
400            ning
401
402       $PCP_ARCHIVE_DIR/<hostname>/Latest
403            PCP  archive  folio  created  by  mkaf(1)  for  the  most recently
404            launched archive containing  performance  metrics  from  the  host
405            hostname
406
407       $PCP_LOG_DIR/NOTICES
408            PCP ``notices'' file used by pmie(1) and friends
409
410       $PCP_LOG_DIR/pmlogger/pmlogger_daily.log
411            if the previous execution of pmlogger_daily produced any output it
412            is saved here.  The normal case is no output  in  which  case  the
413            file does not exist.
414
415       $PCP_ARCHIVE_DIR/<hostname>/SaveLogs
416            if  this  directory exists, then the log file from the -l argument
417            of a newly launched pmlogger(1) for hostname will be  linked  into
418            this  directory  with  the  name  archive.log where archive is the
419            basename of the associated pmlogger(1) PCP  archive  files.   This
420            allows  the log file to be inspected at a later time, even if sev‐
421            eral pmlogger(1) instances for hostname have been launched in  the
422            interim.   Because  the PCP archive management tools run under the
423            uid of the user ``pcp'', $PCP_ARCHIVE_DIR/<hostname>/SaveLogs typ‐
424            ically needs to be owned by the user ``pcp''.
425
426       $PCP_LOG_DIR/pmlogger/.NeedRewrite
427            if  this  file exists, then this is treated as equivalent to using
428            -R on the command line and the  file  will  be  removed  once  all
429            rewriting has been done.
430

PCP ENVIRONMENT

432       Environment variables with the prefix PCP_ are used to parameterize the
433       file and directory names used by PCP.  On each installation,  the  file
434       /etc/pcp.conf  contains  the  local  values  for  these variables.  The
435       $PCP_CONF variable may be used to specify an alternative  configuration
436       file, as described in pcp.conf(5).
437

COMPATIBILITY ISSUES

439       Earlier  versions  of  pmlogger_daily  used find(1) to locate files for
440       compressing or culling and the -k and -x options took only integer val‐
441       ues to mean ``days''.  The semantics of this was quite loose given that
442       find(1) offers different precision and semantics across platforms.
443
444       The current implementation of pmlogger_daily uses find-filter(1)  which
445       provides  high  precision  intervals and semantics that are relative to
446       the time of execution and are consistent across platforms.
447

SEE ALSO

449       egrep(1), find-filter(1),  PCPIntro(1),  pmconfig(1),  pmlc(1),  pmlog‐
450       conf(1),  pmlogctl(1), pmlogextract(1), pmlogger(1), pmlogger_check(1),
451       pmlogger_daily_report(1),    pmlogger_merge(1),    pmlogmv(1),    pmlo‐
452       grewrite(1), systemd(1), xz(1) and cron(8).
453
454
455
456Performance Co-Pilot                  PCP                    PMLOGGER_DAILY(1)
Impressum