หนึ่งในปัญหาต่อเรื่อง performance ของระบบงานคือการเขียน log ของระบบงานลง file system !!ซึ่งพบว่า ถ้าเปลี่ยนมาใช้การเขียน log แบบ Asynchronous จะดีกว่า Synchronousเป็นเรื่องเล็ก ๆ ที่อาจจะส่งผลเยอะเช่นกันดังนั้นลองมาปรับเปลี่ยนกันดู
Read More…
ก่อนหน้านี้ Go 1.21 ออกมานั้น มี Structured log package (log/slog) ออกมาให้ใช้งานซึ่งเคยอธิบายการใช้งานเบื้องต้นไว้ที่นี่แต่ว่าต้องไปแบ่งปันเรื่อง logging สำหรับระบบที่พัฒนาด้วย Goจึงทำการอธิบายแบบละเอียดขึ้นไว้หน่อยมาเริ่มกันเลย
Read More…
ก่อนนี้เคยอธิบายเรื่อง proposal ของ Structured Logging มาแล้วซึ่งตอนนี้ได้เพิ่มเข้ามาใน Go 1.21 ที่จะออกมาในเดือนสิงหาคมนี้ดังนั้นเรามาลองใช้งานกันหน่อย ซึ่งประกอบไปด้วย package ดังนี้ มาเริ่มกันเลย
Read More…
วันนี้นั่งอ่านบทความเรื่อง Postgres: a better message queue than Kafka?ทำการอธิบายการสร้างระบบ loggingซึ่งทำงานอยู่บน PostgreSQLว่ามีข้อดีและข้อเสียอย่างไร รวมทั้งการปรับปรุงในอนาคตทำไมถึงใช้งาน PostgreSQL แทนที่จะเป็น Apache Kafka สำหรับ message queue
Read More…
เพิ่งเห็นว่าใน Go มี proposal ที่น่าสนใจคือ Structured loggingทำให้เราสามารถเขียน log ในรูปแบบที่มีโครงสร้างได้ง่ายขึ้นรวมทั้งเลือกได้ด้วยว่าจะให้มีโครงสร้างในรูปแบบใดเช่น text และ JSON เป็นต้น
Read More…
ว่าง ๆ นั่งเปลี่ยน logger จากที่ใช้งาน logrus มาเป็น zapโดยสิ่งที่ต้องการให้เหมือนเดิมคือ Log message ในรูปแบบของ JSON Log ออกไปทั้ง file แบบแยกรายวัน และออกที่ console เก็บเฉพาะ log level = error เท่านั้น
Read More…
Loki คืออะไรคำจำกัดความสั้น ๆ คือ เหมือนกับ Prometheus แต่ใช้สำหรับเก็บข้อมูล log ความสามารถที่น่าสนใจคือ Horizontal scale High availability Log aggregation ออกแบบมาเพื่อให้จัดการได้ง่าย รวมทั้งเรื่องประหยัดค่าใช้จ่าย หรือใช้ให้เกิดประโยชน์สูงสุด
Read More…
วันนี้มีคำถามเกี่ยวกับการจัดการกับ log ต่าง ๆ ของ Docker container แน่นอนว่า มีการจัดการหลายแบบ ยกตัวอย่างเช่น การ map path ของไฟล์ log ออกมา ใช้ agent หรือตัว shipper ในการขนออกมา เช่น LogStash, Beats และ Fluentd เป็นต้น มาดูตัวอย่างของการนำ Fluentd มาใช้กันหน่อย
Read More…
ในการสร้างระบบงานนั้น สิ่งหนึ่งที่ขาดไปไม่ได้เลยคือ logging การทำงานต่าง ๆ ของระบบ ดังนั้นทำให้เกิด code ที่เกี่ยวกับ logging จำนวนมาก เผลอ ๆ อาจจะมากกว่า code ส่วนอื่น ๆ ของระบบอีกต่างหาก ซึ่งผมชอบเรียกระบบเหล่านี้ว่า Logging application !! ผลที่ตามมาก็คือ code อุดมไปด้วย log อ่านยากมาก ๆ code จะทดสอบยากมาก ๆ บ่อยครั้งไม่สามารถเขียน unit test ได้เลย code ดูแลยากอีก !! ดังนั้นนักพัฒนาควรใส่ใจวิธีการจัดการ log มาก ๆ ด้วยนะ มาดูกันว่าทำอย่างไรได้บ้าง
Read More…