Thứ ba, 17/12/2013 | 00:00 GMT+7

Cách xem và cấu hình log Linux trên Ubuntu và Centos

Các administrator hệ thống Linux thường cần xem các file log cho các mục đích khắc phục sự cố. Trên thực tế, đây là điều đầu tiên mà bất kỳ sysadmin nào cũng làm.

Linux và các ứng dụng chạy trên nó có thể tạo ra tất cả các loại thông báo khác nhau, được ghi lại trong các file log khác nhau. Linux sử dụng một tập hợp các file cấu hình, folder , chương trình, lệnh và daemon để tạo, lưu trữ và tái chế các thông báo log này. Do đó, biết hệ thống lưu giữ các file log của nó và cách sử dụng các lệnh liên quan có thể giúp tiết kiệm thời gian quý báu trong quá trình khắc phục sự cố.

Trong hướng dẫn này, ta sẽ xem xét các phần khác nhau của cơ chế ghi log Linux.

Khước từ

Các lệnh trong hướng dẫn này đã được thử nghiệm trong các bản cài đặt đơn giản của CentOS 6.4, Ubuntu 12 và Debian 7.

Vị trí file log mặc định

Vị trí mặc định cho file log trong Linux là / var / log.

Bạn có thể xem danh sách các file log trong folder này bằng lệnh ls -l / var / log đơn giản.

Đây là những gì tôi thấy trong hệ thống CentOS của bạn :

[root@TestLinux ~]# ls -l /var/log   

total 1472   -rw-------. 1 root root   4524 Nov 15 16:04 anaconda.ifcfg.log   -rw-------. 1 root root  59041 Nov 15 16:04 anaconda.log   -rw-------. 1 root root  42763 Nov 15 16:04 anaconda.program.log   -rw-------. 1 root root 299910 Nov 15 16:04 anaconda.storage.log   -rw-------. 1 root root  40669 Nov 15 16:04 anaconda.syslog   -rw-------. 1 root root  57061 Nov 15 16:04 anaconda.xlog  -rw-------. 1 root root   1829 Nov 15 16:04 anaconda.yum.log   drwxr-x---. 2 root root   4096 Nov 15 16:11 audit  -rw-r--r--  1 root root   2252 Dec  9 10:27 boot.log   -rw-------  1 root utmp    384 Dec  9 10:31 btmp   -rw-------. 1 root utmp   1920 Nov 28 09:28 btmp-20131202   drwxr-xr-x  2 root root   4096 Nov 29 15:47 ConsoleKit -rw-------  1 root root   2288 Dec  9 11:01 cron -rw-------. 1 root root   8809 Dec  2 17:09 cron-20131202   -rw-r--r--  1 root root  21510 Dec  9 10:27 dmesg -rw-r--r--  1 root root  21351 Dec  6 16:37 dmesg.old   -rw-r--r--. 1 root root 165665 Nov 15 16:04 dracut.log   -rw-r--r--. 1 root root 146876 Dec  9 10:44 lastlog  -rw-------  1 root root    950 Dec  9 10:27 maillog   -rw-------. 1 root root   4609 Dec  2 17:00 maillog-20131202   -rw-------  1 root root 123174 Dec  9 10:27 messages -rw-------. 1 root root 458481 Dec  2 17:00 messages-20131202   -rw-------  1 root root   2644 Dec  9 10:44 secure  -rw-------. 1 root root  15984 Dec  2 17:00 secure-20131202   -rw-------  1 root root      0 Dec  2 17:09 spooler   -rw-------. 1 root root      0 Nov 15 16:02 spooler-20131202   -rw-------. 1 root root      0 Nov 15 16:02 tallylog -rw-rw-r--. 1 root utmp  89856 Dec  9 10:44 wtmp -rw-------  1 root root   3778 Dec  6 16:48 yum.log   

Xem nội dung file log

Dưới đây là một số file log phổ biến mà bạn sẽ tìm thấy trong / var / log:

  • wtmp

  • utmp

  • dmesg

  • tin nhắn

  • maillog hoặc mail.log

  • cache

  • auth.log hoặc bảo mật

Các file wtmp và utmp theo dõi user đăng nhập và đăng xuất khỏi hệ thống. Bạn không thể đọc trực tiếp nội dung của các file này bằng cat - có các lệnh cụ thể cho việc đó.

Bây giờ ta sẽ sử dụng một số lệnh này.

Để xem ai hiện đang đăng nhập vào server Linux, chỉ cần sử dụng lệnh who. Lệnh này nhận các giá trị của nó từ file / var / run / utmp (dành cho CentOS và Debian) hoặc / run / utmp (dành cho Ubuntu).

Đây là một ví dụ từ CentOS:

[root@TestLinux ~]# who   

root     tty1         2013-12-09 10:44   root      pts/0        2013-12-09 10:29 (10.0.2.2)   sysadmin pts/1        2013-12-09 10:31 (10.0.2.2)   joeblog  pts/2        2013-12-09 10:39 (10.0.2.2)   

Trong trường hợp cụ thể này, tôi là user duy nhất của hệ thống. Tôi đang chạy server từ Oracle VirtualBox và truy cập nó dưới dạng root từ cả console và phiên SSH. Hai account user khác (sysadmin và joebolg) cũng đang truy cập hệ thống.

Lệnh cuối cùng cho ta biết lịch sử đăng nhập của user :

[root@TestLinux ~]# last | grep sysadmin  

sysadmin pts/1        10.0.2.2         Mon Dec  9 10:31   still logged in sysadmin pts/0        10.0.2.2         Fri Nov 29 15:42 - crash  (00:01)   sysadmin pts/0        10.0.2.2         Thu Nov 28 17:06 - 17:13  (00:06)   sysadmin pts/0        10.0.2.2         Thu Nov 28 16:17 - 17:05  (00:48)   sysadmin pts/0        10.0.2.2         Thu Nov 28 09:29 - crash  (06:04)   sysadmin pts/0        10.0.2.2         Wed Nov 27 16:37 - down   (00:29)   sysadmin tty1                          Wed Nov 27 14:05 - down   (00:36)   sysadmin tty1                          Wed Nov 27 13:49 - 14:04  (00:15)   

Trong ví dụ này, tôi đang cố gắng tìm lịch sử đăng nhập của user sysadmin. Như bạn thấy , đã có một vài trường hợp anh ta cố gắng làm hỏng hệ thống.

Để biết khi nào hệ thống được khởi động lại lần cuối, ta có thể chạy lệnh sau:

[root@TestLinux ~]# last reboot   

Kết quả có thể trông như thế này

reboot   system boot  2.6.32-358.el6.x Mon Dec  9 10:27 - 10:47  (00:19) reboot   system boot  2.6.32-358.el6.x Fri Dec  6 16:37 - 10:47 (2+18:10) reboot   system boot  2.6.32-358.el6.x Fri Dec  6 16:28 - 16:36  (00:08)    reboot   system boot  2.6.32-358.el6.x Fri Dec  6 11:06 - 16:36  (05:29) reboot   system boot  2.6.32-358.el6.x Mon Dec  2 17:00 - 16:36 (3+23:36) reboot   system boot  2.6.32-358.el6.x Fri Nov 29 16:01 - 16:36 (7+00:34) reboot   system boot  2.6.32-358.el6.x Fri Nov 29 15:43 - 16:36 (7+00:53) ...   ...   wtmp begins Fri Nov 15 16:11:54 2013   

Để xem lần cuối ai đó đăng nhập vào hệ thống, hãy sử dụng lastlog:

[root@TestLinux ~]# lastlog  

Trong hệ thống của tôi, kết quả trông như thế này:

Username        Port        From            Latest   root            tty1                        Mon Dec  9 10:44:30 +1100 2013 bin                                        **Never logged in** daemon                                     **Never logged in**   adm                                        **Never logged in**   lp                                         **Never logged in**   sync                                       **Never logged in**   shutdown                                   **Never logged in**   halt                                       **Never logged in**   mail                                       **Never logged in**   uucp                                       **Never logged in**   operator                                   **Never logged in**   games                                      **Never logged in**   gopher                                     **Never logged in**   ftp                                        **Never logged in**   nobody                                     **Never logged in**   vcsa                                       **Never logged in**   saslauth                                   **Never logged in**   postfix                                    **Never logged in**   sshd                                       **Never logged in**   sysadmin         pts/1    10.0.2.2         Mon Dec  9 10:31:50 +1100 2013   dbus                                       **Never logged in**   joeblog          pts/2    10.0.2.2         Mon Dec  9 10:39:24 +1100 2013   

Đối với các file log dựa trên văn bản khác, bạn có thể sử dụng lệnh mèo, đầu hoặc đuôi để đọc nội dung.

Trong ví dụ bên dưới, tôi đang cố gắng xem mười dòng cuối cùng của file / var / log / messages trong hộp Debian:

debian@debian:~$ sudo tail /var/log/messages 

Đầu ra:

Dec 16 01:21:08 debian kernel: [    9.584074] Bluetooth: BNEP (Ethernet Emulation) ver 1.3   Dec 16 01:21:08 debian kernel: [    9.584074] Bluetooth: BNEP filters: protocol multicast   Dec 16 01:21:08 debian kernel: [    9.648220] Bridge firewalling registered Dec 16 01:21:08 debian kernel: [    9.696728] Bluetooth: SCO (Voice Link) ver 0.6  Dec 16 01:21:08 debian kernel: [    9.696728] Bluetooth: SCO socket layer initialized   Dec 16 01:21:08 debian kernel: [    9.832215] lp: driver loaded but no devices found   Dec 16 01:21:08 debian kernel: [    9.868897] ppdev: user-space parallel port driver   Dec 16 01:21:11 debian kernel: [   12.748833] [drm] Initialized drm 1.1.0 20060810 Dec 16 01:21:11 debian kernel: [   12.754412] pci 0000:00:02.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, low) -> IRQ 11   Dec 16 01:21:11 debian kernel: [   12.754412] [drm] Initialized vboxvideo 1.0.0 20090303 for 0000:00:02.0 on minor 0 

Daemon rsyslog

Trung tâm của cơ chế ghi log là daemon rsyslog. Dịch vụ này chịu trách nhiệm lắng nghe các thông báo log từ các phần khác nhau của hệ thống Linux và định tuyến thông báo đến một file log thích hợp trong folder / var / log. Nó cũng có thể chuyển tiếp thông báo log đến một server Linux khác.

Tệp cấu hình log rsys

Daemon rsyslog lấy thông tin cấu hình của nó từ file rsyslog.conf . Tệp nằm trong folder / etc.

Về cơ bản, file rsyslog.conf cho daemon rsyslog biết nơi lưu thông báo log của nó. Hướng dẫn này đến từ một loạt các dòng gồm hai phần trong file .

Tệp này có thể được tìm thấy tại rsyslog.d/50-default.conf trên ubuntu.

Hướng dẫn hai phần được tạo thành từ một bộ chọn và một hành động . Hai phần được ngăn cách bởi khoảng trắng.

Phần bộ chọn chỉ định nguồn và tầm quan trọng của thông báo log và phần hành động cho biết phải làm gì với thông báo.

Bản thân bộ chọn lại được chia thành hai phần được phân tách bằng dấu chấm (.). Phần đầu tiên trước dấu chấm được gọi là * acility (nguồn root của thông báo) và phần thứ hai sau dấu chấm được gọi là ưu tiên (mức độ nghiêm trọng của thông báo).

Cùng với nhau, cơ sở / ưu tiên và cặp hành động cho rsyslog biết phải làm gì khi một thông báo log phù hợp với tiêu chí được tạo.

Đây là đoạn trích từ file CentOS rsyslog.conf:

# rsyslog v5 configuration file ...   ...     # Include all config files in /etc/rsyslog.d/   IncludeConfig /etc/rsyslog.d/*.conf    #### RULES ####   # Log all kernel messages to the console.   # Logging much else clutters up the screen.   #kern.*  /dev/console    # Log anything (except mail) of level info or higher.   # Don't log private authentication messages!   *.info;mail.none;authpriv.none;cron.none                /var/log/messages    # The authpriv file has restricted access.   authpriv.*                                              /var/log/secure    # Log all the mail messages in one place.   mail.*                                                  -/var/log/maillog     # Log cron stuff   cron.*                                                  /var/log/cron    # Everybody gets emergency messages   *.emerg                                                 *    # Save news errors of level crit and higher in a special file.   uucp,news.crit                                          /var/log/spooler    # Save boot messages also to boot.log   local7.*                                                /var/log/boot.log   ...   ...   

Để hiểu tất cả điều này nghĩa là gì, ta hãy xem xét các loại cơ sở vật chất khác nhau được Linux công nhận. Đây là danh sách:

  • auth hoặc authpriv : Thư đến từ các sự kiện liên quan đến bảo mật và ủy quyền
  • kern : Mọi thông báo đến từ nhân Linux
  • thư : Thư được tạo bởi hệ thống con thư
  • cron : Các thông báo liên quan đến Cron daemon
  • daemon : Tin nhắn đến từ daemon
  • tin tức : Tin nhắn đến từ hệ thống con tin tức mạng
  • lpr : In thông báo log liên quan
  • user : Ghi log thông báo đến từ các chương trình user
  • local0 đến local7 : Dành riêng cho việc sử dụng local

Và đây là danh sách các ưu tiên theo thứ tự tăng dần:

  • debug : Thông tin gỡ lỗi từ các chương trình
  • thông tin : Thông báo thông tin đơn giản - không cần can thiệp
  • chú ý : Tình trạng có thể cần chú ý
  • cảnh báo : Cảnh báo
  • err : Lỗi
  • crit : Tình trạng nghiêm trọng
  • cảnh báo : Tình trạng cần can thiệp ngay lập tức
  • emerg: tình trạng khẩn cấp

Vì vậy, bây giờ ta hãy xem xét dòng sau từ file :

cron.*              /var/log/cron     

Điều này chỉ yêu cầu trình rsyslog lưu tất cả các thông báo đến từ trình cron trong một file có tên / var / log / cron. Asterix (*) sau dấu chấm (.) Nghĩa là các thông báo về tất cả các ưu tiên sẽ được ghi lại. Tương tự, nếu cơ sở được chỉ định là một tiểu hành tinh, nó nghĩa là tất cả các nguồn.

Cơ sở vật chất và ưu tiên có thể liên quan theo một số cách.

Ở dạng mặc định, khi chỉ có một mức độ ưu tiên được chỉ định sau dấu chấm, điều đó nghĩa là tất cả các sự kiện bằng hoặc lớn hơn mức độ ưu tiên đó sẽ bị bẫy. Vì vậy, lệnh sau khiến mọi thư đến từ hệ thống con thư có mức độ ưu tiên cảnh báo hoặc cao hơn được ghi vào một file cụ thể trong / var / log:

mail.warn           /var/log/mail.warn   

Điều này sẽ ghi lại mọi thông báo bằng hoặc lớn hơn mức ưu tiên cảnh báo, nhưng hãy để mọi thứ bên dưới nó. Vì vậy, các thông báo có lỗi, crit, cảnh báo hoặc khẩn cấp cũng sẽ được ghi lại trong file này.

Sử dụng dấu bằng (=) sau dấu chấm (.) Sẽ chỉ ghi lại mức độ ưu tiên đã chỉ định. Vì vậy, nếu ta chỉ muốn bẫy các thông báo thông tin đến từ hệ thống con thư, đặc điểm kỹ thuật sẽ giống như sau:

mail.=info          /var/log/mail.info 

, nếu ta muốn bẫy mọi thứ từ hệ thống con thư ngoại trừ thư thông tin, đặc điểm kỹ thuật sẽ giống như sau

mail.!info          /var/log/mail.info   

hoặc là

mail.!=info         /var/log/mail.info   

Trong trường hợp đầu tiên, file mail.info sẽ chứa mọi thứ có mức độ ưu tiên thấp hơn thông tin. Trong trường hợp thứ hai, file sẽ chứa tất cả các thư có thông tin ưu tiên ở trên.

Nhiều cơ sở trong cùng một dòng có thể được phân tách bằng dấu phẩy.

Nhiều nguồn ( cơ sở. Thâm niên ) trong cùng một dòng được phân tách bằng dấu chấm phẩy.

Khi một hành động được đánh dấu là asterix (*), điều đó nghĩa là tất cả user . Mục nhập này trong file CentOS rsyslog.conf của tôi nói chính xác rằng:

# Everybody gets emergency messages     *.emerg                                                 *     

Hãy thử xem rsyslog.conf đang nói gì trong hệ thống Linux của bạn. Đây là một đoạn trích từ server Debian mà tôi đang chạy:

#  /etc/rsyslog.conf    Configuration file for rsyslog.   #   #           For more information see   #           /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html   ...   ...   auth,authpriv.*         /var/log/auth.log   *.*;auth,authpriv.none      -/var/log/syslog   #cron.*             /var/log/cron.log   daemon.*            -/var/log/daemon.log   kern.*              -/var/log/kern.log   lpr.*               -/var/log/lpr.log   mail.*              -/var/log/mail.log   user.*              -/var/log/user.log    # # Logging for the mail system.  Split it up so that   # it is easy to write scripts to parse these files.   #   mail.info           -/var/log/mail.info   mail.warn           -/var/log/mail.warn   mail.err            /var/log/mail.err   #   # Logging for INN news system.   #   news.crit           /var/log/news/news.crit   news.err            /var/log/news/news.err   news.notice         -/var/log/news/news.notice   

Như bạn thấy , Debian lưu tất cả các thông báo cấp độ bảo mật / cấp quyền trong /var/log/auth.log trong khi CentOS lưu nó trong /var/log/secure .

Các cấu hình cho rsyslog cũng có thể đến từ các file tùy chỉnh khác. Các file cấu hình tùy chỉnh này thường nằm trong các folder khác nhau dưới /etc/rsyslog.d. Tệp rsyslog.conf bao gồm các folder này bằng cách sử dụng chỉ thị $ includeConfig.

Đây là những gì nó trông giống như trong Ubuntu:

#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf   ....   ....     $IncludeConfig /etc/rsyslog.d/*.conf   

Nội dung trong folder /etc/rsyslog.d trông giống như sau:

-rw-r--r-- 1 root root  311 Mar 17  2012 20-ufw.conf   -rw-r--r-- 1 root root  252 Apr 11  2012 21-cloudinit.conf   -rw-r--r-- 1 root root 1655 Mar 30  2012 50-default.conf   

Bây giờ đích cho thông báo log không nhất thiết phải là file log ; tin nhắn có thể được gửi đến console của user . Trong trường hợp này, trường hành động sẽ chứa tên user . Nếu nhiều user cần nhận thông báo, tên user của họ được phân tách bằng dấu phẩy. Nếu tin nhắn cần được phát cho mọi user , thì nó được chỉ định bởi asterix (*) trong trường hành động.

Do là một phần của hệ điều hành mạng, nên rsyslog daemon không chỉ có thể lưu local các thông báo log mà còn có thể chuyển tiếp chúng đến một server Linux khác trong mạng hoặc hoạt động như một repository cho các hệ thống khác. Daemon lắng nghe các thông báo log trong cổng UDP 514. Ví dụ dưới đây sẽ chuyển tiếp các thông báo quan trọng của kernel tới một server có tên “texas”.

kern.crit           @texas   

Tạo và kiểm tra thông báo log của bạn

Vì vậy, bây giờ đã đến lúc ta tạo các file log của riêng mình.

Để kiểm tra điều này, ta sẽ làm như sau

  • Thêm đặc tả file log trong file /etc/rsyslog.conf

  • Khởi động lại daemon rsyslog

  • Kiểm tra cấu hình bằng tiện ích ghi log

Trong ví dụ sau, tôi đang thêm hai dòng mới trong file rsyslog.conf của hệ thống CentOS Linux của tôi. Như bạn thấy , mỗi người trong số họ đến từ một cơ sở gọi là local4 và họ có những ưu tiên khác nhau.

[root@TestLinux ~]# vi /etc/rsyslog.conf   

....   ....    # New lines added for testing log message generation    local4.crit                                             /var/log/local4crit.log   local4.=info                                            /var/log/local4info.log   

Tiếp theo, dịch vụ được khởi động lại để dữ liệu file cấu hình được reload :

[root@TestLinux ~]# /etc/init.d/rsyslog restart   Shutting down system logger:                               [  OK  ]   Starting system logger:                                    [  OK  ]   [root@TestLinux ~]#     

Để tạo thông báo log ngay bây giờ, ứng dụng ghi nhật ký được gọi là:

[root@TestLinux ~]# logger -p local4.info " This is a info message from local 4"   

Bây giờ, nhìn trong folder / var / log cho thấy hai file mới:

...   ...   -rw-------  1 root root      0 Dec  9 11:21 local4crit.log   -rw-------  1 root root     72 Dec  9 11:22 local4info.log   

Kích thước của local4info.log là khác 0. Vì vậy, khi nó được mở ra, tôi thấy thông báo đã được ghi lại:

[root@TestLinux ~]# cat /var/log/local4info.log   

Dec  9 11:22:32 TestLinux root:  This is a info message from local 4   

Xoay file log

Khi ngày càng có nhiều thông tin được ghi vào các file log , chúng ngày càng lớn hơn. Điều này rõ ràng đặt ra một vấn đề hiệu suất tiềm ẩn. Ngoài ra, việc quản lý các file trở nên cồng kềnh.

Linux sử dụng khái niệm "xoay" các file log thay vì xóa hoặc xóa chúng. Khi xoay một log , một file log mới được tạo và file log cũ được đổi tên và nén tùy chọn. Do đó, một file log có thể có nhiều version cũ vẫn trực tuyến. Các file này sẽ quay trở lại trong một khoảng thời gian và sẽ đại diện cho việc tồn đọng. Sau khi một số lượng tồn đọng nhất định đã được tạo, việc xoay vòng log mới sẽ khiến file log cũ nhất bị xóa.

Vòng quay được bắt đầu thông qua tiện ích logrotate.

Tệp cấu hình logrotate

Giống như rsyslog, logrotate cũng phụ thuộc vào một file cấu hình và tên của file này là logrotate.conf. Nó nằm dưới / etc.

Đây là những gì tôi thấy trong file logrotate.conf của server Debian:

debian@debian:~$ cat /etc/logrotate.conf   

# see "man logrotate" for details   # rotate log files weekly   weekly    # keep 4 weeks worth of backlogs   rotate 4    # create new (empty) log files after rotating old ones   create    # uncomment this if you want your log files compressed   #compress    # packages drop log rotation information into this directory   include /etc/logrotate.d    # no packages own wtmp, or btmp -- we'll rotate them here   /var/log/wtmp {       missingok       monthly       create 0664 root utmp       rotate 1   }    /var/log/btmp {       missingok       monthly       create 0660 root utmp       rotate 1   }    # system-specific logs may be configured here   

Các dòng khá dễ hiểu. Theo mặc định, các file log phải được luân chuyển hàng tuần với bốn log tồn đọng trực tuyến cùng một lúc. Khi chương trình chạy, một file log mới, trống sẽ được tạo và tùy chọn các file cũ sẽ được nén.

Ngoại lệ duy nhất dành cho các file wtmp và btmp. wtmp theo dõi các lần đăng nhập hệ thống và btmp theo dõi các lần đăng nhập xấu. Cả hai file log này sẽ được luân chuyển hàng tháng và không có lỗi nào được trả lại nếu có thể tìm thấy các file wtmp hoặc btmp nào trước đó.

Các cấu hình xoay vòng log tùy chỉnh được giữ trong folder etc / logrotate.d. Chúng cũng có trong logrotate.conf với chỉ thị include. Cài đặt Debian hiển thị cho tôi nội dung của folder này:

debian@debian:~$ ls -l /etc/logrotate.d   

total 44   -rw-r--r-- 1 root root 173 Apr 15  2011 apt   -rw-r--r-- 1 root root  79 Aug 12  2011 aptitude   -rw-r--r-- 1 root root 135 Feb 24  2010 consolekit   -rw-r--r-- 1 root root 248 Nov 28  2011 cups   -rw-r--r-- 1 root root 232 Sep 19  2012 dpkg   -rw-r--r-- 1 root root 146 May 12  2011 exim4-base   -rw-r--r-- 1 root root 126 May 12  2011 exim4-paniclog   -rw-r--r-- 1 root root 157 Nov 16  2010 pm-utils   -rw-r--r-- 1 root root  94 Aug  8  2010 ppp   -rw-r--r-- 1 root root 515 Nov 30  2010 rsyslog   -rw-r--r-- 1 root root 114 Nov 26  2008 unattended-upgrades   

Nội dung của rsyslog cho thấy cách tái chế một số file log :

debian@debian:~$ cat /etc/logrotate.d/rsyslog 

/var/log/syslog   {       rotate 7       daily       missingok       notifempty       delaycompress       compress       postrotate           invoke-rc.d rsyslog reload > /dev/null       endscript   }    /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           invoke-rc.d rsyslog reload > /dev/null       endscript   }   

Như bạn thấy , file log hệ thống sẽ được khởi động lại mỗi ngày với giá trị của các log trong bảy ngày được lưu trực tuyến. Các file log khác được luân phiên hàng tuần.

Cũng đáng chú ý là chỉ thị postrotate. Điều này chỉ định hành động xảy ra sau khi hoàn tất việc xoay toàn bộ log .

Thử nghiệm xoay

Logrotate có thể được chạy theo cách thủ công để tái chế một hoặc nhiều file . Và để làm điều đó, ta chỉ cần chỉ định file cấu hình liên quan làm đối số cho lệnh.

Để xem cách này hoạt động như thế nào, đây là danh sách một phần các file log trong folder / var / log trong server CentOS thử nghiệm của tôi:

[root@TestLinux ~]# ls -l /var/log   

total 800     ...   -rw-------  1 root root    359 Dec 17 18:25 maillog   -rw-------. 1 root root   1830 Dec 16 16:35 maillog-20131216   -rw-------  1 root root  30554 Dec 17 18:25 messages   -rw-------. 1 root root 180429 Dec 16 16:35 messages-20131216   -rw-------  1 root root    591 Dec 17 18:28 secure   -rw-------. 1 root root   4187 Dec 16 16:41 secure-20131216   ...   ...   

Nội dung một phần của file logrotate.conf trông giống như sau:

[root@TestLinux ~]# cat /etc/logrotate.conf 

# see "man logrotate" for details # rotate log files weekly weekly  # keep 4 weeks worth of backlogs  rotate 4    # create new (empty) log files after rotating old ones create   ...   ...   

Tiếp theo, ta chạy lệnh logrotate:

[root@TestLinux ~]# logrotate -fv /etc/logrotate.conf     

Thư cuộn qua khi file mới được tạo, gặp lỗi, v.v. Khi bụi lắng xuống, ta cố gắng kiểm tra các file thư, bảo mật hoặc thư mới:

[root@TestLinux ~]# 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     [root@TestLinux ~]# 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    [root@TestLinux ~]# ls -l /var/log/secure*   -rw-------  1 root root    0 Dec 17 18:34 /var/log/secure -rw-------. 1 root root 4187 Dec 16 16:41 /var/log/secure-20131216  -rw-------  1 root root  591 Dec 17 18:28 /var/log/secure-20131217  [root@TestLinux ~]#   

Như ta có thể thấy, tất cả ba file log mới đã được tạo. Các file maillog và file bảo mật vẫn trống, nhưng file tin nhắn mới đã có một số dữ liệu trong đó.

Những từ cuối

Hy vọng rằng hướng dẫn này đã cung cấp cho bạn một số ý tưởng về ghi log Linux. Bạn có thể thử xem xét các hệ thống thử nghiệm hoặc phát triển của riêng mình để có ý tưởng tốt hơn. Khi bạn đã quen với vị trí của các file log và cài đặt cấu hình của chúng, hãy sử dụng kiến thức đó để hỗ trợ hệ thống production của bạn. Và sau đó, có thể bạn có thể tạo một số alias để trỏ đến các file này để tiết kiệm thời gian đánh máy.

<div class = “author”> Người gửi: Sadequl Hussain </div>


Tags:

Các tin liên quan

Cách thiết lập server email Postfix với Dovecot: Dynamic Maildirs và LMTP
2013-12-17
Cách cài đặt Linux Socket Monitor (LSM) trên CentOS 6.4
2013-11-26
Cách sử dụng ApacheBench để thực hiện kiểm tra tải trên VPS Arch Linux
2013-11-21
Cách thiết lập server VPN đa giao thức bằng SoftEther
2013-11-19
Cách thiết lập server e-mail Postfix với Dovecot
2013-11-14
Cách thiết lập WordPress với W3 Total Cache trên Lighttpd Server
2013-11-12
Thiết lập server ban đầu với Debian 7
2013-11-04
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Debian 7
2013-10-31
Cách sử dụng Tìm và Định vị để Tìm kiếm Tệp trên VPS Linux
2013-09-27
10 Trứng Phục sinh hàng đầu trên Linux
2013-09-18