sensord(8) Linux System Administration sensord(8)

sensord - دیمن ثبت اطلاعات حسگرها

sensord [گزینه‌ها] [تراشه‌ها]

sensord دیمنی است که می‌تواند برای ثبت دوره‌ای خوانش‌های حسگر از تراشه‌های پایش سلامت سخت‌افزار در syslog(3) یا یک پایگاه داده با ساختار چرخشی (RRD) و اعلام هشدار هنگام به‌صدا درآمدن آلارم حسگر (برای نمونه، خرابی فن، فراتر رفتن دما از حد مجاز و غیره) به کار رود.

تعیین بازه زمانی میان بررسی‌های مربوط به هشدارهای حسگرها؛ پیش‌فرض بررسی در هر دقیقه است.

زمان باید به‌صورت یک عدد صحیح خام (ثانیه) یا با پسوند s برای ثانیه، m برای دقیقه، یا h برای ساعت مشخص شود؛ برای نمونه، بازه زمانی پیش‌فرض 60 یا 1m است.

برای لغو صریح بررسی هشدارها، مقدار بازه زمانی را صفر تعیین کنید.

تعیین بازه زمانی میان ثبت تمام خوانش‌های حسگرها؛ حالت پیش‌فرض ثبت همه خوانش‌ها در هر نیم‌ساعت است.

زمان همانند قبل مشخص می‌شود؛ مثلاً 30m.

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

-1, --oneline
ثبت مقدار حسگر، تراشه و آداپتور در یک خط برای تجزیه (parsing) آسان‌تر.
تعیین بازه زمانی میان ثبت تمام خوانش‌های حسگرها در یک پایگاه داده چرخشی؛ در صورت پیکربندی پایگاه داده چرخشی، پیش‌فرض ثبت تمامی خوانش‌ها در هر پنج دقیقه است.

زمان همانند قبل مشخص می‌شود؛ مثلاً 5m.

مشخص می‌کند که در پایگاه داده چرخشی نباید میانگین‌گیری انجام شود.
تعیین یک پایگاه داده چرخشی که تمامی خوانش‌های حسگرها در آن ثبت شوند؛ مانند /var/log/sensord.rrd. در صورت عدم وجود، این پایگاه داده ایجاد خواهد شد. به‌طور پیش‌فرض از هیچ پایگاه داده چرخشی استفاده نمی‌شود.

برای جزئیات بیشتر به بخش پایگاه‌های داده چرخش دوره‌ای (ROUND ROBIN DATABASES) در زیر مراجعه کنید.

تعیین یک پرونده پیکربندی برای libsensors(3). در صورت عدم تعیین پرونده، پرونده پیکربندی پیش‌فرض libsensors به کار خواهد رفت.
تعیین پرونده PID برای ذخیره شناسه پردازه؛ پیش‌فرض نوشتن در پرونده /run/sensord.pid است. در اینجا همواره باید یک مسیر مطلق مشخص کنید. با خروج دیمن، این پرونده حذف می‌شود.
تعیین تسهیلات (facility) مربوط به syslog(3) هنگام ثبت خوانش‌های حسگرها و هشدارها؛ پیش‌فرض استفاده از daemon است.

سایر مقادیر ممکن شامل local0 تا local7 و user است.

یک اسکریپت نمونه CGI برای rrdcgi(1) را چاپ کرده و خارج می‌شود که می‌تواند برای نمایش نمودارهای اطلاعات اخیر حسگرها در یک صفحه وب استفاده شود. باید دایرکتوری قابل نوشتن برای همگان (world-writable) و در دسترس وب را که نمودارها باید در آن ذخیره شوند مشخص کنید؛ اسکریپت CGI فرض می‌کند که این نمودارها در وب‌سرور از مسیر دایرکتوری /sensord/ در دسترس خواهند بود. برای جزئیات بیشتر به بخش پایگاه‌های داده چرخش دوره‌ای (ROUND ROBIN DATABASES) در زیر مراجعه کنید.
گنجاندن میانگین بار کاری سیستم (load average) در پایگاه داده RRD. هنگام ایجاد اسکریپت CGI نیز باید این فلگ را مشخص کنید.
چاپ مقدار اندکی اطلاعات اشکال‌زدایی اضافی.
چاپ پیام راهنما و خروج.
نمایش نسخه برنامه و خروج.

برای محدود کردن دستگاه‌هایی که توسط این دیمن پایش می‌شوند، می‌توانید به‌صورت اختیاری فهرستی از نام‌های تراشه‌ها را مشخص کنید. به‌طور پیش‌فرض، تمام تراشه‌های موجود بررسی می‌شوند.

یک نام تراشه معمولی مانند w83782d-* است (شاید لازم باشد نویسه * را برای شل خود اسکیپ کنید) که هرگونه تراشه W83782D را روی هر گذرگاهی بررسی می‌کند. برای جزئیات بیشتر sensors.conf(5) را ببینید. راهکار دیگر این است که به‌سادگی ماژول‌های حسگر مربوط به تراشه‌هایی را که نیازی به آن‌ها ندارید بارگذاری نکنید.

به‌محض دریافت سیگنال SIGTERM (برای جزئیات signal(7) را ببینید) این دیمن به‌صورت آرام خاموش می‌شود.

به‌محض دریافت سیگنال SIGHUP، این دیمن رابط هسته را برای یافتن تراشه‌ها و قابلیت‌ها مجدداً پویش کرده و پرونده پیکربندی libsensors را بازخوانی می‌کند.

تمام پیام‌های این دیمن در syslog(3) تحت نام برنامه sensord و تسهیلات daemon (یا هر تسهیلاتی که در خط فرمان تعیین شده باشد) ثبت می‌شوند.

خوانش‌های عادی حسگرها در سطح info ثبت می‌شوند. هشدارها در سطح alert ثبت می‌گردند. پیام‌های وضعیت کم‌اهمیت در صورت فعال بودن حالت اشکال‌زدایی، در کمترین سطح یعنی debug ثبت می‌شوند.

می‌توانید از یک پرونده مناسب /etc/syslog.conf برای هدایت کاربردی این پیام‌ها استفاده کنید. برای جزئیات کامل syslog.conf(5) را ببینید. با فرض اینکه تسهیلات ثبت گزارش را روی local4 تنظیم کرده باشید، پیکربندی زیر یک نمونه است:

# Sample syslog.conf entries
*.info;...;local4.none;local4.warn  /var/log/messages
local4.info                        -/var/log/sensors
local4.alert                        /dev/console
local4.alert                        *

خط نخست تضمین می‌کند که خوانش‌های عادی حسگرها پرونده /var/log/messages را شلوغ نکنند؛ ابتدا عبارت local4.none را برای حذف پیام‌های اطلاعاتی و سپس local4.warn را برای فعال‌سازی هشدارها و بالاتر قرار می‌دهیم. خط دوم مشخص می‌کند که تمام خوانش‌های عادی حسگرها در پرونده /var/log/sensors ثبت شوند؛ علامت خط تیره ابتدایی (-) بدین معناست که این پرونده پس از هر پیام با دیسک همگام‌سازی (flush) نمی‌شود. دو خط پایانی تضمین می‌کنند که هشدارها علاوه بر /var/log/messages و /var/log/sensors، روی کنسول سیستم و برای تمام کاربران متصل نیز چاپ شوند.

روی یک سیستم معمولی با یک تراشه حسگر خوب، انتظار می‌رود به ازای هر خوانش حسگر حدود ۲ کیلوبایت در پرونده گزارش نوشته شود. این مقدار حدود ۳ مگابایت در ماه خواهد بود. در هر صورت شما باید پرونده‌های syslog خود را بچرخانید، اما برای اطمینان می‌توانید از ابزارهایی مانند logrotate(8) یا معادل آن استفاده کنید. برای نمونه، ممکن است مدخلی در /etc/logrotate.d/syslog حاوی خطوط زیر بخواهید:

# Sample logrotate.d entry
/var/log/sensors {
    postrotate
        /usr/sbin/killall -HUP syslogd
    endscript
}

البته توجه داشته باشید که باید syslogd(8) را مجدداً راه‌اندازی کنید، نه sensord(8).

هشدارها معمولاً نشان‌دهنده یک وضعیت بحرانی هستند؛ برای نمونه خرابی فن یا دما و ولتاژ غیرقابل قبول. با این حال، برخی از تراشه‌های حسگر از هشدارها پشتیبانی نمی‌کنند، در حالی که برخی دیگر ممکن است به نادرستی پیکربندی شده و هشدارهای اشتباه ارسال کنند.

توجه داشته باشید که ممکن است برخی از درایورها از گزارش هشدار پشتیبانی نکنند، حتی اگر تراشه‌های تحت پشتیبانی آن‌ها دارای قابلیت هشدار باشند. تا لینوکس ۲.۶.۲۳، بسیاری از درایورها هنوز هشدارها را در قالبی مناسب برای libsensors 3 گزارش نمی‌کردند.

اگر عبارت (beep) را کنار خوانش هر حسگری مشاهده کردید، بدین معناست که سیستم شما طوری پیکربندی شده است که در صورت به‌صدا درآمدن هشدار روی آن حسگر، یک هشدار صوتی (بوق) از مادربرد پخش کند.

sensord(8) از ذخیره‌سازی خوانش‌های حسگر در یک پایگاه داده با ساختار چرخشی (RRD) پشتیبانی می‌کند. این قابلیت می‌تواند جایگزین مناسبی برای استفاده از syslog(3) باشد.

پایگاه‌های داده چرخشی، پایگاه‌های داده‌ای با اندازه ثابت هستند که برای نمونه می‌توانند برای ذخیره داده‌های خوانش حسگر در طول یک هفته استفاده شوند. خوانش‌های بعدی که در پایگاه داده ذخیره می‌شوند، خوانش‌های قدیمی‌تر از یک هفته را بازنویسی خواهند کرد. این قابلیت بسیار مفید است زیرا امکان نگهداری اطلاعات مفید را به شکلی با دسترسی آسان و برای مدت زمان معین، بدون بار ناشی از رشد بی‌پایان پرونده‌های لاگ فراهم می‌کند.

ابزار rrdtool(1) و کتابخانه مرتبط با آن، چارچوب پایه پایگاه داده چرخشی زیربنای sensord(8) را فراهم می‌کنند. افزون بر این، ابزارهای rrdcgi(1) و rrdgraph(1) امکان تولید نمودار از این داده‌ها را جهت نمایش در صفحات وب مهیا می‌سازند.

اگر می‌خواهید از پیکربندی پیش‌فرض پایگاه داده چرخشی استفاده کنید (که داده‌های یک هفته خوانش حسگرها را در بازه‌های پنج‌دقیقه‌ای نگهداری می‌کند)، کافی است sensord(8) را اجرا کرده و مسیر ذخیره پایگاه داده را مشخص کنید. این پایگاه داده به‌طور خودکار ایجاد شده و با استفاده از این پارامترهای پیش‌فرض پیکربندی می‌شود.

اگر مایلید خوانش‌ها برای مدت طولانی‌تری ذخیره شوند یا مایلید میانگین چندین خوانش در هر ورودی پایگاه داده ثبت شود، باید پیش از اجرای sensord(8) پایگاه داده را به‌صورت دستی ایجاد و پیکربندی کنید. برای جزئیات به صفحه راهنمای rrdcreate(1) مراجعه نمایید. توجه داشته باشید که پایگاه داده باید دقیقاً با نام‌ها و ترتیب حسگرهای خوانده‌شده توسط sensord(8) همخوانی داشته باشد. توصیه می‌شود پایگاه داده پیش‌فرض را ایجاد کنید و سپس با استفاده از rrdinfo(1) این اطلاعات را به دست آورید و/یا با rrdtune(1) آن را تغییر دهید.

پس از ایجاد پایگاه داده چرخشی، باید وب‌سرور خود را برای نمایش اطلاعات حسگرها پیکربندی کنید. این فرآیند فرض می‌کند که شما یک وب‌سرور از پیش پیکربندی‌شده و فعال روی دستگاه خود دارید. sensord(8) گزینه خط فرمان --rrd-cgi را برای ایجاد یک اسکریپت پایه CGI جهت نمایش این نمودارها فراهم می‌کند؛ سپس می‌توانید این اسکریپت را بر اساس نیاز خود سفارشی‌سازی کنید. برای جزئیات به راهنمای rrdcgi(1) مراجعه کنید. این اسکریپت CGI به یک دایرکتوری در دسترس وب و قابل نوشتن توسط همگان (world-writable) نیاز دارد تا نمودارهای تولیدشده را درون آن بنویسد.

نمونه‌ای از نحوه راه‌اندازی نمودارهای تحت وب برای خوانش‌های اخیر حسگرها در ادامه آمده است:

sensord --log-interval 0   --load-average   --rrd-file /var/log/sensord.rrd

در اینجا sensord(8) را اجرا کرده و آن را برای ذخیره خوانش‌ها در یک پایگاه داده چرخشی پیکربندی می‌کنیم؛ توجه داشته باشید که ثبت خوانش‌های حسگر در syslog(3) را غیرفعال کرده و ثبت میانگین بار کاری سیستم را فعال می‌نماییم.

mkdir /var/www/sensord
chown www-data:staff /var/www/sensord
chmod a=rwxs /var/www/sensord

در اینجا یک دایرکتوری در دسترس وب و قابل نوشتن برای همگان ایجاد می‌کنیم که نمودارها در آن ذخیره شوند؛ مالکیت و مجوزهای دسترسی این دایرکتوری را به‌طور مناسب تنظیم می‌کنیم. باید مسیر و مالکیت مناسب سیستم خود را تعیین کنید.

sensord --load-average   --rrd-file /var/log/sensord.rrd   --rrd-cgi /var/www/sensord   > /usr/lib/cgi-bin/sensord.cgi
chmod a+rx /usr/lib/cgi-bin/sensord.cgi

در اینجا یک اسکریپت CGI ایجاد می‌کنیم که خوانش‌های حسگر را از پایگاه داده نمایش می‌دهد. باید مسیر پایگاه داده چرخشی، مسیر دایرکتوری محل ذخیره تصاویر و تمایل خود به نمایش میانگین بار کاری را مشخص کنید. گزینه خط فرمان --rrd-cgi باعث می‌شود sensord(8) یک اسکریپت CGI مناسب را در stdout نمایش دهد و سپس خارج شود. باید این اسکریپت را در دایرکتوری cgi-bin وب‌سرور خود بنویسید، و اگر دایرکتوری تصاویری که انتخاب کرده‌اید دایرکتوری /sensord/ در وب‌سرور شما نیست، اسکریپت را ویرایش کنید.

در نهایت، باید بتوانید خوانش‌های حسگر خود را از نشانی http://localhost/cgi-bin/sensord.cgi مشاهده کنید.

انتظار می‌رود تمام ماژول‌های حسگر مورد نیاز پیش از شروع این دیمن بارگذاری شده باشند. این کار می‌تواند از طریق سازوکار بارگذاری ماژول مخصوص سیستم (برای نمونه، فهرست کردن ماژول‌های مورد نیاز در پرونده /etc/modules در دبیان) یا با دستورات صریح modprobe(1) در یک اسکریپت init پیش از اجرای دیمن انجام شود.

برای نمونه، یک اسکریپت راه‌اندازی sensord ممکن است شامل دستورات زیر (در میان سایر دستورات) باشد:

# Sample init.d scriptlet
echo -n "Loading AMD756 module: "
modprobe i2c-amd756 || { echo Fail. ; exit 1 ; }
echo OK.
echo -n "Loading W83781D module: "
modprobe w83781d || { echo Fail. ; exit 1 ; }
echo OK.
echo -n "Starting sensord: "
daemon sensord

توابع پوسته وابسته به پلتفرم را نادیده بگیرید؛ ایده کلی باید کاملاً روشن باشد.

خطاهای رخ‌داده در این دیمن در syslogd(8) ثبت می‌شوند و پس از آن دیمن خارج خواهد شد.

پشتیبانی از پایگاه داده چرخشی نمی‌تواند چندین تراشه حسگر با برچسب‌های حسگر تکراری را مدیریت کند.

/etc/sensors3.conf
/etc/sensors.conf

پرونده پیکربندی سراسری libsensors(3) در سیستم. برای جزئیات بیشتر به sensors.conf(5) مراجعه کنید.
/etc/syslog.conf
پرونده پیکربندی سراسری syslog(3) / syslogd(8) در سیستم. برای جزئیات بیشتر به syslog.conf(5) مراجعه کنید.

sensors.conf(5)

sensord توسط Merlin Hughes <merlin@merlin.org> نوشته شده است. مبانی پایگاه‌های داده چرخشی از Mark D. Studebaker اقتباس شده است.

October 2007 lm-sensors 3