مانیتورینگ، لاگ، nginx و bash پیشرفته

بررسی لاگ‌های سیستم با journalctl

لاگ متمرکز systemd

در سیستم‌های systemd، لاگ‌ها به‌جای پراکنده بودن در فایل‌های متنی مختلف، در یک ژورنال باینری متمرکز به نام journald ذخیره می‌شوند و با دستور journalctl قابل مشاهده‌اند. این روش مزیت‌هایی مثل جست‌وجوی سریع، فیلتر بر اساس زمان و سرویس، و حفظ ساختار داده (به‌جای متن خام) دارد.

› نمایش همه لاگ‌ها از جدیدترین به قدیمی‌ترین
journalctl -r

› فقط لاگ‌های یک سرویس خاص
journalctl -u nginx.service

› دنبال کردن زنده لاگ (مثل tail -f)
journalctl -u nginx.service -f

› فیلتر بر اساس بازه زمانی
journalctl --since "2026-09-01" --until "2026-09-02"
journalctl --since "1 hour ago"

› فقط پیام‌های با سطح خطا یا بالاتر
journalctl -p err

› لاگ‌های مربوط به بوت فعلی
journalctl -b

یکی از تنظیمات مهم journald کنترل اندازه فضای اشغال‌شده روی دیسک است، چون به‌صورت پیش‌فرض می‌تواند رشد زیادی داشته باشد. در فایل /etc/systemd/journald.conf می‌توان محدودیت گذاشت:

[Journal]
SystemMaxUse=500M

پس از تغییر این فایل، سرویس journald باید ری‌استارت شود: sudo systemctl restart systemd-journald. ترکیب فیلترهای زمانی و سطح لاگ، journalctl را به یکی از قدرتمندترین ابزارهای عیب‌یابی سریع در لینوکس مدرن تبدیل می‌کند، به‌خصوص وقتی چند سرویس هم‌زمان روی یک سرور اجرا می‌شوند.

یکی از سؤال‌های رایج این است که آیا journald جایگزین کامل فایل‌های لاگ سنتی در /var/log شده یا نه؛ پاسخ این است که بستگی به توزیع دارد. در بسیاری از توزیع‌ها، journald همچنان می‌تواند لاگ‌ها را به فایل‌های متنی سنتی هم forward کند تا ابزارهایی که هنوز به فرمت قدیمی وابسته‌اند (مثل بعضی ابزارهای مانیتورینگ خارجی) هم بتوانند آن را بخوانند. تنظیم این رفتار هم در همان journald.conf با گزینه ForwardToSyslog انجام می‌شود. برای مدیر سیستمی که تازه با journalctl آشنا می‌شود، بهترین توصیه این است که ابتدا فیلترهای ساده (بر اساس سرویس و زمان) را تمرین کند و بعد سراغ تنظیمات پیشرفته‌تر مثل حجم و forward برود.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.