نحوه مشاهده و تنظیم لاگهای لینوکس در سرور مجازی اوبونتو Ubuntu
۲ بهمن ۱۴۰۳
مقدمه
مدیران سیستم لینوکس، اغلب برای رفع مشکلهای سیستم، نیاز به بررسی فایلهای لاگ دارند. این یکی از اولین اقداماتی است که یک sysadmin (مدیر سیستم) انجام میدهد.
لینوکس و برنامههایی که روی لینوکس اجرا میشوند، میتوانند انواع مختلفی از پیامها را تولید کنند؛ و این پیامها در فایلهای لاگ مختلفی، ثبت خواهند شد. لینوکس از مجموعهای از فایلهای پیکربندی (configuration files)، دایرکتوریها (directories)، برنامهها (programs)، دستورات (commands) و daemonها برای ایجاد، ذخیره و بازیافت این پیامهای لاگ، استفاده میکند. بنابراین، دانستن محل نگهداری فایلهای لاگ سیستم و نحوه استفاده از دستورات مرتبط، میتواند در حین عیبیابی، زمان ارزشمندی را برای ما صرفهجویی کند.
در این آموزش، به قسمتهای مختلف مکانیزم لاگگیری لینوکس نگاهی خواهیم انداخت. در ادامه، بخوانید:
- مرحله اول: بررسی موقعیت پیشفرض فایلهای لاگ
- مرحله دوم: مشاهده محتوای فایلهای لاگ
- مرحله سوم: استفاده از سرویس
rsyslog
- مرحله چهارم: ایجاد و تست پیامهای لاگ شخصیسازی شده
- مرحله پنجم: rotate کردن فایلهای لاگ
- مرحله ششم: تست rotation
- نتیجهگیری
مرحله اول: بررسی موقعیت پیشفرض فایلهای لاگ
محل پیشفرض فایلهای لاگ در لینوکس مسیر /var/log
است. میتوانید لیست فایلهای لاگ موجود در این دایرکتوری را با دستور زیر مشاهده کنید:
ls -l /var/log
در سیستم Ubuntu، خروجی مشابه زیر را مشاهده خواهید کرد:
total 2128
drwxr-xr-x. 2 root root 6 Sep 27 19:17 anaconda
drwx------. 2 root root 99 Jan 3 08:23 audit
-rw-rw----. 1 root utmp 1234560 Jan 3 16:16 btmp
-rw-rw----. 1 root utmp 17305344 Jan 1 00:00 btmp-20230101
drwxr-x---. 2 chrony chrony 6 Aug 10 2021 chrony
-rw-r--r--. 1 root root 130466 Dec 8 22:12 cloud-init.log
-rw-r-----. 1 root adm 10306 Dec 8 22:12 cloud-init-output.log
-rw-------. 1 root root 36979 Jan 3 16:03 cron
-rw-------. 1 root root 27360 Dec 10 23:15 cron-20221211
-rw-------. 1 root root 94140 Dec 17 23:07 cron-20221218
-rw-------. 1 root root 95126 Dec 24 23:14 cron-20221225
-rw-------. 1 root root 95309 Dec 31 23:04 cron-20230101
…
مرحله دوم: مشاهده محتوای فایلهای لاگ
در ادامه، چند فایل لاگ متداول که در مسیر /var/log
یافت میشوند آورده شده است:
wtmp
utmp
dmesg
messages
maillog
ormail.log
spooler
auth.log
orsecure
فایلهای wtmp و utmp اطلاعات مربوط به ورود و خروج کاربران از سیستم را، ثبت میکنند. محتوای این فایلها را نمیتوانید مستقیماً با دستوراتی مانند cat
مشاهده کنید؛ بلکه باید از دستورات خاص دیگری، استفاده کنید.
برای مشاهده اینکه چه کسی در حال حاضر، وارد سرور لینوکس شده است، میتوانید از دستور who
استفاده کنید. این دستور مقادیر خود را از فایل /run/utmp
، میگیرد.
root@ubuntu-22:~# who
root pts/0 2023-01-03 16:23 (198.211.111.194)
در این مورد خاص، ما تنها کاربر سیستم هستیم. دستور last
تاریخچه ورود کاربران به سیستم را نشان میدهد:
root@ubuntu-22:~# last
root pts/0 198.211.111.194 Tue Jan 3 16:23 still logged in
reboot system boot 5.19.0-23-generi Thu Dec 8 21:48 still running
wtmp begins Thu Dec 8 21:48:51 2022
میتوانید دستور last
را همراه با یک پایپ (|
) و grep
برای کاربران خاص، استفاده کنید. برای بررسی آخرین باری که سیستم ریاستارت شده است، از دستور زیر استفاده کنید:
last reboot
خروجی ممکن است به صورت زیر باشد:
reboot system boot 5.15.133.1-micro Mon Jan 22 15:21 still running
reboot system boot 5.15.133.1-micro Mon Jan 22 15:14 still running
reboot system boot 5.15.133.1-micro Mon Jan 22 15:14 still running
wtmp begins Mon Jan 22 15:14:21 2024
برای مشاهده زمان آخرین ورود کاربران به سیستم، از دستور lastlog
استفاده کنید:
lastlog
خروجی ممکن است به صورت زیر باشد:
Username Port From Latest
root pts/4 Mon Jan 13 16:34:40 +0330 2025
daemon **Never logged in**
bin **Never logged in**
sys **Never logged in**
sync **Never logged in**
games **Never logged in**
man **Never logged in**
lp **Never logged in**
برای دیگر فایلهای لاگ متنی، میتوانید از دستورات cat
و head
یا tail
برای خواندن محتوای آنها استفاده کنید. در مثال زیر، میتوانیم ده خط آخر فایل /var/log/syslog
را در یک سرور مجازی اوبونتو، مشاهده کنیم:
sudo tail /var/log/syslog
خروجی ممکن است به صورت زیر باشد:
Jan 20 10:30:34 DESKTOP-E59Q7BB systemd[1]: apt-daily-upgrade.service: Deactivated successfully.
Jan 20 10:30:34 DESKTOP-E59Q7BB systemd[1]: Finished Daily apt upgrade and clean activities.
Jan 20 10:30:34 DESKTOP-E59Q7BB systemd[1]: Starting Update APT News...
Jan 20 10:30:34 DESKTOP-E59Q7BB systemd[1]: Starting Update the local ESM caches...
Jan 20 10:30:37 DESKTOP-E59Q7BB systemd[1]: apt-news.service: Deactivated successfully.
Jan 20 10:30:37 DESKTOP-E59Q7BB systemd[1]: Finished Update APT News.
Jan 20 10:30:37 DESKTOP-E59Q7BB systemd[1]: esm-cache.service: Deactivated successfully.
Jan 20 10:30:37 DESKTOP-E59Q7BB systemd[1]: Finished Update the local ESM caches.
Jan 20 10:30:44 DESKTOP-E59Q7BB systemd[1]: apt-daily.service: Deactivated successfully.
Jan 20 10:30:44 DESKTOP-E59Q7BB systemd[1]: Finished Daily apt download activities.
مرحله سوم: استفاده از سرویس rsyslog
در قلب مکانیزم لاگگذاری در سرورهای مجازی لینوکسی، rsyslog
قرار دارد. این سرویس مسئول شنیدن پیامهای لاگ از بخشهای مختلف سیستم لینوکس و هدایت آنها به فایل لاگ مناسب در مسیر /var/log
است. همچنین، این سرویس میتواند پیامهای لاگ را به یک سرور لینوکسی دیگر ارسال کند.
فایل پیکربندی rsyslog
سرویس rsyslog
اطلاعات مربوط به پیکربندی خود را از فایل rsyslog.conf
دریافت میکند؛ این فایل در دایرکتوری /etc
قرار دارد. فایل rsyslog.conf
در یک دستورالعمل، به rsyslog
میگوید که پیامهای لاگ خود را کجا ذخیره کند. این دستورالعمل، در فایلی به نام
، قرار گرفته و شامل دو قسمت است. شما میتوانید این فایل را در مسیر 50-default.conf
rsyslog.d/50-default.conf
در اوبونتو، مشاهده کنید.
دستور دو قسمتی از یک انتخابگر (selector) و یک عمل (action) تشکیل شده است. این دو قسمت با space از هم جدا شدهاند.
بخش انتخابگر مشخص میکند که منبع و اهمیت پیام لاگ چیست و بخش عمل میگوید با پیام چه کاری باید انجام شود.
انتخابگر، خود، دوباره به دو بخش تقسیم میشود که با یک نقطه (.) از هم جدا شدهاند. بخش اول، قبل از نقطه، “facility” (منبع پیام) و بخش دوم بعد از نقطه، “priority” (اولویت پیام) نامیده میشود.
با هم، “facility/priority” و “action” به rsyslog میگویند که وقتی یک پیام لاگ تولید شد، چه کاری باید انجام دهد.
شما میتوانید با استفاده از دستور زیر، بخشی از فایل /etc/rsyslog.conf
را در سرور مجازی Ubuntu مشاهده کنید:
cat /etc/rsyslog.conf
باید چیزی شبیه به زیر را به عنوان خروجی مشاهده کنید:
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf
#################
#### MODULES ####
#################
module(load="imuxsock") # provides support for local system logging
#module(load="immark") # provides --MARK-- message capability
# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")
###########################
#### GLOBAL DIRECTIVES ####
###########################
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Filter duplicated messages
$RepeatedMsgReduction on
#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
برای درک اینکه این موارد چه معنایی دارند، بیایید انواع مختلف “facilities” را که لینوکس شناسایی میکند؛ بررسی کنیم. در اینجا یک لیست آورده شده است:
- auth یا authpriv: پیامهایی که از رویدادهای مربوط به مجوزها و موارد امنیتی، میآیند.
- kern: هر پیامی که از کرنل لینوکس میآید.
- mail: پیامهایی که توسط subsystem ایمیل تولید میشوند.
- cron: پیامهای مرتبط با سرویس cron.
- daemon: پیامهایی که از daemonها میآیند.
- news: پیامهایی که از subsystem اخبار شبکه میآیند.
- lpr: پیامهای مرتبط با چاپ.
- user: پیامهای لاگ که از برنامههای کاربر میآیند.
- local0 تا local7: برای استفاده local رزرو شدهاند.
و در اینجا یک لیست از “priority”ها، بهترتیب (از کمترین به بیشترین) آورده شده است:
- debug: اطلاعات اشکالزدایی از برنامهها.
- info: پیام ساده اطلاعرسانی – نیازی به مداخله ندارد.
- notice: شرایطی که ممکن است به توجه نیاز داشته باشد.
- warn: هشدار.
- err: خطا.
- crit: شرایط بحرانی.
- alert: شرایطی که نیاز به مداخله فوری دارند.
- emerg: شرایط اضطراری.
حالا خط زیر را در نظر بگیرید:
…
# Log cron stuff
cron.* /var/log/cron
…
دستور فوق به rsyslog
میگوید که تمام پیامهای دریافتی از سرویس cron را در فایلی به نام /var/log/cron
ذخیره کند. ستاره (*
) پس از نقطه به این معنی است که پیامهایی با هر اولویت در این فایل ثبت خواهند شد. به طور مشابه، اگر “facility” به عنوان ستاره مشخص میشد، یعنی تمام منابع. “facilities” و “priorities” میتوانند به روشهای مختلفی، به یکدیگر مرتبط باشند.
بهصورت پیشفرض، زمانی که فقط یک “priority” پس از نقطه مشخص میشود، به این معنی است که تمام رویدادها که برابر یا بالاتر از آن “priority” هستند ثبت خواهند شد. پس دستور زیر باعث میشود هر پیامی که از زیرسیستم ایمیل با اولویت “warning” یا بالاتر میآید، در یک فایل خاص در /var/log
ذخیره شود:
mail.warn /var/log/mail.warn
دستور فوق، هر پیامی که برابر یا بیشتر از اولویت “warn” باشد ثبت میکند، اما همه چیز زیر آن را کنار میگذارد. پس پیامهایی با اولویت “err” و “crit” و “alert” یا “emerg” نیز در این فایل ثبت خواهند شد.
استفاده از علامت مساوی (=) پس از نقطه باعث میشود که فقط اولویت مشخصشده ثبت شود. پس اگر بخواهیم فقط پیامهای “info” که از زیرسیستم ایمیل میآیند را ثبت کنیم، مشخصات به این صورت خواهد بود:
mail.=info /var/log/mail.info
اگر بخواهیم همه چیز از زیرسیستم ایمیل به جز پیامهای “info” را ثبت کنیم، دستور، به این صورت خواهد بود:
mail.!info /var/log/mail.info
یا
mail.!=info /var/log/mail.info
در اولین حالت، mail.info
تمام پیامهایی که اولویت پایینتر از “info” دارند را در خود خواهد داشت. در حالت دوم، فایل تمام پیامهایی که اولویت بالاتر از “info” دارند را در خود خواهد داشت.
چندین “facility” در یک خط، میتوانند با کاما، از هم جدا شوند. چندین facility.priority نیز در یک خط با semicolon، از هم، جدا میشوند.
زمانی که یک عمل به عنوان ستاره (*
) علامتگذاری شود، به این معنی است که تمام کاربران این پیام را دریافت خواهند کرد. این حالت در فایل rsyslog.conf
، به شکل زیر، در Ubuntu تعریف شده است:
# Everybody gets emergency messages
*.emerg :omusrmsg:*
پیکربندیهای مربوط به rsyslog
میتوانند از فایلهای پیکربندی سفارشی دیگر نیز، الگو بگیرند. این فایلهای پیکربندی معمولاً در دایرکتوریهای مختلف زیر /etc/rsyslog.d
قرار دارند. فایل rsyslog.conf
این دایرکتوریها را با استفاده از دستور $IncludeConfig
وارد میکند:
…
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
…
محتوای موجود در دایرکتوری /etc/rsyslog.d
را با اجرای دستور زیر، ببینید:
ls -l /etc/rsyslog.d
خروجی، باید مشابه قطعه کد زیر باشد:
-rw-r--r-- 1 root root 314 Sep 19 2021 20-ufw.conf
-rw-r--r-- 1 root root 255 Sep 30 22:07 21-cloudinit.conf
-rw-r--r-- 1 root root 1124 Nov 16 2021 50-default.conf
مقصد پیامهای لاگ لزوماً یک فایل لاگ نیست؛ بلکه ممکن است به کنسول یک کاربر ارسال شود. در این صورت، فیلد عمل (action) شامل نامکاربری خواهد بود. اگر بیش از یک کاربر نیاز به دریافت پیام داشته باشد، نامکاربریهای آنها با کاما از هم جدا میشود. اگر پیام باید به همه کاربران سرور مجازی ارسال شود، در این صورت از علامت ستاره (*
) در فیلد عمل استفاده میشود.
به دلیل اینکه rsyslog
بخشی از سیستمعامل شبکه است، این daemon علاوه بر ذخیره پیامهای لاگ به صورت محلی، میتواند آنها را به سرور دیگری در شبکه نیز، ارسال کند یا به عنوان یک repository برای سیستمهای دیگر عمل کند.
این daemon، پیامهای لاگ را در پورت UDP 514 میفرستد. در مثال زیر، پیامهای بحرانی (critical) کرنل به سروری با نام “texas” ارسال خواهند شد.
kern.crit @texas
مرحله چهارم: ایجاد و تست پیامهای لاگ شخصیسازی شده
حالا وقت آن رسیده که فایلهای لاگ خود را ایجاد کنید. برای تست این موضوع، مراحل زیر را انجام خواهید داد:
- افزودن مشخصات فایل لاگ به فایل
/etc/rsyslog.conf
- راهاندازی مجدد rsyslog
- تست پیکربندی با استفاده از ابزار
logger
در مثال زیر، شما دو خط جدید به فایل rsyslog.conf
سرور مجازی خود، اضافه خواهید کرد؛ در ابتدا دستور زیر را اجرا کنید:
vi /etc/rsyslog.conf
سپس خطوط زیر را به فایل، اضافه کنید:
…
# New lines added for testing log message generation
local4.crit /var/log/local4crit.log
local4.=info /var/log/local4info.log
در قطعه کد فوق، هر کدام از این خطوط، از یک facility به نام local4
میآیند و اولویتهای مختلفی دارند. بعد از اعمال تغییرات در فایل rsyslog
، باید آن را با دستور زیر، مجدداً راهاندازی کنید:
/etc/init.d/rsyslog restart
تمامی کارها انجام شده است و اکنون کافیست که برای تولید پیام لاگ، برنامه logger
به شکل زیر فراخوانی شود:
logger -p local4.info " This is a info message from local 4"
حال، با مشاهده پوشه /var/log
، دو فایل جدید خواهید دید:
…
-rw------- 1 root root 0 Jan 3 11:21 local4crit.log
-rw------- 1 root root 72 Jan 3 11:22 local4info.log
…
همانطور که مشاهده میکنید؛ حجم فایل local4info.log صفر نیست. پس وقتی که آن را باز کنید؛ پیامی که ثبت شده است را خواهید دید:
cat /var/log/local4info.log
خروجی دستور فوق، مشابه زیر است:
Jan 3 11:22:32 TestLinux root: This is a info message from local 4
مرحله پنجم: rotate کردن فایلهای لاگ
هر چه اطلاعات بیشتری درون فایلهای لاگ نوشته شود، این فایلها بزرگتر و بزرگتر میشوند. این موضوع به وضوح میتواند در عملکرد سرور مجازی، مشکل ایجاد کند. همچنین، مدیریت این فایلها نیز میتواند دشوار شود.
لینوکس از مفهومی تحت عنوان rotating (چرخش) فایلهای لاگ، به جای حذف یا پاکسازی آنها، استفاده میکند. زمانی که یک لاگ، rotate (چرخانده) میشود، یک فایل لاگ جدید ایجاد میشود و فایل لاگ قدیمی تغییر نام داده و به صورت اختیاری، فشرده میشود. یک فایل لاگ، ممکن است چندین نسخه قدیمی آنلاین داشته باشد. این فایلها به صورت دورهای مرور میشوند و نمایانگر سابقه عملکرد یک برنامه، هستند. زمانی که تعداد خاصی از سابقهها ایجاد شد، یک rotate جدید فایل لاگ، باعث حذف قدیمیترین فایل لاگ خواهد شد. rotate لاگ توسط ابزار logrotate
آغاز میشود.
فایل پیکربندی logrotate
مانند rsyslog ابزار logrotate
نیز به یک فایل پیکربندی نیاز دارد و نام این فایل logrotate.conf
است. این فایل در مسیر /etc
قرار دارد. با دستور زیر، محتوای این فایل را مشاهده کنید:
فایل logrotate.conf
مشابه زیر است:
# see "man logrotate" for details
# global options do not affect preceding include directives
# rotate log files weekly
weekly
# use the adm group by default, since this is the owning group
# of /var/log/syslog.
su root adm
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
#dateext
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may also be configured here.
به طور پیشفرض، فایلهای لاگ، به صورت هفتگی، rotate میشوند و چهار سابقه از آنها در هر زمان، آنلاین، باقی میماند. زمانی که برنامه اجرا میشود، یک فایل لاگ جدید و خالی ایجاد خواهد شد و به صورت اختیاری، فایلهای قدیمی فشرده میشوند.
تنها استثنا برای فایلهای wtmp
و btmp
است. فایل wtmp
وضعیت ورود به سیستمها را پیگیری میکند و فایل btmp
وضعیت تلاشهای ورود نادرست را پیگیری میکند. هر دو این فایلها باید به صورت ماهانه (و نه هفتگی)، rotate شوند و اگر هیچ فایل قبلی از wtmp
یا btmp
یافت نشود، هیچ خطایی بازگشت داده نمیشود.
پیکربندیهای rotation سفارشی لاگ، در پوشه /etc/logrotate.d
قرار میگیرد. اینها همچنین با دستور include
در logrotate.conf
، گنجانده میشوند. با اجرای دستور زیر در سرور مجازی، محتوای این پوشه را ببینید:
ls -l /etc/logrotate.d
خروجی، باید مشابه زیر باشد:
total 68
-rw-r--r-- 1 root root 120 Sep 11 2021 alternatives
-rw-r--r-- 1 root root 433 Dec 4 2023 apache2
-rw-r--r-- 1 root root 126 Nov 12 2019 apport
-rw-r--r-- 1 root root 173 Apr 8 2022 apt
-rw-r--r-- 1 root root 79 Feb 14 2021 aptitude
-rw-r--r-- 1 root root 91 Mar 18 2022 bootlog
-rw-r--r-- 1 root root 130 Oct 14 2019 btmp
-rw-r--r-- 1 root root 112 Sep 11 2021 dpkg
-rw-r--r-- 1 root root 354 Jan 21 2022 fail2ban
-rw-r--r-- 1 root root 1824 Dec 2 2023 mariadb
-rw-r--r-- 1 root root 215 Nov 25 21:39 php8.2-fpm
-rw-r--r-- 1 root root 124 Oct 2 23:05 redis-server
-rw-r--r-- 1 root root 374 Dec 24 2021 rsyslog
-rw-r--r-- 1 root root 270 Mar 7 2022 ubuntu-advantage-tools
-rw-r--r-- 1 root root 209 Sep 19 2021 ufw
-rw-r--r-- 1 root root 235 Feb 19 2021 unattended-upgrades
-rw-r--r-- 1 root root 145 Oct 14 2019 wtmp
محتوای فایل rsyslog
در این دایرکتوری، نشان میدهد که چگونه تعدادی از فایلهای لاگ، rotate میشوند:
cat /etc/logrotate.d/rsyslog
خروجی:
/var/log/syslog
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
همانطور که مشاهده میکنید، فایل messages
هر چهار روز، rotate میشود. در حالی که بقیه فایلهای لاگ، به صورت هفتگی، rotate میشوند.
دستور دیگری تحت عنوان postrotate
وجود دارد و عملیاتی را مشخص میکند که باید پس از تکمیل rotate کل فایل لاگها انجام شود.
مرحله ششم: تست rotation
logrotate
میتواند به صورت دستی اجرا شود تا یک یا چند فایل لاگ rotate شوند. برای انجام این کار، باید فایل پیکربندی مرتبط را به عنوان یک آرگومان به دستور ارائه کنید. برای مشاهده نحوه کار، در اینجا یک لیست جزئی از فایلهای لاگ موجود در دایرکتوری /var/log
در یک سرور آزمایشی Ubuntu آورده شده است. دستور زیر را اجرا کنید:
ls -l /var/log
باید خروجی مشابه زیر را دریافت کنید:
total 49324
…
-rw-------. 1 root root 84103 Jan 3 17:20 messages
-rw-------. 1 root root 165534 Dec 10 23:12 messages-20221211
-rw-------. 1 root root 254743 Dec 18 00:00 messages-20221218
-rw-------. 1 root root 217810 Dec 25 00:00 messages-20221225
-rw-------. 1 root root 237726 Dec 31 23:45 messages-20230101
drwx------. 2 root root 6 Mar 2 2022 private
drwxr-xr-x. 2 root root 6 Feb 24 2022 qemu-ga
lrwxrwxrwx. 1 root root 39 Mar 2 2022 README -> ../../usr/share/doc/systemd/README.logs
-rw-------. 1 root root 2514753 Jan 3 17:25 secure
-rw-------. 1 root root 2281107 Dec 10 23:59 secure-20221211
-rw-------. 1 root root 9402839 Dec 17 23:59 secure-20221218
-rw-------. 1 root root 8208657 Dec 25 00:00 secure-20221225
-rw-------. 1 root root 7081010 Dec 31 23:59 secure-20230101
drwxr-x---. 2 sssd sssd 6 Jan 17 2022 sssd
-rw-------. 1 root root 0 Dec 8 22:11 tallylog
-rw-rw-r--. 1 root utmp 2688 Jan 3 16:22 wtmp
اکنون دستور زیر را اجرا کنید:
cat /etc/logrotate.conf
محتوای فایل logrotate.conf
به صورت زیر است:
# see "man logrotate" for details
# global options do not affect preceding include directives
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may be also be configured here.
اکنون، دستور logrotate
را اجرا کنید:
logrotate -fv /etc/logrotate.conf
هنگام ایجاد فایلهای جدید، وقوع خطاها و … نمایش داده میشود. پس از اتمام عملیات، فایلهای جدید mail
و secure
و messages
را بررسی کنید:
ls -l /var/log/mail*
خروجی:
-rw------- 1 root root 0 Dec 17 18:34 /var/log/maillog
-rw-------. 1 root root 1830 Dec 16 16:35 /var/log/maillog-20131216
-rw------- 1 root root 359 Dec 17 18:25 /var/log/maillog-20131217
ls -l /var/log/messages*
خروجی:
-rw------- 1 root root 148 Dec 17 18:34 /var/log/messages
-rw-------. 1 root root 180429 Dec 16 16:35 /var/log/messages-20131216
-rw------- 1 root root 30554 Dec 17 18:25 /var/log/messages-20131217
ls -l /var/log/secure*
خروجی:
-rw------- 1 root root 0 Jan 3 12:34 /var/log/secure
-rw-------. 1 root root 4187 Jan 3 16:41 /var/log/secure-20230103
-rw------- 1 root root 591 Jan 3 18:28 /var/log/secure-20230103
همانطور که میبینید، هر سه فایل لاگ جدید، ایجاد شدهاند. فایلهای maillog
و secure
هنوز خالی هستند، اما فایل messages
جدید، حاوی یکسری داده است.
نتیجهگیری
امیدواریم این آموزش ایدههایی درباره ثبت لاگها در لینوکس (Linux Logging) به شما داده باشد. میتوانید این عملیات را روی سرورهای مجازی آزمایشی خود اجرا کنید تا آنها را بهتر، درک کنید. سپس زمانی که با محل فایلهای لاگ و تنظیمات آنها آشنا شدید، از این دانش برای پشتیبانی از سیستمهای Production خود استفاده کنید.
اگر که به یک سرور مجازی دائمی نیاز دارید، میتوانید از سرور مجازی ایران لیارا، استفاده کنید؛ سرور مجازی لیارا از جمله سرویسهای با عملکرد فوقالعاده و بسیار سریع است. شما میتوانید به راحتی هر چه تمام، سرویس VPS ایران لیارا را تهیه کرده و از آن برای توسعه برنامههای خود، استفاده کنید.