
Mở đầu
Trong kỷ nguyên của Microservices, việc giám sát hệ thống không còn chỉ dừng lại ở kiểm tra xem server “sống hay chết”. Chúng ta cần hiểu sâu hơn về luồng đi của request, độ trễ giữa các dịch vụ và log chi tiết để tìm ra nguyên nhân gốc rễ (root cause) khi có sự cố. Tuy nhiên, việc sử dụng các công cụ rời rạc cho Logs, Metrics và Traces thường gây ra sự phân mảnh dữ liệu.
Hôm nay, chúng ta sẽ cùng tìm hiểu về SigNoz – một nền tảng observability mã nguồn mở mạnh mẽ, kết hợp với tiêu chuẩn OpenTelemetry, giúp bạn xây dựng hệ thống monitoring “All-in-one” hoàn hảo.
SigNoz là gì?
SigNoz là một công cụ giám sát hiệu năng ứng dụng (APM – Application Performance Monitoring) mã nguồn mở. Nó được thiết kế để giúp các nhà phát triển xác định các vấn đề và giải quyết các tắc nghẽn trong ứng dụng của họ.
Điểm đặc biệt của SigNoz là nó hỗ trợ đầy đủ 3 trụ cột của Observability:
- Metrics: CPU, RAM, tỷ lệ lỗi, thông lượng (throughput).
- Traces: Theo dõi hành trình của một request qua các service khác nhau.
- Logs: Lưu trữ và truy vấn nhật ký hệ thống.
Tại sao nên chọn SigNoz thay vì các giải pháp khác?
Thông thường, các doanh nghiệp thường tìm đến Datadog hoặc New Relic.
- Phải thừa nhận, đây là những giải pháp tiệm cận sự hoàn hảo. Nhưng cái giá phải trả thì… “quá đắt“.
- Với một startup quy mô nhỏ, việc chi vài nghìn USD mỗi tháng chỉ để xem log có vẻ là một sự xa xỉ không cần thiết.
Ngoài ra còn có một “combo huỷ diệt” thực sự trong thế giới mã nguồn mở. Đầy đủ, mạnh mẽ nhưng lại cực kỳ rời rạc: Grafana Tempo, Grafana Loki, Prometheus, influxdb, Kibana, Grafana
- Bạn phải học cách vận hành Prometheus cho Metrics, Loki cho Logs, Tempo cho Tracing.
- Việc kết nối chúng lại để chúng “hiểu” nhau là một cực hình.
- Mình muốn dành thời gian để xây dựng sản phẩm, chứ không muốn trở thành một Full-time Monitoring Engineer chỉ để duy trì cái stack này.
Còn các giải pháp Cloud (Aws Cloudwatch, X-Ray, Trace) thì sao?
- Dù đang chạy trên hạ tầng AWS, nhưng thú thực mình không thể “thẩm” nổi giao diện của CloudWatch.
- Nó mang lại cảm giác cũ kỹ, rời rạc và trải nghiệm người dùng (UX) không được mượt mà.
SigNoz đang nổi lên như một đối trọng đáng gờm nhờ các ưu điểm:
- Mã nguồn mở & Tự quản lý (Self-hosted): Bạn hoàn toàn kiểm soát dữ liệu của mình, không lo ngại về vấn đề bảo mật dữ liệu khi đẩy lên cloud bên thứ ba.
- Chi phí tối ưu: Thay vì trả phí dựa trên số lượng node hay lượng dữ liệu khổng lồ như các dịch vụ SaaS, bạn chỉ trả chi phí hạ tầng để chạy SigNoz.
- Dựa trên tiêu chuẩn OpenTelemetry: SigNoz sử dụng OpenTelemetry làm chuẩn thu thập dữ liệu, giúp bạn dễ dàng chuyển đổi hoặc tích hợp mà không bị khóa chặt vào một nhà cung cấp (vendor lock-in).
Giao diện Dashboard của SigNoz
Số liệu ứng dụng

Distributed Tracing
Đây là một cái nhìn toàn diện end-to-end về hành trình của một request khi nó đi qua nhiều service, bao gồm các span và một trace ID. Chúng cực kỳ hữu ích trong việc xác định nơi độ trễ hoặc lỗi được sinh ra trong các hệ thống microservices.

Logs Management
Đây là các bản ghi sự kiện có dấu thời gian, ghi lại từng sự kiện riêng lẻ xảy ra, chẳng hạn như lỗi, cảnh báo và thông báo thông tin. Chúng được sử dụng để debug các sự cố cụ thể và hiểu điều gì đã xảy ra và tại sao.

Infrastructure Monitoring
Các dữ liệu chuỗi thời gian như counters, gauges và histograms. Chúng thể hiện xu hướng và mức sử dụng tài nguyên theo thời gian, như CPU, bộ nhớ, tốc độ request, tỷ lệ lỗi và các percentiles của độ trễ. Chúng được dùng cho dashboard, cảnh báo và phân tích xu hướng dài hạn.

Giám sát lỗi ngoại lệ

Kiến trúc hệ thống SigNoz
OpenTelemetry: Ngôn ngữ chung của hệ thống phân tán
Nếu mỗi dịch vụ trong hệ thống của bạn nói một “ngôn ngữ” giám sát khác nhau, việc hiểu được toàn bộ bức tranh là điều không thể. OpenTelemetry (OTel) ra đời để giải quyết bài toán đó.
- Lớp trừu tượng mạnh mẽ: OTel không phải là nơi lưu trữ dữ liệu, mà là một framework tiêu chuẩn hóa cách chúng ta tạo ra (generate) và thu thập (collect) dữ liệu quan sát. Nó đóng vai trò như một “phiên dịch viên”, biến mọi tín hiệu từ logs, metrics đến traces về cùng một định dạng chuẩn.
- Dễ tuỳ biến: Đây là giá trị cốt lõi nhất. Với OTel, bạn không còn bị “khóa chặt” (vendor lock-in) vào Datadog hay New Relic. Bạn có thể đổi nhà cung cấp backend chỉ bằng cách thay đổi cấu hình dẫn luồng dữ liệu, mà không cần sửa một dòng code logic nào.
- Tracing xuyên suốt: OTel cho phép bạn gắn một “mã định danh” (Trace ID) vào mỗi request ngay từ khi nó bước vào hệ thống. Nhờ đó, bạn có thể theo dõi hành trình của nó đi qua hàng chục microservices, có thể ghi lại mọi ngõ ngách của dữ liệu.

Nền tảng giám sát All-in-one
Sức mạnh của SigNoz đến từ sự kết hợp chặt chẽ với OpenTelemetry (OTel). Thay vì cài đặt nhiều agent khác nhau, bạn chỉ cần một OTel Collector duy nhất để thu thập mọi loại dữ liệu.
Cấu trúc cơ bản bao gồm:
- OpenTelemetry Collector: Thu thập dữ liệu từ ứng dụng.
- ClickHouse: Cơ sở dữ liệu cột (columnar database) hiệu năng cao dùng để lưu trữ dữ liệu giám sát.
- Query Service & Frontend: Giao diện người dùng để truy vấn và hiển thị biểu đồ.

Ngôn ngữ được hỗ trợ
SigNoz sử dụng OpenTelemetry làm thư viện để trang bị cho các ứng dụng của bạn. Vì vậy, bất kỳ khung và ngôn ngữ nào được OpenTelemetry hỗ trợ cũng được SigNoz hỗ trợ.
Một số ngôn ngữ chính là:
- Java
- Python
- Node.js
- Go
- PHP
- .NET
- Ruby
- Elixir
- Rust
Bạn có thể tìm thấy danh sách đầy đủ các ngôn ngữ tại đây: https://opentelemetry.io/docs/
Bắt tay vào làm luôn
Việc cài đặt SigNoz khá đơn giản thông qua Docker Compose hoặc Helm Chart trên Kubernetes.
Các bước triển khai cơ bản bao gồm:
- Chuẩn hóa Log: Chuyển đổi log của Spring Boot sang định dạng JSON bằng Logback (một tính năng có sẵn trong Spring Boot).
- Triển khai SigNoz: thông qua Docker — nhanh, gọn và không cần tốn quá nhiều tài nguyên cấu hình.
- Kích hoạt OpenTelemetry: Chạy file OpenTelemetry Agent cùng ứng dụng Java (mình thêm trong Dockerfile như bên dưới). Đây là bước kỳ diệu nhất: Không cần chạm vào một dòng code logic nào, dữ liệu bắt đầu đổ về SigNoz ngay lập tức.
ENTRYPOINT ["java", "-javaagent:/opentelemetry-javaagent.jar", "-Dotel.exporter.otlp.protocol=grpc", "-jar", "/myapp.jar"]Kết quả:
- Mọi thứ hoạt động gần như ngay lập tức.
- Chỉ mất vỏn vẹn 2 tuần để mình đưa phiên bản đầu tiên lên Production (bao gồm cấu hình mọi thứ, dựng server EC2 cho test và production, thiết lập backup các thứ).
Lần đầu tiên sau nhiều năm vận hành, cả team mình đã có thể:
- Xem Traces: Tận mắt nhìn thấy một request đi qua các service như thế nào.
- Xác định Bottlenecks: Theo dõi chính xác service nào đang kéo chậm toàn bộ hệ thống (không còn đoán mò p99 dựa trên trực giác).
- Debugging: Rút ngắn thời gian tìm lỗi từ hàng giờ xuống còn vài phút.
Kết luận
Việc xây dựng một hệ thống giám sát toàn diện không còn là đặc quyền của các tập đoàn lớn với ngân sách “khủng”. Với SigNoz và OpenTelemetry, bạn có thể sở hữu một nền tảng Observability mạnh mẽ, linh hoạt và tiết kiệm chi phí.
Nếu bạn đang tìm kiếm một giải pháp thay thế cho Datadog hoặc đơn giản là muốn quản lý Logs/Metrics/Traces tập trung, SigNoz chắc chắn là cái tên đứng đầu danh sách trải nghiệm.
Trích: Quang Chiến Trần – Senior Software Engineer tại Assurup

