سیستم Syslog یک پروتکل است که سیستمهای کامپیوتری از آن برای ارسال لاگ رویدادها به یک مکان مرکزی استفاده میکنند. سپس این دادهها در دسترس نرمافزارهای تحلیل و گزارشدهی قرار میگیرند تا بتوانند عملیات حسابرسی، نظارت، رفع اشکال و سایر وظایف عملیاتی IT را انجام دهند. در زمینه انتقال لاگ رویدادهای سیستم، پروتکل syslog محبوبیت خود را به واسطه سادگی و استفاده آسان، از دهه 1980 حفظ کرده است.
یکی از ویژگیهای بسیار مناسب که موجب این سادگی شده، معماری لایهای است که به کاربران امکان میدهد با استفاده از چند پروتکل مختلف پیامهای خود را ارسال کنند. همچنین، وقتی کاربران نیاز به اعمال تغییراتی با استفاده از افزونه های خاص داشته باشند، فرمت پیام سیستم Syslog به آنها اجازه میدهد تا این کار را در یک چارچوب سازمانیافته انجام دهند.
تصویر(1)
سیستم Syslog چگونه کار میکند؟
با وجود اینکه syslog برای دهه ها محبوب بوده است اما به دلیل عدم استاندارد سازی، امکان ارائه یک تعریف دقیق از آن وجود نداشت. در سال 2009، سازمان IETF اقدام به استاندارد سازی syslog نمود تا امکان ارائه توضیح و جمع بندی این پروتکل وجود داشته باشد.
تصویر(2)
سه لایه در "سیستم لاگ" وجود دارد که شامل محتوا، اپلیکیشن و انتقال است.
- لایه انتقال (transport layer) پیام را از طریق شبکه ارسال میکند.
- لایه اپلیکیشن (application layer) امکان مسیریابی، تفسیر و ذخیره پیام را فراهم می نماید.
- لایه محتوا (content layer) دادههای اصلی موجود در پیام است که شامل عناصر اطلاعاتی استاندارد شده مختلفی از جمله کد facility و سطوح severity می شود.
درک پیامهای سیستم Syslog
پیام های رویداد syslog توسط برنامهها یا سایر بخش های یک سیستم تولید میشوند. همه پیامهای syslog دارای یک فرمت استاندارد هستند که برای به اشتراک گذاری آنها بین اپلیکیشن ها ضروری است. این فرمت شامل اجزای زیر می باشد:
- header یا سربرگ: شامل فیلدهای مشخصی برای اولویت بندی، نسخه، زمان، نام میزبان، اپلیکیشن، شناسه پروسه و message ID است.
- Structured data یا دادههای ساختار یافته: شامل بلوکهای داده با فرمت کلید-مقدار (key-value) می باشد.
- message یا پیام: باید به صورت UTF-8 رمزگذاری شود. شامل محتوای پیام و یک تگ است که ایجاد کننده پیام را شناسایی میکند.
کدهای facility
جهت شناسایی منبع یک پیام، سیستم Syslog از یک facility code عددی یا به عبارت ساده تر یک "facility" استفاده میکند که توسط فرستنده پیام تولید میشود. منشا این کدها از سیستمهای یونیکسی می باشد و بر اساس مقادیرشان قابل درک نیستند. در ادامه می توانید لیست کد پیام و facility مربوطه را مشاهده نمایید.
0: پیامهای هسته (kernel messages)
1: پیامهای سطح کاربر (user-level messages)
2: سیستم ایمیل (mail system)
3: سرویسهای سیستم (system daemons)
4: پیامهای امنیت/احراز هویت (security/authorization messages)
5: پیامهای تولید شده داخلی توسط سیستم Syslog (messages generated internally by syslog)
6: زیرسیستم چاپگر خطی (line printer subsystem)
7: زیرسیستم network news
8: زیرسیستم UUCP
9: سرویس ساعت (clock daemon)
10: پیامهای امنیت/احراز هویت (security/authorization messages)
11: سرویس FTP
12: زیرسیستم NTP
13: بررسی لاگ (log audit)
14: هشدار لاگ (log alert)
15: سرویس ساعت (clock daemon)
همچنین کدهای facility از 16 تا 23 نیز وجود دارند که به کاربردهای محلی اختصاص داده شده اند و با توجه به برنامهها یا نرمافزارهای نصب شده در یک سیستم خاص، می توانند معانی متفاوتی داشته باشند.
سطوح پیامهای سیستم Syslog
پیام syslog با یک شاخص شدت (severity) عددی علامت گذاری شده است، به طوری که 0 برای موارد اضطراری و 7 برای اهداف خطایابی (debug) استفاده میشود.
- 0 - اضطراری: سیستم اضطراری قابل استفاده نیست (Emergency System is Unusable)
- 1 - هشدار: باید فوراً اقدام شود (Alert: Action must be taken immediately)
- 2 - بحرانی: شرایط بحرانی (Critical: Critical Conditions)
- 3 - خطا: شرایط خطا (Error: Error Conditions)
- 4 - هشدار: شرایط هشدار (Warning: Warning Conditions)
- 5 - توجه: شرایط طبیعی ولی مهم (Notice: Normal but Significant Condition)
- 6 - اطلاعاتی: پیامهای اطلاعاتی (Informational: Informational messages)
- 7 - اشکالزدایی: پیامهای سطح اشکالزدایی (Debug: Debug-Level messages)
مسیر ارتباطی یک syslog، شامل فرستنده که پیام را ایجاد و ارسال میکند و دریافت کننده که پیام را دریافت و ذخیره می نماید (مانند logging server)، می باشد. همچنین در این بین میتواند نقاط تقویتی وجود داشته باشد که ممکن است در هنگام ارسال پیام، برخی از پردازش داده را درگیر کند. پیامهای syslog میتوانند بر اساس تنظیمات اپلیکیشن فرستنده، به چندین مقصد نیز ارسال شوند.
تصویر(3)
جمعآوری دادههای سیستم Syslog
در سمت لاگ سرور، مفاهیمی برای تعریف فرآیند جمعآوری دادههای syslog وجود دارد:
- Listener: دادههای syslog را از طریق یک پورت UDP جمعآوری مینماید. به دلیل اینکه UDP در خصوص ارسال اطلاع رسانی نمی کند، ممکن است از یک پورت TCP برای این منظور استفاده شود. Listener نمیتواند درخواستی برای دریافت داده ارسال کند که آن را از سایر collector ها (جمع آوری کنندگان) متمایز می نماید.
- Database: ممکن است سیستم Syslog حجم زیادی از داده ها را تولید کند، بنابراین نیاز است سرورها برای مدیریت آن پیکربندی شوند.
- نرمافزار برای کنترل داده: این نرم افزار با کار روی دادههای سرور، قادر به خودکارسازی وظایفی است که به طور پیش فرض در فرآیند syslog وجود ندارند. نرمافزارهای مربوطه با انجام این وظایف، قابلیت استفاده از دادهها را بهبود میبخشند.
مزایا و معایب سیستم Syslog
در دنیای کسب و کار مدرن، جمعآوری لاگ های داده بسیار حائز اهمیت است. مدیران، تیمهای DevOps و تحلیلگران سیستم از این اطلاعات برای حفظ عملکرد صحیح سیستمها، رفع مشکلات، سرویس دهی بهتر به کاربران و بسیاری از اهداف دیگر استفاده میکنند. با پیچیدگی سیستمهای کسب و کار مدرن، جمعآوری و تحلیل حجم بزرگی از دادهها میتواند یک فعالیت مهم و قابل توجه باشد.
به منظور بهرهبرداری موثر از دادهها برای تحلیل، ضروری است تا آنها را به یک مکان مرکزی منتقل و به صورت پیوسته توسط برنامهها تفسیر نمود. سیستم Syslog در این زمینه بسیار مفید است زیرا یک استاندارد برای تبادل آسان اطلاعات لاگ ارائه میدهد.
با این حال، Syslog چندین نقطه ضعف نیز دارد. این سیستم دارای مکانیزم احراز هویت نمی باشد و بنابراین در زمینه امنیت ضعیف است. همچنین، احتمال از دست رفتن پیامهای Syslog به دلیل وابستگی انتقال با پروتکل UDP، وجود دارد. در نهایت، با وجود استانداردهایی که برای اجزای پیامها تعریف شده، همچنان عدم یکپارچگی در قالب و فرمت محتوای پیامهای Syslog مشاهده می شود. با این حال، سیستم Syslog هنوز یک گزینه بسیار محبوب برای ثبت رویدادها در شبکه است.
جمع بندی: استفاده از سیستم Syslog در Unix، Linux و Mac OS
پروتکل syslog ریشه در سیستم عامل Unix دارد و میتواند به صورت بومی در یک محیط Unix یا مشابه اجرا شود. کاربری که میخواهد ابزار مدیریت syslog را پیادهسازی کند، میتواند به راحتی از طریق ابزار مدیریت پکیج در سیستم عامل، اقدام به نصب syslog-ng نماید.
از طرف دیگر، سیستم عامل ویندوز دارای سیستم Syslog نمیباشد. به جای آن، پروتکل Windows Event Log، رویدادهای ویندوز را ثبت میکند. با توجه به اینکه برنامههای جانبی میتوانند از این سیستم لاگ استفاده نمایند، غالباً رویدادها را مستقیماً در فایل سیستم ثبت میکنند که روش ایده آلی نیست. به همین دلیل، کاربران ویندوز جهت استفاده ار یک پروتکل ارسال پیام در شبکه، معمولاً کلاینت syslog را پیادهسازی می کنند.
زمانی که syslog agent های مناسب برای ویندوز را بررسی می کنید، در نظر داشته باشید که برخی برنامهها صرفا اعلان های Windows Event Log را به پیامهای syslog ترجمه میکنند. ترجیحا بهتر است ابزار مربوطه بتواند با Windows Event Log و همچنین فایلها کار کند زیرا پیامهای سیستملاگ معمولا در فایل سیستم ایجاد میشوند.