
Clone Google Analytics
Dựa trên việc chúng ta được biết overview hệ thống như thế kia chúng ta sẽ xử lý các thành phần như sau (talk is cheap, this is my github repo: https://github.com/JulianoLoren/nginx_logging):
1. ga.js:
file này sẽ làm nhiệm vụ tích hợp đơn giản cho các website như với GA. Ví dụ bạn hoàn toàn có thể gọi như sau để tracking các event của hệ thống. Các thông tin như customer_id, session_id sẽ tự động được file này khởi tạo sẵn. Việc của bạn chỉ là gửi các event có ý nghĩa thôi
// Ví dụ tracking trong e-commerce
kva('create', 'YOUR_TRACKING_ID', 'auto');
// Track page views
kva('send', 'pageview');
// Track user actions
kva('send', 'event', 'ecommerce', 'add_to_cart', 'product_123', 1);
kva('send', 'event', 'user_interaction', 'click', 'header_menu');
// Track custom data
kva('send', 'event', 'form', 'submit', {
form_id: 'contact_form',
user_type: 'premium'
});
Ví dụ chỉ với các hàm đơn giản trên requests GET sau sẽ được bắn lên Analystic server với rất nhiều thông tin. Các bạn có thể thấy các thông tin sau:
- cid: customer id là id theo subdomain. Cái này sống 10 năm không đổi với trình duyệt hiện tại
- gid: global id, cái này KHÔNG theo subdomain và cũng sống 10 năm để tracking cross-domain.
- kv_session: session tồn tại và sẽ bị đổi sau 30ph không có tác động nào từ khách hàng y như GA https://support.google.com/analytics/answer/9191807?hl=en
- ...

2. Google Analytics server:
Phần này chúng ta đơn giản là dựng lên 1 phiên bản khác của nginx là OpenResty. Tôi phải dùng OpenResty vì nó có hỗ trợ lưu log POST rất đơn giản.
Mỗi khi nhận được log POST/ GET từ file js bắn lên server từ client thì OpenResty chỉ đơn giản là append vào file access.log (nên set rotate log) đúng format là xong. Không có API hay DB gì hết mất thời gian và dễ chết.
3. Processing engine:
Ở phần này tôi dùng LogStash để định kỳ đọc access.log của OpenResty. Đây cũng là thành phần dễ chết nhất trong hệ thống này. Nó chỉ nhận nhiệm vụ đọc + ship log nên nếu nửa đêm nó chết cứ bình tĩnh, log vẫn có ở Analystic server ở mục trước, sáng mai tới công ty restart lại là xong, không mất chút log nào.
Ở LogStash tôi mở rộng bài toán ra để có thể ingest vào DataLake như S3, GCS; ingest vào queue ... hoặc bất kỳ DB nào nó hỗ trợ https://www.elastic.co/docs/reference/logstash/plugins/output-plugins
4. Database:
Từ Logstash bạn có thể ingest vào bất kỳ hệ thống DB, DWH, queue hay lưu file nào nó hỗ trợ https://www.elastic.co/docs/reference/logstash/plugins/output-plugins
5. Các tool BI:
Các tool này nên đọc từ DWH
Kết
Tóm gọn lại chúng ta có hệ thống mới như sau

🔥 Ưu Điểm So Với Google Analytics
1. Quyền Sở Hữu Dữ Liệu Hoàn Toàn
- ✅ Data Ownership: Toàn bộ dữ liệu thuộc về bạn, lưu trữ trên infrastructure riêng
- ✅ No Data Sampling: Không bị giới hạn sampling như GA (GA4 có thể sample data khi traffic cao)
- ✅ Unlimited Data Retention: Lưu trữ dữ liệu vĩnh viễn, không bị giới hạn như GA4
2. Thu Thập Dữ Liệu Chi Tiết Hơn
- ✅ Full POST Data: Ghi lại toàn bộ nội dung POST requests (GA không làm được)
- ✅ Server-side Logs: Kết hợp client-side và server-side data
- ✅ Custom Fields: Không giới hạn custom dimensions/metrics
- ✅ Raw Data Access: Truy cập trực tiếp raw data
3. Tính Riêng Tư & Bảo Mật
- ✅ GDPR Compliant: Hoàn toàn tuân thủ GDPR vì data không rời khỏi hệ thống
- ✅ No Third-party Sharing: Không chia sẻ data với Google hay bên thứ 3
- ✅ Custom Privacy Controls: Tự định nghĩa privacy policies
4. Tùy Chỉnh Cao
- ✅ Custom Analytics Logic: Tự viết logic phân tích phù hợp business
- ✅ Real-time Processing: Xử lý real-time với Logstash
- ✅ Integration Flexibility: Dễ tích hợp với các hệ thống nội bộ
5. Chi Phí Dài Hạn
- ✅ No Per-hit Costs: Không tính phí theo số lượng hits như GA360
- ✅ Scalable Infrastructure: Scale theo nhu cầu thực tế
⚠️ Nhược Điểm So Với Google Analytics
1. Độ Phức Tạp Kỹ Thuật
- ❌ Setup Complexity: Cần kiến thức DevOps, Docker, ELK stack
- ❌ Maintenance Overhead: Phải tự maintain infrastructure tuy ít. Hệ thống này đang chạy ở công ty cũ tôi nhiều năm mà số lần nó chết đếm trên đầu ngón tay của 1 bàn tay. Khi chết cũng không mất log.
- ❌ Monitoring Required: Cần setup monitoring cho các services
2. Thiếu Tính Năng Out-of-the-box
- ❌ No Built-in Reports: Không có sẵn reports như GA (Audience, Acquisition, Behavior)
- ❌ No Attribution Models: Phải tự xây dựng attribution logic
- ❌ No Funnel Analysis: Thiếu các công cụ phân tích funnel có sẵn
3. Visualization & Reporting
- ❌ No Dashboard: Không có dashboard trực quan như GA
- ❌ Manual Report Creation: Phải tự tạo reports và visualizations
- ❌ No Automated Insights: Thiếu AI-powered insights như GA Intelligence
4. Tích Hợp Ecosystem
- ❌ Limited Integrations: Không tích hợp sẵn với Google Ads, Search Console
- ❌ No Google Marketing Platform: Thiếu kết nối với ecosystem Google
- ❌ Manual Data Export: Phải tự export data cho các tools khác
5. Chi Phí Vận Hành
- ❌ Infrastructure Costs: Chi phí server, storage, bandwidth
- ❌ Human Resources: Cần team có kỹ năng maintain system
- ❌ Development Time: Thời gian phát triển features mới
📊 So Sánh Tổng Quan
Tiêu Chí | Hệ Thống Nginx Logging | Google Analytics |
---|---|---|
Data Ownership | ✅ Hoàn toàn | ❌ Thuộc Google |
Setup Complexity | ❌ Cao | ✅ Đơn giản |
Custom Data | ✅ Không giới hạn | ❌ Giới hạn |
Real-time Data | ✅ Thực sự real-time | ⚠️ Near real-time |
Cost (Small Scale) | ❌ Cao | ✅ Miễn phí |
Cost (Large Scale) | ✅ Có thể rẻ hơn | ❌ Đắt (GA360) |
Privacy Compliance | ✅ Hoàn toàn kiểm soát | ❌ Phụ thuộc Google |
Built-in Reports | ❌ Không có | ✅ Phong phú |
Technical Skills | ❌ Cần trung bình | ✅ Cơ bản |
🎯 Khi Nào Nên Chọn Hệ Thống Này?
✅ Phù Hợp Khi:
- Cần thu thập dữ liệu POST requests chi tiết
- Yêu cầu compliance nghiêm ngặt (GDPR, HIPAA)
- Cần tích hợp sâu với hệ thống nội bộ
- Traffic cao và cần tránh sampling
- Muốn xây dựng analytics logic riêng
❌ Không Phù Hợp Khi:
- Cần reports nhanh và đơn giản
- Budget hạn chế cho infrastructure
- Chỉ cần basic web analytics
- Muốn tích hợp với Google Ads ecosystem
💡 Khuyến Nghị
Hybrid Approach: Có thể kết hợp cả hai:
- Dùng GA cho basic analytics và marketing insights
- Dùng hệ thống riêng cho detailed logging và compliance
- Cross-validate data giữa hai hệ thống
Hệ thống nginx logging này là lựa chọn tuyệt vời cho các doanh nghiệp cần kiểm soát hoàn toàn dữ liệu và có đội ngũ kỹ thuật để vận hành!