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:

Cơ chế hoạt động

Tích hợp OpenTelemetry trong ứng dụng

SigNoz Collector thu thập dữ liệu

Lưu trữ dữ liệu

Hiển thị dữ liệu qua SigNoz Frontend

Quy trình thu thập và theo dõi dữ liệu

Ưu điểm của SigNoz

Việc gửi dữ liệu trace, metrics và logs đến Collector có ảnh hưởng đến hiệu năng của ứng dụng không?

Việc gửi dữ liệu trace, metrics, và logs đến OpenTelemetry Collector trong quá trình giám sát ứng dụng có thể có ảnh hưởng nhỏ đến hiệu năng, nhưng OpenTelemetry và SigNoz được thiết kế để giảm thiểu tối đa tác động này. Mức độ ảnh hưởng phụ thuộc vào nhiều yếu tố như cách bạn cấu hình OpenTelemetry SDK, khối lượng dữ liệu giám sát, và cách thức truyền tải dữ liệu.

Tác động đến hiệu năng của ứng dụng

Các yếu tố ảnh hưởng đến hiệu năng

Một số yếu tố có thể ảnh hưởng đến hiệu năng ứng dụng khi tích hợp SigNoz và OpenTelemetry:

Giảm thiểu tác động đến hiệu năng

Có một số phương pháp để giảm thiểu tác động của việc thu thập dữ liệu lên hiệu năng ứng dụng:

Cân bằng giữa chi phí giám sát và hiệu quả

Mục tiêu của việc sử dụng OpenTelemetry và SigNoz là để thu thập dữ liệu có giá trị về hiệu năng và tình trạng ứng dụng mà không ảnh hưởng quá nhiều đến chính hiệu năng của ứng dụng. Dưới đây là một số cân nhắc để đạt được sự cân bằng này:

Tác động tổng thể

Giao thức HTTP và gRPC

Khi sử dụng OpenTelemetry để gửi dữ liệu (traces, metrics, logs) từ ứng dụng tới Collector, có hai giao thức chính thường được sử dụng là HTTP và gRPC. Cả hai đều có thể truyền dữ liệu qua giao thức OTLP (OpenTelemetry Protocol), nhưng chúng khác nhau về cơ chế hoạt động, hiệu suất, và một số khía cạnh kỹ thuật. Dưới đây là sự khác nhau giữa hai phương pháp này:

HTTP vs gRPC: Tổng quan

Sự khác biệt chi tiết giữa HTTP và gRPC

Khi nào sử dụng HTTP và khi nào sử dụng gRPC?

Khi nên sử dụng HTTP

Khi nên sử dụng gRPC

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