| JOURNALD.CONF(5) | journald.conf | JOURNALD.CONF(5) |
نام (NAME)
journald.conf - فایلهای پیکربندی سرویس ثبت ژورنال سیستمدی
خلاصه دستور (SYNOPSIS)
توضیحات (DESCRIPTION)
این فایلها پارامترهای گوناگون سرویس ژورنال سیستمدی، systemd-journald.service(8) را پیکربندی میکنند. برای توضیحات کلی درباره ساختار نحو، systemd.syntax(7) را ببینید.
نمونه systemd-journald که فضای نام پیشفرض را مدیریت میکند، توسط /etc/systemd/journald.conf و دراپاینهای مرتبط با آن پیکربندی میشود. نمونههایی که سایر فضاهای نام را مدیریت میکنند، /etc/systemd/journald@NAMESPACE.conf و دراپاینهای مرتبط را با شناسه فضای نام جایگزینشده میخوانند. این کار اجازه میدهد هر فضای نام پیکربندی متمایزی داشته باشد. برای جزئیات درباره فضاهای نام ژورنال، systemd-journald.service(8) را ببینید.
دایرکتوریهای پیکربندی و اولویتبندی (CONFIGURATION DIRECTORIES AND PRECEDENCE)
پیکربندی پیشفرض در هنگام کامپایل تعیین میشود، بنابراین پیکربندی تنها زمانی لازم است که انحراف از این مقادیر پیشفرض ضروری باشد. فایل پیکربندی اصلی از یکی از دایرکتوریهای فهرستشده به ترتیب اولویت بارگذاری میشود و تنها اولین فایلِ یافتشده استفاده میشود: /etc/systemd/, /run/systemd/, /usr/local/lib/systemd/ [1], /usr/lib/systemd/. نسخه ارائهشده توسط توزیع شامل مدخلهای کامنتشده است که مقادیر پیشفرض را به عنوان راهنمایی برای مدیر سیستم نشان میدهند. همچنین میتوان با ایجاد دراپاینها (drop-ins)، به ترتیبی که در ادامه شرح داده شده است، بازنویسیهای محلی ایجاد کرد. فایل پیکربندی اصلی را نیز میتوان برای این منظور ویرایش کرد (یا یک نسخه در /etc/ اگر فایل تحت /usr/ عرضه شده باشد)، با این حال استفاده از دراپاینها برای پیکربندی محلی نسبت به تغییر فایل پیکربندی اصلی توصیه میشود.
علاوه بر فایل پیکربندی اصلی، قطعهکدهای پیکربندی دراپاین از مسیرهای زیر خوانده میشوند: /usr/lib/systemd/*.conf.d/, /usr/local/lib/systemd/*.conf.d/, و /etc/systemd/*.conf.d/. این دراپاینها اولویت بالاتری دارند و فایل پیکربندی اصلی را بازنویسی (override) میکنند. فایلها در زیرپوشههای پیکربندی *.conf.d/ بر اساس نام فایل خود به ترتیب لغتنگاری مرتب میشوند، بدون در نظر گرفتن اینکه در کدامیک از زیرپوشهها قرار داشته باشند. هنگامی که چندین فایل یک گزینه مشابه را مشخص کنند، برای گزینههایی که تنها یک مقدار واحد میپذیرند، مدخل موجود در فایلی که در آخر مرتب شده است اولویت دارد؛ و برای گزینههایی که فهرستی از مقادیر را میپذیرند، مدخلها به ترتیبی که در فایلهای مرتبشده ظاهر میشوند جمعآوری میگردند.
هنگامی که بستهها نیاز به سفارشیسازی پیکربندی داشته باشند، میتوانند دراپاینها را در زیر /usr/ نصب نمایند. فایلهای موجود در /etc/ برای مدیر سیستم محلی رزرو شدهاند، که میتواند از این منطق برای بازنویسی فایلهای پیکربندی نصبشده توسط بستههای توزیع استفاده کند. برای بازنویسی دراپاینهای بسته باید از دراپاینها استفاده شود، زیرا فایل پیکربندی اصلی اولویت پایینتری دارد. توصیه میشود پیشوند تمام نامهای فایل در این زیرپوشهها یک عدد دورقمی و یک خط پیوند باشد تا ترتیببندی سادهتر شود. این کار همچنین مفهومی از اولویتهای دراپاین را تعریف میکند تا به توسعهدهندگان سیستمعامل اجازه دهد دراپاینها را در یک بازه مشخص با اولویت کمتر از بازه مورد استفاده کاربران عرضه کنند. این امر خطر بازنویسی تصادفی دراپاینهای تعریفشده توسط کاربران با دراپاینهای بسته را کاهش میدهد. توصیه میشود از بازه 10-40 برای دراپاینها در /usr/ و بازه 60-90 برای دراپاینها در /etc/ و /run/ استفاده شود تا اطمینان حاصل گردد که دراپاینهای محلی و گذرا بر دراپاینهای ارائهشده توسط توزیع سیستمعامل اولویت دارند.
برای غیرفعال کردن یک فایل پیکربندی ارائهشده توسط توزیع، روش توصیهشده قرار دادن یک پیوند نمادین به /dev/null در دایرکتوری پیکربندی در /etc/ با همان نام فایل پیکربندی توزیع است.
گزینهها (OPTIONS)
تمام گزینهها در بخش [Journal] پیکربندی میشوند:
Storage=
توجه داشته باشید که journald در ابتدا از ذخیرهسازی فرّار استفاده میکند، تا زمانی که یک فراخوانی به journalctl --flush (یا ارسال SIGUSR1 به journald) باعث شود که به ثبت پایدار لاگ تغییر وضعیت دهد (تحت شرایط ذکرشده در بالا). این کار در زمان بوت بهطور خودکار از طریق "systemd-journal-flush.service" انجام میشود.
توجه داشته باشید هنگامی که این گزینه به "volatile" تغییر داده میشود، دادههای پایدار موجود حذف نمیشوند. در جهت عکس، میتوان از journalctl(1) همراه با گزینه --flush برای انتقال دادههای فرار به حافظه پایدار استفاده نمود.
هنگامی که فضای نام ژورنال (نگاه کنید به LogNamespace= در systemd.exec(5)) به کار میرود، تنظیم Storage= روی "volatile" یا "auto" اثری بر ایجاد دایرکتوری لاگ به ازای هر فضای نام در /var/log/journal/ نخواهد داشت، زیرا فایل سرویس systemd-journald@.service بهطور پیشفرض حاوی LogsDirectory= است. برای غیرفعال کردن آن، یک فایل دراپاین واحد اضافه کنید که LogsDirectory= را برابر با یک رشته خالی قرار دهد.
توجه داشته باشید که فایلهای ژورنال به ازای هر کاربر پشتیبانی نمیشوند مگر اینکه ذخیرهسازی پایدار فعال باشد، که در نتیجه در غیر این صورت journalctl --user غیرقابلدسترس خواهد بود.
فضای ذخیرهسازی مورد استفاده را میتوان از طریق اعتبارنامه "journal.storage" نیز مشخص کرد. مقادیر پیکربندیشده از طریق فایلهای پیکربندی بر مقادیر پیکربندیشده از طریق این اعتبارنامه اولویت دارند.
افزودهشده در نسخه 186.
Compress=
Seal=
افزودهشده در نسخه 189.
SplitMode=
افزودهشده در نسخه 190.
RateLimitIntervalSec=, RateLimitBurst=
توجه داشته باشید که نرخ مؤثر محدودسازی در ضریبی که از فضای دیسک آزاد در دسترس برای ژورنال به دست میآید ضرب میشود. در حال حاضر، این ضریب با استفاده از لگاریتم بر مبنای ۲ محاسبه میشود.
جدول 1. نمونه تغییرات نرخ RateLimitBurst= بر اساس فضای دیسک در دسترس
| Available Disk Space | Burst Multiplier |
| <= 1MB | 1 |
| <= 16MB | 2 |
| <= 256MB | 3 |
| <= 4GB | 4 |
| <= 64GB | 5 |
| <= 1TB | 6 |
اگر
سرویسی
خودش
محدودیتهای
نرخ را از
طریق
LogRateLimitIntervalSec= و/یا
LogRateLimitBurst= در systemd.exec(5)
ارائه دهد،
آن مقادیر
بر تنظیمات
مشخصشده
در اینجا
اولویت
خواهند
داشت.
SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize=, SystemMaxFiles=, RuntimeMaxUse=, RuntimeKeepFree=, RuntimeMaxFileSize=, RuntimeMaxFiles=
گزینههای SystemMaxUse= و RuntimeMaxUse= کنترل میکنند که ژورنال حداکثر چقدر از فضای دیسک را میتواند مصرف کند. SystemKeepFree= و RuntimeKeepFree= کنترل میکنند که systemd-journald چقدر از فضای دیسک را باید برای سایر مصارف خالی نگه دارد. systemd-journald به هر دو محدودیت پایبند خواهد بود و از مقدار کوچکتر میان این دو استفاده میکند.
جفت اول به طور پیشفرض ۱۰٪ و جفت دوم ۱۵٪ از اندازه سیستم فایل مربوطه را استفاده میکنند، اما هر یک از مقادیر پیشفرض محاسبهشده حداکثر به 4G محدود میشوند. اگر سیستم فایل تقریباً پر باشد و هر یک از محدودیتهای SystemKeepFree= یا RuntimeKeepFree= در زمان شروع systemd-journald نقض شده باشند، این حد به همان درصدی که در واقع آزاد است افزایش مییابد. این بدان معناست که اگر قبلاً فضای خالی کافی وجود داشته و فایلهای ژورنال ایجاد شده باشند، و متعاقباً عامل دیگری باعث پر شدن سیستم فایل شود، journald مصرف فضای بیشتر را متوقف خواهد کرد، اما فایلهای موجود را برای کاهش ردپای خود حذف نخواهد کرد. همچنین توجه داشته باشید که تنها فایلهای بایگانیشده حذف میشوند تا فضای اشغالشده توسط فایلهای ژورنال کاهش یابد. این بدان معنی است که در عمل، ممکن است حتی پس از پایان عملیات پاکسازی (vacuuming)، فضای استفادهشده بیشتر از حد مجاز SystemMaxUse= یا RuntimeMaxUse= باشد.
گزینههای SystemMaxFileSize= و RuntimeMaxFileSize= کنترل میکنند که فایلهای ژورنال تکی حداکثر تا چه اندازهای میتوانند رشد کنند. این موضوع بر دقت آزادسازی فضای دیسک از طریق چرخش لاگ (rotation)، یعنی حذف دادههای قدیمی، تأثیر میگذارد. مقدار پیشفرض یکهشتم مقادیر پیکربندیشده با SystemMaxUse= و RuntimeMaxUse= است که حداکثر به 128M محدود میشود، به طوری که معمولاً هفت فایل ژورنال چرخیدهشده به عنوان تاریخچه نگهداری میشوند. اگر حالت فشرده ژورنال فعال باشد (که به طور پیشفرض فعال است)، حداکثر اندازه فایل به 4G محدود میگردد.
مقادیر را بر حسب بایت مشخص کنید یا از K، M، G، T، P، E به عنوان واحد برای اندازههای مشخصشده استفاده نمایید (معادل با ۱۰۲۴، ۱۰۲۴ به توان ۲، الی آخر بایت). توجه داشته باشید که محدودیتهای اندازه به صورت همزمان با افزایش اندازه فایلهای ژورنال اعمال میشوند و نیازی به گام چرخش صریح بر اساس زمان نیست.
گزینههای SystemMaxFiles= و RuntimeMaxFiles= کنترل میکنند که حداکثر چه تعداد فایل ژورنال تکی نگهداری شود. توجه داشته باشید که برای کاهش تعداد فایلها تا رسیدن به این محدودیت، تنها فایلهای بایگانیشده حذف میشوند؛ فایلهای فعال همچنان باقی خواهند ماند. این بدان معناست که در عمل، حتی پس از اتمام عملیات پاکسازی ممکن است مجموع فایلهای ژورنال موجود از این محدودیت بیشتر باشد. این تنظیم به طور پیشفرض برابر با ۱۰۰ است.
MaxFileSec=
افزودهشده در نسخه 195.
MaxRetentionSec=
افزودهشده در نسخه 195.
SyncIntervalSec=
افزودهشده در نسخه 199.
ForwardToSyslog=, ForwardToKMsg=, ForwardToConsole=, ForwardToWall=, ForwardToSocket=
آدرس بازفرستادن سوکت را میتوان با اعتبارنامه "journal.forward_to_socket" مشخص کرد. انواع سوکتهای زیر پشتیبانی میشوند:
AF_INET (مانند "192.168.0.11:4444")، AF_INET6 (مانند "[2001:db8::ff00:42:8329]:4444")، AF_UNIX (مانند "/run/host/journal/socket")، AF_VSOCK (مانند "vsock:2:1234")
هنگام بازفرستادن به کنسول، TTY مورد استفاده برای ثبت لاگ را میتوان با TTYPath= که در زیر شرح داده شده تغییر داد.
هنگام بازفرستادن به بافر لاگ هسته (kmsg)، اطمینان حاصل کنید که اندازه مناسبی برای بافر لاگ انتخاب کردهاید، برای نمونه با افزودن "log_buf_len=8M" به خط فرمان هسته. systemd به طور خودکار محدودسازی نرخ هسته را که بر فرایندهای فضای کاربری اعمال میشود غیرفعال خواهد کرد (معادل با تنظیم "printk.devkmsg=on").
هنگام بازفرستادن بر روی یک سوکت، Journal Export Format[4] در هنگام ارسال بر روی شبکه استفاده میشود. بهویژه این فرمت شامل فیلد فراداده __REALTIME_TIMESTAMP است تا systemd-journal-remote (ببینید systemd-journal-remote.service(8)) بتواند برای دریافت مدخلهای بازفرستادهشده ژورنال استفاده شود.
نکته: بازفرستادن در داخل journald به صورت همگام (synchronous) انجام میشود، و ممکن است عملکرد آن را به طور چشمگیری تحت تأثیر قرار دهد. این موضوع به ویژه هنگام استفاده از ForwardToConsole=yes در محیطهای ابری صادق است، جایی که کنسول اغلب یک پورت سریال مجازی و کند است. از آنجا که journald به عنوان یک دیمن تکفرآیندی سنتی پیادهسازی شده است، بازفرستادن به کنسولی که کاملاً قفل کرده است journald را مسدود خواهد کرد. این موضوع میتواند اثر آبشاری داشته باشد و منجر به مسدود شدن تمام سرویسهایی شود که به صورت همگام در ژورنالِ مسدودشده لاگ ثبت میکنند. مگر در مواردی که فعالانه در حال اشکالزدایی یا توسعه هستید، عموماً ترجیح داده میشود برای استفاده در محیطهای عملیاتی به جای ForwardToConsole=yes، سرویسی با الگوی journalctl --follow تنظیم شود که خروجی آن به کنسول هدایت شده باشد.
نکته: استفاده از ForwardToSocket= بر روی اتصالات IPv4/IPv6 میتواند به دلیل ماهیت همگام سوکتها بسیار کند باشد. در صورت امکان دقت کنید که اتصال شما یک پیوند محلی با تاخیر کم باشد. معمولاً شبکه IP در همه جاهایی که journald اجرا میشود، به عنوان نمونه در initrd در حین بوت، در دسترس نیست. در صورت امکان استفاده از سوکتهای AF_VSOCK/AF_UNIX را برای این منظور در نظر بگیرید.
MaxLevelStore=, MaxLevelSyslog=, MaxLevelKMsg=, MaxLevelConsole=, MaxLevelWall=, MaxLevelSocket=
افزودهشده در نسخه 185.
ReadKMsg=
افزودهشده در نسخه 235.
Audit=
توجه داشته باشید که این گزینه جمعآوری رکوردهای حسابرسی تولیدشده توسط systemd-journald را کنترل نمیکند، بلکه تنها این را کنترل میکند که آیا به هسته اعلام کند آنها را تولید کند یا خیر. اگر نیاز دارید مانع از جمعآوری پیامهای تولیدشده توسط systemd-journald شوید، واحد سوکت "systemd-journald-audit.socket" میتواند غیرفعال شود که در این حالت، این تنظیم بدون اثر خواهد بود.
افزودهشده در نسخه 246.
TTYPath=
افزودهشده در نسخه 185.
LineMax=
افزودهشده در نسخه 235.
ارسال پیامها (FORWARDING TO OTHER FACILITIES)
رویدادهای ژورنال میتوانند به دو روش مختلف به یک دیمن لاگ متفاوت منتقل شوند. در روش اول، پیامها بلافاصله به یک سوکت (/run/systemd/journal/syslog) ارسال میشوند، جایی که دیمن سنتی syslog میتواند آنها را بخواند. این روش توسط گزینه ForwardToSyslog= کنترل میشود. در روش دوم، یک دیمن syslog مانند یک کلاینت عادی ژورنال رفتار میکند، و مشابه با journalctl(1) پیامها را از فایلهای ژورنال میخواند. با این کار، پیامها نیازی به خوانده شدن فوری ندارند، که به دیمن ثبت لاگی که دیرتر در طول بوت راهاندازی میشود اجازه میدهد به تمامی پیامها از زمان آغاز به کار سیستم دسترسی داشته باشد. علاوه بر این، فرادادههای ساختاریافته کامل در دسترس آن قرار میگیرد. البته این روش تنها در صورتی در دسترس است که پیامها اصلاً در فایل ژورنال ذخیره شده باشند. بنابراین در صورت تنظیم Storage=none کار نخواهد کرد. لازم به ذکر است که معمولاً روش دوم توسط دیمنهای syslog استفاده میشود، بنابراین گزینه Storage=، و نه گزینه ForwardToSyslog=، برای آنها حائز اهمیت است.
همچنین ببینید (SEE ALSO)
systemd(1), systemd-journald.service(8), journalctl(1), systemd.journal-fields(7), systemd-system.conf(5)
نکات (NOTES)
- 1.
- 💣💥🧨💥💥💣 لطفاً توجه داشته باشید که این فایلهای پیکربندی باید در تمام زمانها در دسترس باشند. اگر /usr/local/ یک پارتیشن جداگانه باشد، ممکن است در مراحل اولیه بوت در دسترس نباشد و نباید برای پیکربندی استفاده شود.
- 2.
- Seekable Sequential Key Generators
- 3.
- Users, Groups, UIDs and GIDs on systemd systems
- 4.
- Journal Export Format
| systemd 261.2 |