2013-10-01 13 views
5

Chúng tôi đang cố gắng sử dụng Graphite cho hệ thống web đồ thị thời gian thực (gần). Tuy nhiên, chúng tôi không thể tăng tốc độ graphite nhanh hơn 1 giây. Cuối cùng chúng tôi muốn có 100ms cập nhậtGraphite Graph - chúng tôi có thể cập nhật biểu đồ nhanh như thế nào?

Từ đọc FAQ nó làm cho nó âm thanh như graphite là nhanh - nhưng đây là một trong hai rất gây hiểu lầm hoặc tôi không hiểu làm thế nào để tăng tốc độ graphite

thông tin thời gian cho thì thầm xuất hiện để sử dụng dấu thời gian UNIX

Khả năng mở rộng là Graphite?

Từ góc độ CPU, Graphite cân theo chiều ngang trên cả giao diện người dùng và phần cuối, nghĩa là bạn chỉ cần thêm nhiều máy hơn vào hỗn hợp để có được thông lượng nhiều hơn. Nó cũng có khả năng chịu lỗi theo nghĩa là mất một máy phụ trợ sẽ gây ra một lượng dữ liệu bị mất (bất kể máy nào đã lưu trong bộ nhớ) và sẽ không làm gián đoạn hệ thống nếu bạn có đủ dung lượng còn lại để xử lý tải.

Từ quan điểm I/O, dưới tải Graphite thực hiện rất nhiều thao tác I/O nhỏ trên nhiều tệp khác nhau rất nhanh. Điều này là do mỗi số liệu riêng biệt được gửi đến Graphite được lưu trữ trong tệp cơ sở dữ liệu riêng của nó, tương tự như bao nhiêu công cụ (drraw, Cacti, Centreon, vv) được xây dựng trên đầu trang của công việc RRD. Trong thực tế, Graphite ban đầu đã sử dụng RRD để lưu trữ cho đến khi những hạn chế cơ bản phát sinh mà yêu cầu một công cụ lưu trữ mới.

Âm lượng cao (một vài nghìn chỉ số riêng biệt cập nhật tối thiểu) khá nhiều đòi hỏi một mảng RAID tốt. Graphite của backend lưu trữ dữ liệu đến nếu các đĩa không thể theo kịp với số lượng lớn các thao tác ghi nhỏ xảy ra (mỗi điểm dữ liệu chỉ là một vài byte, nhưng hầu hết các đĩa không thể thực hiện nhiều hơn vài nghìn hoạt động I/O mỗi giây, ngay cả khi chúng rất nhỏ). Khi điều này xảy ra, cơ sở dữ liệu của Graphite, thì thầm, cho phép carbon ghi nhiều điểm dữ liệu cùng một lúc, do đó tăng thông lượng tổng thể chỉ bằng chi phí lưu trữ dữ liệu dư thừa trong bộ nhớ cho đến khi nó được ghi.

Biểu đồ trong thời gian thực như thế nào?

Rất. Ngay cả khi tải nặng, số lượng chỉ số trong mỗi khoảng thời gian lớn hơn nhiều so với tốc độ mà hệ thống lưu trữ của bạn có thể thực hiện các hoạt động I/O và nhiều điểm dữ liệu đang được lưu trong bộ nhớ lưu trữ (xem câu hỏi trước để giải thích), Graphite vẫn vẽ đồ thị thời gian thực. Bí quyết là khi ứng dụng web Graphite nhận được yêu cầu vẽ đồ thị, nó đồng thời truy xuất dữ liệu khỏi ổ đĩa cũng như từ bộ đệm lưu trữ trước (có thể được phân phối nếu bạn có nhiều máy chủ phụ trợ) và kết hợp hai nguồn dữ liệu để tạo biểu đồ thời gian thực.

Cũng Họ chỉ hiển thị giây và không có điểm phân đoạn ở đây: http://graphite.readthedocs.org/en/latest/config-carbon.htmlfrom and until must be a time specification conforming to the AT-STYLE time specification described đây: http://oss.oetiker.ch/rrdtool/doc/rrdfetch.en.html. http://graphite.wikidot.com/url-api-reference

Vậy nó là gì? Graphite có nhanh không? hoặc là nó rất nhanh để xử lý các tập dữ liệu lớn - chúng tôi đang tìm kiếm một bộ nhận dữ liệu gói đơn giản để hiển thị trực quan - Graphite có vẻ như là một giải pháp tuyệt vời nhưng bây giờ chúng ta đã cấu hình và chạy. rất nhiều thời gian

Cảm ơn!

Trả lời

6

Graphite sẽ lưu trữ tối đa một điểm dữ liệu theo độ chính xác được xác định tốt nhất (các điểm dữ liệu bổ sung nhận được sẽ bị loại bỏ) trong tệp lưu trữ-schemas.conf của bạn.Độ chính xác tốt nhất có thể là 1 giây. ví dụ: retentions = 1s: 6h, 1 phút: 7d, 10min: 5y

Để đạt được mục tiêu của bạn, bạn sẽ cần phải đặt một aggregator trước Graphite. Trình tổng hợp sẽ lấy tất cả các chỉ số và tổng hợp dữ liệu, chuyển sang lưu trữ Graphite để khớp với lược đồ lưu trữ. Trình tổng hợp sẽ thực hiện các phép tính (avg, sum, mean, vv) trên các số liệu và gửi các số liệu đó. ví dụ: trong giây cuối cùng, bạn đã tính trung bình 14ms để xử lý yêu cầu HOẶC trong 10 giây cuối cùng, tổng số yêu cầu là 4234.

Vì vậy, trong khi bạn không thể báo cáo chi tiết hơn 1 giây, bạn có thể sử dụng tập hợp để nắm bắt - tổng và trung bình của những gì đã xảy ra trong khoảng thời gian 1 giây và báo cáo điều đó.

Hai sự lựa chọn phổ biến là StatsDGraphite provided in carbon aggregator.

** StatsD, IMO là con đường để đi. Nó là một daemon mạng mà bạn chạy một cách riêng biệt và gửi đến nó qua UDP. Điều đó nói rằng, bạn có thể làm tương tự (ví dụ: UDP) với carbon-aggregator.py.

+1

Có cách nào để tôi thay đổi một số cơ chế của graphite để cho phép độ chính xác cao hơn không? (Hãy suy nghĩ về các ứng dụng dao động) Những gì bạn nói có ý nghĩa đối với nhiều ứng dụng - nhưng chúng tôi đang cố gắng để có thông tin đồ thị trơn tru được hiển thị trong thời gian thực - cập nhật 1s sẽ rất clunky - dữ liệu chúng tôi gửi đến graphite đã được xử lý và là dữ liệu trung bình – morty346

+2

Không. Graphite - [thì thầm] (https://github.com/graphite-project/whisper) db- được thiết kế để giữ cho lưu trữ dấu chân thấp và liên tục theo thời gian (như [RRD] (http: // en.wikipedia.org/wiki/RRDtool)). Dữ liệu chuỗi thời gian phải được tiêm vào một trong các bước thời gian đã xác định (giây, phút, giờ). Có vẻ như bạn có thể cần phải xem xét một công cụ khác. –

Các vấn đề liên quan