ฉันต้องการ jsonน้ำหนักบรรทุก
ในบันทึกของ Google Cloud Function แทน ข้อความเพย์โหลด
. เป้าหมายของฉันคือการใช้คีย์ของพจนานุกรมเป็นป้ายกำกับ (ดู ป้ายกำกับเมตริกตามบันทึก) สำหรับ Log-Based Metrics เพื่อให้สามารถระบุสิ่งเหล่านี้ได้ใน Grafana
ฉันใช้ Python ของ เข้าสู่ระบบ
โมดูล แต่ฉันสามารถเปลี่ยนเป็นอย่างอื่นได้หากจำเป็น
ฉันต้องการเป็นผลลัพธ์ในบันทึก:
jsonPayload: `{'key1':value1, 'key2':value2}`
แต่ฉันได้รับ ข้อความเพย์โหลด
เอาต์พุตแทน บรรทัดถัดไปทั้งหมดเป็นสตริง:
"2022-02-08 15:43:32,460 [INFO]: {"key1": value1, "key2": value2}"
ตัวอย่างจริงจากบันทึก ตรงกลาง คุณเห็น ข้อความเพย์โหลด
:
ภาพเป็นข้อความ:
{
รหัสแทรก: "000000-1b431ffd-e42d-4f83-xyz"
ป้ายกำกับ: {1}
ชื่อบันทึก: "projects/MY_PROJECT/logs/cloudfunctions.googleapis.com%2Fcloud-functions"
การประทับเวลารับ: "2022-02-08T15:43:41.808217166Z"
ทรัพยากร: {2}
textPayload: "2022-02-08 15:43:32,460 [INFO]: {"json_metadata": {"countrows": 736203, "countcolumns": 6, "size": 48261360, "gcs_stamp": "2022-02- 08 15:43:32.451000+00:00", "python_stamp": "2022-02-08 15:43:31.055538"}}"
การประทับเวลา: "2022-02-08T15:43:32.460Z"
ติดตาม: "โครงการ/MY_PROJECT/traces/dd97759176248586a3d3xyz"
}
พยายามครั้งแรก
อ่านจาก https://cloud.google.com/logging/docs/structured-logging:
ใน Cloud Logging บันทึกที่มีโครงสร้างหมายถึงรายการบันทึกที่ใช้ฟิลด์ jsonPayload เพื่อเพิ่มโครงสร้างให้กับเพย์โหลด การบันทึกที่มีโครงสร้างใช้กับบันทึกที่ผู้ใช้เขียน
ฉันพยายามรับ "การบันทึกแบบมีโครงสร้าง" ต่อไปนี้ การเขียนบันทึกที่มีโครงสร้าง โดย
logging.info(json.dumps(json_for_gcp_lbm))
แต่ก็ไม่มีประโยชน์
เพิ่มเติมในลิงก์: มีตัวแทนการบันทึกในตัวจาก GCP ที่ใช้ คล่องแคล่ว เกี่ยวกับ เกี่ยวกับตัวแทนการบันทึก ดูเหมือนจะใช้ได้เฉพาะกับ Google Kubernetes Engine หรือ App Engine ไม่ใช่ในฟังก์ชัน Google Cloud:
หากคุณใช้ Google Kubernetes Engine หรือ App Engine แบบยืดหยุ่น
คุณสามารถเขียนบันทึกที่มีโครงสร้างเป็นวัตถุ JSON ที่ทำให้เป็นอนุกรมได้
ในบรรทัดเดียวเป็น stdout หรือ stderr จากนั้นตัวแทนการบันทึกจะส่ง
บันทึกที่มีโครงสร้างไปยัง Cloud Logging เป็น jsonPayload ของ LogEntry
โครงสร้าง.
ฉันจะได้รับ jsonน้ำหนักบรรทุก
ในผลลัพธ์นี้?