บันทึก OpenVPN เป็นของใคร: เดมอน rsyslog หรือ logrotate?
ผู้เขียนคนเดียว ตัวหมุนไฟล์เดียว นโยบายเก็บรักษาเดียว เลือกเส้นทางก่อน ตั้งชื่อเดมอนเพื่อให้ตัวกรองแคบ และพิสูจน์การเปิดใหม่ด้วยไฟล์ที่หมุนแล้วไฟล์เดียว
การหมุนบันทึกพังในแบบที่คาดเดาได้: สามองค์ประกอบต่างคิดว่าตนเป็นเจ้าของไฟล์ และผลลัพธ์คือบันทึกที่หมุนแล้วยังคงโตขึ้นในขณะที่ไฟล์ใหม่ยังว่างอยู่ เดมอนถือตัวอธิบายไฟล์ logrotate เปลี่ยนชื่อเส้นทาง และ rsyslog เขียนไปที่อื่นโดยสิ้นเชิง เลือกผู้เขียนหนึ่งรายและตัวหมุนไฟล์หนึ่งตัวก่อนจะเพิ่มกฎอีกข้อลงในกอง รายการตรวจสอบด้านล่างเดินตามลำดับนั้นเพราะทุกขั้นตอนถัดไปขึ้นอยู่กับมัน
ตัดสินใจว่าใครเป็นผู้เขียนไฟล์
มีสองแบบที่ชอบด้วยเหตุผล แบบแรกกระบวนการ VPN เขียนไฟล์เองผ่านตัวเลือก log หรือ log-append ของตน แบบที่สองส่งระเบียนไปยังตัวบันทึกของระบบ แล้ว rsyslog หรือ journald ตัดสินว่าพวกมันจะไปลงที่ใด
ทั้งสองเป็นทางเลือก ไม่ใช่ชั้นซ้อน โฮสต์ที่เปิดทั้งคู่จะจบลงด้วยไฟล์สองไฟล์ที่ไม่ตรงกัน และไฟล์ที่คุณกำลังอ่านมักเป็นไฟล์ที่ล้าสมัย เลือกเส้นทางอย่างตั้งใจแล้วจึงถอดผู้เขียนอีกฝ่ายออก
อ่านการกำหนดค่าที่มีผลจริงของบริการก่อนจะเปลี่ยนสิ่งใด รวมถึงไฟล์ drop-in ที่อาจแทนที่ไฟล์ unit การมีคำสั่งอยู่ในโปรไฟล์ที่คุณแก้ไขไม่ใช่หลักฐานว่าเป็น คำสั่งที่กระบวนการที่กำลังทำงานโหลดเข้าไป เปรียบเทียบ unit กับอาร์กิวเมนต์ของกระบวนการ แล้วจึงเปรียบเทียบกับไฟล์ที่มันเปิดจริง
ตั้งชื่อเดมอนเพื่อให้ตัวกรองแคบได้
บนเส้นทาง syslog ให้เดมอนมีตัวตนที่ชัดเจนแล้วกรองตามตัวนั้น กฎที่ตรงกับชื่อโปรแกรมของอินสแตนซ์ VPN นี้จะกันระเบียนของมันออกจากไฟล์ที่ใช้ร่วมกันซึ่งนโยบายเก็บรักษาเป็นของสิ่งอื่น
กฎที่แคบยังทำให้คำถามถัดไปตอบได้: บริการใดสร้างบรรทัดนี้ ตัวกรองที่ตรงกับทุกสิ่งที่มีคำว่า VPN จะรวบรวมทราฟฟิกของอุโมงค์ที่สองอย่างเต็มใจและทำให้ทั้งคู่พร่ามัว จับคู่กับตัวระบุที่แน่นอนซึ่ง unit ส่งให้ตัวบันทึก
ปิดกฎหลังการกระทำเพื่อให้ระเบียนไม่ตกลงไปยังปลายทางเริ่มต้นด้วย บรรทัดซ้ำในสองไฟล์ดูเหมือนข้อบกพร่องของการบันทึก แต่จริง ๆ แล้วคือการหยุดที่หายไป การละเว้นเพียงครั้งเดียวนั้นยังทำให้ต้นทุนดิสก์ของนโยบายเก็บรักษาเพิ่มเป็นสองเท่า
หมุนโดยไม่สูญเสียตัวอธิบายไฟล์
เมื่อเดมอนเขียนไฟล์ logrotate เปลี่ยนชื่อเส้นทาง แต่กระบวนการยังคงถือตัวอธิบายไฟล์ที่เปิดอยู่ ระเบียนใหม่ยังคงไหลเข้าสู่ไฟล์ที่เปลี่ยนชื่อแล้วจนกว่าบางสิ่งจะบังคับให้กระบวนการเปิดเส้นทางเดิมอีกครั้ง นี่คือเหตุผลที่การหมุนอาจดูเหมือนได้ผลในขณะที่ไฟล์ใหม่ยังว่างอยู่
ทางแก้คือการกระทำ postrotate ที่กระตุ้นพฤติกรรมการโหลดซ้ำหรือเริ่มใหม่ที่เอกสารระบุไว้ การส่งสัญญาณไปยังตัวบันทึกเป็นการกระทำที่ต่างออกไปโดยสิ้นเชิงและไม่เกิดผลใดกับเดมอนที่ถือไฟล์ของตนเอง
ที่ซึ่งการเปิดใหม่เป็นไปไม่ได้ copytruncate คือทางเลือกสำรอง: คัดลอกไฟล์แล้วตัดทอนในที่เดิม มันทำให้ตัวอธิบายไฟล์ยังใช้ได้แลกกับการสูญเสียทุกอย่างที่เขียนระหว่างการคัดลอกและการตัดทอน ดังนั้นจึงเป็นการแลกเปลี่ยนไม่ใช่ทางแก้ ภายใต้ภาระหนักช่องว่างนั้นอาจกลืนความล้มเหลวที่คุณพยายามจับไว้
เลือกอย่างใดอย่างหนึ่งต่อไฟล์และจดบันทึกไว้ เพราะการผสมทั้งสองบนเส้นทางเดียวกันทำให้เกิดช่องว่างที่ยากมากที่จะระบุที่มาภายหลัง ผู้อ่านที่พบทั้งสองรูปแบบในไดเรกทอรีเดียวไม่สามารถบอกได้ว่าอันใดเป็นหลัก
กำหนดการเก็บรักษาจากหน้าต่างของเหตุการณ์
การเก็บรักษา การบีบอัด และขนาดสูงสุดควรมาจากระยะที่คุณสืบย้อนจริง หน้าต่างเจ็ดวันพร้อมการบีบอัดและเพดานขนาดเป็นจุดเริ่มต้นที่สมเหตุสมผลสำหรับการติดตั้งจำนวนมาก ส่วนตัวเลขที่คัดลอกจากบทแนะนำไม่ใช่
เก็บนโยบายไว้ที่เดียว หาก logrotate หมุนไฟล์และ rsyslog ก็หมุนด้วย การหมุนครั้งที่สองจะเป็นผู้ชนะและรูปแบบการตั้งชื่อของครั้งแรกจะเหลืออยู่เป็นความรก เลือกเจ้าของ ปิดการหมุนอีกตัว และบันทึกการตัดสินใจนั้นไว้ข้างนโยบาย
เอกสารของ rsyslog ครอบคลุมแบบจำลองการกำหนดเส้นทางและการกระทำ ขณะที่เอกสารของบริการ OpenVPN ยังคงเป็นหลักสำหรับตัวเลือกการบันทึกของเดมอนเอง ไม่มีตัวใดในสองตัวนี้ตัดสินนโยบายเก็บรักษาแทนคุณ
ทดสอบการหมุนหนึ่งครั้งและเหตุการณ์ใหม่หนึ่งครั้ง
บังคับให้หมุนเพียงครั้งเดียวแล้วสร้างเหตุการณ์ใหม่หนึ่งครั้ง เช่น การยืนยันตัวตนที่ล้มเหลว ยืนยันว่าระเบียนใหม่ปรากฏในไฟล์ใหม่และไฟล์เก่าหยุดโต
ตรวจสอบสิทธิ์ของไฟล์ใหม่ด้วย เพราะการหมุนที่สร้างมันขึ้นใหม่ด้วยเจ้าของอื่นจะทำให้ผู้เขียนเสียที่การเขียนครั้งถัดไปและเกิดช่องว่างที่ดูเหมือนระบบล่ม เปรียบเทียบเจ้าของและโหมดกับบัญชีของบริการก่อนจากไป จากนั้นยืนยันว่าคลังที่บีบอัดแล้วอ่านได้ เพราะคลังที่ไม่มีใครเปิดได้ไม่ใช่การเก็บรักษา การอ่านระเบียนล่าสุดในไฟล์เก่าอย่างรวดเร็วพิสูจน์ทั้งการบีบอัดและสิทธิ์
ปิดท้ายด้วยการจดบันทึกเจ้าของของแต่ละขั้นตอน: องค์ประกอบใดเขียน อันใดหมุน และนโยบายเก็บรักษาอยู่ที่ใด บันทึกนั้นคือสิ่งที่เปลี่ยนเหตุการณ์การบันทึกครั้งถัดไปให้เป็นการตรวจห้านาทีแทนการเดาทั้งบ่ายว่าชั้นใดทำบรรทัดหลุด