NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
18/05/2023
Lượt xem

Hướng dẫn cách quản lý Logfiles bằng Logrotate trên Ubuntu 20.04

18/05/2023
17 phút đọc
Lượt xem

Đánh giá

5/5 - (165 bình chọn)

Ghi log là một phần không thể thiếu đối với bất kì hệ thống nào. Quá trình này giúp theo dõi tình trạng hoạt động và đo lường hiệu năng của hệ thống, cũng như phát hiện được các lỗi tiềm ẩn hoặc bị bỏ sót trước đó. Trong bài viết hướng dẫn về cách quản lý Logfiles bằng Logrotate trên Ubuntu 20.04 này, Vietnix sẽ giới thiệu tới bạn cách ghi log hiệu quả và nhanh chóng bằng Logrotate, cùng tìm hiểu ngay.

Giới thiệu về Logrotate

Logrotate là một tiện ích của hệ thống giúp người dùng quản lý việc tự động rotate và nén các log file. Nếu các file log không được rotate, nén và xử lí định kỳ thì chúng có thể chiếm dụng toàn bộ dung lượng ổ đĩa trên hệ thống.

Logrotate
Logrotate

Logrotate được mặc định cài đặt trên Ubuntu 20.04 và được thiết lập để xử lý log rotation cần thiết cho các packages đã cài, bao gồm rsyslog hay trình xử lý log hệ thống. Trong bài viết này, bạn sẽ khám phá cấu hình Logrotate mặc định và thực hiện thiết lập log rotation cho một ứng dụng tùy chỉnh.

Yêu cầu tiên quyết để cách quản lý Logfiles bằng Logrotate trên Ubuntu 20.04 được thực hiện

  • Bạn cần sở hữu máy chủ Ubuntu 20.04, với người dùng không phải root đã được cấp quyền sudo.
  • Logrotate đã được cài đặt sẵn. Các bước thực hiện của hướng dẫn này vẫn chính xác, miễn là phiên bản Logrotate của bạn giống như của Ubuntu 20.04.
  • Đăng nhập vào máy chủ của bạn với tư cách là người dùng có quyền sudo để bắt đầu.

Các bước thực hiện

Logrotate là một công cụ mạnh mẽ để quản lý logfiles trên Ubuntu 20.04. Nó giúp tối ưu hóa không gian đĩa lưu trữ, tự động hóa quy trình quản lý logfiles và bảo vệ thông tin trên hệ thống của bạn. Ngoài ra, nếu bạn đang có nhu cầu sử dụng dịch vụ VPS để phát triển website hay ứng dụng thì có thể tham khảo dịch vụ VPS tốc độ cao tại Vietnix.

Hiện tại Vietnix đang cung cấp các gói dịch vụ thuê máy chủ ảo (VPS) tốc độ cao, cấu hình đa dạng và nhiều mức giá khác nhau gồm: VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS GPU và VPS NVMe.

Liên hệ Vietnix để được tư vấn gói VPS phù hợp với nhu cầu nhé!

Bước 1: Kiểm tra phiên bản Logrotate

Logrotate sẽ được cài đặt mặc định trên Ubuntu. Tuy nhiên, nếu bạn muốn tự mình cài đặt thì hãy chạy các lệnh sau để cập nhật danh sách packages và truy xuất logrotate:

sudo apt update sudo apt install logrotate

Nếu bạn đang sử dụng máy chủ không phải Ubuntu, trước tiên hãy đảm bảo rằng Logrotate đã được cài đặt bằng cách kiểm tra thông tin về phiên bản hiện tại:

logrotate --version
Output logrotate 3.14.0      Default mail command:       /usr/bin/mail     Default compress command:   /bin/gzip     Default uncompress command: /bin/gunzip     Default compress extension: .gz     Default state file path:    /var/lib/logrotate/status     ACL support:                yes     SELinux support:            yes

Nếu Logrotate được cài đặt nhưng ở phiên bản quá cũ thì bạn có thể sẽ gặp rắc rối ở một số bước trong bài hướng dẫn dưới đây. Hãy tham khảo document về phiên bản Logrotate cụ thể trên máy của bạn bằng lệnh man:

man logrotate

Ngoài ra, bạn cũng có thể tham khảo trên trang document chính thức của Logrotate. Tiếp theo, bạn sẽ thiết lập cấu hình mặc định của Logrotate trên Ubuntu.

Bước 2: Tìm hiểu về cấu hình của Logrotate

Thông tin cấu hình của logrotate có thể được tìm thấy ở hai nơi trên Ubuntu:

  • /etc/logrotate.conf: Tệp này chứa một số cài đặt mặc định và thiết lập rotation cho một số logs không thuộc sở hữu của bất kỳ hệ thống packages nào. Tệp này cũng sử dụng câu lệnh include để lấy cấu hình từ các tệp khác trong thư mục /etc/logrotate.d.
  • /etc/logrotate.d/: Đây là nơi đặt cấu hình Logrotation của bất cứ packages đã cài đặt nào cần tới sự trợ giúp của log rotation. Trên bản cài đặt tiêu chuẩn, bạn phải có các tệp tương ứng với các công cụ cốt lõi của hệ thống như apt, dpkg, rsyslog, v.v.

Theo mặc định, logrotate.conf là nơi chứa cấu hình của log rotations theo tuần, với các log files thuộc quyền sở hữu của người dùng root và nhóm syslog. Trong cùng thời điểm sẽ có bốn log files được giữ (rotate 4) và các log files mới chỉ được tạo ra sau khi tệp hiện tại được rotate (create).

Bạn hãy xem tệp cấu hình Logrotate của package trong /etc/logrotate.d. cat tệp cho package apt:

cat /etc/logrotate.d/apt
Output /var/log/apt/term.log {   rotate 12   monthly   compress   missingok   notifempty }  /var/log/apt/history.log {   rotate 12   monthly   compress   missingok   notifempty }

Tệp này chứa cấu hình cho hai log files khác nhau trong thư mục /var/log/apt/term.log và history.log. Cả hai đều có những tùy chọn giống nhau. Bất cứ tùy chọn nào không được thiết lập trong các block cấu hình này sẽ kế thừa giá trị mặc định hoặc giá trị đã được thiết lập trong /etc/logrotate.conf. Đồng thời, mọi tùy chọn cài đặt trong tệp logrotate sẽ ghi đè giá trị mặc định của logrotate (được cấu hình trong /etc/logrotate.conf).

Các tùy chọn được đặt cho apt logs mà bạn cần chú ý là:

  • rotate 12: Giữ mười hai log files cũ. Điều này mặc định sẽ ghi đè lên rotate 4.
  • monthly: Luân phiên mỗi tháng một lần. Điều này mặc định sẽ ghi đè lên weekly.
  • compress: Nén các tệp đã được rotate. Quá trình này sử dụng gzip theo mặc định và tạo thành các tệp có đuôi kết thúc bằng .gz sau khi nén xong. Lệnh nén có thể được thay đổi bằng cách sử dụng tùy chọn compresscmd.
  • missingok: Không viết thông báo lỗi nếu log files bị thiếu.
  • notifempty: Không rotate log files nếu tệp trống.

Các tệp cấu hình này cũng kế thừa hành vi create mặc định – ra lệnh cho Logrotate tạo các log files mới sau khi xoay. Hành động này có thể được ghi đè bằng nocreate, mặc dù điều đó sẽ vô hiệu hóa hầu hết các chức năng khác.

Có rất nhiều tùy chọn cấu hình. Và bạn có thể đọc về tất cả chúng bằng cách gõ man logrotate trên command line để hiển thị tài liệu hướng dẫn của Logrotate.

Bước tiếp theo, bạn sẽ thiết lập tệp cấu hình để xử lý các logs cho một dịch vụ. Giả sử trong bài này có tên là your-app.

Bước 3: Thiết lập cấu hình mẫu

Để có thể quản lý các log files bằng cách sử dụng logrotate cho các ứng dụng khác (ngoài các dịch vụ hệ thống được đóng gói và cấu hình sẵn) bạn có hai lựa chọn như sau:

  1. Tạo một tệp cấu hình Logrotate mới và đặt vào /etc/logrotate.d/. Quá trình này sẽ được chạy hàng ngày với tư cách là người dùng root cùng với tất cả các công việc Logrotate tiêu chuẩn khác.
  2. Tạo một file cấu hình mới và chạy bên ngoài thiết lập Logrotate mặc định của Ubuntu. Quá trình này chỉ thực sự cần thiết nếu bạn chạy Logrotate với tư cách là người dùng non-root hoặc nếu bạn muốn việc log rotations diễn ra thường xuyên hơn trong ngày (cấu hình hàng giờ hourly trong /etc/logrotate.d/ sẽ không hiệu quả, vì thiết lập Logrotate của hệ thống chỉ chạy một lần trên ngày).

Sau đây, bạn sẽ xem qua hai lựa chọn trên trong những ví dụ cụ thể:

Thêm cấu hình vào /etc/logrotate.d/

Ví dụ này sẽ nói về việc cấu hình log rotations cho một máy chủ web có access.logerror.log được đặt trong /var/log/your-app/. Tất cả đang chạy dưới dạng người dùng và nhóm www-data.

Để thêm cấu hình cho các log files của your-app vào /etc/logrotate.d/, trước tiên hãy mở một tệp mới trong thư mục /etc/logrotate.d bằng cách sử dụng nano hoặc text editor tùy ý:

sudo nano /etc/logrotate.d/your-app

Thêm các dòng sau vào tệp:

/var/log/your-app/*.log { 	daily 	missingok 	rotate 14 	compress 	notifempty 	create 0640 www-data www-data 	sharedscripts 	postrotate 		systemctl reload your-app 	endscript }

Một số chỉ thị cấu hình mới trong tệp này bao gồm:

  • create 0640 www-data www-data: Tạo một log files trống mới sau mỗi lần rotate, với các quyền được chỉ định (0640), chủ sở hữu (www-data) và nhóm (cũng là www-data).
  • sharedscripts: Bất kỳ script nào được thêm vào tệp cấu hình sẽ chỉ thực thi 1 lần trong mỗi lần chạy, thay vì mỗi tệp đều được rotate. Vì đường dẫn /var/log/your-app/*.log bao gồm ký tự *, nên cấu hình này sẽ khớp với tất cả các log files trong thư mục your-app. Nếu không có tùy chọn sharedscripts, script được chỉ định trong postrotate sẽ chạy mỗi khi logrotate xử lý một log files.
  • postrotate to endscript: Khối lệnh này chứa một script để chạy sau khi log files được rotate. Trong trường hợp này, bạn đang tải lại ứng dụng của mình. Đôi khi, việc này là cần thiết để ứng dụng có thể chuyển sang log files mới được tạo. Bạn cần lưu ý rằng postrotate sẽ chạy trước khi nén log. Quá trình nén có thể mất nhiều thời gian và phần mềm sẽ có thể chuyển sang log files mới ngay lập tức. Còn đối với các tác vụ cần chạy sau khi log đã được nén, bạn có thể dùng lệnh lastaction để thay thế.

Sau khi bạn đã hoàn thành hãy lưu và thoát khỏi nano bằng cách nhấn Ctrl + X. Khi được nhắc, hãy nhấn Y rồi Enter.

Bạn có thể kiểm tra lại tệp cấu hình bằng cách chạy lệnh sau:

sudo logrotate /etc/logrotate.conf --debug

Lệnh này gọi logrotate và trỏ chúng tới tệp cấu hình tiêu chuẩn cũng như bật chế độ debug.

Thông tin được in ra sẽ bao gồm những log files mà Logrotate đang xử lý và các thao tác sẽ được thực hiện với chúng. Sau kiểm tra nếu mọi thứ đều không có vấn đề thì đến đây công việc đã hoàn tất. Logrotate tiêu chuẩn sẽ chạy mỗi ngày một lần với cấu hình mới của bạn.

Tiếp theo, bạn sẽ thử thiết lập mà hoàn toàn không sử dụng đến cấu hình mặc định của Ubuntu.

Bước 4: Tạo một cấu hình độc lập cho Logrotate

Bài hướng dẫn này sẽ sử dụng ứng dụng với sammy để làm ví dụ, bạn có thể thay bằng tên ứng dụng của bạn vào các vị trí tương ứng. Log files sẽ được lưu trữ trong /home/sammy/logs/. Để có thể rotate các log này hàng giờ, bạn cần thiết lập chúng ở bên ngoài cấu trúc /etc/logrotate.d do Ubuntu cung cấp.

Đầu tiên, tạo một tệp cấu hình trong thư mục chính bằng lệnh sau:

nano /home/sammy/logrotate.conf

Sau đó dán những dòng sau vào tệp:

/home/sammy/logs/*.log { 	hourly 	missingok 	rotate 24 	compress 	create }

Lưu và đóng tập tin. Bạn đã thiết lập tùy chọn này ở những bước trước đó: Cấu hình này sẽ rotate các tệp hàng giờ, nén và giữ 24 log cũ, đồng thời tạo một log files mới để thay thế file đã được rotate.

Bạn có thể sẽ cần phải tùy chỉnh cấu hình sao cho phù hợp với ứng dụng của mình.

Để kiểm tra xem cấu hình có hoạt động hay không, hãy tạo một log files. Đầu tiên cd vào thư mục home của người dùng bằng cách sử dụng lệnh cd ~. Sau đó, tạo một thư mục logs bằng lệnh mkdir. Cuối cùng, tạo một tệp trống tên access.log trong thư mục logs bằng lệnh touch.

Chạy các lệnh sau để hoàn thành các bước đã nêu trên:

cd ~ mkdir logs touch logs/access.log

Bây giờ bạn có một log files trống ở đúng vị trí cần có, tiếp theo hãy chạy lệnh logrotate.

Vì log thuộc sở hữu của sammy nên bạn không cần quyền sudo. Tuy nhiên, vẫn cần chỉ định một state file. Tệp này giúp ghi lại những gì logrotate tìm thấy và các hành động đã được thực hiện trong lần chạy cuối cùng trước đó để giúp nó biết phải làm gì trong lần chạy tiếp theo.

Quá trình theo dõi trạng thái này sẽ diễn ra tự động khi sử dụng cấu hình mặc định /etc/logrotate.conf. State file được lưu trữ trong /var/lib/logrotate/status. Ngoài ra vì không sử dụng cấu hình mặc định nên bạn sẽ cần phải tự tay cấu hình vị trí của state file.

Tiếp theo, bạn sẽ yêu cầu Logrotate đặt state file ngay trong thư mục home để có di chuyển tới bất cứ nơi nào khác trên hệ thống. Chạy lệnh sau để sử dụng /home/sammy/logrotate.conf mà bạn đã tạo để ghi lại trạng thái của logrotate:

logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state --verbose
Output reading config file /home/sammy/logrotate.conf  Handling 1 logs  rotating pattern: /home/sammy/logs/*.log  hourly (24 rotations) empty log files are rotated, old logs are removed considering log /home/sammy/logs/access.log   log does not need rotating

Cờ --verbose sẽ in ra thông tin chi tiết về những gì Logrotate đang thực hiện. Trong ví dụ này không rotate bất cứ thứ gì vì đây là lần đầu tiên Logrotate gặp log files và log file này mới chạy 0 giờ nên không có rotate.

Nếu kiểm tra tệp trạng thái bằng lệnh cat, bạn sẽ thấy rằng Logrotate đã ghi lại một số thông tin về lần chạy đó:

cat /home/sammy/logrotate-state
Output logrotate state -- version 2 "/home/sammy/logs/access.log" 2021-12-3-19:0:0

Logrotate ghi lại các log mà Logrotate đã nhìn thấy và thời điểm lần cuối cùng chúng được Logrotate xem xét để rotate. Nếu chạy cùng lệnh này vào một giờ sau đó, log sẽ được rotate như những gì đã cấu hình.

Nếu muốn buộc Logrotate phải rotate log files không sở hữu, hãy sử dụng cờ --force:

logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state --verbose --force

Điều này rất hữu ích khi kiểm tra postrotate và các scripts khác.

Cuối cùng, bạn cần thiết lập một tác vụ định kỳ để chạy Logrotate mỗi giờ. Hãy mở crontab:

crontab -e

Lệnh trên sẽ mở một tệp văn bản. Nếu đây là lần đầu tiên sử dụng cron, bạn sẽ được nhắc nhở để chọn trình soạn thảo văn bản mặc định. Ở đây, Vietnix khuyến khích dùng nano. Khi mở tệp, có thể sẽ có một số ghi chú hướng dẫn, giải thích cú pháp của cron. Bạn hãy di chuyển con trỏ xuống một dòng trống mới ở cuối tệp và thêm vào như sau:

crontab 14 * * * * /usr/sbin/logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state

Tác vụ này sẽ chạy mỗi ngày và vào phút thứ 14 trong một giờ. Cách chạy gần giống với lệnh logrotate chạy trước đó. Ngoài ra, bạn cũng mở rộng logrotate thành đường dẫn đầy đủ /usr/sbin/logrotate để đảm bảo an toàn. Lưu ý rằng bạn nên sử dụng các đường dẫn đầy đủ khi viết tác vụ định kỳ cho cron.

Lưu file và thoát. Thao tác này sẽ cài đặt crontab và tác vụ của bạn sẽ chạy theo lịch trình đã chỉ định.

Nếu bạn xem lại thư mục log của mình sau khoảng một giờ, sẽ tìm thấy log files được rotate và nén access.log.1.gz (hoặc .2.gz nếu bạn đã chạy Logrotate với cờ --force).

Vietnix đang là một trong những nhà cung cấp VPS tốc độ cao,… uy tín, chất lượng hàng đầu với hơn 50.000 khách hàng. Với tỷ lệ 97% khách hàng đã sử dụng, tiếp tục giới thiệu đến bạn bè, người thân, đồng nghiệp về dịch vụ tại đây, phần nào thể hiện được chất lượng và sự hiệu quả của dịch vụ tại Vietnix đem đến cho khách hàng.

Với hơn 100.000 dịch vụ đã được kích hoạt, Vietnix cam kết sẽ đem đến cho khách hàng những trải nghiệm tốt nhất cho quá trình đăng ký và quản lý tên miền của mình.

Nếu có nhu cầu đăng ký tên miền bạn có thể hiên hệ trực tiếp đến Vietnix thông qua thông tin dưới đây.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

Như vậy với hướng dẫn về cách quản lý Logfiles bằng Logrotate trên Ubuntu 20.04 này, bạn đã thực hiện các hoạt động kiểm tra phiên bản Logrotate trên máy, khám phá cấu hình Logrotate mặc định của Ubuntu và thiết lập hai loại cấu hình tùy chỉnh khác nhau. Đừng quên theo dõi những bài viết chia sẻ kiến thức, hướng dẫn cách thực hiện các cài đặt, thiết lập trên Ubuntu tiếp theo của Vietnix nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG