ฉันกำลังตั้งค่า rsyslog ในสภาพแวดล้อมแบบหลายผู้เช่าเพื่อส่งต่อไปยังเซิร์ฟเวอร์ส่วนกลาง เนื่องจากมีหลายผู้เช่า ฉันต้องการนำหน้าชื่อโฮสต์จากเซิร์ฟเวอร์ rsyslog แรกด้วยส่วนนำหน้าเฉพาะลูกค้าก่อนที่จะส่งต่อไปยังเซิร์ฟเวอร์กลาง ฉันได้วางแผนที่จะตั้งค่าคำนำหน้าด้วยตนเอง อย่างไรก็ตาม คำนำหน้าได้รับการกำหนดค่าในไฟล์อื่นบนเซิร์ฟเวอร์ และหากสามารถรวบรวมได้จากไฟล์นั้น นั่นจะดียิ่งขึ้นไปอีก
เนื่องจากเซิร์ฟเวอร์แรกจะส่งต่อจากหลายโฮสต์ ส่วนต่อท้ายจึงต้องเป็นการเขียนซ้ำแบบไดนามิกที่มีชื่อโฮสต์ดั้งเดิมแทนที่จะเขียนทับชื่อโฮสต์เดียวกันแบบฮาร์ดโค้ดสำหรับรายการทั้งหมด ซึ่งฉันได้เห็นในตัวอย่างบางส่วน
ตามหลักการแล้วสิ่งที่ฉันพยายามทำนั้นสรุปได้ด้วยรหัสจำลองต่อไปนี้:
ชุดกฎ (ชื่อ = "myrule"){
ตั้ง $hostname = "<คำนำหน้า>-%HOSTNAME%"
การดำเนินการ (ประเภท = "omfwd" เป้าหมาย = "ระยะไกล-ip")
}
ฉันจะรับผิดชอบทั้งรีเลย์ระดับกลางและเซิร์ฟเวอร์กลาง แต่รีเลย์แต่ละตัวสามารถโฮสต์ลูกค้าได้หลายคน ดังนั้นฉันไม่คิดว่าการเขียนซ้ำสามารถทำได้บนเซิร์ฟเวอร์กลาง แต่ฉันสามารถควบคุมทั้งสองเลเยอร์ได้อย่างเต็มที่ ลูกค้าแต่ละรายเชื่อมต่อผ่านอินเทอร์เฟซเฉพาะ และฉันกำลังวางแผนสำหรับชุดกฎแยกต่างหากที่แนบมากับอินพุตที่กำหนดค่าสำหรับแต่ละอินเทอร์เฟซ และชุดกฎเพื่อรวมคำนำหน้าเฉพาะของลูกค้า ด้วยเหตุผลนี้ ฉันคิดว่าการกำหนดค่าจำเป็นต้องอยู่บนรีเลย์ แต่ถ้ามีวิธีอื่น ฉันยินดีที่จะลองทำทุกอย่างที่บรรลุเป้าหมายสุดท้ายในการทำให้เหตุการณ์สามารถระบุตัวลูกค้าได้
เหตุผลที่ต้องการใช้การเขียนชื่อโฮสต์ซ้ำเนื่องจากสิ่งนี้สอดคล้องกับวิธีการกำหนดค่าเครื่องมืออื่นๆ ในสภาพแวดล้อม และขอแนะนำให้ตั้งค่าให้เป็นเนื้อเดียวกัน อย่างไรก็ตาม หากไม่สามารถทำได้ อาจพิจารณาวิธีอื่นหากวิธีแรกไม่สามารถทำได้ในทางเทคนิค
ตัวอย่างเช่น รีเลย์แต่ละตัวเชื่อมต่อกับลูกค้าหลายรายผ่านตารางเส้นทางที่แยกจากกัน และไคลเอ็นต์ปลายทางจะมีชื่อโฮสต์ต่างกัน เช่น site1-sw1 หรือ site2-rtr2 อย่างไรก็ตาม ปัญหาก็คือว่าคำนำหน้าลูกค้าไม่ได้อยู่ในชื่อเนื่องจากเป็นข้อมูลอ้างอิงของเราในการรู้ว่าอุปกรณ์เกี่ยวข้องกับลูกค้ารายใด ในระบบอื่นๆ เราเปลี่ยนชื่อเหล่านี้เป็น cust1-site1-sw1 และ cust1-site2-rtr2 โดยเฉพาะอย่างยิ่งเนื่องจากอาจมี cust2-site2-rtr2 เป็นต้น เราต้องการพฤติกรรมที่เทียบเท่าใน syslog
วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?