ฉันเสนอทางออกหนึ่งซึ่งตอนนี้ฉันได้เลือกเองแล้ว ไม่ใช่คำตอบที่ฉันกำลังมองหา แต่เป็นคำตอบที่ดูเหมือนจะแล่นไปตามกระแส
ฉันยังสงสัยว่าสิ่งนี้สามารถจัดการได้ด้วยคำสั่ง Unix ทั่วไปหรือไม่
อย่างไรก็ตาม นี่คือสิ่งที่ฉันทำ:
วิธีทั่วไปดูเหมือนจะใช้เครื่องมือที่เรียกว่า คล่องแคล่วซึ่งช่วยให้คุณสามารถรวบรวมบันทึกจากแหล่งต่าง ๆ และ
ขนส่งพวกเขาไปยังทุกที่ที่คุณเห็นว่าเหมาะสม - ประเภทของ ETL สำหรับบันทึก
ฉันเลือกที่จะส่งบันทึกไปยังเซิร์ฟเวอร์ syslog เนื่องจากฉันมีอันหนึ่งทำงานอยู่ แต่คุณสามารถเลือกปลั๊กอินเอาต์พุตใดก็ได้จากที่นี่: ปลั๊กอินเอาต์พุต.
นอกจากนี้ยังมีปลั๊กอินเพิ่มเติมชุดใหญ่: ปลั๊กอินทั้งหมด
ขั้นตอนที่ 1
รับการตั้งค่า Fluentd ที่ติดตั้งปลั๊กอิน remote_syslog ที่ไม่ได้มาพร้อมกับอิมเมจนักเทียบท่าอย่างเป็นทางการ แต่คุณสามารถตั้งค่าได้ด้วยตัวเอง
จากคล่องแคล่ว / คล่องแคล่ว: v1.14.0-1.0
รากผู้ใช้
# https://github.com/fluent-plugins-nursery/ Fluent-plugin-remote_syslog
RUN คล่องแคล่วอัญมณีติดตั้ง คล่องแคล่ว-ปลั๊กอิน-remote_syslog
USER ได้อย่างคล่องแคล่ว
สร้างอิมเมจและพุชไปที่รีจิสตรีของคุณ
ขั้นตอนที่ 2
ตั้งค่าถัดไป รายการการปรับใช้ Fluentd พร้อมการอ้างสิทธิ์ไดรฟ์ข้อมูลแบบอ่านอย่างเดียวเพื่อเข้าถึงบันทึกของพ็อด ไฟล์จริงอยู่ใน /var/log/pods/* และ /var/log/containers มี symlinks เราต้องการไฟล์จริง
บันทึกเหล่านั้นเป็นของรูทบนเครื่องโฮสต์และผู้ใช้ที่คล่องแคล่วธรรมดาจะไม่สามารถเข้าถึงเพื่ออ่านได้
เราจำเป็นต้องตั้งค่าบริบทความปลอดภัยบางอย่าง เพื่อให้สิ่งต่าง ๆ ใช้งานได้ฉันใช้กลุ่มรูทสำหรับ fsGroup
อย่าลังเลที่จะเจาะลึกลงไปและค้นหา/แสดงความคิดเห็นเกี่ยวกับโซลูชันที่เหมาะสมที่สุดสำหรับการรักษาความปลอดภัยนี้
apiVersion: แอป/v1
ประเภท: การปรับใช้
...
ข้อมูลจำเพาะ:
...
ข้อมูลจำเพาะ:
บริบทความปลอดภัย:
fsGroup: 0
ปริมาณ:
- ชื่อ: varlogpods-pv
ถาวรVolumeClaim:
ชื่อการอ้างสิทธิ์: pvc-var-log-pods
...
ตู้คอนเทนเนอร์:
- ชื่อ: คล่อง
ภาพ: ภาพของคุณ / คล่องแคล่ว
ดูรายการทั้งหมดของฉันในส่วนสำคัญนี้: การปรับใช้อย่างคล่องแคล่ว
ขั้นตอนที่ 3
ก่อนที่คุณจะปรับใช้ คุณต้องตั้งค่า คล่อง.conf
และอธิบายกฎบางอย่างที่นั่น
ของฉันถูกตั้งค่าให้ตรงกับบรรทัดบันทึกดังนี้:
2022-04-26T20:05:00.847016854+03:00 stderr F time="2022-04-26 17:05:00" level=info msg="กำลังประมวลผล 3 ระเบียน ..."
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปลั๊กอินหาง: หาง
<source>
@type tail
@id in_tail_container_logs
path "/var/log/pods/default_cron-*/*/*.log"
pos_file "/tmp/cron_.log.pos"
read_from_head true
tag cron
<parse>
@type regexp
expression /^(?<logtime>[^ ]*) .* level=(?<level>[^ ]*) msg="(?<message>[^"]*)"$/
time_key logtime
time_format %FT%T.%N%:z
</parse>
</source>
<match cron>
@type remote_syslog
host 172.16.3.10
port 514
protocol udp
severity info
program "fluentd"
hostname "k3sserver"
<buffer>
</buffer>
<format>
@type single_value
message_key message
</format>
</match>
แอตทริบิวต์การกำหนดค่าที่สำคัญอย่างหนึ่งที่นี่คือ read_from_head จริง
ซึ่งอ่านไฟล์บันทึกจากด้านบน
จำเป็นสำหรับสถานการณ์นี้เนื่องจากบันทึกของพ็อดกำลังหมุน เราต้องการให้ Fluentd อ่านบันทึกของพ็อดทั้งหมด ไม่ใช่แค่การอัปเดตไม่กี่บรรทัดในตอนท้าย สำหรับงาน cron แบบสั้น ไฟล์บันทึกจะปรากฏขึ้นและส่วนท้ายจะไม่รายงานบรรทัดเริ่มต้นใดๆ ในนั้น
ขั้นตอนที่ 4
เล่นกับ config แล้วลอง ลองอีกครั้ง
อย่าลืมรีสตาร์ทการปรับใช้หลังจากที่คุณอัปเดตการกำหนดค่าใน configMap
ไม่กี่บิตจากเส้นทางการค้นหา: