TungNT (Blue)

tungnt.blue@gmail.com

User Tools

Site Tools


development:system:signoz

This is an old revision of the document!


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki