Observability - Next Steps để có data
✅ Đã hoàn thành
- ✅ ClickHouse connection string đã được fix
- ✅ Query Service đang chạy
- ✅ OTEL Collector đang chạy
- ✅ Databases đã tồn tại (
signoz_traces,signoz_metrics,signoz_logs)
⚠️ Vấn đề hiện tại
ClickHouse chưa có bảng - Query Service sẽ tự động tạo bảng khi:
- Có request đầu tiên đến Query Service API
- Hoặc khi có data đầu tiên được gửi từ services
🚀 Flow tiếp theo
Bước 1: Trigger Query Service để tạo bảng
Query Service sẽ tự động tạo bảng khi có request. Có 2 cách:
Cách 1: Truy cập Signoz UI (Recommended)
- Mở browser: http://localhost:3301
- Đăng nhập hoặc tạo account (nếu lần đầu)
- Vào bất kỳ section nào (Traces, Metrics, Logs)
- Query Service sẽ tự động tạo bảng khi xử lý request đầu tiên
Cách 2: Gọi Query Service API trực tiếp
# Thử các endpoint này để trigger table creation:
curl http://localhost:8083/api/v1/services
curl http://localhost:8083/api/v1/dashboards
curl http://localhost:8083/api/v1/query_range
Bước 2: QUAN TRỌNG - Start Services
Services KHÔNG chạy trong Docker. Bạn cần start chúng bằng NX:
# Terminal 1: Start tất cả services
yarn dev
# Hoặc start từng service:
yarn dev:gateway # API Gateway (port 3000)
yarn dev:booking # Booking Service (port 3003)
Kiểm tra services đang chạy:
# Kiểm tra ports
lsof -i :3000 # API Gateway
lsof -i :3003 # Booking Service
Bước 3: Kiểm tra Services có gửi data
Khi start services, bạn nên thấy trong logs:
✅ OpenTelemetry initialized for service: api-gateway
OTLP Endpoint: http://localhost:4318
Nếu không thấy → Kiểm tra environment variables:
# Trong .env hoặc .env.development
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
Bước 4: Tạo Traffic
# Test API Gateway
curl http://localhost:3000/health
# Gửi nhiều requests để có data
for i in {1..10}; do
curl http://localhost:3000/health
sleep 1
done
Bước 5: Kiểm tra bảng đã được tạo
Sau khi có request đến Query Service hoặc Signoz UI:
# Kiểm tra bảng trong signoz_traces
docker exec football-booking-backend-boilerplate-clickhouse-1 \
clickhouse-client --password clickhouse123 \
--query "SHOW TABLES FROM signoz_traces"
# Nếu thấy các bảng như:
# - distributed_signoz_index_v3
# - distributed_signoz_spans_v3
# → ✅ Bảng đã được tạo!
Bước 6: Kiểm tra trong Signoz UI
- Mở http://localhost:3301
- Vào Traces → Chọn "Last 15 minutes"
- Đợi 30-60 giây sau khi tạo traffic
- Bạn nên thấy traces!
🔍 Troubleshooting
Nếu vẫn không có bảng sau khi truy cập UI:
- Kiểm tra Query Service logs:
docker logs --tail 50 football-booking-backend-boilerplate-signoz-query-service-1 | grep -i "error\|table\|clickhouse"
- Kiểm tra ClickHouse connection:
docker exec football-booking-backend-boilerplate-clickhouse-1 \
clickhouse-client --password clickhouse123 \
--query "SELECT 1"
- Restart Query Service:
docker compose -f docker-compose.dev.yml restart signoz-query-service
sleep 60
Nếu services không gửi data:
- Kiểm tra services có chạy không:
lsof -i :3000
lsof -i :3003
- Kiểm tra OTEL Collector có nhận data không:
docker logs --tail 50 football-booking-backend-boilerplate-signoz-otel-collector-1 | grep -i "received\|exported"
- Kiểm tra network connectivity:
# Từ máy local, test kết nối đến collector
curl -v http://localhost:4318/v1/traces -X POST
📋 Checklist
Trước khi kiểm tra Signoz:
- [ ] Signoz services đang chạy (
docker ps | grep signoz) - [ ] Đã truy cập Signoz UI (http://localhost:3301) để trigger table creation
- [ ] Services đang chạy (
yarn devhoặcnx serve) - [ ] Services có logs "OpenTelemetry initialized"
- [ ] Đã tạo traffic (gửi requests đến services)
- [ ] Đã đợi 30-60 giây sau khi tạo traffic
- [ ] ClickHouse có bảng (check bằng SHOW TABLES)
🎯 Tóm tắt
Vấn đề chính:
- ClickHouse chưa có bảng → Query Service sẽ tự tạo khi có request đầu tiên
- Services chưa chạy → Không có data để gửi
Giải pháp:
- ✅ Truy cập Signoz UI để trigger table creation
- ⚠️ Start services bằng
yarn dev(QUAN TRỌNG!) - ✅ Tạo traffic
- ✅ Kiểm tra Signoz UI
📚 Tài liệu tham khảo
docs/OBSERVABILITY-FIX-GUIDE.md- Hướng dẫn fix chi tiếtdocs/OBSERVABILITY-VIETNAMESE.md- FAQ tiếng Việtdocs/OBSERVABILITY-TROUBLESHOOTING.md- Troubleshooting guide