- ClickStack เป็นแพลตฟอร์ม Observability แบบโอเพนซอร์สที่สร้างบน ClickHouse และ HyperDX โดยรวมการจัดการล็อก เมตริก เทรซ และเซสชันรีเพลย์ไว้ในที่เดียวอย่างครบวงจร
- รองรับ การค้นหาและการแสดงผลล็อกและเทรซ ได้อย่างง่ายดายและรวดเร็วบนคลัสเตอร์ ClickHouse และใช้ได้กับทุกสคีมาโดยไม่ต้องมีงานเพิ่มเติม
- มี การค้นหาที่ใช้งานได้อย่างเป็นธรรมชาติ การแจ้งเตือนตามอีเวนต์ และฟีเจอร์แดชบอร์ด ช่วยให้วิศวกรระบุและตอบสนองต่อปัญหาได้อย่างรวดเร็ว
- รองรับมาตรฐาน OpenTelemetry เป็นค่าเริ่มต้น พร้อมการผสานรวม SDK สำหรับ หลายภาษาและหลายแพลตฟอร์ม
- เมื่อเทียบกับโซลูชันเชิงพาณิชย์เดิม มีต้นทุนต่ำกว่าและตั้งค่าได้ง่ายกว่า อีกทั้งไม่ต้องสลับไปมาระหว่างเครื่องมือ observability หลายตัว เพราะจัดการทั้งกระบวนการได้บนแพลตฟอร์มเดียว
ฟีเจอร์หลัก
- วิเคราะห์ความสัมพันธ์และค้นหาข้อมูลจาก ล็อก เมตริก เซสชันรีเพลย์ และเทรซ ได้ในที่เดียว
- ใช้สคีมาเดิมของ ClickHouse ได้ทันที พร้อม โครงสร้างที่ไม่ยึดติดกับสคีมา
- เหมาะกับข้อมูลปริมาณมากด้วย ความเร็วในการค้นหาสูง และการแสดงผลที่ปรับแต่งมาอย่างเหมาะสม
- รองรับทั้ง การค้นหาแบบฟูลเท็กซ์และตามแอตทริบิวต์ โดยการใช้ SQL เป็นทางเลือก
- วิเคราะห์แนวโน้มการเปลี่ยนแปลงของอีเวนต์ พร้อม ตั้งค่าการแจ้งเตือนได้ง่ายและสร้างแดชบอร์ด ได้
- รองรับ Native JSON string query
- ตรวจสอบอีเวนต์ล่าสุดได้ด้วยฟีเจอร์ tail ของล็อกและเทรซแบบเรียลไทม์
- รองรับการผสานรวม OpenTelemetry และสภาพแวดล้อม APM (การมอนิเตอร์ประสิทธิภาพ)
การดีพลอยและการเริ่มต้นใช้งาน
- แพ็กเกจ ClickStack สามารถดีพลอยรวม ClickHouse, HyperDX, OpenTelemetry Collector และ MongoDB ได้
- สามารถเข้าถึง UI ของ HyperDX ได้ผ่านเบราว์เซอร์
- เชื่อมต่อกับสภาพแวดล้อม ClickHouse Cloud ได้เช่นกัน และดีพลอยลงหลายสภาพแวดล้อมได้อย่างง่ายดาย
การทำ Application Instrumentation และการผสานรวม
หากต้องการเก็บข้อมูลล็อก เมตริก เทรซ และเซสชันรีเพลย์ด้วย HyperDX แอปพลิเคชันต้องส่งข้อมูลเทเลเมทรีไปยัง HyperDX
- มี ตัวเลือก SDK และการผสานรวม: มี SDK สำหรับภาษา/สภาพแวดล้อมหลากหลาย เช่น เบราว์เซอร์ Node.js และ Python ทำให้เชื่อมต่อได้ง่าย
- รองรับมาตรฐาน OpenTelemetry: ใช้งานร่วมกับภาษาและรันไทม์หลากหลาย เช่น Kubernetes, JavaScript, Python, Java, Go, Ruby, PHP, .NET, Elixir และ Rust
- ตัวเก็บข้อมูล OpenTelemetry สามารถเชื่อมต่อได้โดยค่าเริ่มต้นที่
http://localhost:4318
วิธีมีส่วนร่วม
- ยินดีต้อนรับการมีส่วนร่วมจากชุมชนในหลายรูปแบบ เช่น การส่ง PR การเปิด issue การปรับปรุงเอกสาร การโหวต issue ที่เปิดอยู่ และการเสนอกรณีการใช้งานใหม่
แรงจูงใจและแนวคิดในการพัฒนา
เป้าหมายของทีมพัฒนา HyperDX คือ ทำให้วิศวกรทุกคนสามารถใช้เทเลเมทรีจากระบบ production เพื่อแก้ปัญหาได้อย่างรวดเร็ว
ปัญหาหลักของโซลูชันเดิม:
- เครื่องมือสำหรับ observability ในระบบ production มีราคาแพงและต้นทุนเพิ่มขึ้นตามการขยายของข้อมูล
- ตั้งค่าและใช้งานยาก จนต้องพึ่งพา SRE และผู้เชี่ยวชาญ
- ฟีเจอร์ต่าง ๆ อย่างล็อก เซสชันรีเพลย์ และ APM แยกออกจากกัน ทำให้การเชื่อมโยงข้อมูลทำได้ลำบาก
เพื่อก้าวข้ามข้อจำกัดเหล่านี้ จึงมีการเปิดซอร์ส ClickStack และ HyperDX
- HyperDX ถูก ClickHouse เข้าซื้อกิจการแล้ว
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
สงสัยว่าทำไมถึงทำฟรอนต์เอนด์แบบคัสตอม แทนที่จะใช้ Grafana ที่มีอยู่แล้ว
แชร์ว่าราคา DataDog แพงมาก เลยรู้สึกว่า HyperDX น่าสนใจมาก, LogLayer ของตัวเอง(https://loglayer.dev)เป็น structured logger สำหรับ TypeScript ที่รองรับการส่งล็อกไปยัง logger หลายประเภทและบริการคลาวด์ต่าง ๆ (รวมถึง DataDog), แชร์ว่ากำลังพัฒนาฟีเจอร์ integration สำหรับ HyperDX และจะปล่อยเร็ว ๆ นี้, บอกว่าอยากเพิ่มลิงก์เอกสารวิธีเชื่อมต่อ HyperDX กับ LogLayer ไว้ในส่วน "integrations" ของเว็บไซต์ตัวเอง, และแชร์ลิงก์ PR ที่เกี่ยวข้อง(https://github.com/hyperdxio/hyperdx-js/pull/184)
ใช้งาน HyperDX อยู่ในโปรดักชันจริง และพอใจกับการผสานกับ ClickHouse รวมถึงความคุ้มค่าด้านต้นทุนมาก, สงสัยว่าจำเป็นต้องเตรียม migration จาก HyperDX ไป ClickStack หรือไม่
แชร์ว่ามองว่า trace และ logging ของ OTel ใช้ได้ดี แต่ฟีเจอร์ metrics ของ OTel ออกแบบซับซ้อนเกินไป, ถามว่า ClickStack ingest ข้อมูล statsd ได้หรือไม่ (โดยเฉพาะส่วนขยาย tagging ของ Datadog), มีการทำ service tagging และการเชื่อมโยงระหว่าง trace/log/metric หรือไม่, ใน UI มีฟีเจอร์ลิงก์ข้อมูลที่เกี่ยวข้องหรือไม่, สงสัยว่าทำไม Elixir SDK ถึงใช้ไลบรารี hyperdx, และถามว่าฟีเจอร์ Notebooks อยู่ใน roadmap หรือไม่
เห็นว่า HyperDX ดูคล้าย Signoz ตรงที่ใช้ ClickHouse เป็นฐาน และมีทั้งเวอร์ชันโอเพ่นซอร์สกับคลาวด์, เลยสงสัยว่าต่างกันอย่างไร และสังเกตว่า UI ก็คล้ายกันด้วย
กำลังมองหาโซลูชัน logging ใหม่มาแทน Kibana และมีประสบการณ์ที่ดีกับ ClickHouse จึงสนใจ UI ของ HyperDX, ตอนนี้ log pipeline คือ Vector บน Kubernetes และ Vector รองรับ OTel sink (เบตา) อยู่แล้ว เลยกำลังคิดว่าวิธีส่งล็อกที่ดีที่สุดคืออะไรในสถานการณ์ที่ข้อมูลเป็น JSON, เน้นว่าเป็นสภาพแวดล้อมทราฟฟิกหนักมากระดับ TB และต้องการประสิทธิภาพสูง
สงสัยว่าความแตกต่างระหว่าง Signoz กับ HyperDX (หรือ ClickHouse) คืออะไร โดยสังเกตว่าทั้งคู่มาจาก YC และใช้ ClickHouse เหมือนกัน
แชร์ประสบการณ์ว่าหลังสมัครสมาชิกแล้ว ใน UI มีวิดเจ็ต "Was this search result helpful?" โผล่มาตั้งแต่ก่อนค้นหา ทำให้ UX ชวนสับสน, พบบั๊กว่าถ้ากด Hide จะกลายเป็นปุ่มฟีดแบ็ก แล้วกดฟีดแบ็กอีกครั้งก็กลับไปสภาพเดิม, โดยรวมมองว่าฟอนต์เป็น monospace เกือบทั้งหมดและขนาดตัวอักษรก็เล็ก อีกทั้งสีขาวหนาและสีเขียวสว่างบนพื้นหลังมืดก็เข้ากันไม่ดี, ต่อให้เปลี่ยนเป็น system font ก็ไม่ได้ดีขึ้นมากนัก เลยแนะนำให้ใช้สไตล์ UI แบบดั้งเดิมมากกว่า, และให้ฟีดแบ็กว่าดีไซน์ที่อ่านยากทำให้ลังเลจะใช้งาน
สงสัยว่า ClickHouse เป็นองค์ประกอบ stateful เพียงตัวเดียวของสแตกนี้หรือไม่, สนใจความเข้ากันได้กับ Rotel ซึ่งเป็น OTEL collector เขียนด้วย Rust(https://github.com/streamfold/rotel), และเสริมว่า Datadog มีตัวแทน OTEL collector ที่พัฒนาขึ้นเองซึ่งให้ประสิทธิภาพดีกว่า