تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه مشاهده و تنظیم لاگ‌های لینوکس در سرور مجازی اوبونتو 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 or mail.log
  • spooler
  • auth.log or secure

فایل‌های 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 ایران لیارا را تهیه کرده و از آن برای توسعه برنامه‌های خود، استفاده کنید.

ســــــــــــــــــــــال‌هاست که هستیم

۶ سال در کنار شما تجربه جمع کردیم. تازه در ابتدای مسیر هستیم، مسیر ساخت آینده.

sixth

جمع‌مـــــــــــان، جمع است

بیش از ۴۰ هزار توسعه‌دهنده و صاحبان کسب و کار در جمع ما هستند. جای شما خالی‌ست...

usersnumberusers

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگانسرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماهارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایتهاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
call
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)