Tôi muốn thiết lập statsd / graphit để tôi có thể đăng nhập các ứng dụng JS đang chạy trên thiết bị HTML (nghĩa là không phải trong môi trường LAN có chứa và có thể với một khối lượng lớn dữ liệu đến mà tôi không trực tiếp kiểm soát).
Những hạn chế của tôi:
- điểm vào phải nói HTTP: điều này được giải quyết bằng proxy HTTP-to-UDP-statsd đơn giản (ví dụ: httpstatsd trên github)
- phải chống lại sự thất bại của một máy chủ duy nhất (để chống lại luật của Murphy :)
- phải có khả năng mở rộng theo chiều ngang: webscale, em bé! :)
- kiến trúc nên được giữ đơn giản (và giá rẻ) càng tốt
- máy chủ của tôi là máy ảo
- các tệp dữ liệu sẽ được lưu trữ trên thiết bị filer (với NFS)
- Tôi có bộ cân bằng tải phần cứng tcp / udp lúc xử lý
Nói tóm lại, đường dẫn dữ liệu: [client] - (http) -> [http2statsd] - (udp) -> [statsd] - (tcp) -> [graph] - (nfs) -> [filer]
Những phát hiện của tôi cho đến nay:
- nhân rộng phần http2statsd thật dễ dàng (daemon không trạng thái)
- nhân rộng phần thống kê có vẻ không đơn giản (tôi đoán tôi sẽ kết thúc với các giá trị không liên tục trong than chì cho dữ liệu tổng hợp như sum, avg, min, max ...). Trừ khi trình nền HTTP thực hiện băm nhất quán để tách các khóa. Có lẽ một ý tưởng ... (nhưng sau đó có câu hỏi HA)
- nhân rộng phần than chì có thể được thực hiện thông qua shending (sử dụng rơle carbon) (nhưng điều đó cũng không giải quyết được câu hỏi HA). Rõ ràng một số trường hợp thì thầm không nên viết cùng một tệp NFS.
- nhân rộng phần filer không phải là một phần của câu hỏi (nhưng càng ít IO thì càng tốt :)
- mở rộng ứng dụng web có vẻ rõ ràng (mặc dù tôi chưa thử nghiệm) vì họ chỉ đọc dữ liệu NFS được chia sẻ
Vì vậy, tôi đã tự hỏi nếu có ai có kinh nghiệm và thực tiễn tốt nhất để chia sẻ cho việc triển khai thống kê / than chì vững chắc?