يتعطّل تدوير السجلات بطريقة يمكن توقّعها: ثلاثة مكوّنات يظن كل منها أنه يملك الملف، والنتيجة سجل مُدوّر يستمر في النمو بينما يبقى الجديد فارغاً. يحتفظ الخادم بوصف ملف، ويعيد logrotate تسمية المسار، ويكتب rsyslog في مكان آخر تماماً. اختر كاتباً واحداً ومُدوّراً واحداً قبل إضافة قاعدة أخرى إلى الكومة. تتحرك قائمة الفحص التالية بهذا الترتيب لأن كل خطوة لاحقة تعتمد عليه.

حدّد من يكتب الملف

هناك تصميمان مشروعان. في الأول، تكتب عملية VPN ملفاً بنفسها عبر خيار log أو log-append الخاص بها. في الثاني، ترسل السجلات إلى مسجّل النظام ويقرّر rsyslog أو journald أين تستقر.

هما بديلان لا طبقتان. المضيف الذي يفعّل الاثنين ينتهي بملفين متعارضين، والملف الذي تقرأه غالباً هو القديم. اختر المسار عن قصد ثم أزل الكاتب الآخر.

اقرأ إعداد الخدمة الفعّال قبل أن تغيّر أي شيء، بما في ذلك ملفات drop-in التي قد تتجاوز ملف الوحدة. وجود توجيه في الملف الشخصي الذي حرّرته ليس دليلاً على أنه التوجيه الذي حمّلته العملية الجارية. قارن الوحدة بوسائط العملية، ثم بالملفات التي فتحتها فعلاً.

سمِّ الخادم كي تكون التصفية ضيقة

على مسار syslog، أعطِ الخادم هوية مميزة وصفِّ عليه. القاعدة التي تطابق اسم البرنامج لهذه النسخة من VPN تُبقي سجلاتها خارج ملف مشترك تعود سياسة الاحتفاظ به إلى شيء آخر.

القواعد الضيقة تجعل السؤال التالي قابلاً للإجابة أيضاً: أي خدمة أنتجت هذا السطر؟ التصفية التي تطابق كل ما يحتوي كلمة VPN ستجمع بسعادة حركة نفق ثانٍ وتشوّش الاثنين. طابق المعرّف الدقيق الذي تمرره الوحدة إلى المسجّل.

أغلق القاعدة بعد الإجراء كي لا تتساقط السجلات أيضاً إلى الوجهة الافتراضية. الأسطر المكررة في ملفين تبدو كخلل في التسجيل وهي في الحقيقة محطة مفقودة. هذا الإغفال الواحد يضاعف أيضاً تكلفة القرص لسياسة الاحتفاظ.

دوّر دون أن تفقد واصف الملف

عندما يكتب الخادم الملف، يعيد logrotate تسمية المسار لكن العملية تحتفظ بوصفها المفتوح. تستمر السجلات الجديدة في الملف المُعاد تسميته حتى يجبر شيء ما العملية على إعادة فتح المسار الأصلي، ولهذا قد يبدو التدوير ناجحاً بينما يبقى الملف الجديد فارغاً.

الحل إجراء postrotate يشغّل سلوك إعادة التحميل أو إعادة التشغيل الموثّق للخدمة. إرسال إشارة إلى المسجّل إجراء مختلف تماماً ولا يفعل شيئاً لخادم يحتفظ بملفه الخاص.

حين تكون إعادة الفتح مستحيلة، يكون copytruncate هو البديل: انسخ الملف ثم اقتطعه في مكانه. يحافظ على صلاحية الواصف مقابل فقدان كل ما كُتب بين النسخ والاقتطاع، لذا هو مقايضة لا حل. تحت الحمل قد تبتلع تلك الفجوة بالضبط العطل الذي تحاول التقاطه.

اختر واحداً من الاثنين لكل ملف واكتب الاختيار، لأن خلطهما على المسار نفسه ينتج فجوات يصعب جداً نسبها لاحقاً. القارئ الذي يجد النمطين في مجلد واحد لا يستطيع تحديد أيهما المرجع.

اضبط الاحتفاظ من نافذة الحادث

ينبغي أن تُشتق مدة الاحتفاظ والضغط والحد الأقصى للحجم من المدى الذي تحقّق فيه فعلاً. نافذة سبعة أيام مع ضغط وحد للحجم نقطة بداية معقولة لكثير من عمليات النشر؛ أما رقم منسوخ من درس تعليمي فليس كذلك.

أبقِ السياسة في مكان واحد. إذا دوّر logrotate الملف ودوّره rsyslog أيضاً، تفوز الجولة الثانية ويبقى نظام التسمية الأول كفوضى. اختر المالك، وعطّل التدوير الآخر، ودوّن ذلك القرار بجانب السياسة.

تغطي وثائق rsyslog نموذج التوجيه والإجراءات فيه، بينما تبقى وثائق خدمة OpenVPN هي المرجع لخيارات التسجيل الخاصة بالخادم. لا واحدة منهما تقرّر سياستك بدلاً عنك.

اختبر تدويراً واحداً وحدثاً جديداً واحداً

أجبر تدويراً واحداً ثم أنشئ حدثاً جديداً، مثل مصادقة فاشلة. تأكّد من ظهور السجل الجديد في الملف الجديد وأن الملف القديم توقف عن النمو.

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

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

مقالات ذات صلة