PROCD(8) راهنمای procstatd PROCD(8)
"

procstatd - ارائه اطلاعات آماری ناشناس برای پایش کارآمد ایستگاه‌های کاری شبکه از راه دور


procstatd %[-v] %[-d port] %[-i port]

دیمن procstatd برای ارائه آمارها و اطلاعات سیستمی به میزبان‌ها یا برنامه‌های پایشگر (مانیتورینگ) در شبکه از طریق یک رابط کاربری برنامه‌نویسی (API) ساده و با قابلیت تجزیه آسان طراحی شده است.

در حالت دیمن انشعابی (forking daemon با گزینه [-d port])، روی پورت پیشنهادی (که باید اشغال‌نشده باشد) شنود می‌کند و با دریافت درخواست اتصال، آن را پذیرفته و نسخه‌ای جدید از خود را برای رسیدگی به اتصال منشعب (fork) می‌سازد. اتصال به هیچ وجه احراز هویت نمی‌شود، اما روی کلاسترهای محافظت‌شده مانند Beowulf یا شبکه‌های محلی پشت فایروال باید امن و کارآمد باشد.

تنها در حالت دیمن انشعابی، می‌توان دیمن را همراه با گزینه پرگو ([-v]) از خط فرمان اجرا کرد تا اطلاعات اشکال‌زدایی به دست آید. گزینه -v در حالت inetd تأثیری ندارد.

در حالت inetd با گزینه [-i port]، باید یک ورودی مناسب برای procstatd در /etc/services روی یک پورت باز ایجاد شود، برای نمونه:

procstatd	7885/tcp	# Private procstatd connection

و خط مناسبی به /etc/inetd.conf افزوده شود:

procstatd    stream  tcp     nowait  nobody    /usr/sbin/tcpd	/usr/local/sbin/procstatd/procstatd -i 7885

پورت 7885 استفاده‌شده در این مثال، پورت پیش‌فرضی است که توسط برنامه همراه "watchman" استفاده می‌شود.

در این حالت، پوشش‌دهنده‌های TCP به همراه /etc/hosts.[allow,deny] یک لایه امنیتی معقول فراهم می‌کنند. به علاوه، دیمن به عنوان یک کاربر غیرممتاز مانند nobody به راحتی اجرا می‌شود. در نهایت، خود دیمن با دقت نوشته شده تا در برابر حملات سرریز بافر محافظت شود.

پس از برقراری اتصال، دیمن سه دستور را می‌پذیرد:

init  مقداردهی اولیه تمام ساختارها (الزامی به عنوان نخستین دستور)
send  آغاز ارسال آمارهای گره/کلاینت‌ها
quit  خاتمه اتصال -- نمونه دیمن پایان می‌یابد

پس از دریافت دستور send، دیمن پیامی با ساختار کلی زیر روی رابط بازمی‌گرداند:

rgb=152.16.67.32 0.00|version=2.2.5-22 0.00|cpu 4.27|cpu_user 48.20|...

تجزیه این قالب بسیار ساده است: فیلدها با کاراکتر | از هم جدا می‌شوند. نام فیلدها با یک فاصله از داده‌های فیلد جدا می‌گردند. داده‌های کمکی نیز با یک علامت = از نام فیلد تفکیک می‌شوند. بنابراین رابط کاربری این دیمن نیازی به دانستن فیلدهای موجود در هر میزبان خاص ندارد و به راحتی بدون خرابی در صورت اضافه شدن فیلدهای جدید توسعه‌پذیر است.

برنامه procstatd باید یا در مسیری در دسترس کاربران (برای نمونه /usr/local/bin) یا در مسیری در دسترس ریشه که دیمن‌های عمومی قرار دارند (مانند /usr/local/sbin یا /usr/local/etc) نصب شود.

در حالت اول، procstatd می‌تواند توسط کاربران بدون دسترسی ویژه فراخوانی شود.

در حالت دوم، دیمن باید در زمان بوت از طریق قطعه کدی مانند:

if [ -x /usr/local/sbin/procstatd ]
then
  /usr/local/bin/procstatd
fi

در rc.local یا معادل آن در سیستم شما اجرا شود.

این یک نسخه ALPHA از دیمن است و پایداری آن تضمین نمی‌شود. برای امن‌سازی مناسب، توصیه می‌شود در حالت انشعابی (حالت -d) تنها در یک شبکه کلاستر محافظت‌شده اجرا شود. برای استفاده از procstatd در یک شبکه باز، از حالت inetd استفاده کرده و مالک فرآیند را به کاربر nobody تغییر دهید و با hosts.allow دسترسی را محدود نمایید.

در صورت بروز مشکل، برای اشکال‌زدایی می‌توان از حالت پرگو با پرچم -v استفاده کرد:

procstatd -v -d port_whatever

سپس اتصال از طریق telnet به پورت مربوطه:

telnet procstatd_host port_whatever

و وارد کردن دستورات:

init
send
send
quit

برای مشاهده ردپای فعالیت آن.

فایل‌های اجرایی و اسکریپت‌ها در مسیر زیر قرار دارند:

/usr/local/[bin,sbin]/procstatd

کد منبع procstatd/watchman همچنین می‌تواند به عنوان الگویی به کار رود که به سادگی برای پشتیبانی از انواع الگوهای محاسبات موازی سرور/کلاینت سفارشی‌سازی شود.

لطفاً گزارش‌های اشکال، وصله‌ها و پیشنهادات را به rgb@phy.duke.edu ارسال فرمایید. همچنین مراجع زیر برای اطلاعات بیشتر در دسترس هستند:

http://www.beowulf.org
http://www.extremelinux.org

نویسنده procstatd، رابرت جی. براون (Robert G. Brown <rgb@phy.duke.edu>) است.

procstatd 1.0alpha