PMLOGCONF(1) General Commands Manual PMLOGCONF(1)

pmlogconf - ایجاد یا ویرایش فایل پیکربندی pmlogger

pmlogconf [-cqrvV?] [-d groupsdir] [-D debug] [-g grouptag] [-h host] [-s groupfile] configfile

دستور pmlogconf می‌تواند برای ایجاد و تغییر یک فایل پیکربندی عمومی برای بایگان‌کننده PCP، یعنی pmlogger(1) به کار رود.

اگر configfile وجود نداشته باشد، pmlogconf یک فایل پیکربندی عمومی با مجموعه‌ای پیش‌فرض از سنجه‌های فعال و بازه‌های ثبت وقایع ایجاد خواهد کرد.

پس از ایجاد، configfile می‌تواند همراه با گزینه -c در pmlogger(1) برای انتخاب سنجه‌های کارایی و تعیین بازه‌های ثبت وقایع برای یک آرشیو PCP استفاده شود.

اگر configfile از قبل وجود داشته باشد، pmlogconf از کاربر درخواست ورودی می‌کند تا گروه‌هایی از سنجه‌های کارایی مرتبط را فعال یا غیرفعال کند و بازه ثبت وقایع را برای هر گروه فعال‌شده کنترل نماید.

انتخاب گروه نیازمند یک پاسخ ساده y (بله) یا n (خیر) به اعلان Log this group? است.

پاسخ‌های دیگر در این مرحله می‌توانند برای انتخاب توابع کنترلی بیشتر به شرح زیر استفاده شوند:

گزارش نام سنجه‌های موجود در گروه فعلی.
پایان دادن به انتخاب گروه (خروج) و اعمال نکردن تغییرات بیشتر در این گروه یا هر یک از گروه‌های بعدی.
/pattern
عدم اعمال تغییر در این گروه، اما جستجو برای گروهی حاوی pattern در توضیحات گروه یا نام سنجه‌های وابسته.

یک بازه ثبت وقایع با پاسخ دادن به اعلان Logging interval? توسط کلیدواژه‌های once یا default یا یک مشخصه بازه زمانی معتبر در pmlogger(1) به فرم ``every N timeunits'' یا صرفاً ``N timeunits '' (کلمه every اختیاری است) مشخص می‌شود؛ که در آن N یک عدد صحیح بدون علامت است و timeunits یکی از کلیدواژه‌های msec، millisecond، sec، second، min، minute، hour یا شکل جمع یکی از این کلیدواژه‌ها است.

هنگام اجرا از طریق فرآیندهای خودکارِ راه‌اندازی ثبت وقایع، گزینه -c برای نشان دادن این که pmlogconf در حالت ایجاد خودکار (auto-create) است و هیچ گفتگوی تعاملی صورت نمی‌گیرد، استفاده می‌شود. فایل خروجی configfile دارای یک پیام توضیحی اضافی و برچسب زمانی است که این موضوع را نشان می‌دهد، تا بتوان آن را شناسایی کرده و متعاقباً با استفاده مجدد از -c به‌روزرسانی نمود. این گزینه برای استفاده تعاملی از این ابزار مناسب نیست.

گزینه -q گفتگوی مربوط به بازه ثبت وقایع را متوقف می‌کند و بازه فعلی را از configfile حفظ می‌نماید.

خروجی پرجزئیات‌تر را می‌توان با گزینه -v فعال کرد..SH "فایل‌های گروه راه‌اندازی (SETUP GROUP FILES)" هنگامی که یک configfile اولیه ایجاد می‌شود، مشخصات پیش‌فرض از مجموعه‌ای از فایل‌های گروه در زیر groupsdir مشخص‌شده با گزینهٔ -d به‌دست می‌آیند (مقدار پیش‌فرض groupsdir برابر با $PCP_VAR_DIR/config/pmlogconf است که در اکثر موارد درست می‌باشد، بنابراین گزینهٔ -d در عمل به‌ندرت استفاده می‌شود).

ساختار دایرکتوری در زیر groupsdir دلخواه است، چرا که تمام فایل‌های عادی با پیمایش بازگشتی پیدا شده و مورد بررسی قرار می‌گیرند؛ از این رو محصولات جانبی و توسعه‌دهندگان PMDA می‌توانند با افزودن دایرکتوری‌ها و/یا فایل‌های گروه جدید در زیر groupsdir، پیش‌فرض‌های دردسترس برای pmlogconf را به‌سادگی گسترش دهند.

این فایل‌های گروه به روش‌های زیر پردازش می‌شوند:

  • هنگامی که یک configfile جدید ایجاد می‌شود، تمام فایل‌های گروه پردازش می‌شوند.
  • هر زمان که pmlogconf با یک configfile موجود اجرا شود، groupsdir پیمایش می‌شود تا بررسی شود آیا گروه جدیدی تعریف شده است که باید برای گنجانده شدن در configfile در نظر گرفته شود یا خیر.
  • هنگامی که pmlogconf گروهی را در configfile پردازش می‌کند که فعال است، فهرست معیارهای (metrics) مرتبط با آن گروه از فایل گروه گرفته می‌شود (و جایگزین هر فهرست قبلی از معیارهای مرتبط با این گروه در configfile می‌گردد).
  • هنگامی که هر یک از گزینه‌های خط فرمان -r (پویش مجدد یا reprobe) یا -c (ایجاد خودکار یا auto-create) مشخص شوند، تمام گروه‌ها (نه فقط گروه‌های تازه کشف‌شده) مجدداً پردازش می‌شوند تا بررسی شود که آیا باید برای گنجانده شدن در configfile در نظر گرفته شوند یا خیر.
  • اگر گروهی در configfile یافت شود اما گروه متناظر با آن در زیر groupsdir وجود نداشته باشد (مانند حالتی که یک گروه با ارتقای PCP منسوخ می‌شود)، نحوهٔ برخورد با آن گروه به حالتی بستگی دارد که pmlogconf در آن اجرا می‌شود. با -c گروه متناظر از configfile حذف می‌شود، در غیر این صورت گروه متناظر در configfile بدون تغییر باقی می‌ماند. در هر دو حالت یک هشدار صادر می‌شود.

هر فایل گروه ساختاری به شرح زیر دارد:

  • خط نخست باید شامل #pmlogconf-setup 2.0 باشد.
  • سایر خطوطی که با # آغاز می‌شوند به‌عنوان توضیح (comment) در نظر گرفته می‌شوند.
  • خط‌های خالی نادیده گرفته می‌شوند.
  • یک یا چند خط که با کلمهٔ کلیدی ident آغاز می‌شوند، برای ارائهٔ توضیحات خوانا برای انسان دربارهٔ گروه استفاده می‌شوند.
  • خط‌های غیرخالی که با فاصله (white space) آغاز می‌شوند، معیارهای مرتبط با این گروه را مشخص می‌کنند، هر خط یک معیار. هر مشخصهٔ معیار از قواعد پیکربندی pmlogger(1) پیروی می‌کند، یعنی یا نام یک گرهٔ غیربرگ در PMNS (به‌معنای تمام نام‌های فرزند در PMNS) است، یا نام یک گرهٔ برگ در PMNS که می‌تواند اختیاری با یک یا چند نام نمونه محصور در ``['' و ``]'' همراه باشد.
  • یک خط کنترلی که با یکی از کلمات کلیدی probe یا force آغاز می‌شود باید وجود داشته باشد.
  • یک خط کنترلی اختیاری برای بازهٔ ثبت وقایع با کلمهٔ کلیدی delta آغاز می‌شود که در ادامهٔ آن یکی از مشخصه‌های بازهٔ pmlogger(1) که در بالا توصیف شد می‌آید.
  • خط‌های کنترلی اختیاری معیارهای اشتقاقی با کلمهٔ کلیدی define آغاز می‌شوند و قالب زیر را دارند:

define name expr
که در آن name نام یک معیار اشتقاقی و expr عبارت معیار اشتقاقی است. برای توضیحات نحوی و معنایی name و expr به pmRegisterDerived(3) مراجعه کنید. پس از تعریف، name می‌تواند به‌عنوان metric در یک خط کنترلی بعدی probe استفاده شود که امکان بیان شروط پیچیده‌تر را برای گنجاندن مشروط معیارها در configfile فراهم می‌آورد.

توجه داشته باشید که name باید در تمام فایل‌های گروه یکتا باشد و با نام‌های موجود در PMNS تداخل نداشته باشد. بنابراین هنگام ایجاد فایل‌های گروه ممکن است نیاز به اتخاذ یک قرارداد نام‌گذاری مناسب باشد.

•
خطوط کنترلی probe دارای این قالب هستند:

probe metric [condition [state_rule] ]
که در آن metric نام یک معیار PCP است (باید یک گرهٔ برگ در PMNS باشد، هیچ مشخصهٔ نمونه‌ای مجاز نیست، و نباید یک معیار اشتقاقی باشد مگر آنکه در یک خط کنترلی قبلی define ذکر شده باشد) و condition اختیاری، کلمهٔ کلیدی exists است (در صورتی درست است که metric وجود داشته باشد، یعنی در PMNS تعریف شده باشد) یا کلمهٔ کلیدی values است (در صورتی درست است که metric در PMNS وجود داشته باشد و دارای یک یا چند مقدار فعلی باشد) یا عبارتی به فرم
op val که در آن op یکی از عملگرهای awk(1) است (==، !=، >، >=، <، <=، ~ (تطابق عبارت باقاعده) یا !~ (نفی تطابق عبارت باقاعده)) و val یک مقدار است (توالی دلخواهی از نویسه‌ها به‌جز فاصله)، و condition در صورتی درست است که نمونه‌ای از metric وجود داشته باشد که عبارت را درست کند..PP اگر condition مشخص نشده باشد، پیش‌فرض exists است.

هنگامی که یک condition صریح ارائه شود، ممکن است یک state_rule اختیاری نیز به شکل زیر وجود داشته باشد:
? true_state : false_state که در آن true_state (در صورتی که condition درست باشد اعمال می‌شود) و false_state (در صورتی که condition نادرست باشد اعمال می‌شود) هر دو از کلمات کلیدی زیر انتخاب می‌شوند: include (گنجاندن و فعال‌سازی گروه و معیارهای مرتبط در configfile)، available (گنجاندن و غیرفعال‌سازی گروه در configfile - اقدام کاربر با y، همان‌طور که در بالا در حالتی که configfile از پیش موجود باشد شرح داده شد، برای فعال‌سازی گروه و افزودن معیارهای مرتبط به configfile مورد نیاز است) یا exclude (گروه برای گنجانده شدن در configfile در نظر گرفته نمی‌شود).

قانون state_rule پیش‌فرض عبارت است از:
? available : exclude

•
خطوط کنترلی force با کلمه کلیدی force آغاز می‌شوند و به دنبال آن یکی از وضعیت‌های تعریف‌شده در بالا می‌آید، بنابراین یکی از اقدامات include، exclude یا available بدون قید و شرط بر روی گروه اعمال می‌گردد.

کاوش (probing) تنها زمانی انجام می‌شود که یک گروه جدید به configfile اضافه شود یا زمانی که گزینه خط فرمان -r مشخص شده باشد. ارزیابی شرایط کاوش از طریق برقراری ارتباط با pmcd(1) روی hostname (پیش‌فرض :local) صورت می‌گیرد.

گزینه‌های خط فرمان موجود عبارتند از:

فعال‌سازی حالت غیرتعاملی و ساخت خودکار (auto-create).
مسیر دایرکتوری groupsdir را مشخص می‌کند.
پرس‌وجوی وضعیت لاگ‌گیری برای گروه لاگ‌گیری خاص با نام grouptag.
منبع معیارهای عملکرد به جای localhost پیش‌فرض، pmcd(1) بر روی host است.
حالت بی‌صدا؛ فرونشاندن دیالوگ بازه زمانی لاگ‌گیری.
بررسی مجدد تمامی گروه‌ها جهت گنجاندن در configfile.
گزارش وضعیت لاگ‌گیری پیش‌فرض برای گروه لاگ‌گیری درون groupfile. این خروجی معادل خروجی تولیدشده توسط اسکریپت شل از رده خارج pmlogconf-setup در نسخه‌های قبلی PCP است.
فعال‌سازی حالت پرگو (verbose).
نمایش شماره نسخه و خروج.
-?, --help
نمایش پیام راهنمای استفاده و خروج..SH "مثال‌ها (EXAMPLES)" فایل گروهیِ زیر بیشتر عناصر نحویِ پشتیبانی‌شده را نمایش می‌دهد.
#pmlogconf-setup 2.0
ident   Example group file
ident   ... more description
delta   1 minute
probe   sample.secret.foo.one values ? include : exclude
        sample.secret.foo.one
        sample.secret.foo.bar   # non-leaf in the PMNS
        sample.colour [ red green ]

در مثال زیر (بک‌اسلش‌ها برای خوانایی بیشتر اضافه شده‌اند، عبارت define کاملاً در یک خط قرار دارد)، اگر معیار mumble.foo شناخته‌شده باشد و حداقل یک نمونه (و مقدار) داشته باشد، یا اگر معیار mumble.bar شناخته‌شده باشد و حداقل یک نمونه (و مقدار) داشته باشد، معیارهای mumble در configfile گنجانده خواهند شد:

#pmlogconf-setup 2.0
ident   Derived metric example with alternation
define  mumble.check = \
            (defined(mumble.foo) ? count(mumble.foo) : 0) + \
            (defined(mumble.bar) ? count(mumble.bar) : 0)
probe   mumble.check > 0 ? include : exclude
        mumble

مثال زیر از یک معیار مشتق‌شده برای دسترسی به یک نمونهٔ خاص از معیار در یک سطر کنترلی probe استفاده می‌کند.

#pmlogconf-setup 2.0
ident   Derived metric example using a single metric instance
define  fumble_log = fumble.control[verbose_log]
probe   fumble_log > 0 ? include : exclude
        fumble.detailed

نسخهٔ فعلی pmlogconf (2.0) در مقایسه با نسخه‌های پیشین، از قالب کمی متفاوتی برای configfile پشتیبانی می‌کند. اگر یک configfile نسخهٔ قدیمی به pmlogconf ارائه شود، به قالب جدید تبدیل خواهد شد.

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

pmlogconf به دلایل کارایی و برای جلوگیری از گنجانده شدن معیارهای مشتق‌شده در configfile، هرگونه متغیر محیطی $PCP_DERIVED_CONFIG را با یک رشتهٔ خالی بازنویسی می‌کند.

pmlogconf هنگام کاوش و ایجاد فایل‌های پیکربندی جدید pmlogger متغیر محیطی $PMCD_WAIT_TIMEOUT را رعایت می‌کند. در صورت عدم تنظیم این متغیر در محیط، از مقدار پیش‌فرض ۱۰ ثانیه برای مهلت زمانی استفاده می‌شود..SH "گزینه‌های اشکال‌زدایی (DEBUGGING OPTIONS)" گزینهٔ -D یا --debug خروجی داده‌های تشخیصی اضافی را روی stderr فعال می‌کند تا به تفکیک و ارزیابی مشکلات کمک کند، اگرچه این اطلاعات گاهی مبهم است و در وهله اول برای راهنمایی توسعه‌دهندگان در نظر گرفته شده تا کاربران نهایی. debug فهرستی از گزینه‌های اشکال‌زدایی جداشده با کاما است؛ از pmdbg(1) به همراه گزینهٔ -l برای به‌دست آوردن فهرستی از گزینه‌های اشکال‌زدایی موجود و معنی آن‌ها استفاده کنید.

گزینهٔ -D یا --debug خروجی داده‌های تشخیصی اضافی را روی stderr فعال می‌کند تا به تفکیک و ارزیابی مشکلات کمک کند، اگرچه این اطلاعات گاهی مبهم است و در وهله اول برای راهنمایی توسعه‌دهندگان در نظر گرفته شده تا کاربران نهایی. debug فهرستی از گزینه‌های اشکال‌زدایی جداشده با کاما است؛ از pmdbg(1) به همراه گزینهٔ -l برای به‌دست آوردن فهرستی از گزینه‌های اشکال‌زدایی موجود و معنی آن‌ها استفاده کنید.

گزینه‌های اشکال‌زدایی مختص pmlogconf به شرح زیر هستند:

گزینه توضیحات
appl0 عملیات‌های فایل گروه
appl1 عملیات‌های کاوش متریک
appl2 تخلیهٔ کامل و پرجزئیات ساختارهای دادهٔ گروهی داخلی

pmcd(1)، pmlogger(1)، PMAPI(3)، pmRegisterDerived(3)، pcp.conf(5) و pcp.env(5).

PCP Performance Co-Pilot