SYSTEMD-JOURNALD.SERVICE(8)

الاسم
systemd-journald.service، systemd-journald.socket، systemd-journald-dev-log.socket، systemd-journald-audit.socket، systemd-journald@.service، systemd-journald@.socket، systemd-journald-varlink@.socket، systemd-journald - خِدْمَةُ السِّجِلِّ

موجز

    systemd-journald.service
    systemd-journald.socket
    systemd-journald-dev-log.socket
    systemd-journald-audit.socket
    systemd-journald@.service
    systemd-journald@.socket
    systemd-journald-varlink@.socket
    /usr/lib/systemd/systemd-journald

الوصف

systemd-journald هي خِدْمَةُ نِظَامٍ تَجْمَعُ وَتُخَزِّنُ بَيَانَاتِ التَّسْجِيلِ. تُنْشِئُ وَتُحَافِظُ عَلَى سِجِلَّاتٍ مُنَظَّمَةٍ وَمُفَهْرَسَةٍ اسْتِنَادًا إِلَى مَعْلُومَاتِ التَّسْجِيلِ الْمُسْتَلَمَةِ مِنْ مَصَادِرَ مُخْتَلِفَةٍ:

    • رَسَائِلُ سِجِلِّ النَّوَاةِ، عَبْرَ kmsg

    • رَسَائِلُ سِجِلِّ النِّظَامِ الْبَسِيطَةِ، عَبْرَ اسْتِدْعَاءِ syslog(3) فِي libc

    • رَسَائِلُ سِجِلِّ النِّظَامِ الْمُنَظَّمَةِ عَبْرَ وَاجِهَةِ بَرْمَجَةِ السِّجِلِّ الْأَصْلِيَّةِ، اُنْظُرْ sd_journal_print(3) وَ بَرُوتُوكُولَ السِّجِلِّ الْأَصْلِيِّ[1]

    • الْمُخْرَجُ الْمِعْيَارِيُّ وَالْخَطَأُ الْمِعْيَارِيُّ لِوَحَدَاتِ الْخِدْمَةِ. لِلْمَزِيدِ مِنَ التَّفَاصِيلِ، اُنْظُرْ أَسْفَلَ.

    • سِجِلَّاتُ الْمُرَاجَعَةِ، النَّاشِئَةُ مِنَ النِّظَامِ الْفَرْعِيِّ لِمُرَاجَعَةِ النَّوَاةِ

سَيَجْمَعُ الْبَرْنَامَجُ الْخَادِمُ ضِمْنِيًّا حُقُولَ بَيَانَاتٍ وَصْفِيَّةٍ عَدِيدَةً لِكُلِّ رِسَالَةِ سِجِلٍّ بِطَرِيقَةٍ آمِنَةٍ وَغَيْرِ قَابِلَةٍ لِلتَّزْوِيرِ. اُنْظُرْ systemd.journal-fields(7) لِمَزِيدٍ مِنَ الْمَعْلُومَاتِ حَوْلَ الْبَيَانَاتِ الْوَصْفِيَّةِ الْمَجْمُوعَةِ.

بَيَانَاتُ السِّجِلِّ الَّتِي يَجْمَعُهَا السِّجِلُّ هِيَ نَصِّيَّةٌ فِي الْأَسَاسِ وَلَكِنْ يُمْكِنُ أَنْ تَتَضَمَّنَ أَيْضًا بَيَانَاتٍ ثُنَائِيَّةً حَيْثُمَا كَانَ ذَلِكَ ضَرُورِيًّا. قَدْ يَصِلُ حَجْمُ الْحُقُولِ الْفَرْدِيَّةِ الَّتِي تُشَكِّلُ سِجِلَّ سِجِلٍّ مُخَزَّنًا فِي السِّجِلِّ إِلَى 2⁶⁴-1 بَايِتٍ.

تُخَزِّنُ خِدْمَةُ السِّجِلِّ بَيَانَاتِ السِّجِلِّ إِمَّا بِاسْتِمْرَارِيَّةٍ تَحْتَ /var/log/journal أَوْ بِطَرِيقَةٍ مُتَطَايِرَةٍ تَحْتَ /run/log/journal/ (فِي الْحَالَةِ الْأَخِيرَةِ، تُفْقَدُ عِنْدَ إِعَادَةِ التَّشْغِيلِ). افْتِرَاضِيًّا، تُخَزَّنُ بَيَانَاتُ السِّجِلِّ بِاسْتِمْرَارِيَّةٍ إِذَا وُجِدَ /var/log/journal/ أَثْنَاءَ الْإِقْلَاعِ، مَعَ الْعُدُولِ الضِّمْنِيِّ إِلَى التَّخْزِينِ الْمُتَطَايِرِ بِخِلَافِ ذَلِكَ. اِسْتَخْدِمْ Storage= فِي journald.conf(5) لِتَكْوِينِ مَكَانِ وُضُوعِ بَيَانَاتِ السِّجِلِّ، بِغَضِّ النَّظَرِ عَنْ وُجُودِ /var/log/journal/.

لاحظ أن journald سيستخدم مبدئيًا التخزين المتطاير، حتى يؤدي استدعاء journalctl --flush (أو إرسال SIGUSR1 إلى journald) إلى تحوله إلى التسجيل المستمر (تحت الشروط المذكورة أعلاه). يُفعل هذا تلقائيًا عند الإقلاع عبر "systemd-journal-flush.service".

فِي الْأَنْظِمَةِ حَيْثُ لَا يَزَالُ /var/log/journal/ غَيْرَ مَوْجُودٍ وَلَكِنْ يُرْغَبُ فِي التَّسْجِيلِ الْمُسْتَمِرِّ (وَيُسْتَخْدَمُ journald.conf الْمُبْتَدَأُ)، يَكْفِي إِنْشَاءُ الدَّلِيلِ، وَضَمَانُ احْتِوَائِهِ عَلَى أَوْضَاعِ الْوُصُولِ وَالْمِلْكِيَّةِ الصَّحِيحَةِ:

    mkdir -p /var/log/journal
    systemd-tmpfiles --create --prefix /var/log/journal

اُنْظُرْ journald.conf(5) لِمَعْلُومَاتٍ حَوْلَ تَكْوِينِ هَذِهِ الْخِدْمَةِ.

تَسْجِيلُ التَّدَفُّقِ

يُشَغِّلُ مُدِيرُ خِدْمَةِ systemd جَمِيعَ عَمَلِيَّاتِ الْخِدْمَةِ مَعَ تَوْصِيلِ الْمُخْرَجِ الْمِعْيَارِيِّ وَالْخَطَأِ الْمِعْيَارِيِّ بِالسِّجِلِّ افْتِرَاضِيًّا. يُمْكِنُ تَغْيِيرُ هَذَا السُّلُوكِ عَبْرَ إِعْدَادَاتِ مِلَفِّ الْوَحْدَةِ StandardOutput=/StandardError=، اُنْظُرْ systemd.exec(5) لِلتَّفَاصِيلِ. يُحَوِّلُ السِّجِلُّ تَدَفُّقَ الْبَايِتَاتِ الْمُسْتَلَمَ بِهَذِهِ الطَّرِيقَةِ إِلَى سِجِلَّاتِ سِجِلٍّ فَرْدِيَّةٍ، مَعَ تَقْسِيمِ التَّدَفُّقِ عِنْدَ الْأَسْطُرِ الْجَدِيدَةِ ("\n"، ASCII 10) وَبَايِتَاتِ NUL.

إِذَا تَمَّ إِيقَافُ systemd-journald.service، فَإِنَّ اتِّصَالَاتِ التَّدَفُّقِ الْمُرْتَبِطَةَ بِجَمِيعِ الْخِدْمَاتِ تُنْهَى. سَتُؤَدِّي الْكِتَابَاتُ الْإِضَافِيَّةُ إِلَى تِلْكَ التَّدَفُّقَاتِ مِنْ قِبَلِ الْخِدْمَةِ إِلَى أَخْطَاءِ EPIPE. لِلرَّدِّ بِلُطْفٍ فِي هَذِهِ الْحَالَةِ، يُوصَى بِأَنْ تَتَجَاهَلَ الْبَرَامِجُ الَّتِي تُسَجِّلُ فِي الْمُخْرَجِ/الْخَطَأِ الْمِعْيَارِيِّ مِثْلَ هَذِهِ الْأَخْطَاءِ. إِذَا لَمْ يَكُنْ مُعَالِجُ إِشَارَةِ SIGPIPE فِي يُونِكْس مَحْظُورًا أَوْ مُعَطَّلًا، فَسَتُؤَدِّي مُحَاوَلَاتُ الْكِتَابَةِ هَذِهِ أَيْضًا إِلَى تَوْلِيدِ إِشَارَاتِ الْعَمَلِيَّةِ هَذِهِ، اُنْظُرْ signal(7). لِلتَّخْفِيفِ مِنْ هَذِهِ الْمُشْكِلَةِ، يُعَطِّلُ مُدِيرُ خِدْمَةِ systemd إِشَارَةَ SIGPIPE صَرَاحَةً لِجَمِيعِ الْعَمَلِيَّاتِ الْمُسْتَدْعَاةِ افْتِرَاضِيًّا (يُمْكِنُ تَغْيِيرُ هَذَا لِكُلِّ وَحْدَةٍ عَلَى حِدَةٍ عَبْرَ خِيَارِ IgnoreSIGPIPE=، اُنْظُرْ systemd.exec(5) لِلتَّفَاصِيلِ). بَعْدَ إِنْهَاءِ تَدَفُّقَاتِ الْمُخْرَجِ/الْخَطَأِ الْمِعْيَارِيِّ، لَا يُمْكِنُ اسْتِعَادَتُهَا حَتَّى تُعَادَ تَشْغِيلُ الْخِدْمَاتِ الْمُرْتَبِطَةِ بِهَا. لَاحِظْ أَنَّهُ أَثْنَاءَ التَّشْغِيلِ الْعَادِيِّ، يُخَزِّنُ systemd-journald.service نُسَخًا مِنْ وَاصِفَاتِ الْمِلَفَّاتِ لِتِلْكَ التَّدَفُّقَاتِ فِي مُدِيرِ الْخِدْمَةِ. إِذَا تَمَّتْ إِعَادَةُ تَشْغِيلِ systemd-journald.service بِاسْتِخْدَامِ systemctl restart أَوْ عَمَلِيَّةٍ مُمَاثِلَةٍ بَدَلًا مِنْ زَوْجٍ مِنْ أَوَامِرِ systemctl stop وَ systemctl start الْمُنْفَصِلَةِ (أَوْ عَمَلِيَّاتٍ مُمَاثِلَةٍ)، فَلَنْ تُنْهَى اتِّصَالَاتُ التَّدَفُّقِ هَذِهِ وَسَتَبْقَى بَعْدَ إِعَادَةِ التَّشْغِيلِ. لِذَا، مِنَ الْآمِنِ إِعَادَةُ تَشْغِيلِ systemd-journald.service، وَلَكِنْ لَا يُوصَى بِإِيقَافِهِ.

يرجى ملاحظة أن بيانات تعريف سجلات السجلات المنقولة عبر تدفقات الإخراج/الأخطاء القياسية هذه تعكس بيانات تعريف النظير الذي تم إنشاء التدفق من أجله في الأصل. إذا تم تمرير اتصال الدفق إلى عمليات أخرى (مثل عمليات فرعية أخرى تم فصلها عن عملية الخدمة الرئيسية )، فلن تعكس سجلات السجل بياناتها الوصفية، ولكنها ستستمر في وصف العملية الأصلية. وهذا يختلف عن وسائل نقل التسجيل الأخرى المذكورة أعلاه، والتي تعتمد بطبيعتها على السجلات وحيث ترتبط البيانات الوصفية دائمًا بالسجل الفردي.

بالإضافة إلى التسجيل التلقائي للنتائج والخطأ في الخدمات، يتوفر أيضًا التسجيل عبر التدفقات من خلال أداة سطر الأوامر systemd-cat(1).

حاليًا، عدد تيارات السجل المتوازية التي سيقبلها systemd-journald محدود بـ 4096. عند بلوغ هذا الحد، قد يتم إنشاء تيارات سجل إضافية لكنها ستتلقى EPIPE منذ البداية.

مساحات أسماء السجل

مساحات أسماء السجل هي آلية لعزل تيار السجل للمشاريع المكونة من خدمة واحدة أو أكثر عن باقي النظام منطقيًا، وآلية لتحسين الأداء. قد توجد مساحات أسماء سجل متعددة في وقت واحد، كل منها يُعرّف تيار سجل خاصًا ومستقلًا يُدار بواسطة مثيله الخاص من systemd-journald. مساحات الأسماء مستقلة عن بعضها البعض، سواء في مخزن البيانات أو في واجهة IPC. افتراضيًا، توجد مساحة اسم واحدة فقط "افتراضية"، تُدار بواسطة systemd-journald.service (ووحدات المقبس المرتبطة بها). تُنشأ مساحات أسماء إضافية بتشغيل مثيل من قالب الخدمة systemd-journald@.service. اسم المثيل هو معرف مساحة الاسم، وهو سلسلة قصيرة تُستخدم للإشارة إلى مساحة اسم السجل. قد تُسند وحدات الخدمة إلى مساحة اسم سجل محددة من خلال إعداد ملف الوحدة LogNamespace=، انظر systemd.exec(5) للتفاصيل. قد يُستخدم مفتاح --namespace= الخاص بـ journalctl(1) لعرض تيار السجل لمساحة اسم محددة. إذا لم يُستخدم المفتاح، يُعرض تيار السجل لمساحة الاسم الافتراضية، أي أن بيانات السجل من مساحات الأسماء الأخرى غير مرئية.

قد تُسجل الخدمات المرتبطة بمساحة اسم سجل محددة عبر syslog(3)، وبروتوكول التسجيل الأصلي للسجل، وعبر stdout/stderr؛ يرتبط التسجيل من جميع وسائل النقل الثلاث بمساحة الاسم.

افتراضيًا، ستجمع مساحة الاسم الافتراضية فقط رسائل سجل النواة والتدقيق.

يُهيأ مثيل systemd-journald لمساحة الاسم الافتراضية من خلال /etc/systemd/journald.conf (انظر أدناه)، بينما تُهيأ المثيلات الأخرى من خلال /etc/systemd/journald@NAMESPACE.conf. توضع بيانات سجل مساحة الاسم الافتراضية في /var/log/journal/MACHINE_ID (انظر أدناه) بينما توجد بيانات مساحات الأسماء الأخرى في /var/log/journal/MACHINE_ID.NAMESPACE.

إشارات

SIGUSR1
    طلب مسح بيانات السجل من /run/ إلى /var/ لجعلها دائمة (إذا كان هذا ممكّنًا). يجب استخدام هذا بعد تثبيت /var/، وإلا فلن تُمسح بيانات السجل من /run/ إلى /var/ أبدًا بغض النظر عن التهيئة. استخدم الأمر journalctl --flush لطلب مسح ملفات السجل، وانتظر حتى اكتمال العملية. انظر journalctl(1) للتفاصيل.

    أُضيف في الإصدارة 186.

SIGUSR2
    طلب تدوير فوري لملفات السجل. استخدم الأمر journalctl --rotate لطلب تدوير ملف السجل، وانتظر حتى اكتمال العملية.

    أُضيف في الإصدارة 186.

SIGRTMIN+1
    طلب كتابة جميع بيانات السجل غير المكتوبة إلى القرص. استخدم الأمر journalctl --sync لتحفيز مزامنة السجل، وانتظر حتى اكتمال العملية.

    أُضيف في الإصدارة 228.

SIGHUP
    عند استقبال إشارة العملية SIGHUP، سيعيد systemd-journald تحميل قيم تهيئته ويُحدّث مخزن النواة المؤقت للسجل وملفات السجل لتعكس التهيئة الجديدة. إذا تغير ReadKmsg=، سيُمسح مخزن النواة المؤقت للسجل ويُحدّث كجزء من إعادة التحميل. سيستمر استخدام السجل النشط (مثل، الدائم، المتطاير) مع التهيئة المُحدّثة. ومع ذلك، إذا تغير وضع التخزين من دائم إلى متطاير وكان السجل الحالي المستخدم هو السجل الدائم، فسيُحوّل السجل النشط إلى السجل المتطاير.

    أُضيف في الإصدار 258.

بيانات الاعتماد

يدعم systemd-journald منطق بيانات اعتماد الخدمة كما هو مطبق بواسطة ImportCredential=/LoadCredential=/SetCredential= (انظر systemd.exec(5) للتفاصيل). تُستخدم بيانات الاعتماد التالية عند تمريرها:

journal.forward_to_socket
    قد يحتوي على عنوان مقبس يجب توجيه السجلات إليه. انظر ForwardToSocket= في journald.conf(5).

    أُضيف في الإصدار 256.

journal.storage
    قد يُستخدم لتحديد مكان تخزين ملفات السجل. انظر Storage= في journald.conf(5).

    أُضيف في الإصدار 256.

سطر أوامر النواة

قد تُتجاوز بعض معلمات التهيئة من journald.conf في سطر أوامر النواة:

systemd.journald.forward_to_syslog=، systemd.journald.forward_to_kmsg=، systemd.journald.forward_to_console=، systemd.journald.forward_to_wall=
    يُمكّن/يُعطّل توجيه رسائل السجل المجمعة إلى syslog، ومخزن النواة المؤقت للسجل، ووحدة التحكم في النظام، أو الجدار.

    انظر journald.conf(5) للحصول على معلومات حول هذه الإعدادات.

    أُضيف في الإصدارة 186.

systemd.journald.max_level_store=, systemd.journald.max_level_syslog=, systemd.journald.max_level_kmsg=, systemd.journald.max_level_console=, systemd.journald.max_level_wall=, systemd.journald.max_level_socket=
    يتحكم في الحد الأقصى لمستوى سجل الرسائل المخزنة في السجل، أو المُوجّهة إلى syslog(3)، أو kmsg، أو وحدة التحكم، أو wall(1)، أو مقبس. تتجاوز خيارات سطر أوامر النواة هذه إعدادات الأسماء نفسها في ملف journald.conf(5).

    أُضيف في الإصدار 232.

لاحظ أن خيارات سطر أوامر النواة هذه تُكرّم فقط من قبل النطاق المبدئي، انظر أعلاه.

التحكم في الوصول

ملفات دفتر اليومية، مبدئيًا، مملوكة وقابلة للقراءة من قبل مجموعة النظام "systemd-journal" ولكنها غير قابلة للكتابة. إضافة مستخدم إلى هذه المجموعة تمكنه بالتالي من قراءة ملفات دفتر اليومية.

مبدئيًا، كل مستخدم، بمعرف مستخدم خارج نطاق مستخدمي النظام، مستخدمي الخدمة الديناميكيين، ومستخدم nobody، سيحصل على مجموعته الخاصة من ملفات دفتر اليومية في /var/log/journal/. انظر المستخدمون، المجموعات، معرفات المستخدمين ومعرفات المجموعات على أنظمة systemd[2] لمزيد من التفاصيل حول نطاقات معرفات المستخدمين. ملفات دفتر اليومية هذه لن تكون مملوكة للمستخدم، مع ذلك، لتجنب أن يتمكن المستخدم من الكتابة إليها مباشرة. بدلاً من ذلك، تُستخدم قوائم التحكم بالوصول لنظام الملفات لضمان حصول المستخدم على وصول للقراءة فقط.

مستخدمون ومجموعات إضافية قد يُمنحون وصولاً إلى ملفات دفتر اليومية عبر قوائم التحكم بالوصول لنظام الملفات. التوزيعات والمسؤولون قد يختارون منح وصول للقراءة لجميع أعضاء مجموعتي النظام "wheel" و"adm" بأمر مثل التالي:

    # setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/

لاحظ أن هذا الأمر سيُحدّث قوائم التحكم بالوصول لكل من ملفات دفتر اليومية الموجودة وملفات دفتر اليومية المستقبلية المنشأة في الدليل /var/log/journal/.

الملفات

/etc/systemd/journald.conf
    اضبط سلوك systemd-journald. انظر journald.conf(5).

    أُضيف في الإصدارة 206.

/run/log/journal/معرف-الآلة/*.journal, /run/log/journal/معرف-الآلة/*.journal~, /var/log/journal/معرف-الآلة/*.journal, /var/log/journal/معرف-الآلة/*.journal~
    يكتب systemd-journald الإدخالات إلى ملفات في /run/log/journal/معرف-الآلة/ أو /var/log/journal/معرف-الآلة/ باللاحقة ".journal". إذا أُوقف البرنامج الخفي بشكل غير نظيف، أو إذا وُجدت الملفات تالفة، تُعاد تسميتها باستخدام اللاحقة ".journal~"، ويبدأ systemd-journald الكتابة إلى ملف جديد. يُستخدم /run/ عندما لا يكون /var/log/journal متاحًا، أو عندما يُضبط Storage=volatile في ملف الإعدادات journald.conf(5).

    عندما يتوقف systemd-journald عن الكتابة إلى ملف دفتر يومية، يُعاد تسميته إلى "الاسم-الأصلي@اللاحقة.journal" (أو "الاسم-الأصلي@اللاحقة.journal~"). هذه الملفات "مؤرشفة" ولن يُكتب إليها بعد الآن.

    بشكل عام، من الآمن قراءة أو نسخ أي ملف دفتر يومية (نشط أو مؤرشف). يجب أن يكون journalctl(1) والدوال في مكتبة sd-journal(3) قادرين على قراءة جميع الإدخالات التي كُتبت بالكامل.

    يزيل systemd-journald آليًا أقدم ملفات دفتر اليومية المؤرشفة للحد من استخدام القرص. انظر SystemMaxUse= والإعدادات ذات الصلة في journald.conf(5).

    أُضيف في الإصدارة 206.

/dev/kmsg, /dev/log, /run/systemd/journal/dev-log, /run/systemd/journal/socket, /run/systemd/journal/stdout
    مقابس ومسارات عقد ملفات أخرى يستمع إليها systemd-journald وتكون مرئية في نظام الملفات. بالإضافة إلى هذه، يمكن لـ systemd-journald الاستماع لأحداث التدقيق باستخدام netlink(7)، اعتمادًا على ما إذا كان "systemd-journald-audit.socket" مفعّلاً أم لا.

    أُضيف في الإصدارة 228.

إذا استُخدمت مساحات أسماء دفتر اليومية، تُعدّل هذه المسارات قليلاً لتضمين معرف مساحة اسم، انظر أعلاه.

انظر أيضًا

systemd(1), journalctl(1), journald.conf(5), systemd.journal-fields(7), sd-journal(3), systemd-coredump(8), setfacl(1), sd_journal_print(3), pydoc systemd.journal

ملاحظات

1.  بروتوكول دفتر اليومية الأصلي
    https://systemd.io/JOURNAL_NATIVE_PROTOCOL

2.  المستخدمون، والمجموعات، و UIDs و GIDs على أنظمة systemd
    https://systemd.io/UIDS-GIDS

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.