108.2 Bài 1
Chứng chỉ: |
LPIC-1 |
---|---|
Phiên bản: |
5.0 |
Chủ đề: |
108 Dịch vụ Hệ thống thiết yếu |
Mục tiêu: |
108.2 Ghi nhật ký Hệ thống |
Bài: |
1 trên 2 |
Giới thiệu
Nhật ký có thể được xem là người bạn thân thiết của quản trị viên hệ thống. Nhật ký là các tệp (thường là tệp văn bản) có chứa tất cả các sự kiện mạng và hệ thống được ghi lại theo thứ tự thời gian kể từ thời điểm hệ thống được khởi động. Do đó, phạm vi thông tin có thể tìm thấy trong nhật ký bao gồm hầu hết mọi khía cạnh của hệ thống: các lần xác thực không thành công, lỗi chương trình và dịch vụ, máy chủ bị tường lửa chặn, v.v. Như chúng ta có thể đoán được, nhật ký sẽ khiến công việc của quản trị viên hệ thống trở nên dễ dàng hơn rất nhiều trong các trường hợp cần xử lý sự cố, kiểm tra tài nguyên, phát hiện hành vi bất thường của chương trình, v.v.
Trong bài học này, chúng ta sẽ thảo luận về một trong những công cụ hỗ trợ ghi nhật ký phổ biến nhất hiện có trong các bản phân phối GNU/Linux: rsyslog
. Chúng ta sẽ nghiên cứu các loại nhật ký khác nhau hiện có, nơi chúng được lưu trữ, các thông tin có trong nhật ký cũng như cách lấy và lọc các thông tin đó. Chúng ta cũng sẽ thảo luận về cách lưu giữ nhật ký trong các máy chủ tập trung trên mạng IP, công cụ xoay vòng nhật ký và bộ đệm vòng hạt nhân.
Ghi nhật ký Hệ thống
Thời điểm hạt nhân và các tiến trình khác nhau trong hệ thống bắt đầu chạy và liên lạc với nhau, rất nhiều thông tin sẽ được tạo ra dưới dạng thông báo và — phần lớn trong số chúng — sẽ được gửi tới nhật ký.
Nếu không ghi nhật ký, việc tìm kiếm một sự kiện xảy ra trên máy chủ sẽ khiến quản trị viên hệ thống phải đau đầu. Từ đó chúng ta có thể thấy được tầm quan trọng của việc xây dựng một phương thức theo dõi tập trung và tiêu chuẩn hóa mọi sự kiện trên hệ thống. Nhật ký là yếu tố quyết định và sẽ cung cấp các thông tin cần thiết trong việc xử lý sự cố và bảo mật, đồng thời cũng là nguồn dữ liệu đáng tin cậy để hiểu được số liệu thống kê hệ thống và đưa ra các dự đoán xu hướng chính xác.
Bỏ qua systemd-journald
(mà chúng ta sẽ thảo luận trong bài học tiếp theo), việc ghi nhật ký theo cách truyền thống được xử lý bởi ba dịch vụ chuyên dụng chính: syslog
, syslog-ng
(syslog thế hệ mới) và rsyslog
(“hệ thống xử lý ghi nhật ký siêu nhanh”). rsyslog
đã mang đến những cải tiến quan trọng (chẳng hạn như hỗ trợ RELP) và đã trở thành lựa chọn phổ biến nhất hiện nay. Mỗi dịch vụ này đều sẽ thu thập thông báo từ các dịch vụ và chương trình khác rồi lưu trữ chúng trong tệp nhật ký, thường là trong /var/log
. Tuy nhiên, một số dịch vụ sẽ tự xử lý nhật ký của chúng (ví dụ như máy chủ web Apache HTTPD hoặc hệ thống in CUPS). Tương tự, nhân Linux sẽ sử dụng bộ đệm vòng trong bộ nhớ để lưu trữ các thông báo nhật ký của chính nó.
Note
|
|
Vì rsyslog
đã trở thành công cụ ghi nhật ký tiêu chuẩn trong tất cả các bản phân phối chính nên chúng ta sẽ tập trung vào nó trong bài học này. rsyslog
sử dụng mô hình máy khách-máy chủ (client-server). Máy khách và máy chủ có thể hoạt động trên cùng một máy chủ (host) hoặc trong các máy khác nhau. Thông báo sẽ được gửi và nhận ở một định dạng cụ thể và có thể được lưu giữ trong các máy chủ rsyslog
tập trung trên các mạng IP. Trình nền của rsyslog — rsyslogd
— hoạt động cùng với klogd
(quản lý các thông báo hạt nhân). Trong các phần tiếp theo, chúng ta sẽ thảo luận về rsyslog
và các thành phần cấu thành nên chức năng ghi nhật ký của nó.
Note
|
Trình nền (Daemon) là một dịch vụ chạy ngầm. Hãy lưu ý ký tự |
Các loại Nhật ký
Vì nhật ký là dữ liệu biến nên chúng thường được tìm thấy trong /var/log
. Nói một cách đại khái, chúng có thể được phân loại thành nhật ký hệ thống và nhật ký dịch vụ hoặc chương trình.
Hãy cùng xem một số nhật ký hệ thống và các thông tin mà chúng lưu giữ:
/var/log/auth.log
-
Các hoạt động liên quan đến quá trình xác thực: người dùng đã đăng nhập, thông tin
sudo
, các công việc định kỳ, lần đăng nhập không thành công, v.v. /var/log/syslog
-
Một tệp tập trung dành cho hầu hết tất cả các nhật ký được ghi lại bởi
rsyslogd
. Vì nó bao gồm rất nhiều thông tin nên nhật ký sẽ được phân phối trên các tệp khác theo cấu hình được cung cấp trong/etc/rsyslog.conf
. /var/log/debug
-
Thông tin gỡ lỗi từ các chương trình.
/var/log/kern.log
-
Thông báo từ hạt nhân.
/var/log/messages
-
Các thông báo mang tính thông tin liên quan đến các dịch vụ khác mà không liên quan đến hạt nhân. Đây cũng là đích đến nhật ký máy khách từ xa mặc định trong một phiên triển khai nhật ký máy chủ tập trung.
/var/log/daemon.log
-
Thông tin liên quan đến trình nền hoặc các dịch vụ chạy ngầm.
/var/log/mail.log
-
Thông tin liên quan đến máy chủ email (ví dụ như postfix).
/var/log/Xorg.0.log
-
Thông tin liên quan đến thẻ đồ họa.
/var/run/utmp
và/var/log/wtmp
-
Các phiên đăng nhập thành công.
/var/log/btmp
-
Các phiên đăng nhập không thành công (ví dụ như việc tấn công brute force thông qua ssh).
/var/log/faillog
-
Các phiên xác thực không thành công.
/var/log/lastlog
-
Ngày và giờ đăng nhập gần đây của người dùng.
Bây giờ, hãy cùng xem một vài ví dụ về nhật ký dịch vụ:
/var/log/cups/
-
Thư mục nhật ký của Hệ thống in Unix phổ thông. Nó thường bao gồm các tệp nhật ký mặc định sau:
error_log
,page_log
vàaccess_log
. /var/log/apache2/
hoặc/var/log/httpd
-
Thư mục nhật ký của Máy chủ web Apache. Nó thường bao gồm các tệp nhật ký mặc định sau:
access.log
,error_log
vàother_vhosts_access.log
. /var/log/mysql
-
Thư mục nhật ký của Hệ thống quản lý cơ sở dữ liệu quan hệ MySQL. Nó thường bao gồm các tệp nhật ký mặc định sau:
error_log
,mysql.log
vàmysql-slow.log
. /var/log/samba/
-
Thư mục nhật ký của giao thức Khối Thông báo Phiên (SMB). Nó thường bao gồm các tệp nhật ký mặc định sau:
log.
,log.nmbd
vàlog.smbd
.
Note
|
Tên và nội dung chính xác của tệp nhật ký có thể sẽ khác nhau tuỳ vào bản phân phối Linux. Ngoài ra còn có các nhật ký dành riêng cho các bản phân phối cụ thể (chẳng hạn như |
Đọc Nhật ký
Để đọc tệp nhật ký, trước tiên hãy đăng nhập dưới tên siêu người dùng hoặc người dùng có quyền đọc tệp. Chúng ta có thể sử dụng nhiều tiện ích đa dạng như:
less
hoặcmore
-
Các tuỳ chọn trang cho phép xem và cuộn từng trang một:
root@debian:~# less /var/log/auth.log Sep 12 18:47:56 debian sshd[441]: Received SIGHUP; restarting. Sep 12 18:47:56 debian sshd[441]: Server listening on 0.0.0.0 port 22. Sep 12 18:47:56 debian sshd[441]: Server listening on :: port 22. Sep 12 18:47:56 debian sshd[441]: Received SIGHUP; restarting. Sep 12 18:47:56 debian sshd[441]: Server listening on 0.0.0.0 port 22. Sep 12 18:47:56 debian sshd[441]: Server listening on :: port 22. Sep 12 18:49:46 debian sshd[905]: Accepted password for carol from 192.168.1.65 port 44296 ssh2 Sep 12 18:49:46 debian sshd[905]: pam_unix(sshd:session): session opened for user carol by (uid=0) Sep 12 18:49:46 debian systemd-logind[331]: New session 2 of user carol. Sep 12 18:49:46 debian systemd: pam_unix(systemd-user:session): session opened for user carol by (uid=0) (...)
zless
hoặczmore
-
Tương tự như
less
vàmore
nhưng sử dụng cho nhật ký được nén bằnggzip
(một chức năng phổ biến củalogrotate
):root@debian:~# zless /var/log/auth.log.3.gz Aug 19 20:05:57 debian sudo: carol : TTY=pts/0 ; PWD=/home/carol ; USER=root ; COMMAND=/sbin/shutdown -h now Aug 19 20:05:57 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0) Aug 19 20:05:57 debian lightdm: pam_unix(lightdm-greeter:session): session closed for user lightdm Aug 19 23:50:49 debian systemd-logind[333]: Watching system buttons on /dev/input/event2 (Power Button) Aug 19 23:50:49 debian systemd-logind[333]: Watching system buttons on /dev/input/event3 (Sleep Button) Aug 19 23:50:49 debian systemd-logind[333]: Watching system buttons on /dev/input/event4 (Video Bus) Aug 19 23:50:49 debian systemd-logind[333]: New seat seat0. Aug 19 23:50:49 debian sshd[409]: Server listening on 0.0.0.0 port 22. (...)
tail
-
Xem những dòng cuối cùng trong một tệp (mặc định là 10 dòng). Sức mạnh của tail — trong một phạm vi rộng hơn — nằm trong khoá chuyển
-f
; với khoá chuyển này, nó sẽ tự động hiển thị các dòng mới khi chúng được thêm vào:root@suse-server:~# tail -f /var/log/messages 2019-09-14T13:57:28.962780+02:00 suse-server sudo: pam_unix(sudo:session): session closed for user root 2019-09-14T13:57:38.038298+02:00 suse-server sudo: carol : TTY=pts/0 ; PWD=/home/carol ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/messages 2019-09-14T13:57:38.039927+02:00 suse-server sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0) 2019-09-14T14:07:22+02:00 debian carol: appending new message from client to remote server...
head
-
Xem dòng đầu tiên trong tệp (mặc định là 10 dòng):
root@suse-server:~# head -5 /var/log/mail 2019-06-29T11:47:59.219806+02:00 suse-server postfix/postfix-script[1732]: the Postfix mail system is not running 2019-06-29T11:48:01.355361+02:00 suse-server postfix/postfix-script[1925]: starting the Postfix mail system 2019-06-29T11:48:01.391128+02:00 suse-server postfix/master[1930]: daemon started -- version 3.3.1, configuration /etc/postfix 2019-06-29T11:55:39.247462+02:00 suse-server postfix/postfix-script[3364]: stopping the Postfix mail system 2019-06-29T11:55:39.249375+02:00 suse-server postfix/master[1930]: terminating on signal 15
grep
-
Tiện ích lọc cho phép người dùng tìm kiếm các chuỗi cụ thể:
root@debian:~# grep "dhclient" /var/log/syslog Sep 13 11:58:48 debian dhclient[448]: DHCPREQUEST of 192.168.1.4 on enp0s3 to 192.168.1.1 port 67 Sep 13 11:58:49 debian dhclient[448]: DHCPACK of 192.168.1.4 from 192.168.1.1 Sep 13 11:58:49 debian dhclient[448]: bound to 192.168.1.4 -- renewal in 1368 seconds. (...)
Như có thể thấy được, kết quả đầu ra được in theo định dạng sau:
-
Dấu thời gian
-
Tên máy chủ nơi gửi thông báo
-
Tên chương trình/dịch vụ tạo ra thông báo
-
PID của chương trình tạo ra thông báo
-
Diễn tả hành động đã xảy ra
Có một số ví dụ mà trong đó nhật ký không phải là văn bản mà là các tệp nhị phân và — do đó — chúng ta phải sử dụng các lệnh đặc biệt để phân tích chúng:
/var/log/wtmp
-
Sử dụng
who
(hoặcw
):root@debian:~# who root pts/0 2020-09-14 13:05 (192.168.1.75) root pts/1 2020-09-14 13:43 (192.168.1.75)
/var/log/btmp
-
Sử dụng
utmpdump
hoặclast -f
:root@debian:~# utmpdump /var/log/btmp Utmp dump of /var/log/btmp [6] [01287] [ ] [dave ] [ssh:notty ] [192.168.1.75 ] [192.168.1.75 ] [2019-09-07T19:33:32,000000+0000]
/var/log/faillog
-
Sử dụng
faillog
:root@debian:~# faillog -a | less Login Failures Maximum Latest On root 0 0 01/01/70 01:00:00 +0100 daemon 0 0 01/01/70 01:00:00 +0100 bin 0 0 01/01/70 01:00:00 +0100 sys 0 0 01/01/70 01:00:00 +0100 sync 0 0 01/01/70 01:00:00 +0100 games 0 0 01/01/70 01:00:00 +0100 man 0 0 01/01/70 01:00:00 +0100 lp 0 0 01/01/70 01:00:00 +0100 mail 0 0 01/01/70 01:00:00 +0100 (...)
/var/log/lastlog
-
Sử dụng
lastlog
:root@debian:~# lastlog | less Username Port From Latest root Never logged in daemon Never logged in bin Never logged in sys Never logged in (...) sync Never logged in avahi Never logged in colord Never logged in saned Never logged in hplip Never logged in carol pts/1 192.168.1.75 Sat Sep 14 13:43:06 +0200 2019 dave pts/3 192.168.1.75 Mon Sep 2 14:22:08 +0200 2019
Note
|
Ngoài ra còn có các công cụ đồ họa để đọc tệp nhật ký (ví dụ như |
Cách chuyển Thông báo thành Nhật ký
Quá trình sau đây minh họa cách một thông báo được ghi vào tệp nhật ký:
-
Các ứng dụng, dịch vụ và hạt nhân sẽ ghi thông báo vào các tệp đặc biệt (ổ nối và bộ nhớ đệm), ví dụ như
/dev/log
hoặc/dev/kmsg
. -
rsyslogd
lấy thông tin từ ổ nối hoặc bộ nhớ đệm. -
Tùy thuộc vào các quy tắc được tìm thấy trong
/etc/rsyslog.conf
và/hoặc các tệp trong/etc/ryslog.d/
,rsyslogd
sẽ chuyển thông tin đến tệp nhật ký tương ứng (thường được tìm thấy trong/var/log
).
Note
|
Ổ nối là một tệp đặc biệt được sử dụng để truyền thông tin giữa các tiến trình khác nhau. Để liệt kê tất cả các ổ nối trên hệ thống, chúng ta có thể sử dụng lệnh |
Tiện ích đại diện, Mức độ ưu tiên và Hành động
Tệp cấu hình rsyslog
là /etc/rsylog.conf
(trong một số bản phân phối, chúng ta cũng có thể tìm thấy các tệp cấu hình trong /etc/rsyslog.d/
). Nó thường được chia thành ba phần: MODULES
(MÔ-ĐUN), GLOBAL DIRECTIVES
(CHỈ THỊ TOÀN CỤC) và RULES
(QUY TẮC). Hãy cùng xem các phần này bằng cách khám phá tệp rsyslog.conf
trong máy chủ Debian GNU/Linux 10 (buster) — chúng ta cũng có thể sử dụng sudo less /etc/rsyslog.conf
để thực hiện việc này.
MODULES
bao gồm các hỗ trợ mô-đun dành cho việc ghi nhật ký, năng lực thông báo và nhận nhật ký UDP/TCP:
################# #### MODULES #### ################# module(load="imuxsock") # provides support for local system logging module(load="imklog") # provides kernel logging support #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")
GLOBAL DIRECTIVES
cho phép chúng ta định cấu hình một số thứ như nhật ký và quyền đối với thư mục nhật ký:
########################### #### GLOBAL DIRECTIVES #### ########################### # # Use traditional timestamp format. # To enable high precision timestamps, comment out the following line. # $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # # Set the default permissions for all log files. # $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 # # Where to place spool and state files # $WorkDirectory /var/spool/rsyslog # # Include all config files in /etc/rsyslog.d/ # $IncludeConfig /etc/rsyslog.d/*.conf
RULES
là nơi chứa các tiện ích đại diện, mức độ ưu tiên và hành động. Các cài đặt trong phần này yêu cầu trình nền ghi nhật ký lọc các thông báo theo những quy tắc nhất định và ghi nhật ký hoặc gửi chúng khi cần thiết. Để hiểu các quy tắc này, trước tiên chúng ta cần giải thích các khái niệm về tiện ích đại diện và mức độ ưu tiên của rsyslog
. Mỗi thông báo nhật ký sẽ được cung cấp một số tiện ích đại diện và từ khóa được liên kết với hệ thống phụ nội bộ Linux tạo ra thông báo:
Số | Từ khóa | Mô tả |
---|---|---|
|
|
Thông báo nhân Linux |
|
|
Thông báo cấp người dùng |
|
|
Hệ thống thư |
|
|
Trình nền hệ thống |
|
|
Thông báo bảo mật/xác thực |
|
|
Thông báo syslogd |
|
|
Hệ thống phụ in dòng |
|
|
Hệ thống phụ tin tức mạng |
|
|
Hệ thống phụ UUCP (Giao thức sao chép Unix-sang-Unix) |
|
|
Trình nền đồng hồ |
|
|
Thông báo bảo mật/xác thực |
|
|
Trình nền FTP (Giao thức truyền tệp) |
|
|
Trình nền NTP (Giao thức thời gian mạng) |
|
|
Kiểm tra nhật ký |
|
|
Cảnh báo nhật ký |
|
|
Trình nền đồng hồ |
|
|
Sử dụng cục bộ 0 - 7 |
Thêm vào đó, mỗi thông báo sẽ được gán một mức ưu tiên:
Mã | Mức độ nghiêm trọng | Từ khóa | Mô tả |
---|---|---|---|
|
Khẩn cấp (emergency) |
|
Hệ thống không thể sử dụng được |
|
Cảnh báo (alert) |
|
Phải có hành động ngay lập tức |
|
Nghiêm trọng (critical) |
|
Tình trạng nghiêm trọng |
|
Lỗi (error) |
|
Tình trạng lỗi |
|
Cảnh báo (warning) |
|
Tình trạng cảnh báo |
|
Thông báo (notice) |
|
Tình trạng bình thường nhưng đáng chú ý |
|
Thông tin (informational) |
|
Thông báo mang tính thông tin |
|
Gỡ lỗi (debug) |
|
Thông báo cấp độ gỡ lỗi |
Sau đây là một đoạn trích rsyslog.conf
từ hệ thống Debian GNU/Linux 10 (buster) bao gồm một số quy tắc mẫu:
############### #### RULES #### ############### # First some standard log files. Log by facility. # 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 # # Some "catch-all" log files. # *.=debug;\ auth,authpriv.none;\ news.none;mail.none -/var/log/debug *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages
Định dạng quy tắc sẽ như sau: <facility>.<priority>
<action>
Bộ chọn <facility>.<priority>
sẽ lọc các thông báo để khớp. Các mức độ ưu tiên được tính theo thứ bậc, có nghĩa là rsyslog sẽ khớp với các thông báo có mức độ ưu tiên được chỉ định hoặc cao hơn. <action>
sẽ hiển thị hành động cần thực hiện (nơi gửi thông báo nhật ký). Dưới đây là một vài ví dụ:
auth,authpriv.* /var/log/auth.log
Bất kể mức độ ưu tiên của chúng (*
) là gì, tất cả các thông báo từ tiện ích đại diện auth
hoặc authpriv
đều sẽ được gửi đến /var/log/auth.log
.
*.*;auth,authpriv.none -/var/log/syslog
Tất cả các thông báo — bất kể mức độ ưu tiên của chúng (*
) là gì — từ tất cả các tiện ích đại diện (*
) — loại bỏ các thông báo từ auth
hoặc authpriv
(do đó có hậu tố .none
) — đều sẽ được ghi vào /var/log/syslog
(dấu trừ (-
) trước đường dẫn sẽ ngăn chặn việc ghi đĩa quá mức). Hãy lưu ý dấu chấm phẩy (;
) được dùng để phân tách bộ chọn và dấu phẩy (,
) được dùng để nối hai tiện ích đại diện trong cùng một quy tắc (auth,authpriv
).
mail.err /var/log/mail.err
Thông báo từ tiện ích đại diện mail
có mức độ ưu tiên là error
hoặc cao hơn (critical
, alert
hoặc emergency
) sẽ được gửi đến /var/log/mail.err
.
*.=debug;\ auth,authpriv.none;\ news.none;mail.none -/var/log/debug
Thông báo từ tất cả các tiện ích đại diện có mức độ ưu tiên debug
và không có mức độ (=
) nào khác sẽ được ghi vào /var/log/debug
— ngoại trừ mọi thông báo đến từ tiện ích đại diện auth
, authpriv
, news
và mail
(lưu ý cú pháp: ;\
).
Nhập thủ công vào Nhật ký hệ thống: logger
Lệnh logger
rất hữu ích cho việc tạo tệp lệnh vỏ hoặc cho mục đích thử nghiệm. logger
sẽ nối thêm bất kỳ thông báo nào nó nhận được vào /var/log/syslog
(hoặc vào /var/log/messages
khi đăng nhập vào máy chủ nhật ký trung tâm từ xa như chúng ta sẽ thấy ở phần sau của bài học này):
carol@debian:~$ logger this comment goes into "/var/log/syslog"
Để in dòng cuối cùng trong /var/log/syslog
, hãy sử dụng lệnh tail
với tùy chọn -1
:
root@debian:~# tail -1 /var/log/syslog Sep 17 17:55:33 debian carol: this comment goes into /var/log/syslog
rsyslog
làm Máy chủ nhật ký trung tâm
Để giải thích vấn đề này, chúng ta sẽ cùng thêm một máy chủ mới vào thiết lập. Bố cục của chúng sẽ như sau:
Vai trò | Tên máy chủ | Hệ điều hành | Địa chỉ IP |
---|---|---|---|
Máy chủ nhật ký trung tâm |
|
openSUSE Leap 15.1 |
192.168.1.6 |
Máy khách |
|
Debian GNU/Linux 10 (buster) |
192.168.1.4 |
Chúng ta hãy bắt đầu bằng việc cấu hình máy chủ. Trước hết, chúng ta phải đảm bảo rằng rsyslog
đã và đang hoạt động:
root@suse-server:~# systemctl status rsyslog rsyslog.service - System Logging Service Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-09-17 18:45:58 CEST; 7min ago Docs: man:rsyslogd(8) http://www.rsyslog.com/doc/ Main PID: 832 (rsyslogd) Tasks: 5 (limit: 4915) CGroup: /system.slice/rsyslog.service └─832 /usr/sbin/rsyslogd -n -iNONE
openSUSE sẽ cung cấp tệp cấu hình chuyên dụng để ghi nhật ký từ xa: /etc/rsyslog.d/remote.conf
. Hãy cùng kích hoạt tính năng nhận thông báo từ máy khách (các máy chủ từ xa) qua TCP. Chúng ta sẽ phải bỏ chú thích cho các dòng tải mô-đun và khởi động máy chủ TCP trên cổng 514:
# ######### Receiving Messages from Remote Hosts ########## # TCP Syslog Server: # provides TCP syslog reception and GSS-API (if compiled to support it) $ModLoad imtcp.so # load module ##$UDPServerAddress 10.10.0.1 # force to listen on this IP only $InputTCPServerRun 514 # Starts a TCP server on selected port # UDP Syslog Server: #$ModLoad imudp.so # provides UDP syslog reception ##$UDPServerAddress 10.10.0.1 # force to listen on this IP only #$UDPServerRun 514 # start a UDP syslog server at standard port 514
Sau khi hoàn tất, chúng ta sẽ phải khởi động lại dịch vụ rsyslog và kiểm tra xem máy chủ có đang nghe trên cổng 514 hay không:
root@suse-server:~# systemctl restart rsyslog root@suse-server:~# netstat -nltp | grep 514 [sudo] password for root: tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 2263/rsyslogd tcp6 0 0 :::514 :::* LISTEN 2263/rsyslogd
Tiếp theo, chúng ta nên mở các cổng trong tường lửa và tải lại cấu hình:
root@suse-server:~# firewall-cmd --permanent --add-port 514/tcp success root@suse-server:~# firewall-cmd --reload success
Note
|
Với sự xuất hiện của openSUSE Leap 15.0, |
Khuôn mẫu và Điều kiện lọc
Theo mặc định, nhật ký của máy khách sẽ được ghi vào tệp /var/log/messages
của máy chủ — cùng với nhật ký của chính máy chủ. Tuy nhiên, chúng ta sẽ tạo một khuôn mẫu và một điều kiện lọc để lưu trữ nhật ký của máy khách trong các thư mục rõ ràng của riêng chúng. Để làm như vậy, chúng ta sẽ thêm phần sau vào /etc/rsyslog.conf
(hoặc /etc/rsyslog.d/remote.conf
):
$template RemoteLogs,"/var/log/remotehosts/%HOSTNAME%/%$NOW%.%syslogseverity-text%.log" if $FROMHOST-IP=='192.168.1.4' then ?RemoteLogs & stop
- Khuôn mẫu
-
Khuôn mẫu tương ứng với dòng đầu tiên và cho phép chúng ta chỉ định định dạng cho tên nhật ký bằng cách tạo tên tệp động. Một khuôn mẫu sẽ bao gồm:
-
Chỉ thị khuôn mẫu (
$template
) -
Tên khuôn mẫu (
RemoteLogs
) -
Văn bản khuôn mẫu (
"/var/log/remotehosts/%HOSTNAME%/%$NOW%.%syslogseverity-text%.log"
) -
Các tùy chọn (tùy chọn)
-
Khuôn mẫu của chúng ta được gọi là RemoteLogs
và văn bản của nó bao gồm một đường dẫn trong /var/log
. Tất cả các nhật ký của máy chủ từ xa sẽ đi vào thư mục remotehosts
. Ở đây, thư mục con sẽ được tạo dựa trên tên máy chủ của máy (%HOSTNAME%
). Mỗi tên tệp trong thư mục này sẽ bao gồm ngày (%$NOW%
), mức độ nghiêm trọng (còn gọi là mức độ ưu tiên) của thông báo ở định dạng văn bản (%syslogseverity-text%
) và hậu tố .log
. Các từ nằm giữa các dấu phần trăm là các đặc tính và cho phép chúng ta truy cập vào nội dung của thông báo nhật ký (ngày, mức độ ưu tiên, v.v.). Thông báo syslog
có một số đặc tính được xác định rõ ràng có thể được sử dụng trong các khuôn mẫu. Các đặc tính này được truy cập — và có thể được sửa đổi — bởi phần thay thế đặc tính với ngụ ý là đặt chúng giữa các dấu phần trăm.
- Điều kiện lọc
-
Hai dòng còn lại tương ứng với điều kiện lọc và hành động liên quan của nó:
-
Bộ lọc dựa trên biểu thức (
if $FROMHOST-IP=='192.168.1.4'
) -
Hành động (
then ?RemoteLogs
,& stop
)
-
Dòng đầu tiên sẽ kiểm tra địa chỉ IP của máy chủ từ xa đang gửi nhật ký và — nếu nó tương đương với địa chỉ của máy khách Debian của chúng ta — nó sẽ áp dụng khuôn mẫu RemoteLogs
. Dòng cuối cùng (& stop
) sẽ đảm bảo rằng các thông báo sẽ không được gửi đồng thời đến /var/log/messages
(mà chỉ gửi đến các tệp trong thư mục /var/log/remotehosts
).
Note
|
Để tìm hiểu thêm về các mẫu, đặc tính và quy tắc, bạn có thể tham khảo trang hướng dẫn về |
Với cấu hình đã được cập nhật, chúng ta sẽ khởi động lại rsyslog
và xác nhận rằng chưa có thư mục remotehosts
nào trong /var/log
:
root@suse-server:~# systemctl restart rsyslog root@suse-server:~# ls /var/log/ acpid chrony localmessages pbl.log Xorg.0.log alternatives.log cups mail pk_backend_zypp Xorg.0.log.old apparmor firebird mail.err samba YaST2 audit firewall mail.info snapper.log zypp boot.log firewalld mail.warn tallylog zypper.log boot.msg krb5 messages tuned boot.omsg lastlog mysql warn btmp lightdm NetworkManager wtmp
Máy chủ hiện đã được cấu hình. Tiếp theo, chúng ta sẽ cấu hình máy khách.
Một lần nữa, chúng ta phải đảm bảo rằng rsyslog
đã được cài đặt và đang chạy:
root@debian:~# sudo systemctl status rsyslog rsyslog.service - System Logging Service Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: Active: active (running) since Thu 2019-09-17 18:47:54 CEST; 7min ago Docs: man:rsyslogd(8) http://www.rsyslog.com/doc/ Main PID: 351 (rsyslogd) Tasks: 4 (limit: 4915) CGroup: /system.slice/rsyslog.service └─351 /usr/sbin/rsyslogd -n
Trong môi trường mẫu, chúng ta đã triển khai phân giải tên trên máy khách bằng cách thêm dòng 192.168.1.6 suse-server
vào /etc/hosts
. Do đó, chúng ta có thể gọi máy chủ theo tên (suse-server
) hoặc địa chỉ IP (192.168.1.6
).
Máy khách Debian của chúng ta không có tệp remote.conf
trong /etc/rsyslog.d/
; vì vậy, chúng ta sẽ áp dụng các cấu hình của mình trong /etc/rsyslog.conf
. Chúng ta sẽ viết dòng sau vào cuối tệp:
*.* @@suse-server:514
Cuối cùng, chúng ta sẽ khởi động lại rsyslog
.
root@debian:~# systemctl restart rsyslog
Bây giờ, hãy cùng quay lại máy suse-server
và kiểm tra sự tồn tại của remotehosts
trong /var/log
:
root@suse-server:~# ls /var/log/remotehosts/debian/ 2019-09-17.info.log 2019-09-17.notice.log
Chúng ta đã có hai nhật ký bên trong /var/log/remotehosts
như được mô tả trong khuôn mẫu. Để hoàn thành phần này, chúng ta sẽ chạy tail -f
2019-09-17.notice.log
trên suse-server
trong khi gửi nhật ký theo cách thủ công từ máy khách Debian và xác nhận rằng các thông báo đã được thêm vào tệp nhật ký như dự kiến (tùy chọn -t
sẽ cung cấp một thẻ cho thông báo):
root@suse-server:~# tail -f /var/log/remotehosts/debian/2019-09-17.notice.log 2019-09-17T20:57:42+02:00 debian dbus[323]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' 2019-09-17T21:01:41+02:00 debian anacron[1766]: Anacron 2.3 started on 2019-09-17 2019-09-17T21:01:41+02:00 debian anacron[1766]: Normal exit (0 jobs run)
carol@debian:~$ logger -t DEBIAN-CLIENT Hi from 192.168.1.4
root@suse-server:~# tail -f /var/log/remotehosts/debian/2019-09-17.notice.log 2019-09-17T20:57:42+02:00 debian dbus[323]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' 2019-09-17T21:01:41+02:00 debian anacron[1766]: Anacron 2.3 started on 2019-09-17 2019-09-17T21:01:41+02:00 debian anacron[1766]: Normal exit (0 jobs run) 2019-09-17T21:04:21+02:00 debian DEBIAN-CLIENT: Hi from 192.168.1.4
Cơ chế xoay vòng Nhật ký
Nhật ký sẽ được xoay vòng thường xuyên nhằm phục vụ hai mục đích chính:
-
Ngăn các tệp nhật ký cũ sử dụng nhiều dung lượng đĩa hơn mức cần thiết.
-
Giữ nhật ký ở độ dài có thể quản lý được để dễ dàng tham khảo.
Tiện ích chịu trách nhiệm xoay vòng nhật ký là logrotate
và công việc của nó bao gồm các hành vi như di chuyển tệp nhật ký sang một tên mới, lưu trữ và/hoặc nén chúng, đôi khi gửi chúng qua email cho quản trị viên hệ thống và cuối cùng là xóa khi chúng đã cũ đi. Có nhiều quy ước khác nhau để đặt tên cho các tệp nhật ký được xoay vòng (ví dụ: thêm hậu tố có ngày vào tên tệp); tuy nhiên, việc thêm hậu tố có số nguyên là một cách làm phổ biến:
root@debian:~# ls /var/log/messages* /var/log/messages /var/log/messages.1 /var/log/messages.2.gz /var/log/messages.3.gz /var/log/messages.4.gz
Bây giờ, hãy cùng giải thích điều gì sẽ xảy ra trong phiên xoay vòng nhật ký tiếp theo:
-
messages.4.gz
sẽ bị xóa và sẽ mất đi. -
Nội dung của
messages.3.gz
sẽ được chuyển sangmessages.4.gz
. -
Nội dung của
messages.2.gz
sẽ được chuyển sangmessages.3.gz
. -
Nội dung của
messages.1
sẽ được chuyển sangmessages.2.gz
. -
Nội dung của
messages
sẽ được chuyển sangmessages.1
vàmessages
sẽ trống và sẵn sàng để ghi các mục nhật ký mới.
Theo chỉ thị logrotate
mà chúng ta sẽ thấy ngay sau đây, hãy lưu ý ba tệp nhật ký cũ hơn đã được nén, trong khi hai tệp nhật ký gần đây nhất thì lại không. Ngoài ra, chúng ta sẽ giữ lại nhật ký từ 4-5 tuần qua. Để đọc các thông báo cách đây 1 tuần, chúng ta sẽ tham khảo messages.1
(v.v.).
logrotate
được chạy như một tiến trình tự động hoặc một công việc định kỳ hàng ngày thông qua tệp lệnh /etc/cron.daily/logrotate
và việc đọc tệp cấu hình /etc/logrotate.conf
. Tệp này bao gồm một số tùy chọn chung và được chú thích chi tiết với mỗi tùy chọn được giới thiệu bằng một phần giải thích ngắn gọn về mục đích của nó:
carol@debian:~$ sudo less /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 (...)
Như có thể thấy, các tệp cấu hình trong /etc/logrotate.d
cho các gói cụ thể cũng được bao gồm. Các tệp này chứa — phần lớn — các định nghĩa cục bộ và chỉ định các tệp nhật ký cần được xoay vòng (hãy nhớ rằng các định nghĩa cục bộ sẽ được ưu tiên hơn các định nghĩa toàn cục và các định nghĩa sau sẽ ghi đè lên các định nghĩa trước đó). Sau đây là một đoạn trích của một định nghĩa trong /etc/logrotate.d/rsyslog
:
/var/log/messages { rotate 4 weekly missingok notifempty compress delaycompress sharedscripts postrotate invoke-rc.d rsyslog rotate > /dev/null endscript }
Như có thể thấy, mọi chỉ thị sẽ đều được phân tách khỏi giá trị của nó bằng khoảng trắng và/hoặc một dấu bằng tùy chọn (=
). Tuy nhiên, các dòng giữa postrotate
và endscript
lại phải tự xuất hiện trên các dòng. Lời giải thích cho việc này như sau:
rotate 4
-
Giữ lại nhật ký của 4 tuần.
weekly
-
Xoay vòng các tệp nhật ký mỗi tuần.
missingok
-
Không đưa ra thông báo lỗi nếu thiếu tệp nhật ký; đi đến tệp nhật ký tiếp theo.
notifempty
-
Không xoay vòng nhật ký nếu nó trống.
compress
-
Nén tệp nhật ký bằng
gzip
(mặc định). delaycompress
-
Trì hoãn việc nén tệp nhật ký trước đó sang chu kỳ xoay vòng tiếp theo (chỉ hiệu quả khi sử dụng kết hợp với nén). Nó rất hữu ích khi một chương trình không thể bị yêu cầu đóng tệp nhật ký của nó và do đó có thể sẽ tiếp tục ghi vào tệp nhật ký trước đó trong một khoảng thời gian.
sharedscripts
-
Liên quan đến tệp lệnh trước xoay vòng (prerotate) và sau xoay vòng (postrotate). Để ngăn một tệp lệnh được thực thi nhiều lần, hãy chỉ chạy các tệp lệnh một lần bất kể có bao nhiêu tệp nhật ký khớp với một mẫu nhất định (ví dụ như
/var/log/mail/*
). Tuy nhiên, các tệp lệnh sẽ không được chạy nếu không có nhật ký nào trong mẫu cần xoay vòng. Ngoài ra, nếu tệp lệnh thoát ra với lỗi thì mọi hành động còn lại sẽ không được thực thi đối với bất kỳ một nhật ký nào. postrotate
-
Cho biết sự bắt đầu của một tệp lệnh sau xoay vòng.
invoke-rc.d rsyslog rotate > /dev/null
-
Sử dụng
/bin/sh
để chạyinvoke-rc.d rsyslog xoay > /dev/null
sau khi xoay vòng nhật ký. endscript
-
Chỉ phần cuối của tệp lệnh sau xoay vòng.
Note
|
Để có danh sách đầy đủ các chỉ thị và giải thích, hãy tham khảo trang hướng dẫn của |
Bộ đệm vòng Hạt nhân
Vì hạt nhân sẽ tạo ra một số thông báo trước khi rsyslogd
có sẵn khi khởi động nên một cơ chế để ghi lại các thông báo đó sẽ trở nên cần thiết. Đây là lúc bộ đệm vòng hạt nhân phát huy tác dụng. Đó là cấu trúc dữ liệu có kích thước cố định và — do đó — khi nó phát triển cùng với các thông báo mới, các thông báo cũ nhất sẽ biến mất.
Lệnh dmesg
được sử dụng để in bộ đệm vòng hạt nhân. Do kích thước của bộ đệm nên lệnh này thường được sử dụng kết hợp với tiện ích lọc văn bản grep
. Ví dụ: để tìm kiếm các thông báo liên quan đến thiết bị USB:
root@debian:~# dmesg | grep "usb" [ 1.241182] usbcore: registered new interface driver usbfs [ 1.241188] usbcore: registered new interface driver hub [ 1.250968] usbcore: registered new device driver usb [ 1.339754] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.19 [ 1.339756] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 (...)
Bài tập Hướng dẫn
-
Bạn sẽ sử dụng những tiện ích/lệnh nào trong các tình huống sau:
Mục đích và tệp nhật ký Tiện ích Đọc
/var/log/syslog.7.gz
Đọc
/var/log/syslog
Lọc từ
renewal
trong/var/log/syslog
Đọc
/var/log/faillog
Đọc động
/var/log/syslog
-
Hãy sắp xếp lại các mục nhập nhật ký sau theo cấu trúc thích hợp để thể hiện một thông báo hợp lệ:
-
debian-server
-
sshd
-
[515]:
-
Sep 13 21:47:56
-
Server listening on 0.0.0.0 port 22
Thứ tự đúng sẽ là:
-
-
Bạn sẽ thêm những quy tắc nào vào
/etc/rsyslog.conf
để thực hiện từng tác vụ sau:-
Gửi tất cả các thư từ tiện ích đại diện
mail
và một mức ưu tiên/mức độ nghiêm trọng làcrit
(trở lên) tới/var/log/mail.crit
: -
Gửi tất cả các thông báo từ tiện ích đại diện
mail
với mức độ ưu tiên làalert
vàemergency
tới/var/log/mail.surgical
: -
Ngoại trừ những thông báo đến từ tiện ích đại diện
cron
vàntp
, hãy gửi tất cả thông báo — bất kể tiện ích đại diện và mức độ ưu tiên của chúng là gì — tới/var/log/allmessages
: -
Với tất cả các cài đặt được yêu cầu được cấu hình đúng cách, hãy gửi tất cả các thư từ tiện ích đại diện
mail
đến máy chủ từ xa có địa chỉ IP là192.168.1.88
bằng TCP và chỉ định cổng mặc định: -
Không quan trọng tiện ích đại diện của chúng là gì, hãy gửi tất cả các thông báo có mức độ ưu tiên
warning
(chỉ với mức độ ưu tiênwarning`
) đến `/var/log/warnings
để ngăn chặn việc ghi quá nhiều vào đĩa:
-
-
Hãy xem xét đoạn trích sau từ
/etc/logrotate.d/samba
và giải thích các tùy chọn khác nhau:carol@debian:~$ sudo head -n 11 /etc/logrotate.d/samba /var/log/samba/log.smbd { weekly missingok rotate 7 postrotate [ ! -f /var/run/samba/smbd.pid ] || /etc/init.d/smbd reload > /dev/null endscript compress delaycompress notifempty }
Tùy chọn Ý nghĩa weekly
missingok
rotate 7
postrotate
endscript
compress
delaycompress
notifyempty
Bài tập Mở rộng
-
Trong phần “Khuôn mẫu và Điều kiện lọc”, chúng ta đã sử dụng bộ lọc dựa trên biểu thức làm điều kiện lọc. Bộ lọc dựa trên đặc tính là một loại bộ lọc khác dành riêng cho
rsyslogd
. Hãy dịch bộ lọc dựa trên biểu thức thành một bộ lọc dựa trên đặc tính:Bộ lọc dựa trên biểu thức Bộ lọc dựa trên đặc tính if $FROMHOST-IP=='192.168.1.4' then ?RemoteLogs
-
omusrmsg
là một mô-đunrsyslog
tích hợp sẵn hỗ trợ việc thông báo cho người dùng (nó sẽ gửi thông báo nhật ký đến cửa sổ dòng lệnh của người dùng). Hãy viết một quy tắc để gửi tất cả các thông báo khẩn cấp của tất cả các tiện ích đại diện cho cảroot
và người dùng thông thườngcarol
.
Tóm tắt
Trong bài học này, chúng ta đã học về:
-
Ghi nhật ký là việc rất quan trọng trong quản trị hệ thống.
-
rsyslogd
là tiện ích chịu trách nhiệm giữ cho các bản ghi được gọn gàng và ngăn nắp. -
Một số dịch vụ sẽ tự xử lý nhật ký của chúng.
-
Nói một cách đại khái, nhật ký có thể được phân loại thành nhật ký hệ thống và nhật ký dịch vụ/chương trình.
-
Có một số tiện ích thuận tiện cho việc đọc nhật ký:
less
,more
,zless
,zmore
,grep
,head
vàtail
. -
Hầu hết các tệp nhật ký đều là các tệp văn bản thuần túy; tuy nhiên, có một số lượng nhỏ tệp nhật ký là tệp nhị phân.
-
Liên quan đến nhật ký,
rsyslogd
sẽ nhận thông tin liên quan từ các tệp đặc biệt (ổ nối và bộ nhớ đệm) trước khi xử lý nó. -
Để phân loại nhật ký,
rsyslogd
sử dụng các quy tắc trong/etc/rsyslog.conf
hoặc/etc/rsyslog.d/*
. -
Bất kỳ người dùng nào cũng có thể nhập thông báo của riêng họ vào nhật ký hệ thống theo cách thủ công bằng tiện ích
logger
. -
rsyslog
cho phép người dùng lưu giữ tất cả các nhật ký trên các mạng IP trong một máy chủ nhật ký tập trung. -
Các khuôn mẫu rất hữu ích cho việc định dạng động tên tệp nhật ký.
-
Việc xoay vòng nhật ký có hai mục đích: ngăn chặn các nhật ký cũ sử dụng quá nhiều dung lượng đĩa và giúp người dùng quản lý nhật ký để tham khảo.
Đáp án Bài tập Hướng dẫn
-
Bạn sẽ sử dụng những tiện ích/lệnh nào trong các tình huống sau:
Mục đích và tệp nhật ký Tiện ích Đọc
/var/log/syslog.7.gz
zmore
hoặczless
Đọc
/var/log/syslog
more
hoặcless
Lọc từ
renewal
trong/var/log/syslog
grep
Đọc
/var/log/faillog
faillog -a
Đọc động
/var/log/syslog
tail -f
-
Hãy sắp xếp lại các mục nhật ký sau theo cách chúng thể hiện thông một thông báo nhật ký hợp lệ với cấu trúc tiêu chuẩn:
-
debian-server
-
sshd
-
[515]:
-
Sep 13 21:47:56
-
Server listening on 0.0.0.0 port 22
Thứ tự đúng sẽ là:
Sep 13 21:47:56 debian-server sshd[515]: Server listening on 0.0.0.0 port 22
-
-
Bạn sẽ thêm những quy tắc nào vào
/etc/rsyslog.conf
để thực hiện từng tác vụ sau:-
Gửi tất cả các thư từ tiện ích đại diện
mail
và một mức ưu tiên/mức độ nghiêm trọng làcrit
(trở lên) tới/var/log/mail.crit
:mail.crit /var/log/mail.crit
-
Gửi tất cả các thông báo từ tiện ích đại diện
mail
với mức độ ưu tiên làalert
vàemergency
tới/var/log/mail.surgical
:mail.alert /var/log/mail.urgent
-
Ngoại trừ những thông báo đến từ tiện ích đại diện
cron
vàntp
, hãy gửi tất cả thông báo — bất kể tiện ích đại diện và mức độ ưu tiên của chúng là gì — tới/var/log/allmessages
:*.*;cron.none;ntp.none /var/log/allmessages
-
Với tất cả các cài đặt được yêu cầu được cấu hình đúng cách, hãy gửi tất cả các thư từ tiện ích đại diện
mail
đến máy chủ từ xa có địa chỉ IP là192.168.1.88
bằng TCP và chỉ định cổng mặc định:mail.* @@192.168.1.88:514
-
Không quan trọng tiện ích đại diện của chúng là gì, hãy gửi tất cả các thông báo có mức độ ưu tiên
warning
(chỉ với mức độ ưu tiênwarning`
) đến `/var/log/warnings
để ngăn chặn việc ghi quá nhiều vào đĩa:
-
*.=warning -/var/log/warnings
-
Hãy xem xét đoạn trích sau từ
/etc/logrotate.d/samba
và giải thích các tùy chọn khác nhau:carol@debian:~$ sudo head -n 11 /etc/logrotate.d/samba /var/log/samba/log.smbd { weekly missingok rotate 7 postrotate [ ! -f /var/run/samba/smbd.pid ] || /etc/init.d/smbd reload > /dev/null endscript compress delaycompress notifempty }
Tùy chọn Ý nghĩa weekly
Xoay vòng các tệp nhật ký mỗi tuần.
missingok
Không đưa ra thông báo lỗi nếu thiếu nhật ký; tiếp tục đi tới tệp tiếp theo.
rotate 7
Giữ nhật ký của 7 tuần
postrotate
Chạy tệp lệnh trên dòng sau sau khi xoay vòng nhật ký.
endscript
Cho biết phần cuối của tệp lệnh sau xoay vòng.
compress
Nén nhật ký bằng
gzip
.delaycompress
Kết hợp với
compress
để trì hoãn quá trình nén sang chu kỳ xoay vòng tiếp theo.notifyempty
Không xoay vòng nhật ký nếu nó trống.
Đáp án Bài tập Mở rộng
-
Trong phần “Khuôn mẫu và Điều kiện lọc”, chúng ta đã sử dụng bộ lọc dựa trên biểu thức làm điều kiện lọc. Bộ lọc dựa trên đặc tính là một loại bộ lọc khác dành riêng cho
rsyslogd
. Hãy dịch bộ lọc dựa trên biểu thức thành một bộ lọc dựa trên đặc tính:Bộ lọc dựa trên biểu thức Bộ lọc dựa trên đặc tính if $FROMHOST-IP=='192.168.1.4' then ?RemoteLogs
:fromhost-ip, isequal, "192.168.1.4" ?RemoteLogs
-
omusrmsg
là một mô-đunrsyslog
tích hợp sẵn hỗ trợ việc thông báo cho người dùng (nó sẽ gửi thông báo nhật ký đến cửa sổ dòng lệnh của người dùng). Hãy viết một quy tắc để gửi tất cả các thông báo khẩn cấp của tất cả các tiện ích đại diện cho cảroot
và người dùng thông thườngcarol
.*.emerg :omusrmsg:root,carol