PMLOGGER_DAILY(1) General Commands Manual PMLOGGER_DAILY(1)

pmlogger_daily - مدیریت فایل‌های آرشیو سامانه Performance Co-Pilot

$PCP_BINADM_DIR/pmlogger_daily [-DEfKMNnoPpQrRVzZ?] [-c control] [-d fssize] [-k time] [-l logfile] [-m addresses] [-s size] [-t want] [-x time] [-X program] [-Y regex]

ابزار pmlogger_daily و ابزارهای مرتبط pmlogger_check(1) به‌همراه فایل‌های کنترلی وابسته (ببینید pmlogger.control(5)) می‌توانند برای ایجاد یک سازوکار سفارشیِ مدیریت و نگهداری از آرشیوهای تاریخی داده‌های کارایی در زیرساخت Performance Co-Pilot (ببینید PCPIntro(1)) مورد استفاده قرار گیرند.

دستور pmlogger_daily برای اجرا به‌صورت یک‌بار در روز، ترجیحاً در ساعات آغازین صبح و در سریع‌ترین زمان ممکن پس از نیمه‌شب طراحی شده است. وظیفهٔ آن تجمیع، چرخش (rotate) و انجام امور نگهداری عمومی روی یک یا چند مجموعه از آرشیوهای PCP است.

برای تطبیق با پیشرفت و تغییرات PMDAها و دگرگونی محیط‌های ثبت رویداد عملیاتی، pmlogger_daily با pmlogrewrite(1) یکپارچه شده است تا امکان بازنویسی اختیاری و خودکار آرشیوها پیش از ادغام را فراهم سازد. اگر قوانین بازنویسی سراسری وجود دارند که باید بر تمام آرشیوهای قیدشده در فایل(های) کنترلی اعمال شوند، دایرکتوری $PCP_SYSCONF_DIR/pmlogrewrite را ایجاد کرده و تمام قوانین بازنویسی pmlogrewrite(1) را درون این دایرکتوری قرار دهید. برای قوانینی که تنها مختص به یک خانواده از آرشیوها هستند، از نام دایرکتوری قیدشده در فایل(های) کنترلی - یعنی فیلد چهارم - استفاده کنید و یک فایل، دایرکتوری یا پیوند نمادین با نام pmlogrewrite درون این دایرکتوری بسازید و قانون(های) بازنویسی مورد نیاز را درون فایل pmlogrewrite یا در فایل‌های زیردایرکتوری pmlogrewrite قرار دهید. pmlogger_daily در صورت وجود قوانین بازنویسی در دایرکتوری آرشیو، آن‌ها را انتخاب می‌کند؛ در غیر این صورت قوانین بازنویسی $PCP_SYSCONF_DIR/pmlogrewrite را در صورت وجود بررسی می‌کند؛ در غیر این صورت هیچ بازنویسی‌ای انجام نخواهد شد.

به‌عنوان یک سازوکار جایگزین، اگر در زمان شروع pmlogger_daily فایل $PCP_LOG_DIR/pmlogger/.NeedRewrite موجود باشد، این امر همانند تعیین گزینهٔ -R در خط فرمان در نظر گرفته می‌شود و پس از تکمیل تمام بازنویسی‌ها، فایل $PCP_LOG_DIR/pmlogger/.NeedRewrite حذف خواهد شد.

هر دو برنامهٔ pmlogger_daily و pmlogger_check(1) توسط فایل(های) کنترلی ثبت‌کنندهٔ PCP کنترل می‌شوند که نمونه‌های pmlogger(1) را جهت مدیریت مشخص می‌نمایند. فایل کنترلی پیش‌فرض $PCP_PMLOGGERCONTROL_PATH است، اما می‌توان با استفاده از گزینهٔ -c فایل دیگری را تعیین کرد. اگر دایرکتوری $PCP_PMLOGGERCONTROL_PATH.d (یا control.d از گزینهٔ -c) وجود داشته باشد، محتویات هرگونه فایل کنترلی اضافی درون آن به انتهای فایل کنترلی اصلی (که وجود آن الزامی است) افزوده خواهد شد.
پردازش شرطی pmlogger_daily_report(1) را مطابق با توضیحات زیر انجام نده.
این گزینه حداکثر فضای مصرفی سیستم فایل را به ازای دایرکتوری هر میزبان برای فایل‌های آرشیو PCP ذخیره‌شده در مسیرهای $PCP_ARCHIVE_DIR/<hostname> و $PCP_REMOTE_ARCHIVE_DIR/<hostname> محدود می‌کند. مقدار fssize باید به‌صورت یک عدد صحیح همراه با پسوند K یا k برای کیلوبایت، M یا m برای مگابایت، و G یا g برای گیگابایت مشخص شود (مانند 500m یا 10G). در حالتی خاص، fssize می‌تواند کلمهٔ کلیدی unlimited باشد تا از اعمال هرگونه محدودیت بر فضای سیستم فایل جلوگیری کند (این رفتار پیش‌فرض است).

همچنین، محدودیت فضای سیستم فایل را می‌توان با تعریف متغیر محیطی $PCP_SPACELIMIT تنظیم کرد که عملکردی مشابه با $PCP_CULLAFTER دارد. اگر هر دو مقدار $PCP_SPACELIMIT و -d ارائه شوند و مقادیر متفاوتی را مشخص کنند، مقدار متغیر محیطی اولویت داشته و یک هشدار صادر می‌شود.

پس از تکمیل پردازش عادی روزانهٔ لاگ‌ها (فشرده‌سازی، ادغام، حذف بر اساس قدمت و غیره)، چنانچه مجموع فضای مصرفی سیستم فایل توسط هر نمونهٔ pmlogger(1) از fssize فراتر رود، فایل‌های آرشیو اضافی با اولویت قدیمی‌ترین فایل‌ها پاک‌سازی (حذف) خواهند شد تا زمانی که میزان مصرف فضای سیستم فایل به مقداری برابر یا کمتر از fssize کاهش یابد. این عملیات پاک‌سازی هرگز فایل‌های آرشیو دارای تاریخ امروز را حذف نمی‌کند و بدین ترتیب همواره تازه‌ترین آرشیوهای مورد نیاز فرایندهای فعال pmlogger(1) محفوظ می‌مانند.

اعمال محدودیت تنها در هنگام اجرای pmlogger_daily (معمولاً یک‌بار در روز) صورت می‌گیرد، نه به‌طور مداوم. در نتیجه، مجموع فضای مصرفی سیستم فایل برای هر نمونهٔ pmlogger(1) ممکن است در بازهٔ زمانی بین دو اجرای pmlogger_daily از حد تعیین‌شده فراتر رود (برای مثال، با ایجاد آرشیوهای جدید یا زمانی که آرشیوها جهت ادغام یا پیش از فشرده‌سازی ناهمگام از حالت فشرده خارج می‌شوند).

این گزینه باعث می‌شود که pmlogger_daily پرچم -E را به pmlogger_merge(1) منتقل کند تا سنجه‌های دارای ناهماهنگی در فراداده (metadata) به‌جای ایجاد خطای اجرایی، حذف شده و فرایند ادامه یابد. این ویژگی برای چرخش خودکار روزانهٔ آرشیوها طراحی شده است، جایی که موفقیت‌آمیز بودن ادغام، بازنویسی و فشرده‌سازی خودکار و بدون نظارت آرشیوهای روزانه اهمیت بالایی دارد. برای جزئیات بیشتر، به pmlogger_merge(1) و توضیحات پرچم -x در pmlogextract(1) مراجعه کنید..TP 5 -f, --force این گزینه pmlogger_daily را وادار می‌کند تا برای انجام عملیات فشرده‌سازی تلاش کند. استفاده از این گزینه در محیط‌های عملیاتی توصیه نمی‌شود.
پس از گذشت مدتی، آرشیوهای قدیمی PCP دور ریخته (حذف) می‌شوند. time یک مشخصهٔ زمانی در ساختار نحوی find-filter(1) است، بنابراین به صورت DD[:HH[:MM]]. بخش‌های اختیاری HH (ساعت) و MM (دقیقه) در صورت عدم تعیین، 0 در نظر گرفته می‌شوند. به‌طور پیش‌فرض time برابر 14:0:0 یا ۱۴ روز است، اما می‌توان آن را با استفاده از این گزینه تغییر داد.

چندین مقدار ویژه برای time شناخته شده است، از جمله 0 برای نگه‌نداشتن هیچ آرشیوی فراتر از مواردی که در حال حاضر توسط pmlogger(1) در حال نوشته شدن هستند، و forever یا never برای جلوگیری از دور ریختن (حذف) هرگونه آرشیو.

مقدار time همچنین می‌تواند با استفاده از متغیر $PCP_CULLAFTER تنظیم شود، که در محیط یا در یک فایل کنترلی تعیین می‌گردد. اگر هر دو $PCP_CULLAFTER و -k مقادیر متفاوتی را برای time مشخص کنند، مقدار متغیر محیطی استفاده شده و یک هشدار صادر می‌شود، بدین معنی که اگر $PCP_CULLAFTER در فایل control تنظیم شده باشد، بر -k مشخص‌شده در خط فرمان تقدم دارد.

توجه داشته باشید که مفهوم time این است که از زمان آخرین تغییر هر آرشیو سنجیده می‌شود، نه از تاریخ ایجاد اولیهٔ آرشیو. این امر پیامدهای ظریفی برای فشرده‌سازی دارد (پایین را ببینید) - فرایند فشرده‌سازی منجر به ایجاد فایل‌های آرشیو جدیدی می‌شود که زمان‌های تغییر جدیدی دارند. در این حالت، دورهٔ زمانی time مجدداً از زمان فشرده‌سازی شروع می‌شود.

هنگامی که این گزینه برای pmlogger_daily تعیین شود، تنها وظایف فشرده‌سازی انجام می‌گیرند؛ بنابراین هیچ چرخش pmlogger، حذف گزینشی، بازنویسی و مواردی از این دست انجام نخواهد شد. هنگامی که -K استفاده شود و period برابر 0 حاکم باشد (از طریق -x در خط فرمان یا $PCP_COMPRESSAFTER در محیط یا از طریق فایل control)، این حالت برای محیط‌هایی در نظر گرفته شده است که فشرده‌سازی آرشیوها پیش از پردازش روزانهٔ زمان‌بندی‌شده مطلوب باشد. برای رسیدن به این هدف، به محض اینکه pmlogger_check(1) پردازش معمول خود را کامل کرد، pmlogger_daily را تنها با گزینهٔ -K فراخوانی می‌کند. به شرطی که $PCP_COMPRESSAFTER روی 0 تنظیم شده باشد و همراه با سایر گزینه‌های موردنیاز فشرده‌سازی با فراخوانی زمان‌بندی‌شدهٔ pmlogger_daily همخوانی داشته باشد، این عمل تمام حجم‌ها (volumes) را به جز مواردی که هم‌اکنون توسط pmlogger(1) در حال نوشته شدن هستند، فشرده خواهد کرد. اگر $PCP_COMPRESSAFTER روی مقداری بزرگ‌تر از صفر تنظیم شده باشد، اجرای دستی pmlogger_daily با گزینهٔ -x می‌تواند برای فشرده‌سازی حجم‌هایی استفاده شود که تازه‌تر از زمان $PCP_COMPRESSAFTER هستند. این امر می‌تواند برای بازپس‌گیری فضای سیستم فایل از طریق فشرده‌سازی حجم‌ها زودتر از موعدی که در حالت عادی فشرده می‌شدند، استفاده شود. توجه داشته باشید که از آنجا که مقدار پیش‌فرض $PCP_COMPRESSAFTER برابر ۰ روز است، گزینهٔ -x هیچ اثری ندارد مگر اینکه فایل control ویرایش شده باشد و $PCP_COMPRESSAFTER روی مقداری بزرگ‌تر از 0 تنظیم شده باشد.

مقدار پیش‌فرض $PCP_COMPRESSAFTER برابر 0 است اگر zstd(1) نصب باشد، یا اگر xz(1) نصب بوده و کتابخانهٔ lzma در دسترس باشد (همان‌طور که برای گزینهٔ transparent_decompress توسط pmconfig(1) گزارش شده است). در غیر این صورت، مقدار پیش‌فرض $PCP_COMPRESSAFTER برابر never است.

برای اطمینان از اینکه هنگام اجرای این اسکریپت‌ها از طریق cron(8) یا systemd(1) پیام‌های عیب‌یابی ناخواسته از طریق ایمیل ارسال نشوند، پیام‌ها همواره به فایل‌های گزارش فرستاده می‌شوند. به‌طور پیش‌فرض، این فایل $PCP_LOG_DIR/pmlogger/pmlogger_daily.log است اما می‌توان آن را با استفاده از گزینهٔ -l تغییر داد. اگر این file گزارش هنگام شروع اسکریپت از قبل وجود داشته باشد، پیش از تولید اطلاعات عیب‌یابی در فایل گزارش، نام آن با پسوند .prev تغییر خواهد یافت (که هر فایل گزارش ذخیره‌شده از قبل را بازنویسی می‌کند). گزینه‌های -l و -t نمی‌توانند هم‌زمان استفاده شوند.
استفاده از این گزینه باعث می‌شود که pmlogger_daily خلاصه‌ای از مدخل‌های فایل «notices» را که در ۲۴ ساعت گذشته ایجاد شده‌اند تهیه کند و آن خلاصه را به مجموعه‌ای از addresses که با فاصله از یکدیگر جدا شده‌اند ایمیل نماید. این خلاصهٔ روزانه در فایل $PCP_LOG_DIR/NOTICES.daily ذخیره می‌شود، که در صورت عدم ثبت ورودی‌های جدید «notices» در دورهٔ ۲۴ ساعتهٔ گذشته خالی خواهد بود.
این گزینه می‌تواند برای غیرفعال کردن ادغام آرشیوها (یا تغییر نام) و بازنویسی به کار رود (-M مستلزم -r است). این قابلیت بیش از همه در مواردی مفید است که آرشیوها به‌صورت افزایشی به یک مخزن راه دور کپی می‌شوند، مثلاً با استفاده از rsync(1). ادغام، تغییر نام و بازنویسی همگی خطر افزایش بار همگام‌سازی را به دنبال دارند، به‌ویژه بلافاصله پس از اینکه pmlogger_daily اجرا شده باشد؛ بنابراین -M می‌تواند در این موارد مفید باشد..TP 5 -N, --showme این گزینه حالت «به من نشان بده» (show me) را فعال می‌کند، که در آن اعمال برنامه به سبک «make -n» در خروجی نمایش داده می‌شوند، اما اجرا نمی‌شوند. استفاده از -N همراه با -V قابلیت‌های عیب‌یابی را برای اشکال‌زدایی به حداکثر می‌رساند.
وضعیت خروج را وادار می‌کند به‌جز در خطاهای فاجعه‌بار، همیشه 0 باشد. این گزینه هنگام فراخوانی از یک سرویس یا واحد تایمر systemd(1) مفید است تا واحد مربوطه به گونه‌ای دچار شکست (failed) نشود که از اجرای بعدی آن توسط systemd(1) جلوگیری به عمل آید.
به‌طور پیش‌فرض تمام آرشیوهای ممکن ادغام خواهند شد. این گزینه رفتار قدیمی را بازمی‌گرداند که در آن تنها آرشیوهای دیروز به عنوان نامزد ادغام در نظر گرفته می‌شدند. در حالت خاصی که تنها یک آرشیو ورودی نیاز به ادغام دارد، pmlogmv(1) برای تغییر نام آرشیو استفاده می‌شود؛ در غیر این صورت، pmlogger_merge(1) برای ادغام تمام آرشیوهای یک میزبان خاص و یک روز خاص در یک آرشیو جدید PCP به کار می‌رود و آرشیوهای مجزا حذف می‌شوند.
به‌طور پیش‌فرض، علاوه بر آرشیوهای ایجاد شده توسط نمونه‌های محلی pmlogger(1) در زیر دایرکتوری‌های $PCP_ARCHIVE_DIR/<hostname> دستور pmlogger_daily همچنین آرشیوهایی را که از یک pmlogger(1) دورست از طریق pmproxy(1) محلی ارسال شده‌اند («pushed») و در زیر دایرکتوری‌های $PCP_LOG_DIR/pmproxy/<hostname> ذخیره گردیده‌اند، پردازش می‌کند. گزینه -P از پردازش آرشیوهای دریافتی از pmproxy(1) جلوگیری می‌کند.
اگر این گزینه برای pmlogger_daily مشخص شود، وضعیت پردازش روزانه بررسی می‌شود و چنانچه چرخش (rotation)، پاک‌سازی (culling)، بازنویسی، فشرده‌سازی و دیگر فرآیندهای روزانه pmlogger(1) در 24 ساعت گذشته انجام نشده باشد، در همین لحظه انجام می‌گیرد. هدف این است که pmlogger_daily به‌طور منظم با گزینه -p فراخوانی شود (در دقیقه 30 هر ساعت در تنظیمات پیش‌فرض cron(8)) تا اطمینان حاصل شود که اگر پردازش در زمان زمان‌بندی‌شده معمول (که به‌طور پیش‌فرض 00:10 است) از دست رفته باشد (مثلاً اگر سیستم در آن زمان خاموش یا در حالت تعلیق بوده است)، در اسرع وقت انجام پذیرد. با این گزینه، در صورتی که پردازش روز گذشته قبلاً انجام شده باشد، pmlogger_daily به‌سادگی خارج می‌شود. توجه داشته باشید که این گزینه در سیستم‌هایی که از systemd(1) پشتیبانی می‌کنند استفاده نمی‌شود، زیرا واحد سرویس pmlogger_daily.timer تنظیمات تایمر را با Persistent=true مشخص می‌کند. گزینه‌های -K و -p در pmlogger_daily مانعة‌الجمع هستند.
عکس گزینه -P که در بالا توضیح داده شد؛ یعنی تنها آرشیوهایی را پردازش می‌کند که از یک pmlogger(1) دورست از طریق pmproxy(1) محلی ارسال شده‌اند («pushed») و تمام آرشیوهای ایجاد شده توسط نمونه‌های محلی pmlogger(1) در زیر دایرکتوری‌های $PCP_ARCHIVE_DIR/<hostname> را نادیده می‌گیرد.
این گزینه خط فرمان به عنوان یک اولویت بازنویسی عمل می‌کند و بدون توجه به وجود هرگونه فایل یا دایرکتوری حاوی قوانین بازنویسی، از تمام بازنویسی‌های آرشیو با pmlogrewrite(1) جلوگیری به عمل می‌آورد.
گاهی اوقات تغییرات PMDA مستلزم آن است که تمام آرشیوها بازنویسی شوند، نه فقط مواردی که در ادغام جاری دخیل هستند. این امر مثلاً پس از ارتقای PCP، جایی که نسخه جدید یک PMDA موجود ساختار فراداده‌ها را اصلاح کرده است، لازم می‌شود. گزینه خط فرمان -R این سبک بازنویسی سراسری را تحمیل می‌کند. گزینه -R در pmlogger_daily با هر دو گزینه -r و -M مانعة‌الجمع است.
اگر فایل «notices» در PCP ($PCP_LOG_DIR/NOTICES) بزرگ‌تر از 20480 بایت باشد، pmlogger_daily نام فایل را با پسوند «.old» تغییر داده و یک فایل «notices» جدید آغاز می‌کند. آستانه چرخش فایل را می‌توان با استفاده از گزینه -s از 20480 به size بایت تغییر داد.
برای کمک به اشکال‌زدایی یا بررسی خطاهای متناوب، می‌توان از گزینه -t استفاده کرد. این گزینه ردیابی بسیار پرجزئیات (-VV) را فعال کرده و خروجی ردیابی را در فایلی به نام $PCP_LOG_DIR/pmlogger/daily.datestamp.trace ذخیره می‌کند، که در آن datestamp زمان اجرای pmlogger_daily در قالب YYYYMMDD.HH.MM است. علاوه بر این، آرگومان period تضمین می‌کند که فایل‌های ردیابیِ ایجاد شده با -t به مدت period روز نگهداری شده و سپس حذف شوند.
خروجی ناشی از اجرای اسکریپت‌ها توسط cron(8) را می‌توان با استفاده از گزینه -V گسترش داد، که ردیابی پرجزئیات فعالیت آن‌ها را فعال می‌کند. به‌طور پیش‌فرض اسکریپت‌ها هیچ خروجی‌ای تولید نمی‌کنند مگر اینکه به وضعیت خطا یا هشداری برخورد کنند. استفاده از -V دوم، سطح جزئیات را بیشتر افزایش می‌دهد. استفاده از -N همراه با -V قابلیت‌های عیب‌یابی را برای اشکال‌زدایی به حداکثر می‌رساند.
فایل‌های داده آرشیو را می‌توان پس از مدتی به‌صورت اختیاری فشرده‌سازی کرد تا در فضای سیستم فایل صرفه‌جویی شود. این قابلیت به‌ویژه برای تعداد زیادی از فرآیندهای pmlogger(1) تحت کنترل pmlogger_daily بسیار سودمند است.

time یک مشخصه زمانی در قالب نحو find-filter(1) است، به صورت DD[:HH[:MM]]. بخش‌های اختیاری HH (ساعت) و MM (دقیقه) در صورت عدم تعیین، برابر با 0 در نظر گرفته می‌شوند.

برخی مقادیر ویژه نیز برای time پذیرفته می‌شوند؛ از جمله 0 برای اعمال فشرده‌سازی در سریع‌ترین زمان ممکن، و forever یا never برای جلوگیری از انجام هرگونه فشرده‌سازی..PP اگر هنگام ساخت libpcp قابلیت transparent_decompress فعال شده باشد (که با گزینهٔ -L دستور pmconfig(1) قابل بررسی است)، رفتار پیش‌فرض، فشرده‌سازی «در سریع‌ترین زمان ممکن» است. در غیر این صورت رفتار پیش‌فرض عدم فشرده‌سازی فایل‌ها است (که با رفتار پیش‌فرض دیرینه در نسخه‌های پیشین PCP مطابقت دارد).

مقدار time همچنین می‌تواند با استفاده از متغیر $PCP_COMPRESSAFTER تنظیم شود، که در محیط یا در یک فایل control تعیین می‌گردد. اگر هر دوی $PCP_COMPRESSAFTER و -x مقادیر متفاوتی را برای time مشخص کنند، مقدار متغیر محیطی استفاده شده و یک هشدار صادر می‌شود. برای سایر نکات تفصیلی مهم دربارهٔ فشرده‌سازی حجم (volume compression)، گزینه‌های -K و -k (در بالا) را ببینید.

این گزینه برنامه‌ای را که برای فشرده‌سازی استفاده می‌شود مشخص می‌کند - به‌طور پیش‌فرض این برنامه pmlogcompress(1) است. متغیر محیطی $PCP_COMPRESS می‌تواند به عنوان یک سازوکار جایگزین برای تعریف program به کار رود. اگر هر دوی $PCP_COMPRESS و -X برنامه‌های فشرده‌سازی متفاوتی را مشخص کنند، مقدار متغیر محیطی استفاده شده و یک هشدار صادر می‌شود.
این گزینه امکان تعیین یک عبارت باقاعده را فراهم می‌کند که موجب کنار گذاشته شدن فایل‌هایی از مجموعه فایل‌های منطبق برای فشرده‌سازی می‌شود - این کار اجازه می‌دهد فقط فایل داده فشرده شود و همچنین مانع از تلاش مجدد برنامه برای فشرده‌سازی بیش از یک‌بار آن می‌گردد. مقدار پیش‌فرض regex عبارت است از:
"\.(index|Z|gz|bz2|zip|xz|lzma|lzo|lz4|zst)$"
- چنین فایل‌هایی با استفاده از گزینهٔ -v دستور egrep(1) پالایش می‌شوند. متغیر محیطی $PCP_COMPRESSREGEX می‌تواند به عنوان یک سازوکار جایگزین برای تعریف regex به کار رود. اگر هر دوی $PCP_COMPRESSREGEX و -Y مقادیر متفاوتی را برای regex تعیین کنند، مقدار متغیر محیطی استفاده شده و یک هشدار صادر می‌شود.
این گزینه موجب می‌شود pmlogger_daily در شرایطی که در حالت عادی اقدام به اجرای مجدد می‌کرد، مجدداً اجرا نشود (``re-exec'' نکند؛ به pmlogger(1) مراجعه کنید) و صرفاً برای آزمون‌های تضمین کیفیت (QA) در نظر گرفته شده است.
این گزینه موجب می‌شود pmlogger_daily هر زمان که ممکن باشد اقدام به اجرای مجدد (``re-exec'') کند (به pmlogger(1) مراجعه کنید) و صرفاً برای آزمون‌های تضمین کیفیت (QA) در نظر گرفته شده است.
-?, --help
نمایش پیام راهنمای استفاده و خروج.

علاوه بر این، pmlogger_daily از «قلاب‌ها» (``hooks'') زیر پشتیبانی می‌کند تا امکان انجام عملیات کمکی در نقاط کلیدی پردازش روزانهٔ بایگانی‌ها فراهم شود. این فراخوانی‌های برگشتی از طریق متغیرهایی کنترل می‌شوند که می‌توانند در محیط یا از طریق فایل control تنظیم شوند.

توجه داشته باشید که فراخوانی‌های برگشتی ادغام و ذخیرهٔ خودکار که در ادامه شرح داده شده‌اند، هنگامی که فقط کارهای فشرده‌سازی در حال انجام باشند (یعنی هنگامی که از گزینهٔ خط فرمان -K استفاده شود)، فعال نیستند.

تمام اجراهای اسکریپت فراخوانی برگشتی و جابه‌جایی فایل‌های ذخیرهٔ خودکار با کاربر غیرممتاز «pcp» و گروه «pcp» انجام خواهند شد؛ بنابراین ممکن است لازم باشد مجوزهای مناسب از قبل تنظیم شده باشند.

$PCP_MERGE_CALLBACK
هنگامی که بایگانی هر روز از طریق ادغام ساخته می‌شود و پیش از آن‌که هرگونه فشرده‌سازی صورت گیرد، اگر $PCP_MERGE_CALLBACK تعریف شده باشد، فرض می‌شود که این متغیر اسکریپتی است که با یک آرگومان شامل نام بایگانی (عاری از هرگونه پسوند) فراخوانی خواهد شد؛ یعنی چیزی به شکل /some/directory/path/YYYYMMDD. این اسکریپت باید یا یک مسیر کامل باشد، یا چیزی که در $PATH پوسته یافت شود. اسکریپت فراخوانی برگشتی در پیش‌زمینه اجرا خواهد شد، بنابراین pmlogger_daily تا تکمیل آن منتظر خواهد ماند.

اگر فایل کنترل شامل بیش از یک تعریف $PCP_MERGE_CALLBACK باشد، این موارد به‌صورت ترتیبی و به ترتیبی که در فایل کنترل آمده‌اند اجرا می‌شوند. اگر هنگام اجرای pmlogger_daily متغیر $PCP_MERGE_CALLBACK در محیط تعریف شده باشد، به‌گونه‌ای با آن رفتار می‌شود که انگار این گزینه اولین مورد در فایل کنترل بوده است؛ یعنی پیش از هر فراخوانی برگشتی ادغام ذکرشده در فایل کنترل اجرا خواهد شد.

اگر بستهٔ pcp-zeroconf نصب شده باشد، آن‌گاه یک فراخوانی برگشتی ادغام ویژه اضافه می‌شود تا پیش از هر گزینهٔ فراخوانی برگشتی ادغام دیگر، ابتدا pmlogger_daily_report(1) را فراخوانی کند، اما فقط برای نمونهٔ اصلی pmlogger(1). برای توضیحات مربوط به پیش‌نیازهای pcp-zeroconf به pmlogger_daily_report(1) مراجعه کنید.

اگر pmlogger_daily در حالت «جبران عقب‌افتادگی» (``catch up'') باشد (نیاز به ترکیب بایگانی‌های بیش از یک روز باشد)، هر فراخوانی برگشتی به ازای بایگانی هر روزی که تولید می‌شود، یک بار اجرا می‌گردد.

یک کاربرد متداول می‌تواند تولید گزارش‌های روزانه از بایگانی PCP باشد که باید تا زمان ایجاد بایگانی منتظر بماند، اما اگر پیش از هرگونه فشرده‌سازی احتمالی بایگانی انجام شود، کارآمدتر خواهد بود.

$PCP_COMPRESS_CALLBACK
اگر pmlogger_daily با -x 0 یا $PCP_COMPRESSAFTER=0 اجرا شود، فشرده‌سازی بلافاصله پس از ادغام انجام می‌گیرد. همگام با فشرده‌سازی بایگانی هر روز، اگر $PCP_COMPRESS_CALLBACK تعریف شده باشد، فرض می‌شود که این متغیر اسکریپتی است که با یک آرگومان شامل نام بایگانی (بدون پسوند) فراخوانی خواهد شد؛ یعنی چیزی به شکل /some/directory/path/YYYYMMDD. این اسکریپت باید یا یک مسیر کامل باشد، یا چیزی که در $PATH پوسته یافت شود. اسکریپت فراخوانی برگشتی در پیش‌زمینه اجرا خواهد شد، بنابراین pmlogger_daily تا تکمیل آن منتظر خواهد ماند.

اگر فایل کنترل شامل بیش از یک تعریف $PCP_COMPRESS_CALLBACK باشد، این موارد به‌صورت ترتیبی و به ترتیبی که در فایل کنترل ظاهر شده‌اند اجرا می‌شوند. اگر هنگام اجرای pmlogger_daily متغیر $PCP_COMPRESS_CALLBACK در محیط تعریف شده باشد، به‌گونه‌ای رفتار خواهد شد که انگار این گزینه اولین مورد در فایل کنترل بوده است؛ یعنی ابتدا اجرا خواهد شد..PP اگر pmlogger_daily در حالت «جبران عقب‌افتادگی» (catch up) باشد (بیش از یک روز آرشیو نیاز به فشرده‌سازی داشته باشد)، آن‌گاه هر بازخوانی (call back) به ازای آرشیو هر روزی که فشرده می‌شود یک بار اجرا خواهد شد.

یک کاربرد متداول می‌تواند نگهداری آرشیوهای اخیر به صورت فشرده‌نشده جهت پرس‌وجوی بهینه‌تر، و انتقال آرشیوهای قدیمی‌تر به مکان ذخیره‌سازی دیگری پس از اتمام فشرده‌سازی باشد.

$PCP_AUTOSAVE_DIR
هنگامی که ادغام و فشرده‌سازی احتمالی توسط pmlogger_daily انجام شد، در صورتی که $PCP_AUTOSAVE_DIR تعریف شده باشد، تمام فایل‌های فیزیکی تشکیل‌دهندهٔ آرشیو یک روز به دایرکتوری مشخص‌شده توسط $PCP_AUTOSAVE_DIR منتقل (ذخیرهٔ خودکار) خواهند شد.

نام پایه (basename) آرشیو برای تعیین کلمات رزروشدهٔ DATEYYYY (سال)، DATEMM (ماه) و DATEDD (روز) به کار می‌رود و این موارد (همراه با LOCALHOSTNAME) می‌توانند به صورت مستقیم در $PCP_AUTOSAVE_DIR ظاهر شوند و در زمان اجرا برای تولید نام دایرکتوری مقصد جایگزین گردند. برای مثال:
$PCP_AUTOSAVE_DIR=/gpfs/LOCALHOSTNAME/DATEYYYY/DATEMM-DATEDD

توجه داشته باشید که این کلمات رزروشدهٔ «تاریخ» متناظر با تاریخی هستند که داده‌های آرشیو در آن جمع‌آوری شده است، نه تاریخی که pmlogger_daily اجرا شده است.

اگر $PCP_AUTOSAVE_DIR (پس از جایگزینی LOCALHOSTNAME و «تاریخ») وجود نداشته باشد، pmlogger_daily تلاش خواهد کرد آن را (همراه با هر دایرکتوری والد دیگری که وجود ندارد) ایجاد کند. فقط در نظر داشته باشید که ایجاد این دایرکتوری تحت uid کاربر «pcp» اجرا می‌شود، بنابراین دایرکتوری‌های واقع در مسیر منتهی به $PCP_AUTOSAVE_DIR ممکن است نیاز به دسترسی نوشتن برای این کاربر غیر ریشه (non-root) داشته باشند.

منظور از «انتقال» آرشیوها، یک فرایند بسیار محتاطانهٔ بررسی چک‌سام-کپی-چک‌سام-حذف است (با استفاده از گزینهٔ -c برای pmlogmv(1)) که در صورت شکست کپی یا عدم تطابق چک‌سام‌ها متوقف خواهد شد (آرشیوها مهم هستند، بنابراین نمی‌توان ریسک مواردی مانند پر شدن سیستم‌فایل یا اختلال دسترسی‌ها در فرایند کپی را پذیرفت).

اگر pmlogger_daily در حالت «جبران عقب‌افتادگی» باشد (بیش از یک روز آرشیو نیاز به ادغام داشته باشد)، آرشیوهای مربوط به بیش از یک روز می‌توانند در این مرحله کپی شوند.

یک کاربرد متداول می‌تواند ایجاد اولیهٔ آرشیوهای PCP روی یک سیستم‌فایل محلی باشد؛ سپس پس از جمع‌آوری و ادغام تمام داده‌های یک روز، انتقال آرشیو آن روز به یک سیستم‌فایل اشتراکی یا سیستم‌فایل از راه دور انجام شود. این کار می‌تواند امکان پشتیبان‌گیری خودکار در فضای ذخیره‌سازی خارج از محل (off-site storage) را فراهم کند و/یا تعداد عملیات I/O و عملیات فرادادهٔ سیستم‌فایل را روی سیستم‌فایل غیرمحلی (که احتمالاً کندتر است) کاهش دهد.

برای اطلاع از شرح فایل(های) کنترلی که جهت تعیین این‌که کدام نمونه‌های pmlogger(1) و کدام آرشیوها توسط pmlogger_check(1) و pmlogger_daily مدیریت می‌شوند، به pmlogger.control(5) مراجعه کنید.

علاوه بر این، هنگام پردازش آرشیوهای pmproxy(1)، متغیرهای محیطی نظیر $PCP_CULLAFTER یا $PCP_COMPRESSAFTER می‌توانند برای تمام میزبان‌های راه دور از طریق فایل $PCP_LOG_DIR/pmproxy/control و/یا برای هر میزبان به طور اختصاصی از طریق فایل‌هایی به نام $PCP_LOG_DIR/pmproxy/<hostname>/control تنظیم شوند.

$PCP_VAR_DIR/config/pmlogger/config.default
مکان پیش‌فرض فایل پیکربندی pmlogger(1) برای ثبات اولیهٔ محلی (primary logger)، که معمولاً به صورت خودکار توسط pmlogconf(1) ایجاد می‌شود.
$PCP_ARCHIVE_DIR/<hostname>
مکان پیش‌فرض برای آرشیوهای اطلاعات کارایی جمع‌آوری‌شده از میزبان hostname
$PCP_ARCHIVE_DIR/<hostname>/lock
فایل قفل موقت برای تضمین انحصار متقابل در حین مدیریت pmlogger(1) برای میزبان hostname - در صورت وجود، اگر هیچ‌یک از pmlogger_daily یا pmlogger_check(1) در حال اجرا نباشند، می‌توان آن را با اطمینان حذف کرد
$PCP_ARCHIVE_DIR/<hostname>/Latest
پوشهٔ آرشیو (archive folio) PCP ایجادشده توسط mkaf(1) برای جدیدترین آرشیو راه‌اندازی‌شده شامل معیارهای کارایی از میزبان hostname
$PCP_LOG_DIR/NOTICES
فایل «اعلان‌ها» (notices) در PCP که توسط pmie(1) و ابزارهای وابسته استفاده می‌شود
$PCP_LOG_DIR/pmlogger/pmlogger_daily.log
اگر اجرای قبلی pmlogger_daily هرگونه خروجی تولید کرده باشد، در اینجا ذخیره می‌شود. حالت عادی عدم تولید خروجی است که در این صورت فایل وجود نخواهد داشت.
$PCP_ARCHIVE_DIR/SaveLogs
اگر این دایرکتوری وجود داشته باشد، فایل گزارش ناشی از آرگومان -l برای pmlogger_daily با قالبی به صورت <date>-pmlogger_daily.log.<pid> یا <date>-pmlogger_daily-K.log.<pid> در این دایرکتوری ذخیره خواهد شد. این امر اجازه می‌دهد فایل گزارش در زمانی دیگر بازبینی شود، حتی اگر چندین اجرای pmlogger_daily در این فاصله آغاز شده باشد. از آنجا که ابزارهای مدیریت آرشیو PCP تحت حساب کاربری $PCP_USER یعنی «pcp» اجرا می‌شوند، $PCP_ARCHIVE_DIR/SaveLogs معمولاً باید متعلق به کاربر «pcp» باشد.
$PCP_ARCHIVE_DIR/<hostname>/SaveLogs
اگر این دایرکتوری وجود داشته باشد، فایل گزارش ناشی از آرگومان -l برای یک pmlogger(1) به‌تازگی اجراشده برای hostname با نام archive.log در این دایرکتوری ذخیره خواهد شد، که در آن archive نام پایهٔ فایل‌های آرشیو PCP مرتبط با pmlogger(1) است. این امر اجازه می‌دهد فایل گزارش در زمانی دیگر بازبینی شود، حتی اگر چندین نمونهٔ pmlogger(1) برای hostname در این فاصله اجرا شده باشد. از آنجا که ابزارهای مدیریت آرشیو PCP تحت uid کاربر «pcp» اجرا می‌شوند، $PCP_ARCHIVE_DIR/<hostname>/SaveLogs معمولاً باید متعلق به کاربر «pcp» باشد.
$PCP_LOG_DIR/pmlogger/.NeedRewrite
اگر این فایل وجود داشته باشد، معادل استفاده از -R در خط فرمان در نظر گرفته می‌شود و پس از انجام تمام بازنویسی‌ها، فایل حذف خواهد شد..SH "محیط PCP (PCP ENVIRONMENT)"
$PCP_SPACELIMIT
در صورت تنظیم، حداکثر فضای مجاز فایل‌سیستم (به کیلوبایت، یا با پسوند اختیاری K/M/G مشابه گزینه -d) را برای هر دایرکتوری بایگانی به ازای هر میزبان در زیر $PCP_ARCHIVE_DIR یا $PCP_REMOTE_ARCHIVE_DIR مشخص می‌کند. این مقدار توسط pmlogger_daily هنگام اعمال محدودیت‌های نگهداری بایگانی برای فضای فایل‌سیستم استفاده می‌شود، مگر اینکه گزینه -d مشخص شده باشد که در این حالت پرچم خط فرمان بر متغیر محیطی اولویت دارد و یک هشدار صادر می‌شود. اعمال این محدودیت پس از هر بار اجرای pmlogger_daily رخ می‌دهد و تنها در همان زمان اعمال می‌شود—نه به صورت مداوم.

متغیرهای محیطی با پیشوند PCP_ برای پارامتریک‌سازی نام فایل‌ها و دایرکتوری‌های مورد استفاده توسط PCP به کار می‌روند. در هر نصب، فایل /etc/pcp.conf حاوی مقادیر محلی برای این متغیرها است. متغیر $PCP_CONF ممکن است برای تعیین یک فایل پیکربندی جایگزین استفاده شود، همان‌گونه که در pcp.conf(5) شرح داده شده است.

نسخه‌های پیشین pmlogger_daily از find(1) برای پیدا کردن فایل‌ها جهت فشرده‌سازی یا پاک‌سازی انتخابی استفاده می‌کردند و گزینه‌های -k و -x تنها مقادیر صحیح را به معنای «روزها» می‌پذیرفتند. معناشناسی این روش با توجه به اینکه find(1) دقت و معناشناسی متفاوتی را در پلتفرم‌های گوناگون ارائه می‌دهد، بسیار غیردقیق بود.

پیاده‌سازی فعلی pmlogger_daily از find-filter(1) استفاده می‌کند که بازه‌های زمانی با دقت بالا و معناشناسیِ وابسته به زمان اجرا را فراهم می‌آورد و در تمام پلتفرم‌ها یکدست و سازگار است.

PCPIntro(1), egrep(1), find-filter(1), pmconfig(1), pmlc(1), pmlogcompress(1), pmlogconf(1), pmlogctl(1), pmlogextract(1), pmlogger(1), pmlogger_check(1), pmlogger_daily_report(1), pmlogger_merge(1), pmlogmv(1), pmlogrewrite(1), pmproxy(1), systemd(1), xz(1), zstd(1), pmlogger.control(5) و cron(8).

PCP Performance Co-Pilot