- LogHouse đã mở rộng từ 19PiB lên hơn 100PB dữ liệu log chỉ trong 1 năm, xử lý tới gần 500 nghìn tỷ hàng
- Do các vấn đề về giới hạn xử lý dữ liệu và hiệu quả của OpenTelemetry(OTel), hệ thống đã chuyển sang pipeline tùy biến (SysEx) phù hợp với hệ thống cốt lõi
- Việc chuyển đổi này mang lại hiệu quả với thông lượng xử lý sự kiện tăng 20 lần nhưng mức sử dụng CPU vẫn dưới 10%
- Việc áp dụng HyperDX và ClickStack của ClickHouse đã xây dựng được môi trường tích hợp UI và dữ liệu, độ linh hoạt schema, cùng khả năng khám phá dữ liệu mạnh mẽ
- Thông qua việc áp dụng mô hình wide events và high-cardinality, hệ thống có thể lưu trữ và phân tích mọi sự kiện mà không cần tổng hợp trước
Bối cảnh và thay đổi
- LogHouse, nền tảng logging nội bộ cho ClickHouse Cloud, đã phát triển thành một hệ thống quy mô lớn chỉ trong 1 năm, với dữ liệu tăng từ 19PiB lên hơn 100PB và từ 37 nghìn tỷ hàng lên gần 500 nghìn tỷ hàng
- Ban đầu, toàn bộ telemetry được thu thập qua OpenTelemetry(OTel), nhưng trong môi trường dữ liệu khối lượng lớn, các vấn đề về hiệu năng, giới hạn tài nguyên, cùng tình trạng lãng phí CPU và mất dữ liệu trong quá trình chuyển đổi dữ liệu ngày càng nổi bật
Giới hạn của OTel và lý do đưa vào pipeline tùy biến
- Pipeline của OTel hoạt động rất kém hiệu quả vì log bị chuyển sang JSON, sau đó lại được ánh xạ về định dạng OTel, với nhiều lần chuyển đổi và marshalling lặp đi lặp lại
- Trên thực tế, để xử lý 20 triệu hàng mỗi giây bằng nền tảng OTel cần tới khoảng 8.000 lõi CPU
- Khi lưu lượng tăng đột biến, Collector bị quá tải dẫn đến hiện tượng rơi log, làm phát sinh dữ liệu không được thu thập
Triển khai SysEx và kiến trúc
- SysEx(System Tables Exporter) chuyển dữ liệu từ system tables của ClickHouse trực tiếp sang LogHouse với đúng kiểu dữ liệu gốc, không qua chuyển đổi
- Hệ thống đáp ứng SLA nội bộ bằng cơ chế scraping phân tán qua hash ring, buffer trễ thời gian và cửa sổ trượt để tránh mất dữ liệu
- Sử dụng Go và các khả năng tùy biến của ClickHouse client để truyền byte-to-byte mà không cần marshalling dữ liệu
- Để xử lý schema biến đổi, hệ thống áp dụng schema hash và quản lý schema động, đồng thời dùng Merge table engine để hợp nhất nhiều phiên bản schema thành một góc nhìn logic duy nhất
- Hỗ trợ thu thập bảng bộ nhớ theo snapshot, phục vụ các tác vụ chẩn đoán và phân tích nâng cao
Cải thiện hiệu năng và hiệu quả
- Sau khi đưa SysEx vào, OTel Collector xử lý 2 triệu log/giây với 800 CPU, trong khi SysEx có thể xử lý 37 triệu log với 70 CPU
- Mức cải thiện hiệu quả này giúp giảm mạnh mức sử dụng tài nguyên, ngăn mất sự kiện và hiện thực hóa môi trường hỗ trợ thời gian thực
Vai trò tiếp tục của OTel
- OTel vẫn quan trọng vì cung cấp nền tảng tiêu chuẩn, trung lập với nhà cung cấp, và vẫn là thành phần thiết yếu khi có sự cố dịch vụ hoặc trạng thái bất thường
- Ngay cả trong các tình huống crash hoặc bất thường mà SysEx không thể xử lý, OTel vẫn có thể ghi lại log
- Hiện tại hệ thống chỉ loại bỏ log dưới mức trace và thu thập từ mức info trở lên để tối ưu tài nguyên
Tích hợp UI, HyperDX và ClickStack
- Hệ thống đang dần chuyển từ UI Grafana tùy biến cũ sang UI native của ClickHouse dựa trên HyperDX
- HyperDX cung cấp khả năng tương thích hoàn toàn với nhiều kiểu dữ liệu phong phú của ClickHouse nhờ không phụ thuộc schema, hỗ trợ truy vấn Lucene và hỗ trợ SQL
- Dữ liệu từ nhiều cấu trúc bảng khác nhau và từ các exporter tùy biến cũng có thể được tích hợp mà không cần thay đổi UI
- Grafana tiếp tục đảm nhiệm metric dựa trên Prometheus và các dashboard cố định, giúp hai giải pháp bổ sung cho nhau
Tiếp nhận mô hình Wide Events và high-cardinality
- Wide events là cách tiếp cận đột phá, trong đó mỗi hàng chứa nhiều ngữ cảnh như query ID, tên Pod, thông tin phiên bản..., cho phép lưu toàn bộ dữ liệu mà không cần tổng hợp
- Khác với Prometheus và các hệ thống tương tự, cách này cho phép phân tích sâu và truy vấn linh hoạt mà không phải lo tổng hợp trước, giới hạn label hay bùng nổ cardinality
- Bằng cách chỉ thực hiện tổng hợp vào thời điểm phân tích dữ liệu, hệ thống có thể tối ưu đồng thời hiệu năng và chi phí ngay cả trong môi trường dữ liệu cực lớn
Trực quan hóa dữ liệu và độ linh hoạt truy vấn
- ClickHouse tích hợp rất tốt với Plotly, Jupyter notebook và nhiều công cụ trực quan hóa khác, cho phép sử dụng linh hoạt nhiều công cụ
- Ngoài khả năng khám phá nhanh qua HyperDX dựa trên Lucene, ClickHouse còn cho phép phân tích nguyên nhân chuyên sâu trực tiếp bằng các truy vấn quan hệ và điều kiện phức tạp như SQL, JOIN
Gia tăng các nguồn dữ liệu dựa trên Wide Event
- kubenetmon: mã nguồn mở giám sát mạng Kubernetes, dùng để phân tích lưu lượng L3/L4, kết nối và chi phí
- Kubernetes Event Exporter: sử dụng bản fork có thêm ClickHouse sink để theo dõi thay đổi trạng thái trong các cụm lớn, đồng thời đang thử nghiệm snapshot toàn bộ object
- Control Plane Data, RUM(Real User Monitoring), Istio Access Log và nhiều lớp dữ liệu khác giúp mở rộng đáng kể phạm vi diễn giải và khả năng phân tích tương quan
Các cân nhắc vận hành và hướng đi sắp tới
- SysEx có thể bị lộ trong log hoặc metric khi đang truy vấn, nhưng được thiết kế với giới hạn bộ nhớ và cấu trúc giảm thiểu tác động khi lỗi xảy ra
- Zero-impact scraping: đang nghiên cứu cách tiếp cận loại bỏ tận gốc cả tác động lên cluster, thông qua kiến trúc tách rời hoàn toàn, chẳng hạn sử dụng plain rewritable disk dựa trên S3
- OTel vẫn là thành phần quan trọng để đảm bảo thu thập log ở giai đoạn đầu dịch vụ hoặc trong trạng thái bất thường, nhưng khi cách tiếp cận zero-impact ổn định hơn, mức độ phụ thuộc dự kiến sẽ tiếp tục giảm
Sự phát triển và ứng dụng của kiểu JSON trong ClickHouse
- Kiểu JSON đã chính thức GA, cho phép tạo cột động theo từng field, hỗ trợ nhiều kiểu dữ liệu và linh hoạt ứng phó với bùng nổ schema
- Do việc tối ưu truy vấn JSON với số lượng cột lớn chưa hoàn hảo, hệ thống đang tiếp tục tinh chỉnh cách tiếp cận như lưu song song theo từng dạng và tái khẳng định tính thực tiễn của Map type
- Kết hợp với HyperDX, hệ thống có thể tự động trích xuất và phân tích các field Map và JSON, với kế hoạch mở rộng sử dụng JSON hơn nữa trong tương lai
Kết luận và thay đổi về văn hóa
- LogHouse giờ đây đã trở thành nền tảng quan sát cốt lõi cho vận hành ClickHouse Cloud, từ phân tích hiệu năng đến debugging thời gian thực
- Dù mục tiêu ban đầu là cắt giảm chi phí, việc đưa vào các công cụ tùy biến như SysEx, phối hợp với OTel và mở rộng UI linh hoạt dựa trên HyperDX đã tạo ra một sự chuyển đổi kỹ thuật và văn hóa
- Mô hình dữ liệu dựa trên Wide Event ở quy mô lớn với độ chính xác cao đang mang lại giá trị và hiệu quả mới cho kỹ thuật, hỗ trợ và phân tích dữ liệu
- Trong tương lai, dựa trên kinh nghiệm thu được ở quy mô 100PB và 500 nghìn tỷ hàng, hệ thống sẽ tiếp tục dẫn dắt tương lai của observability
1 bình luận
Ý kiến trên Hacker News