Khả năng triển khai cao, có thể truy cập và có thể mở rộng của thống kê và than chì


17

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?


Đọc các bình luận trên blogpost của Etsy về StatsD, họ viết rằng họ cung cấp cho StatsD 10.000-30.000 số liệu cứ sau 10 giây. Tôi sẽ đề nghị liên kết một máy khách http2statsd với một máy chủ statsd và hủy nó nếu số lượng số liệu được gửi tới statsd trở thành nút cổ chai.
pkhamre

Bạn đã thực hiện điều này cuối cùng? Nếu vậy, bạn có thể chia sẻ chi tiết?
gf_

Câu trả lời:


1

Có một proxy thống kê với băm nhất quán, có thể phân tán lưu lượng truy cập thống kê giữa nhiều bộ tổng hợp thống kê, mỗi bộ sử dụng bộ tên số liệu riêng của mình. Đây là một yếu tố có khả năng mở rộng quan trọng trong kiến ​​trúc của bạn, cho phép bạn mở rộng quy trình thống kê.

Graphite cũng khó, nhưng hy vọng bạn sẽ không cần quy mô vô hạn và có thể thực hiện tốt việc bảo vệ bằng dịch vụ hoặc một số tham số tĩnh khác.

Phần khó nhất là mở rộng ứng dụng web, và nó phụ thuộc rất nhiều vào các truy vấn biểu đồ nặng nhất của bạn là gì. Tuy nhiên, bạn luôn có thể tổng hợp dữ liệu trước cho các biểu đồ khó nhất và loại bỏ hầu hết tải.

Tôi đã sử dụng HostedGraphite trong một thời gian khá lâu để tránh tất cả những nỗi đau này, những người này đã thực hiện chương trình phụ trợ riêng của họ cho Carbon và thực hiện tất cả các quy mô ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.