Syslog: گزارش رخدادها
جواب کوتاه
Syslog استانداردی برای ثبت رخدادهاست: هر دستگاه، از روتر و سوییچ تا سرور و چاپگر، هر اتفاقی را در یک پیام مینویسد، با زمان، نام دستگاه، کد بخشی که فرستاده (facility) و سطح اهمیت از ۰ (Emergency) تا ۷ (Debug). این پیامها میتوانند به یک «سرور syslog» فرستاده شوند تا گزارش همهی دستگاهها در یک جا کنار هم باشد؛ روی پورت ۵۱۴ (UDP) یا ۶۵۱۴ (TCP با TLS). ساعت همهی دستگاهها باید با NTP یکی باشد.
نام
Syslog (سیسلاگ) استانداردی برای ثبت رخدادهاست. هر دستگاه هر اتفاقی را، از روشن شدن تا قطع شدن یک رابط یا ورود ناموفق، در یک پیام مینویسد. syslog سه کار را از هم جدا میکند: برنامهای که پیام میسازد، جایی که نگهش میدارد، و برنامهای که آن را میخواند و تحلیل میکند.
در درس SNMP دیدید مدیر شبکه چطور حال دستگاهها را میپرسد. syslog آن طرف ماجراست: دفترچهی خاطرات هر دستگاه، که بعدا میشود خواند.
چهار کلمه
- پیام (log)یک خط گزارش: کی، کدام دستگاه، چه اتفاقی، و چقدر مهم.
- سطح اهمیت (severity)عددی از ۰ تا ۷؛ هر چه کمتر، مهمتر. ۰ یعنی سامانه از کار افتاده.
- facilityکد بخشی از سامانه که پیام را فرستاده؛ مثلا امنیت، ایمیل یا هستهی سیستم.
- سرور syslogرایانهای که پیامهای همهی دستگاهها را میگیرد و یکجا نگه میدارد.
دفترچهی نگهبانها
فرض کنید یک مجموعه چند نگهبان دارد. نگهبان هر در، هر چه دید در دفترچهاش مینویسد: کی، کجا، چه اتفاقی، و چقدر مهم بود. آخر هر شیفت، همهی دفترچهها به دفتر مرکزی میرود و کنار هم گذاشته میشود. و چون ساعت همهی نگهبانها یکی است، میشود فهمید کدام اتفاق اول افتاد.
syslog همین است. نگهبانها دستگاهها هستند، دفترچهها پیامها، و دفتر مرکزی، سرور syslog. ساعت یکسان هم کار NTP است.
یک پیام
دستگاه سطح اهمیت و facility را میگوید، و نرمافزار syslog زمان و نام یا نشانی دستگاه را به آن میافزاید. مثلا:
قالب کلی پیام استاندارد است، ولی خود متن پیام نه؛ هر برنامه آن را به شکل خودش مینویسد.
هشت سطح اهمیت
هر پیام یکی از این هشت سطح را دارد؛ هر چه عدد کمتر، مهمتر:
| عدد | نام | یعنی |
|---|---|---|
| ۰ | Emergency | سامانه بیاستفاده شده |
| ۱ | Alert | باید همین حالا کاری کرد |
| ۲ | Critical | وضع بحرانی، مثل خرابی سختافزار |
| ۳ | Error | خطا |
| ۴ | Warning | هشدار |
| ۵ | Notice | عادی، ولی مهم |
| ۶ | Informational | خبر؛ همهچیز درست کار میکند |
| ۷ | Debug | جزئیات، فقط برای پیدا کردن اشکال |
معنای سطحها، جز ۰ و ۷، به کار دستگاه بستگی دارد. و وقتی میگویید «تا Warning را نشان بده»، سطحهای مهمتر، یعنی ۰ تا ۳، هم میآیند.
facility
facility کدی است که میگوید پیام از کدام بخش سامانه آمده: مثلا ۰ هستهی سیستم، ۲ ایمیل، ۴ امنیت و احراز هویت. کدهای ۱۶ تا ۲۳ (local0 تا local7) برای کاربرد محلیاند؛ و نگاشت کدها در همهی سیستمعاملها یکسان نیست. با facility، پیامهای هر بخش را جدا میشود دید.
همه در یک جا: سرور syslog
پیامها میتوانند در حافظهی خود دستگاه بمانند، روی صفحه بیایند، یا به یک سرور syslog بروند. روی شبکه، syslog کلاینت و سرور است: سرور گوش میدهد و دستگاهها میفرستند.
از قدیم syslog روی UDP و پورت ۵۱۴ میرفت. چون UDP کنترل ازدحام ندارد، TCP روی پورت ۶۵۱۴ هم به کار میرود، و رمزگذاری با TLS توصیه میشود.
ساعت درست
فرض کنید سه دستگاه پشت سر هم مشکلی را گزارش کردهاند. اگر ساعتشان یکی باشد، داستان روشن است: کدام اول قطع شد و بقیه پشت سرش. اگر نه، ترتیب گم میشود. پس ساعت همه را با NTP یکی کنید.
راهاندازی، قدمبهقدم
- یک سرور syslog: رایانهای که روی پورت ۵۱۴ (UDP) یا، امنتر، ۶۵۱۴ (TCP با TLS) گوش میدهد.
- ساعت همهی دستگاهها با NTP: تا زمان پیامها با هم بخواند.
- روی هر دستگاه، نشانی سرور: تا پیامها علاوه بر حافظهی خودش، به سرور هم برود.
- سطحی که لازم است: مثلا تا Warning؛ Debug را فقط وقت پیدا کردن اشکال روشن کنید.
- سر زدن به گزارشها: پیامی که کسی نخواند، کمکی نمیکند؛ هشدارهای مهم را ببینید.
ثبت رخدادها همان لایهی آخری است که در درس سختکردن دیدید: اگر لایههای دیگر شکست، این لایه به شما میگوید چه شد.
سه اشتباه
- «عدد بزرگتر یعنی مهمتر.»برعکس؛ در syslog، ۰ مهمترین (Emergency) است و ۷ کماهمیتترین (Debug).
- «سرور syslog خبر میدهد که پیام رسید.»ارتباط یکطرفه است و فرستنده نمیفهمد پیام رسید یا نه؛ برای همین روی UDP ممکن است پیامی گم شود.
- «ساعت دستگاهها مهم نیست.»بی ساعت یکسان، نمیشود فهمید کدام اتفاق اول افتاد؛ NTP برای همین است.
جمعبندی. آنچه از این درس با خودتان میبرید.
- هر پیام: زمان، دستگاه، facility، سطح اهمیت، متن.
- سطحها از ۰ (مهمترین) تا ۷ (Debug).
- سرور syslog گزارش همهی دستگاهها را یکجا نگه میدارد.
- پورت ۵۱۴ روی UDP؛ ۶۵۱۴ روی TCP با TLS.
- ارتباط یکطرفه است؛ فرستنده از رسیدن خبر ندارد.
- ساعت یکسان با NTP، تا ترتیب رخدادها معلوم باشد.
خودتان را بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را میبینید: چند درست، چند نادرست.