اگر شما نیز برای راهاندازی اپلیکیشن یا سایت خود نیاز به استفاده از لینوکس دارید بایستی ابتدا با محل لاگ فایلها، کاربرد و نحوه مدیریت آنها آشنا شوید. در واقع لاگ فایلها به شما در عیبیابی مشکلات سیستم کمک میکنند. هنگامی که اختلالی در سیستم شما به وجود میآید و یا کندکار میکند باید محتوای فایلهای لاگ را بررسی کنید. در حقیقت با بررسی لاگ فایلها میتواند محل مشکل را پیدا کرده و آن را برطرف کنید. فایلهای لاگ مختلفی در سیستمهای لینوکسی وجود دارد (Linux logs) مانند : آپاچی، کرنل، بستهها، لاگهای سیستم، سیستم مدیریت، پروسه بوت، MySQL و سایر لاگها که در ادامه این مقاله به بررسی محل لاگها، نحوه دسترسی و کار با آنها میپردازیم.
لینوکس چیست؟
Linux بهعنوان هسته سیستمعامل است (Operating systems that use the Linux kernel and are open source) . اما نظر کاربران در مورد آن متفاوت است و برخی لینوکس را با نماد پنگوئن میشناسند و میگویند سیستمعاملی مانند ویندوز است و دسته سوم هم که کلاً اعتقادشان این است که لینوکس نام دیگر Ubunto است و هر دو یکی هستند. همچنین اگر بخواهیم این سیستمعامل را معرفی کنیم باید بگوییم که سیستمعامل رایانه لینوکس در واقع از قدرتمندترین سیستمعامل با متنباز است که در بازار موجود است و از محبوبیت ویژهای در بین مهندسان نرمافزار برخوردار است.
سیستمعامل unix ( یونیکس ) در سال 1971 توسط شرکت تلفن و تلگراف آمریکا توسعه پیدا کرد. اما این سیستمعامل گران بود و اکثر مردم نمیتوانستند آن را خریداری کنند. به همین دلیل سیستم لینوکس که شبیه به یونیکس و از زیر شاخههای آن است (Family of Unix-like) ، بهعنوان جانشین آن معرفی شد. در سال 1991 تورالدز لینوکس، هسته لینوکس را ساخت و هم اکنون کمپانیهای زیادی سیستمعامل لینوکس را پشتیبانی میکنند.
کاربردهای لینوکس
به دلیل اینکه Linux برنامهای با متنباز است، امنیت سیستمعامل آن بسیار زیاد است؛ بنابراین برای سازمانهایی که به حد بالای امنیت نیاز دارند کاربرد دارد. همچنین این نرمافزار در شبکهها و محیطهای شبکهای بهعنوان سیستمعامل محبوب مورداستفاده قرار میگیرد و میتوان گفت ۷۰ درصد فایروالها در تمامی شبکههای دنیا، از این سیستمعامل استفاده میکنند. تطبیق Linux با اندروید از کاربردهای دیگر لینوکس است که از آنها به طور هم زمان برای افزایش کارایی و سرعت نوتبوکها نیز استفاده میشود.
از طرفی دیگر این نرمافزار مزایای زیر را نیز دارد:
-
رایگان بودن: لینوکس به دلیل اینکه متنباز است، بهصورت رایگان در اختیار دیگران قرار گرفته و دارای مزیت بسیار ویژهای نسبت به بقیه سیستمعاملها است؛ زیرا هزینهای برای کاربران ندارد.
-
امنیت بالا: به دلیل اینکه این نرمافزار بهصورت متنباز است، افراد بسیاری بر روی امنیت آن کار میکنند و در مسدودکردن حفرههای ناامن موفق میشوند.
-
سرعت بالای لینوکس
-
پشتیبانی بسیار قوی
-
نیازی به نصب درایور ندارد.
-
چندکاربره است و هم زمان چند نفر میتوانند به آن دسترسی داشته باشند.
-
سبک است.
-
انعطافپذیری بالایی دارد.
لاگ سرور چیست؟
لاگ فایل یک گزارش ساده متنی است که در بازههای زمانی مشخص اطاعات و فعالیتهای مربوط به سرور را ذخیره میکند. همچنین این فایلها توسط خود سرور به طور خودکار ایجاد و ذخیره میشوند. با بررسی اطلاعات موجود در این فایلها ادمین میتواند درک دقیقتری در رابطهبا نحوه دسترسی کاربران به اپلیکیشن یا وبسایت داشته باشد. از جمله این رویدادها میتوان به تراکنشها، خطاها و نفوذها اشاره کرد که در لاگ فایلها ذخیره میشوند.
آناتومی لاگ فایل نیز به این صورت است:
اطلاعات مربوط به رویداد_ اطلاعات مربوط به کاربر_تاریخ و ساعت انجام رویداد
البته این آناتومی به نوع رویداد هم بستگی دارد که دادهها را هم در صورت نیاز پوشش دهد. برای مثال، گزارش سرورها شامل کد وضعیت HTTP،صفحه وب ارجاع شده، عملکرد کاربر و بایتهای ارائه شده همگی میتوانند در این آناتومی نقش داشته باشند و تقریباً تمامی چیزهایی که در سرور وبسایت یا اپلیکیشن دخیل هستند؛ مانند اپلیکیشنها، پایگاهداده، فایروالها، کانتینرها، سرویسها میتواند لاگهایی را به وجود بیاورند.
بررسی لاگهای سرور لینوکس
سرور لینوکس نیز مانند ویندوز سرور دارای بخش خاصی برای ذخیره رویدادهای مربوط به برنامهها، سیسم عامل و سرویسها است که بهصورت لاگ فایل Linux logs درآمده و ادمین میتواند با تجزیهوتحلیل آنها مشکلات را شناسایی و برطرف کند. همچنین Linux logs میتواند برای افرادی که قصد دارند سرور مجازی بخرند و توسط آن اپلیکیشن یا وبسایت خود را راهاندازی کنند مفید باشد؛ در واقع بررسی لاگ فایلهای سرور لینوکس بعدها که به گزارشها مربوط به ورود و خروج کاربران، درخواستهای دسترسی و … نیاز داشتند، میتواند کار را برای آنها راحت کند.
این لاگ فایلها تنها با یک متن ساده ذخیره میشوند و میتوان به همه آنها در مسیر var/log دسترسی پیدا کرد. بنابراین با یک دستور ساده cd هم به لاگها میتوانید دسترسی داشته باشید که البته برای این منظور بایستی کاربر روت باشید.
به طور معمول در محیط لینوکس لاگ فایلهای تولید شده به ۴ دسته زیر تقسیم میشوند:
-
Application Logs
-
Event Logs
-
Service Logs
-
System Logs
لاگ فایلهای مهم لینوکس
//var/log/syslog یا var/log/messages/
این Linux logs پیامها یا اطلاعات مربوط به سیستم را در خود ذخیره میکنند و معمولاً کل فعالیتهای عمومی را در بر میگیرند. همچنین خطاهای بوت غیر هسته، پیامهای راهاندازی سیستم یا پروسه بوت و خطاهای سرویس مربوط به برنامهها در این مسیر قرارمی گیرند.
سیستمهای مبتنی بر دبیان_ syslog
سیستمهای مبتنی بر رد هت _ messages
var/log/auth.log/ یا var/log/secure/
لاگهای احراز هویت در این مسیر قرار میگیرند و ذخیره میشوند. محتویات اصلی این گزارشها شامل ورود موفق، ورود ناموفق و روشهای احراز هویت هستند؛ بنابراین هر گونه نقض امنیتی، فایلهای مشکوک، حملات brute-force و هر نوع خطای مربوط به مکانیسم مجوز کاربر در این لاگها ذخیره میشوند.
سیستمهای مبتنی بر دبیان_ auth.log
سیستمهای مبتنی بر رد هت_ secure
var/log/yum.log/ یا var/log/dnf.log/
لاگهای مربوط به پروسه نصب، آپدیت و حذف بستهها توسط مدیر بسته yum یا dnf در این فایل قرار میگیرند. پس با بررسی این لاگ فایلها میتوان مشکلات نصب و وضعیت نصب بستههای نرمافزاری را پیگیری کرد. برای مثال، اگر سرور شما دچار اختلال شده باشد و شما دلیل این اختلال را آخرین نرمافزاری که نصبکردهاید میدانید یا به آن شک کردهاید؛ میتوانید با بررسی این لاگ فایل نرمافزار مخرب را پیدا کنید.
var/log/mysqld.log/ یا var/log/mysql.log/
تمام پیامهای مربوط به پروسه موفقیت یا اشکالزدایی و خطای سرویس MySQL در این لاگ فایلها ذخیره میشوند. پس با بررسی این گزارشها مشکلات راهاندازی، اجرا یا توقف، دریافت اطلاعات بیشتر دررابطهبا تنظیم پارامتر long_query_time mysqld و اتصالات کلاینتها به دایرکتوری داده MySQL را میتوان شناسایی کرد.
var/log/maillog/ یا var/log/mail.log/
همان گونه که از اسم این Linux logs مشخص است، در این مسیر تمام گزارشهای مربوط به سرور ایمیل قرار میگیرند. پس با بررسی اطلاعات این لاگ فایل میتوانید به اطلاعاتی در رابطهبا postfix، smtpd یا سرویسهای مربوط به ایمیل دسترسی پیدا کنید. از جمله مهمترین کارهایی که میتوانید با استفاده از این لاگها انجام دهید، ردیابیکردن تمام ایمیلهای ارسالی و دریافتی در یک بازه زمانی خاص، بررسی مشکلات دریافت ایمیل و پیبردن به تلاشهای احتمالی اسپمها است.
var/log/boot.log/
تمام اطلاعات مربوط به پروسه بوت و راهاندازی سرور در این فایل ذخیره میشوند. پس با بررسی این بخشم توانید تمامی خطاهای مربوط به روشن یا خاموششدن سیستم، بوت شدن و ری استارت ناموفق را مشاهده کنید.
var/log/dmesg/
درایورهای سیستم یا سرور لینوکس و اطلاعات مربوط به دستگاههای سختافزاری در این بخش ذخیره میشوند. در نتیجه با بررسی آن میتوان اطلاعات مربوط به وضعیت دستگاه، پیامهای عمومی مرتبط و خطاهای سختافزاری را شناسایی کرد. در حقیقت این لاگ بیشتر برای سرورهای اختصاصی کاربرد دارد.
var/log/kern/
همان گونه که از نام آن مشخص است، گزارشها و اطلاعات مربوط به کرنل سیستم در این مسیر قرار دارند. همچنین این لاگ فایلها توسط هسته ثبت میشوند و به همین دلیل بسیار مهماند. در واقع این لاگها برای رفع اختلالات سختافزاری، اتصالات، عیبیابی و هشدارهای مربوط به هسته میتوانند بسیار مفید باشند.
var/log/faillog/
تمام اطلاعات و گزارشها مربوط به تلاشهای ناموفق ورود به سیستم در این مسیر ذخیره میشوند؛ بنابراین با بررسی آنها میتوان نقضهای امنیتی از قبیل هک نام کاربری، رمز عبور و حملاتی مثل بروت فروس را شناسایی و کنترل کرد.
var/log/cron/
تمام پیامهای مربوط به Crond در این بخش قرار میگیرند و هر موقع که یک کران جا اجرا شود، گزارشها خطای اجرا یا اجرای موفقیتآمیز در قالب لاگ فایل جدید در این بخش ایجاد میشوند.
var/log/httpd/
در این فایل تمام لاگهای ثبت شده توسط سرور آپاچی قرار میگیرد. اطلاعاتی مانند ورود به سرور آپاچی در دو فایل به طور جداگانه (error_log و access_log) ذخیره میشوند. تمام پیامهای مربوط به خطاهای httpd در error_log قرار میگیرند که اصلیترین پیامهای آن، مربوط به مشکلات حافظه و مشکلات مربوط به پروسه پردازش درخواستهای httpd است. همچنین تمامی درخواستها و دسترسی دریافت شده از طریق HTTP در access_log قرار میگیرد و به شما در مانیتورکردن هر صفحه باز شده یا فایلهای بارگذاری شده توسط آپاچی کمک میکند.
مهمترین محتویات این لاگ فایلها شامل آدرس IP، اطلاعات مربوط به وضعیت درخواستها، آی دی کلاینتها و نتیجه آنها است.
دسترسی به Linux logs
اما اغلب فایلهای لاگ در مکان var/log/ذخیره میشوند و هنگامی که مشکلی در سیستمعامل یا سرویسها به وجود بیاید این لاگها به شما کمک میکند تا آنها را پیدا و رفع کنید. خوشبختانه روشهای زیادی برای دسترسی به فایلهای لاگ سیستم وجود دارد که با استفاده از خط فرمان اجرا میشوند.
نکته 1: اگر دسترسی روت به سرور خود دارید از این دستورات میتوانید استفاده کنید، در غیر این صورت دستورات را با sudo شروع کنید.
کار با لاگهای لینوکس
معمولاً اکثر لاگ فایلها بهصورت خودکار در دایرکتوری /var/log/ و همچنین دایرکتوریهای زیرشاخه آن ایجاد میشوند. برای دسترسی به دایرکتوری log باید از دستور زیر استفاده کنید:
cd /var/log
همچنین جهت مشاهده محتوای دایرکتوری log بایستی از دستور زیر استفاده کنید:
ls -la
پس از واردکردن دستورهای فوق باید صفحهای مانند تصویر زیر مشاهده کنید:
واردشدن به Linux logs از طریق دستور CD(Log into the Linux logs via the CD command)
بهعنوان نمونه، دایرکتوری با نام Cron را مشاهده میکنید که لاگهای سرویس Crontab داخل آن ذخیره شدهاند.
خواندن لاگ فایلها
برای خواندن لاگ فایلها دستورات بسیاری وجود دارد که هرکدام از آنها برای اهداف خاصی به کار میروند.
دستور cat
اگر میخواهید یکی از لاگهای فایل را باز کنید میتوانید از دستور cat استفاده کنید. برای مثال با استفاده از این دستور محتویات فایل yum.log رامی توان مشاهده کرد:
cat yum.log
همچنین میتوانید با استفاده از دستور cat تمام فایلهای لاگ را بهصورت استاتیک مشاهده کنید.
دستور tail
دستور tail یکی دیگر از دستورات کاربردی برای دیدن لاگ فایلها است. اگر این دستور را بدون هیچ پرچمی استفاده کنید 10 خط آخر فایل موردنظر را به شما نشان میدهد.
tail yum.log
نکته 2: جهت مشاهده پرچمهای دستور tail ،دستور زیر را میتوانید به کار ببرید:
tail --help
برای مثال از این دستور باید بهصورت زیر استفاده کنید:
tail [FLAG] [FILENAME]
برای مشاهده 100 خط آخر فایل خود دستور زیر را وارد کنید:
tail -n 100 yourlog.log
اصلیترین پرچم این دستور پرچم - f است که با واردکردن آن در دستور میتوانید محتوای فایل خود را بهصورت زنده مشاهده کنید. در واقع اگر محتوای جدید به فایل اضافه شود در خروجی دستور، این محتوای جدید نیز نشان داده میشود.
tail -f yourlog.log
دستورات more و less
با واردکردن دستور more در خط فرمان میتوانید فایل لاگهای لینوکس (Linux logs)خود را صفحه به صفحه مشاهده کنید. همچنین برای واردشدن به صفحه بعد بایستی از کلید space استفاده کنید.
more yourlog.log
دستور less هم شبیه دستور more است و تنها تفاوتهای زیر را دارد:
- با بهکارگیری کلیدهای مکاننما میتوانید بین خطوط فایل =به حرکت در بیایید.
- میتوانید با بهکارگیری کلمه keyword جستجوی عبارتی انجام دهید.
- همچنین این دستور از دستورات ویرایشگر vi استفاده میکند.
less yourlog.log
دستور head
با واردکردن این دستور میتوانید 10 خط اول فایلتان را مشاهده کنید.
head yourlog.log
ترکیب دستور grep با سایر دستورات
اگر بخواهید محتوای خاصی را در داخل لاگ فایل خود جستوجو کنید باید دستور grep را اضافه کنید.بهعنوانمثال برای پیداکردن پیام خطا یا IP معین داخل لاگ خود میتوانید دستورات زیر را اجرا کنید.
cat yourlog.log | grep IP
tail -f yourlog.log | grep errorname
دستور sort
جهت مرتبکردن خروجیهای لاگ فایلهای خود میتوانید از دستور sort استفاده کنید که دیتای شما را با معیارهای متفاوت مرتب میکند.
جهت مرتبسازی فایل خود بر اساس حروف الفبا دستور زیر را به کار ببرید.
sort yourlog.log
اگر پرچم -r را به دستور فوق اضافه کنید دیتای شما برحسب حروف الفبای معکوس مرتب میشود.
sort -r yourlog.log
اگر دیتای شما دارای اعدادی برای هر عنصر باشد پرچم -n دیتا را از کمتر به بزرگتر ین عدد مرتب میکند.
نکته 3: برای مشاهده تمام پرچمهای دستور sort میبایست از دستور زیر استفاده کنید.
sort --help
دستور awk
دستور awk دستور بسیار قدرتمندی برای آنالیز و پردازش فایلهای متنی است، مخصوصاً فایلهایی که دارای ستون و ردیف هستند.
نحوه استفاده از این دستور بهصورت زیر است.
awk 'pattern {action}' input-file
یعنی هر خط از فایل ورودی را گرفته و اگر خط موردنظر دارای الگوی مشخص شده باشد، عمل تعیین شده در بخش action را روی خط اعمال نموده و خط حاصل را نمایش میدهد.
اگر الگوی مشخص شده در قسمت pattern را حذف نماییم عمل مشخص شده در قسمت action روی تمامی خطوط اعمال میشود.
برای مثال:
awk '{ print $5 }' yourlog.log
دستور فوق، عنصر ستون 5 ام هر خط را گرفته و آن را مثل یک خط در shell شما چاپ میکند.
در دستور بالا رشته بین دو کاراکتر "/" نشان میدهد که اگر خط رشته "30" را دارا باشد، سیستم، عنصر موجود در ستون سوم آن خط را چاپ خواهد کرد.
نکته 4: دستور awk کارهای پیچیدهتری را نیز میتواند انجام دهد.
دستور uniq
برای تشخیص یا حذف عناصر تکراری در فایلها میتوان از این دستور استفاده کرد. نحوه استفاده از دستور uniq بهصورت زیر است.
uniq [-options]
هنگامی که این دستور بدون هیچ آپشنی استفاده گردد، خطهای تکراری را حذف کرده و نتیجه را به شما نشان میدهد.
uniq yourlog.log
در ادامه این مطالب به بررسی برخی از پرچمهای پرکاربرد این دستور، خواهیم پرداخت.
-c
آپشن- c جهت شمارش تعداد تکرار خطها در یک فایل به کار میرود.
uniq -c yourlog.log
-u
آپشن u- نیز فقط خطوط یکتا را نمایش خواهد داد.
uniq -u yourlog.log
دستورات ترکیبی مفید
با ترکیب دستوراتی که در قسمتهای قبلی توضیح دادیم میتوانید ترکیبات مؤثر و کاربردی ایجاد کنید. در ادامه چند نمونه از این ترکیبات را بررسی میکنیم.
این دستور ستون 5 امی که با کاراکتر " " از هم جدا شدهاند را نمایش خواهد داد.
cat yourlog.log |awk -F" " '{print $5
دستور زیر ستون اولی را نمایش میدهد که با کاراکتر " " از هم جدا شدهاند و عناصر ستون را بر اساس تعداد تکرار آنها از کمتر به بزرگتر مرتبسازی میکند.
cat /var/log/yourlog.log | awk -F" " '{print $1}' | uniq -c | sort -n
فایلهای لاگ رایج لینوکس و کاربرد آنها
var/log/messages/ : پیامهای سیستمی
var/log/auth.log/ : لاگهای مربوط به احراز هویت
var/log/kern.log/ : لاگهای کرنل
var/log/maillog/ : لاگهای میل سرور
var/log/httpd/ : دایرکتوری لاگ وب سرور آپاچی
var/log/boot.log/: لاگهای بوت سیستم.
var/log/mysqld.log/ : فایلهای لاگ سرور دیتابیس MySQL
var/log/utmp یا /var/log/wtmp/ : ثبت لاگینها
نحوه سازماندهی Linux logs
در بخشهای قبلی روشهای خواندن لاگ فایلها را بررسی کردیم. اما مهمترین کار پس از خواندن لاگ فایلها شیوه سازماندهی آنها است. در حقیقت اگر از روش خاصی برای مدیریت لاگ فایلها استفاده نکنید پس از مدتی با مشکلات زیادی مواجهمی شوید. در ادامه این مطلب به معرفی دو روش مؤثر از روشهای مدیریت لاگها میپردازیم.
چرخش لاگها
از ابراز Logrotate میتوانید به طور مرتب برای حذف، فشردهسازی و چرخش فایلهای لاگهایتان استفاده کنید. چرخش لاگها به این معنی است که وقتی زمان مدیریت لاگها برسد (مثلاً هر هفته یا هر ماه یکبار)، فایلهای لاگ فشرده شده و در مکانی ذخیره میشوند، در این صورت فایلهای قدیمی حذف شده و بهجای آن یک فایل تازه ایجاد میشود. اما اینکه چه تعداد از این بایگانیِ لاگهای فشرده شده، میتواند روی سرور بماند، به تنظیماتی بستگی دارد که درون فایل کانفیگ (Logrotate) تعیین شده است. میتوانید این عملیات چرخش را بهصورت روزانه، ماهانه یا... تنظیم کنید؛ اما بهصورت خودکار ابزار Logrotate بهصورت cron job و روزانه اجرا میشوند.
سرور syslog
Syslog (system call of the Linux kernel) سرور مانیتورینگ لاگ مرکزی در یک شبکه را فراهم میسازد. این شبکه میتواند شامل انواع زیادی از دستگاهها مثل سرورهای Linux ، Windows ، روترها، سوئیچها یا هر میزبان دیگری باشد و تمامی این دستگاهها توانایی ارسال لاگهای خود را از طریق شبکه به سرور لاگ دارند. همچنین میتوانید با نصب و استفاده از سرور syslog لاگهای میزبانها و دستگاههای مختلف را از یکدیگر فیلتر کرده و در یک مکان جدا ذخیره کنید. با انجام این کار دسترسی و مدیری لاگها برای شما آسانتر میشود.
خلاصه
بهطورکلی میتوان گفت کسانی که مدت زیادی در محیط لینوکس مشغول به فعالیت هستند بایستی کار با لاگهای لینوکس Linux logs را یاد بگیرند؛ ازاینرو در این مقاله به بررسی نحوه دسترسی و کار با لاگ فایلهای لینوکس پرداختیم و امیدواریم این مطالب برای شما مفید باشد.
سوالات متداول
لینوکس چیست؟
سیستمعاملی از خانواده یونیکس است که با استفاده از آن میتوان اپلیکیشن یا وبسایت خود را راهاندازی و مدیریت کرد.
لاگ سرور چیست؟
لینوکس نیز مانند ویندوز جایگاه اختصاصی برای ذخیره اطلاعات و گزارشها دارد که بهصورت لاگ فایل سرورها در مسیرهای مشخص ذخیره میشوند.
اکثر لاگهای لینوکس در کدام مسیر قرار میگیرند؟
اغلب فایلهای لاگ در مکان var/log/ذخیره میشوند و میتوان از طریق خط فرمان دستورات مختلف به آنها دسترسی داشت.