development:system:signoz
This is an old revision of the document!
Table of Contents
SigNoz
SigNoz là một hệ thống giám sát và theo dõi phân tán dựa trên OpenTelemetry, cung cấp khả năng theo dõi hiệu suất và log của các ứng dụng phân tán. Dưới đây là cơ chế hoạt động của SigNoz và cách nó thu thập, xử lý, và hiển thị dữ liệu từ các dịch vụ của bạn:
Kiến trúc của SigNoz
SigNoz có một kiến trúc gồm nhiều thành phần chính:
- Ứng dụng phân tán (Distributed Applications): Đây là các ứng dụng mà bạn đang theo dõi, bao gồm các dịch vụ microservices hoặc các ứng dụng lớn.
- OpenTelemetry SDK: Mỗi ứng dụng cần phải tích hợp SDK của OpenTelemetry để thu thập traces, metrics, và logs.
- SigNoz Collector: Đây là thành phần thu thập dữ liệu từ các ứng dụng thông qua giao thức OTLP (OpenTelemetry Protocol). SigNoz Collector xử lý dữ liệu thu thập được và gửi đến hệ thống lưu trữ.
- Cơ sở dữ liệu:
- ClickHouse: Dùng để lưu trữ các dữ liệu trace và metrics hiệu năng.
- Kafka (tùy chọn): Một hệ thống nhắn tin dùng để xử lý dữ liệu theo thời gian thực giữa các thành phần.
- SigNoz Backend: Đảm nhận việc xử lý dữ liệu truy vấn từ cơ sở dữ liệu và cung cấp API cho giao diện người dùng (dashboard).
- SigNoz Frontend: Dashboard cho phép người dùng theo dõi các dịch vụ và sự kiện theo thời gian thực.
Cơ chế hoạt động
Tích hợp OpenTelemetry trong ứng dụng
- Instrumentation: Bạn cần tích hợp OpenTelemetry SDK vào ứng dụng của mình (có thể là ứng dụng PHP, Node.js, Python, Java, v.v.) để thu thập dữ liệu theo dõi.
- Traces: OpenTelemetry sẽ thu thập traces từ các yêu cầu HTTP, truy vấn cơ sở dữ liệu, xử lý sự kiện và các hành động quan trọng trong hệ thống của bạn.
- Metrics: OpenTelemetry cũng có thể thu thập metrics liên quan đến hiệu năng, ví dụ như độ trễ (latency), tỷ lệ lỗi, số lượng yêu cầu, v.v.
SigNoz Collector thu thập dữ liệu
- Ứng dụng gửi dữ liệu trace, metrics và logs đến Collector: Dữ liệu này được gửi qua giao thức OTLP tới SigNoz Collector thông qua endpoint (ví dụ: http://localhost:4318/v1/traces).
- Xử lý dữ liệu trong Collector: SigNoz Collector nhận dữ liệu này và có thể xử lý, lọc, hoặc chuyển đổi dữ liệu nếu cần trước khi gửi đến hệ thống lưu trữ.
Lưu trữ dữ liệu
- ClickHouse: Dữ liệu trace và metrics được gửi tới ClickHouse, một cơ sở dữ liệu hiệu năng cao dành cho việc xử lý lượng lớn dữ liệu theo thời gian thực.
- Kafka (tùy chọn): Trong một số triển khai, Kafka có thể được sử dụng để luân chuyển dữ liệu từ Collector sang ClickHouse.
Hiển thị dữ liệu qua SigNoz Frontend
- Giao diện người dùng (Dashboard): SigNoz Frontend là nơi hiển thị dữ liệu cho người dùng, bao gồm các trace, metrics, và logs. Người dùng có thể xem chi tiết về các request, dịch vụ và sự kiện cụ thể trong hệ thống, và tìm hiểu nguyên nhân gốc rễ của các vấn đề về hiệu năng.
- Phân tích chi tiết: SigNoz cho phép bạn phân tích từng trace chi tiết với các span, event, và các thuộc tính liên quan đến mỗi hành động trong hệ thống.
- Cảnh báo (Alerting): SigNoz cũng hỗ trợ hệ thống cảnh báo để thông báo cho người dùng khi phát hiện các sự cố dựa trên các ngưỡng đã cấu hình sẵn.
Quy trình thu thập và theo dõi dữ liệu
- Bước 1: OpenTelemetry SDK được tích hợp vào các ứng dụng của bạn (Laravel, Node.js, Go, v.v.).
- Bước 2: Ứng dụng tạo ra traces, metrics, và logs trong quá trình hoạt động (như xử lý yêu cầu HTTP, truy vấn cơ sở dữ liệu, v.v.).
- Bước 3: OpenTelemetry Collector nhận dữ liệu này và gửi đến cơ sở dữ liệu ClickHouse.
- Bước 4: Người dùng có thể truy cập dashboard của SigNoz để xem các trace, metrics và logs theo thời gian thực.
- Bước 5: Sử dụng dashboard để phân tích nguyên nhân gốc rễ của các vấn đề về hiệu suất hoặc lỗi.
Ưu điểm của SigNoz
- Theo dõi phân tán: Hỗ trợ theo dõi các ứng dụng phân tán, đặc biệt là các hệ thống microservices.
- Tích hợp với OpenTelemetry: Sử dụng OpenTelemetry, một tiêu chuẩn mở để thu thập dữ liệu theo dõi mà không bị ràng buộc vào một công cụ giám sát cụ thể.
- Lưu trữ dữ liệu hiệu quả: Sử dụng ClickHouse để lưu trữ dữ liệu theo thời gian thực với hiệu suất cao.
- Khả năng phân tích chi tiết: Hỗ trợ xem trace chi tiết, bao gồm các event và span liên quan, giúp bạn dễ dàng tìm ra điểm gây nghẽn trong hệ thống.
Cài đặt SigNoz
SigNoz yêu cầu Docker và Docker Compose để chạy.
Mở Terminal và thực hiện các lệnh dưới đây để tải và cài đặt SigNoz:
git clone https://github.com/SigNoz/signoz.git cd signoz/deploy/ ./install.sh ++++++++++++++++++ SUCCESS ++++++++++++++++++++++ 🟢 Your installation is complete! 🟢 Your frontend is running on http://localhost:3301 ℹ️ By default, retention period is set to 15 days for logs and traces, and 30 days for metrics. To change this, navigate to the General tab on the Settings page of SigNoz UI. For more details, refer to https://signoz.io/docs/userguide/retention-period ℹ️ To bring down SigNoz and clean volumes : docker-compose -f ./docker/clickhouse-setup/docker-compose.yaml down -v +++++++++++++++++++++++++++++++++++++++++++++++++
Truy cập SigNoz: Sau khi cài đặt hoàn tất, SigNoz sẽ chạy trên cổng 3301. Bạn có thể truy cập SigNoz thông qua trình duyệt tại địa chỉ: http://localhost:3301
tungnt@MacBook-Pro-cua-Nguyen-2 deploy % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b41f37920c44 signoz/frontend:0.56.0 "nginx -g 'daemon of…" 6 minutes ago Up 4 minutes 80/tcp, 0.0.0.0:3301->3301/tcp signoz-frontend 8610bbf57d2d gliderlabs/logspout:v3.2.14 "/bin/logspout syslo…" 6 minutes ago Up 4 minutes 80/tcp signoz-logspout 2edc839a6533 signoz/signoz-otel-collector:0.102.12 "/signoz-collector -…" 6 minutes ago Up 4 minutes 0.0.0.0:4317-4318->4317-4318/tcp signoz-otel-collector 25c604311ec7 signoz/alertmanager:0.23.7 "/bin/alertmanager -…" 6 minutes ago Up 4 minutes 9093/tcp signoz-alertmanager 27b434094a49 signoz/query-service:0.56.0 "./query-service -co…" 6 minutes ago Up 5 minutes (healthy) 8080/tcp signoz-query-service e52c78f52e83 clickhouse/clickhouse-server:24.1.2-alpine "/entrypoint.sh" 6 minutes ago Up 6 minutes (healthy) 0.0.0.0:8123->8123/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:9181->9181/tcp, 9009/tcp signoz-clickhouse 1166903ee8fb signoz/locust:1.2.3 "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 5557-5558/tcp, 8089/tcp load-hotrod 46540b384bac bitnami/zookeeper:3.7.1 "/opt/bitnami/script…" 6 minutes ago Up 6 minutes 0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp, 8080/tcp signoz-zookeeper-1 d6910ee05e61 jaegertracing/example-hotrod:1.30 "/go/bin/hotrod-linu…" 6 minutes ago Up 6 minutes 8080-8083/tcp hotrod
tungnt@MacBook-Pro-cua-Nguyen-2 deploy % docker logs -f signoz-frontend 2024/10/17 07:33:02 [notice] 1#1: using the "epoll" event method 2024/10/17 07:33:02 [notice] 1#1: nginx/1.26.2 2024/10/17 07:33:02 [notice] 1#1: built by gcc 13.2.1 20240309 (Alpine 13.2.1_git20240309) 2024/10/17 07:33:02 [notice] 1#1: OS: Linux 6.10.4-linuxkit 2024/10/17 07:33:02 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2024/10/17 07:33:02 [notice] 1#1: start worker processes 2024/10/17 07:33:02 [notice] 1#1: start worker process 6 2024/10/17 07:33:02 [notice] 1#1: start worker process 7
Cài đặt thư viện PHP
Link hướng dẫn:
pecl install opentelemetry pecl install protobuf php -m | grep opentelemetry
composer config allow-plugins.php-http/discovery false composer require \ open-telemetry/sdk \ open-telemetry/exporter-otlp \ php-http/guzzle7-adapter \ open-telemetry/opentelemetry-auto-slim
development/system/signoz.1729217126.txt.gz · Last modified: 2024/10/18 02:05 by tungnt