ClickStack – giải pháp thay thế Datadog mã nguồn mở được xây dựng với ClickHouse và HyperDX
(clickhouse.com)- ClickStack là một nền tảng quan sát (Observability) mã nguồn mở dựa trên ClickHouse và HyperDX, tích hợp xử lý log, metric, trace và session replay tại một nơi
- Hỗ trợ tìm kiếm và trực quan hóa log và trace dễ dàng, nhanh chóng trên cụm ClickHouse, đồng thời có thể áp dụng với mọi schema mà không cần thao tác bổ sung
- Cung cấp tìm kiếm trực quan, cảnh báo dựa trên sự kiện và tính năng dashboard để kỹ sư có thể nhanh chóng xác định và xử lý sự cố
- Hỗ trợ tiêu chuẩn OpenTelemetry mặc định và cung cấp tích hợp SDK cho nhiều ngôn ngữ và nền tảng
- So với các giải pháp thương mại hiện có, nó rẻ hơn và dễ cấu hình hơn, đồng thời cho phép xử lý toàn bộ quy trình trên một nền tảng mà không cần phải chuyển qua lại giữa nhiều công cụ quan sát
Tính năng chính
- Có thể xử lý phân tích tương quan và tìm kiếm log, metric, session replay và trace tại một nơi
- Tận dụng nguyên trạng schema sẵn có của ClickHouse với cấu trúc không phụ thuộc schema
- Phù hợp với dữ liệu dung lượng lớn nhờ tốc độ tìm kiếm nhanh và tối ưu trực quan hóa
- Hỗ trợ cả full-text search và tìm kiếm theo thuộc tính, việc dùng SQL là tùy chọn
- Có thể phân tích xu hướng thay đổi của sự kiện và thiết lập cảnh báo đơn giản, tạo dashboard
- Hỗ trợ truy vấn chuỗi JSON native
- Có thể kiểm tra các sự kiện mới nhất bằng tính năng tail log và trace theo thời gian thực
- Hỗ trợ tích hợp OpenTelemetry và môi trường APM (giám sát hiệu năng)
Triển khai và cách bắt đầu
- Gói ClickStack có thể được triển khai tích hợp cùng ClickHouse, HyperDX, OpenTelemetry Collector và MongoDB
- Có thể truy cập giao diện HyperDX từ trình duyệt
- Cũng có thể tích hợp với môi trường ClickHouse Cloud và dễ dàng triển khai trong nhiều môi trường khác nhau
Đo lường ứng dụng và tích hợp
Để thu thập dữ liệu log, metric, trace và session replay bằng HyperDX, ứng dụng cần gửi dữ liệu telemetry đến HyperDX
- Cung cấp SDK và tùy chọn tích hợp: có SDK cho nhiều ngôn ngữ/môi trường như trình duyệt, Node.js, Python nên có thể tích hợp dễ dàng
- Hỗ trợ tiêu chuẩn OpenTelemetry: tương thích với nhiều ngôn ngữ và runtime như Kubernetes, JavaScript, Python, Java, Go, Ruby, PHP, .NET, Elixir, Rust
- Trình thu thập OpenTelemetry mặc định có thể kết nối tại địa chỉ
http://localhost:4318
Cách đóng góp
- Hoan nghênh cộng đồng đóng góp theo nhiều cách như gửi PR, đăng ký issue, cải thiện tài liệu, bỏ phiếu cho issue mở hoặc cung cấp các use case mới
Động lực phát triển và triết lý
Mục tiêu của đội ngũ phát triển HyperDX là giúp mọi kỹ sư có thể tận dụng telemetry trong môi trường vận hành để giải quyết sự cố nhanh chóng
Các vấn đề chính hiện có:
- Công cụ quan sát cho môi trường vận hành đắt đỏ và chi phí tăng theo mức mở rộng dữ liệu
- Độ khó cấu hình và sử dụng cao, cần đến SRE và chuyên gia
- Các chức năng như log, session replay, APM bị tách rời, khiến việc liên kết thông tin trở nên bất tiện
Để vượt qua những giới hạn này, ClickStack và HyperDX được cung cấp dưới dạng mã nguồn mở
- HyperDX đã được ClickHouse mua lại
1 bình luận
Ý kiến trên Hacker News
Thắc mắc vì sao lại làm frontend tùy chỉnh thay vì dùng Grafana vốn đã có sẵn
Chia sẻ rằng giá DataDog quá đắt nên HyperDX thực sự rất hấp dẫn; LogLayer(https://loglayer.dev) mà người này đang vận hành là một structured logger cho TypeScript, hỗ trợ gửi log đến nhiều loại logger và dịch vụ đám mây khác nhau (như DataDog), đồng thời cho biết đang phát triển tính năng tích hợp cho HyperDX và sẽ sớm phát hành; bày tỏ mong muốn thêm liên kết tài liệu về cách tích hợp HyperDX và LogLayer vào mục "integrations" trên site của mình; chia sẻ liên kết PR liên quan(https://github.com/hyperdxio/hyperdx-js/pull/184)
Đang dùng HyperDX trong production thực tế và rất hài lòng với khả năng tích hợp với ClickHouse cũng như hiệu quả chi phí; thắc mắc liệu có cần chuẩn bị migration từ HyperDX sang ClickStack hay không
Chia sẻ rằng trace và logging của Otel thì ổn, nhưng tính năng metrics của Otel có cảm giác được thiết kế quá phức tạp; hỏi liệu ClickStack có thể ingest dữ liệu statsd (đặc biệt có cả phần mở rộng tagging của Datadog) hay không, có hỗ trợ gắn thẻ dịch vụ thống nhất và liên kết giữa trace/log/metric hay không, UI có tính năng liên kết dữ liệu liên quan hay không, vì sao Elixir SDK lại dùng thư viện hyperdx, và tính năng Notebooks có nằm trong roadmap không
Nhận xét rằng Signoz có vẻ giống HyperDX ở chỗ đều dựa trên ClickHouse và đều có phiên bản open source lẫn cloud; thắc mắc điểm khác nhau là gì, đồng thời quan sát thấy UI cũng khá giống
Đang tìm một giải pháp logging mới để thay Kibana, và vì có trải nghiệm tốt với ClickHouse nên quan tâm đến UI của HyperDX; chia sẻ rằng pipeline log hiện tại là Vector chạy trên Kubernetes, Vector đang hỗ trợ OTel sink (beta), nên đang cân nhắc cách gửi log tốt nhất khi dữ liệu ở dạng JSON; nhấn mạnh đây là môi trường traffic lớn, hiệu năng cao, quy mô TB
Thắc mắc sự khác nhau giữa Signoz và HyperDX (hoặc ClickHouse), quan sát rằng cả hai đều xuất thân từ YC và đều dùng ClickHouse
Chia sẻ trải nghiệm rằng sau khi đăng ký, widget "Was this search result helpful?" đã hiện ra trên UI ngay cả trước khi tìm kiếm nên UX khá rối; phát hiện bug là bấm nút Hide thì hiện nút phản hồi, rồi bấm phản hồi lần nữa thì mọi thứ quay lại như cũ; đánh giá tổng thể rằng font monospace được dùng xuyên suốt, chữ lại nhỏ, màu trắng đậm và xanh lá sáng phối với nền tối trông không hài hòa; ngay cả khi đổi sang font hệ thống cũng không cải thiện nhiều nên khuyến nghị một phong cách UI truyền thống hơn; phản hồi rằng thiết kế khó đọc khiến họ ngần ngại sử dụng
Hỏi liệu ClickHouse có phải là thành phần stateful duy nhất trong stack này hay không; quan tâm đến khả năng tương thích với Rotel(https://github.com/streamfold/rotel), một OTEL collector viết bằng Rust; nhắc rằng Datadog có một giải pháp thay thế OTEL collector do họ tự phát triển với hiệu năng tốt hơn