0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hướng dẫn tự host SigNoz bằng Coolify

Đăng vào 2 ngày trước

• 6 phút đọc

Hướng dẫn tự host SigNoz bằng Coolify

Giới thiệu

Trong thế giới phát triển phần mềm hiện đại, việc giám sát (observability) ứng dụng trở thành một phần quan trọng để đảm bảo hiệu suất và độ tin cậy. Tuy nhiên, việc thiết lập các dịch vụ giám sát có thể tốn thời gian và công sức. May mắn thay, Coolify đã cung cấp một mẫu để dễ dàng triển khai SigNoz, một nền tảng giám sát mã nguồn mở. Hướng dẫn này sẽ giúp bạn thực hiện điều đó một cách nhanh chóng và hiệu quả.

Thêm dịch vụ SigNoz

Tại thời điểm viết bài này, mẫu SigNoz vẫn đang trong tình trạng PR. Để thêm nó vào Coolify, bạn cần thực hiện các bước sau:

  1. Sao chép nội dung của signoz.yaml từ PR.
  2. Trong Coolify, tạo một dịch vụ Docker Compose mới và chọn máy chủ để lưu trữ.
  3. Dán nội dung của signoz.yaml vào trường "Docker Compose file".
  4. Đổi tên dịch vụ thành SigNoz.

Cấu hình URL

Sau khi tạo dịch vụ, bạn cần cấu hình các URL sẽ sử dụng với SigNoz.

Đầu tiên, cập nhật URL của container SigNoz. Ví dụ: https://signoz.example.com:8080.

Tiếp theo, chúng ta sẽ cấu hình Otel Collector. Dịch vụ này sẽ thu thập các trace, metrics và logs từ các ứng dụng và dịch vụ của bạn, hỗ trợ nhiều định dạng khác nhau: định dạng GRPC và HTTP của OTel, metrics Prometheus, và nhiều định dạng logs khác (FluentBit/FluentD, syslogs, logs từ dịch vụ đám mây, ...).

Mỗi định dạng sẽ được nhận trên một cổng khác nhau, điều này chúng ta cần phải mở ra để Otel Collector có thể truy cập. Bạn có hai chiến lược để thực hiện điều này:

  • Cấu hình một miền cho mỗi receiver, hoặc...
  • Mở trực tiếp các cổng tới máy chủ và thế giới bên ngoài.

Lựa chọn nào bạn thích phụ thuộc vào nhu cầu bảo mật và cách bạn kiến trúc các miền của mình.

Một subdomain cho mỗi receiver

Giải pháp này chỉ yêu cầu bạn ánh xạ subdomain của mình tới dịch vụ Otel Collector. Chúng ta sẽ xem xét hai receiver mặc định, receiver HTTP và GRPC.

  1. Đảm bảo rằng các subdomain của bạn đã được đăng ký và trỏ tới máy chủ của bạn. Trong trường hợp của tôi, tôi đã chọn https://signoz-grpc.example.comhttps://signoz-http.example.com.
  2. Mở cài đặt dịch vụ "Otel Collector".
  3. Thêm các miền của bạn với định dạng https://<subdomain>.example.com:<port in container>, cách nhau bằng dấu phẩy.

Ví dụ, đây là cấu hình của tôi:

Copy
https://signoz-grpc.example.com:4317,https://signoz-http.example.com:4318

Nếu bạn muốn nhận logs từ Heroku, bạn có thể thêm một subdomain để nhận logs: ...,https://signoz-heroku.example.com:8081.

Mở các cổng trên máy chủ

Nếu bạn thích sử dụng một miền duy nhất cho tất cả các receiver, bạn có thể chỉnh sửa Docker Compose để mở trực tiếp các cổng trên container otel-collector:

Copy
services:
  # ...
otel-collector:
  image: signoz/signoz-otel-collector:latest
  container_name: signoz-otel-collector
  # ...
  ports:
  - 4317:4317 # GRPC Collector
  - 4318:4318 # HTTP Collector

  # ...

Bây giờ bạn có thể thêm cổng vào URL dịch vụ của mình để gửi dữ liệu tới receiver: https://signoz.example.com:4318

Sửa chữa kiểm tra sức khỏe

Nếu bạn đã thử chạy các dịch vụ, bạn sẽ thấy Coolify liên tục báo cáo SigNoz là không khỏe. Điều này xảy ra vì một số container thoát sau khi thực hiện nhiệm vụ của chúng, khiến Coolify coi chúng là không khỏe.

Để Coolify báo cáo trạng thái sức khỏe đúng cách, bạn sẽ cần loại trừ Schema Migrator Sync, Schema Migrator AsyncInit Clickhouse khỏi kiểm tra sức khỏe.

  1. Mở cài đặt của dịch vụ.
  2. Đánh dấu vào "Exclude from service status" và lưu cài đặt.
  3. Khi bạn đã loại trừ ba dịch vụ này, bạn có thể (cài đặt lại) tất cả các dịch vụ SigNoz để kiểm tra sức khỏe bỏ qua những container này.

Kích hoạt gửi email bằng SMTP

SigNoz sử dụng email cho hai mục đích: mời người dùng và gửi thông báo.

Email của SigNoz

Để kích hoạt gửi email bằng SMTP (bao gồm mời các thành viên mới), bạn cần thiết lập các biến sau trong tab Biến Môi Trường của dịch vụ Coolify:

  • SIGNOZ_EMAILING_ENABLED kích hoạt khả năng gửi email trong SigNoz.
  • SIGNOZ_EMAILING_SMTP_ADDRESS là địa chỉ của máy chủ SMTP sử dụng, theo định dạng host:port.
  • SIGNOZ_EMAILING_SMTP_FROM là địa chỉ email sử dụng trong trường From.
  • SIGNOZ_EMAILING_SMTP_AUTH_USERNAMESIGNOZ_EMAILING_SMTP_AUTH_PASSWORD được sử dụng để xác thực với máy chủ SMTP.

Nhiều biến môi trường khác cũng có sẵn để sử dụng xác thực qua Identity / Secret hoặc sử dụng TLS thay vì SmartTLS. Đọc thêm về việc truyền biến môi trường không có trong mẫu để tìm hiểu cách thêm chúng.

Email của Alert Manager

Cảnh báo qua email chỉ có thể được gửi nếu một máy chủ SMTP được cấu hình đặc biệt cho alert manager. Cấu hình SMTP toàn cục và cấu hình Alert Manager sử dụng các biến môi trường khác nhau.

Lưu ý: SigNoz hiện có một vấn đề đã biết ngăn cản việc lưu cấu hình cảnh báo qua email. Bạn có thể theo dõi tiến trình của vấn đề này trong trình theo dõi lỗi của họ.

Để kích hoạt cảnh báo qua email, bạn cần thiết lập các biến sau trong tab Biến Môi Trường của dịch vụ Coolify:

  • SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__SMARTHOST là địa chỉ của máy chủ SMTP sử dụng, theo định dạng host:port.
  • SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__FROM là địa chỉ email sử dụng trong trường From.
  • SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__AUTH__USERNAMESIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__AUTH__PASSWORD được sử dụng để xác thực với máy chủ SMTP.

Nhiều biến môi trường khác cũng có sẵn để sử dụng xác thực qua Identity / Secret hoặc sử dụng TLS thay vì SmartTLS. Đọc thêm về việc truyền biến môi trường không có trong mẫu để tìm hiểu cách thêm chúng.

Truyền biến môi trường không có trong mẫu

Bạn có thể muốn định nghĩa các biến môi trường không có trong mẫu của SigNoz (ví dụ như các cài đặt TLS mới cho cấu hình email SMTP / Alert Manager). May mắn thay, quy trình này rất đơn giản với Coolify:

  1. Chỉnh sửa Docker Compose trong Coolify.
  2. Thêm các biến mong muốn vào environment của container signoz với định dạng: - <VARIABLE_NAME>=${<VARIABLE_NAME>}. Ví dụ: SIGNOZ_EMAILING_SMTP_FROM=${SIGNOZ_EMAILING_SMTP_FROM}.
  3. Vào tab Biến Môi Trường của dịch vụ Coolify và đặt giá trị cho các biến mới thêm vào.

Cập nhật SigNoz

Để cập nhật SigNoz lên phiên bản mới hơn, bạn chỉ cần kéo phiên bản mới nhất trong Coolify.

  1. Mở dịch vụ trong Coolify.
  2. Ở góc trên bên phải màn hình, nhấp vào "Advanced" và chọn "Pull Latest Images and Restart".
  3. Chờ quá trình di chuyển và khởi động lại đầy đủ của SigNoz (có thể mất vài phút).

Kết luận

Giờ đây, SigNoz đã được thiết lập và sẵn sàng để nhận logs và traces từ các ứng dụng và hạ tầng của bạn.

Tài liệu của họ là một khởi đầu tốt để tìm hiểu cách onboard các tài nguyên của bạn. Tài liệu OpenTelemetry cũng là một tài liệu tham khảo, chứa các bước được khuyến nghị để tối ưu hóa việc sử dụng các SDK và công cụ OpenTelemetry cho stack của bạn.

Bạn có tìm ra cách nào để cải thiện mẫu Coolify, cài đặt SigNoz, hoặc muốn đề xuất một thay đổi nào? Hãy cho tôi biết! Tôi rất muốn biết cách làm cho SigNoz dễ sử dụng hơn nữa.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào