Injest บันทึกเป็น JSON ใน Container Optimized OS

Sep 29 2020

ฉันสามารถสั่งการบันทึกไปยัง Google Log Viewer ได้ด้วยความช่วยเหลือของ stackdriver logging agent จาก Container Optimized OS เป็น JSON

มันไม่ได้รับบาดเจ็บจากการบันทึกเป็นค่าให้กับข้อความ แต่ไม่ใช่เพย์โหลด json ที่มีการกำหนดค่าเริ่มต้น

ฉันได้ลองอะไรบ้าง?

ฉันได้เปลี่ยนการกำหนดค่า fluentd ใน /etc/stackdriver/logging.config.d/fluentd-lakitu.conf เป็นดังต่อไปนี้:

<source>
  @type tail
  format json
  path /var/lib/docker/containers/*/*.log
  <parse>
    @type json
  </parse>
  pos_file /var/log/google-fluentd/containers.log.pos
  tag reform_contain
  read_from_head true
</source>

แต่ไม่สามารถส่งบันทึกไปยังโปรแกรมดูบันทึกได้

ระบบปฏิบัติการ: Container Optimized OS cos-81-12871-1196-0

คำตอบ

4 KameliaY Sep 30 2020 at 01:57

ฉันพบปัญหานี้ในเครื่องมือติดตามปัญหาสาธารณะของ Googleซึ่งกล่าวถึงปัญหาเดียวกันกับที่คุณกล่าวถึงในกรณีการใช้งานของคุณ ทีมผลิตภัณฑ์ Google ได้รับแจ้งเกี่ยวกับข้อ จำกัด นี้และกำลังดำเนินการแก้ไข คุณต้องไปที่นั่นและคลิกที่ดาวถัดจากชื่อเพื่อรับข้อมูลอัปเดตเกี่ยวกับปัญหาและทำให้ปัญหามีการเปิดเผยมากขึ้น

GamerAtmos Dec 28 2020 at 11:20

ดังที่@Kamelia Yกล่าวถึงเรื่องhttps://issuetracker.google.com/issues/137517429

มีการกล่าวถึงวิธีแก้ปัญหาที่ใช้

<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>

ข้อมูลโค้ดด้านบนจะแยกวิเคราะห์การบันทึกใน JSON และคำสั่งห้ามเข้าสู่ระบบคลาวด์

ในการสนทนานี้ในGoogle Groupsบน Stackdriver เราได้พูดคุยเกี่ยวกับวิธีการใช้งานกับสคริปต์เริ่มต้น

นี่คือตัวอย่างสำหรับสคริปต์เริ่มต้น

cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save
# Shorter version of the above: cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf{,-save}
(
head -n -2 /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save; cat <<EOF
<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>
EOF
) > /etc/stackdriver/logging.config.d/fluentd-lakitu.conf
sudo systemctl start stackdriver-logging

ภาพนี้สามารถใช้เพื่อสร้างบันทึก JSON แบบสุ่ม https://hub.docker.com/repository/docker/patelathreya/json-random-logger