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:
- Sao chép nội dung của
signoz.yaml
từ PR. - Trong Coolify, tạo một dịch vụ Docker Compose mới và chọn máy chủ để lưu trữ.
- Dán nội dung của
signoz.yaml
vào trường "Docker Compose file". - Đổ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.
- Đả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.com
vàhttps://signoz-http.example.com
. - Mở cài đặt dịch vụ "Otel Collector".
- 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:
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:
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 Async
và Init Clickhouse
khỏi kiểm tra sức khỏe.
- Mở cài đặt của dịch vụ.
- Đánh dấu vào "Exclude from service status" và lưu cài đặt.
- 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ạnghost:port
.SIGNOZ_EMAILING_SMTP_FROM
là địa chỉ email sử dụng trong trường From.SIGNOZ_EMAILING_SMTP_AUTH_USERNAME
vàSIGNOZ_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ạnghost:port
.SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__FROM
là địa chỉ email sử dụng trong trường From.SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__AUTH__USERNAME
vàSIGNOZ_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:
- Chỉnh sửa Docker Compose trong Coolify.
- Thêm các biến mong muốn vào
environment
của containersignoz
với định dạng:- <VARIABLE_NAME>=${<VARIABLE_NAME>}
. Ví dụ:SIGNOZ_EMAILING_SMTP_FROM=${SIGNOZ_EMAILING_SMTP_FROM}
. - 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.
- Mở dịch vụ trong Coolify.
- Ở 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".
- 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.