Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Chào mọi người. Dưới đây là bản ghi báo cáo từ Cuộc họp giám sát lớn 4.

Prometheus – một hệ thống giám sát cho các hệ thống và dịch vụ khác nhau, với sự trợ giúp của quản trị viên hệ thống, quản trị viên hệ thống có thể thu thập thông tin về các thông số hiện tại của hệ thống và thiết lập cảnh báo để nhận thông báo về những sai lệch trong hoạt động của hệ thống.

Báo cáo sẽ bao gồm sự so sánh Thanos и VictoriaSố liệu — các dự án lưu trữ lâu dài các số liệu của Prometheus.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Đầu tiên, tôi sẽ kể cho bạn nghe về Prometheus. Đây là hệ thống giám sát thu thập số liệu từ các mục tiêu được chỉ định và lưu chúng vào bộ nhớ cục bộ. Prometheus có thể ghi lại số liệu vào bộ lưu trữ từ xa và có thể tạo cảnh báo cũng như quy tắc ghi lại.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Hạn chế của Prometheus:

  • Nó không có chế độ xem truy vấn toàn cầu. Đây là khi bạn có nhiều phiên bản prometheus độc lập. Họ thu thập số liệu. Và bạn muốn truy vấn trên tất cả các số liệu này được thu thập từ các phiên bản prometheus khác nhau. Prometheus không cho phép điều này.
  • Với prometheus, hiệu suất chỉ bị giới hạn ở một máy chủ. Prometheus không tự động mở rộng quy mô trên nhiều máy chủ. Bạn chỉ có thể phân chia mục tiêu của mình theo cách thủ công giữa nhiều Prometheus.
  • Phạm vi số liệu trong Prometheus được giới hạn ở chỉ một máy chủ vì lý do tương tự là nó không thể tự động mở rộng quy mô trên nhiều máy chủ.
  • Việc tổ chức an toàn dữ liệu trong Prometheus không dễ dàng như vậy.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Giải pháp cho những vấn đề/thách thức này?

Các giải pháp là:

Tất cả các giải pháp này đều nhằm mục đích lưu trữ từ xa dữ liệu do Prometheus thu thập. Họ giải quyết vấn đề lưu trữ từ xa từ slide trước theo nhiều cách khác nhau. Trong phần trình bày này tôi sẽ chỉ nói về hai giải pháp đầu tiên: Thanos и VictoriaSố liệu.

Lần đầu tiên thông tin về Thanos xuất hiện bởi liên kết này. Kiến trúc được mô tả ở đó Thanos và nó hoạt động như thế nào.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos lấy dữ liệu mà Prometheus đã lưu vào đĩa cục bộ và sao chép nó vào S3, để GCS hoặc tới một đối tượng lưu trữ khác.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Do đó, Thanos cung cấp chế độ xem truy vấn toàn cầu. Bạn có thể truy vấn dữ liệu được lưu trữ trong bộ lưu trữ đối tượng từ nhiều phiên bản Prometheus.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos hỗ trợ PromQL và API truy vấn Prometheus.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos sử dụng mã Prometheus để lưu trữ dữ liệu.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos được phát triển bởi cùng nhà phát triển với Prometheus.

trên VictoriaSố liệu. Ở đây liên kết, nơi lần đầu tiên chúng ta nói về VictoriaSố liệu.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics nhận dữ liệu từ một số prometheus API ghi từ xa giao thức được hỗ trợ bởi Prometheus.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics cung cấp chế độ xem truy vấn toàn cầu vì nhiều phiên bản Prometheus có thể ghi dữ liệu vào một VictoriaMetrics. Theo đó, bạn có thể thực hiện truy vấn trên tất cả dữ liệu này.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics cũng hỗ trợ API truy vấn như Thanos, PromQL và Prometheus.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Không giống như Thanos, mã nguồn VictoriaMetrics được viết từ đầu và được tối ưu hóa về tốc độ cũng như mức tiêu thụ tài nguyên.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics, không giống như Thanos, quy mô theo cả chiều dọc và chiều ngang. Ăn Phiên bản nút đơn, có tỷ lệ theo chiều dọc. Bạn có thể bắt đầu với một bộ xử lý và 1 GB bộ nhớ và dần dần phát triển lên hàng trăm bộ xử lý và 1 TB bộ nhớ. VictoriaMetrics có thể sử dụng tất cả các nguồn lực này. Hiệu suất của nó sẽ tăng khoảng 100 lần so với hệ thống 1 lõi.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Lịch sử của Thanos bắt đầu vào tháng 2017 năm XNUMX, khi cam kết công khai đầu tiên xuất hiện. Trước đó, Thanos đã được phát triển nội bộ không thể thực hiện được.io.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Vào tháng 2019 năm 0.5.0 đã có bản phát hành mang tính bước ngoặt XNUMX, trong đó loại bỏ tin đồn giao thức. Anh ta bị loại khỏi Thanos vì thể hiện không tốt. Thường thì cụm Thanos hoạt động không chính xác, các nút kết nối với nó không chính xác do giao thức tin đồn. Vì vậy, chúng tôi quyết định loại bỏ anh ta khỏi đó. Tôi nghĩ đây là quyết định đúng đắn.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Cùng tháng 2019 năm XNUMX, họ đã gửi số đơn đăng ký 256 в Nền tảng điện toán bản địa đám mây.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Và sau vài tháng, Thanos đã được nhận vào Nền tảng điện toán bản địa đám mây, bao gồm Prometheus, Kubernetes và các dự án phổ biến khác.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Vào tháng 2018 năm XNUMX, quá trình phát triển VictoriaMetrics bắt đầu.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Vào tháng 2018 năm XNUMX, lần đầu tiên tôi công khai đề cập đến VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Vào tháng 2018 năm XNUMX, phiên bản Nút đơn đã được xuất bản.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Vào tháng 2019 đã được xuất bản nguồn của cả phiên bản nút đơn và cụm.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Vào tháng 2019 năm XNUMX, giống như Thanos, chúng tôi đã nộp đơn đăng ký lên tổ chức CNCF theo số 255. Chúng tôi nộp đơn một ngày trước khi Thanos nộp đơn.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Nhưng thật không may, chúng tôi vẫn chưa được chấp nhận ở đó. Cần sự giúp đỡ của cộng đồng.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Hãy cùng xem những slide quan trọng nhất thể hiện kiến ​​trúc của Thanos và VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Hãy bắt đầu với Thanos. Các thành phần màu vàng là thành phần Prometheus. Mọi thứ khác đều là thành phần của Thanos. Hãy bắt đầu với thành phần quan trọng nhất. Thanos Sidecar là một bộ phận được lắp đặt bên cạnh mỗi chiếc Prometheus. Nó tải dữ liệu Prometheus từ bộ nhớ cục bộ vào S3 hoặc Bộ lưu trữ đối tượng khác.

Ngoài ra còn có một thành phần gọi là Thanos Store Gateway, có thể đọc dữ liệu này từ Bộ lưu trữ đối tượng theo yêu cầu đến từ Thanos Query. Thanos Query triển khai API PromQL và Prometheus. Tức là nhìn từ bên ngoài nó giống Prometheus. Nhận các truy vấn PromQL, gửi đến Thanos Store Gateway, Thanos Store Gateway lấy dữ liệu cần thiết từ Object Storage, gửi lại.

Nhưng chúng tôi lưu trữ dữ liệu trong Bộ lưu trữ đối tượng mà không có hai giờ qua do tính năng triển khai Thanos Sidecar, tính năng này không thể tải hai giờ qua lên Bộ lưu trữ đối tượng S3, vì Prometheus chưa tạo tệp trong hai giờ này trong bộ nhớ cục bộ.

Bạn quyết định giải quyết vấn đề này như thế nào? Thanos Query, ngoài các yêu cầu đến Thanos Store Gateway, còn gửi các yêu cầu song song đến từng Thanos Sidecar nằm cạnh Prometheus.

Và Thanos Sidecar, lần lượt, ủy quyền yêu cầu thêm cho Prometheus và lấy dữ liệu trong hai giờ qua.

Ngoài những thành phần này, còn có một thành phần tùy chọn mà nếu không có thì Thanos sẽ không hoạt động tốt. Đây là Thanos Compact, có nhiệm vụ hợp nhất các tệp nhỏ trên Object Storage thành các tệp lớn hơn đã được Thanos Sidecars tải lên đây. Thanos Sidecar tải các tập tin dữ liệu lên đó trong hai giờ. Những tệp này, nếu chúng không được hợp nhất thành các tệp lớn hơn, thì số lượng của chúng có thể tăng lên rất đáng kể. Càng nhiều file như vậy thì càng cần nhiều bộ nhớ cho Thanos Store Gateway, càng cần nhiều tài nguyên để truyền dữ liệu qua mạng và siêu dữ liệu. Cổng cửa hàng Thanos trở nên không hiệu quả. Do đó, cần phải chạy Thanos Compact, tính năng này sẽ hợp nhất các tệp nhỏ thành các tệp lớn hơn để có ít tệp như vậy hơn và giảm chi phí trên Cổng cửa hàng Thanos.

Ngoài ra còn có một thành phần như Thanos Ruler. Nó thực thi các quy tắc cảnh báo của Prometheus và có thể đánh giá các quy tắc ghi của Prometheus để ghi dữ liệu trở lại Bộ lưu trữ đối tượng. Nhưng thành phần này không được khuyến khích sử dụng, vì... Anh ta có xu hướng trả về dữ liệu không đầy đủ.

Đây là kế hoạch đơn giản của Thanos.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Bây giờ hãy so sánh nó với sơ đồ VictoriaMetrics.

VictoriaMetrics có 2 phiên bản: Phiên bản nút đơn và phiên bản cụm. Nút đơn chạy trên một máy tính. Nút đơn không có các thành phần này, chỉ có một nhị phân. Hệ nhị phân này trên slide trông giống như hình vuông này. Mọi thứ bên trong hình vuông là nội dung của tệp nhị phân cho phiên bản Nút đơn. Bạn không cần phải biết về anh ấy. Bạn chỉ cần chạy hệ nhị phân và mọi thứ sẽ hoạt động với chúng tôi.

Phiên bản cụm phức tạp hơn. Bên trong nó có ba thành phần khác nhau: vmselect, vminsert và vmstorage. Từ tên của họ, có thể thấy rõ mỗi người trong số họ làm gì. Thành phần Chèn chấp nhận dữ liệu ở các định dạng khác nhau: từ API ghi từ xa Prometheus, giao thức dòng Influx, giao thức Graphite và giao thức OpenTSDB. Thành phần Chèn chấp nhận chúng, phân tích cú pháp và phân phối chúng giữa các thành phần lưu trữ hiện có, nơi dữ liệu đã được lưu trữ. Thành phần Select lần lượt chấp nhận các truy vấn PromQL. Anh ấy thực hiện PromQL, cũng như API truy vấn Prometheus và có thể được sử dụng để thay thế cho Prometheus trong Grafana hoặc các ứng dụng khách API Prometheus khác. Chọn chấp nhận yêu cầu Proql, phân tích cú pháp, đọc dữ liệu cần thiết để thực hiện yêu cầu này từ các nút lưu trữ, xử lý dữ liệu này và trả về phản hồi.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Hãy so sánh mức độ phức tạp của việc cài đặt Thanos và VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Hãy bắt đầu với Thanos. Trước khi bắt đầu làm việc với Thanos, bạn cần tạo một bộ chứa trong Object Storage, chẳng hạn như S3 hoặc GCS, để Thanos Sidecar có thể ghi dữ liệu vào đó.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Sau đó, với mỗi Prometheus bạn cần cài đặt Thanos Sidecar. Trước đó, bạn cần nhớ tắt tính năng nén dữ liệu trong Prometheus. Nén dữ liệu định kỳ nén dữ liệu trong bộ lưu trữ Prometheus cục bộ để giảm mức tiêu thụ tài nguyên.

Khi cài đặt Thanos Sidecar trên Prometheus, bạn phải tắt tính năng nén dữ liệu này vì Thanos Sidecar không hoạt động bình thường khi bật tính năng nén dữ liệu. Điều này có nghĩa là Prometheus của bạn bắt đầu lưu dữ liệu theo các khối có thời lượng hai giờ và ngừng hợp nhất các khối đó thành các khối lớn hơn. Theo đó, nếu bạn thực hiện các truy vấn vượt quá thời lượng hai giờ qua, thì chúng sẽ không hoạt động hiệu quả như có thể nếu tính năng nén dữ liệu được bật.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Do đó, Thanos khuyến nghị giảm thời gian lưu giữ dữ liệu trong bộ nhớ cục bộ xuống còn 6-8 giờ để giảm chi phí cho một số lượng lớn các khối nhỏ.

Sau khi cài đặt xong Thanos Sidecar, bạn phải cài đặt hai thành phần cho mỗi Object Storage Xô. Đó là Thanos Compactor và Thanos Store Gateway.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Sau đó, bạn cần cài đặt Thanos Query và cấu hình nó để nó có thể kết nối với tất cả các Thanos Store Gateways mà bạn có, đồng thời cũng có thể kết nối với tất cả các Thanos Sidecars.

Có thể có một vấn đề nhỏ ở đây.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Bạn cần định cấu hình kết nối đáng tin cậy và an toàn từ Thanos Query đến các thành phần này. Và nếu Prometheus của bạn được đặt ở các trung tâm dữ liệu khác nhau hoặc trong các VPC khác nhau thì các kết nối với chúng từ bên ngoài sẽ bị cấm. Nhưng để Thanos Query hoạt động, bạn cần phải cấu hình kết nối ở đó bằng cách nào đó và bạn phải tìm ra cách.

Nếu bạn có nhiều trung tâm dữ liệu như vậy thì độ tin cậy của toàn bộ hệ thống sẽ giảm. Vì Thanos Query phải liên tục duy trì kết nối với tất cả các Thanos Sidecar nằm ở các trung tâm dữ liệu khác nhau. Đối với mỗi yêu cầu đến, nó sẽ định tuyến các yêu cầu đến tất cả các Sidecar của Thanos. Nếu kết nối bị gián đoạn, bạn sẽ nhận được một bộ dữ liệu không đầy đủ hoặc bạn sẽ nhận được phản hồi "cụm không hoạt động".

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Ở VictoriaMetrics, mọi thứ đơn giản hơn một chút. Đối với phiên bản Nút đơn, bạn chỉ cần chạy một nhị phân và mọi thứ đều hoạt động.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Trong phiên bản cụm, chỉ cần chạy tất cả ba loại thành phần trên với bất kỳ số lượng nào bạn cần hoặc sử dụng là đủ biểu đồ lái để tự động hóa việc khởi chạy các thành phần trong Kubernetes. Chúng tôi cũng đang có kế hoạch tạo một nhà điều hành Kubernetes. Biểu đồ Helm không bao gồm một số trường hợp và cho phép bạn tự bắn vào chân mình. Ví dụ: nó cho phép bạn giảm số lượng nút lưu trữ, điều này sẽ dẫn đến mất dữ liệu.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Sau khi đã khởi chạy một phiên bản nhị phân hoặc cụm, bạn chỉ cần thêm Prometheus vào config cài đặt cho url ghi từ xađể nó bắt đầu ghi dữ liệu song song vào bộ nhớ cục bộ và bộ nhớ từ xa. Như bạn có thể thấy, cấu hình này sẽ hoạt động đáng tin cậy hơn nhiều so với cấu hình Thanos. Chúng tôi không cần duy trì kết nối từ VictoriaMetrics đến tất cả Prometheus, vì chính Prometheus đã kết nối với VictoriaMetrics và truyền dữ liệu.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Hãy xem xét sự hỗ trợ của Thanos và VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos cần giám sát Sidecar để đảm bảo chúng không ngừng tải dữ liệu vào Object Storage. Họ có thể dừng quá trình tải xuống dữ liệu này do lỗi tải xuống, ví dụ: kết nối mạng của bạn với Bộ lưu trữ đối tượng tạm thời bị gián đoạn hoặc Bộ lưu trữ đối tượng tạm thời không khả dụng. Thanos Sidecar sẽ nhận thấy điều này vào lúc này, báo lỗi, có thể gặp sự cố và sau đó ngừng hoạt động. Nếu bạn không theo dõi nó, bạn sẽ ngừng truyền dữ liệu vào Bộ lưu trữ đối tượng. Nếu hết thời gian lưu giữ (khuyến nghị 6-8 giờ), thì bạn sẽ mất dữ liệu không có trong Bộ lưu trữ đối tượng.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Máy ép Thanos có thể ngừng hoạt động do cuộc đua với Sidecar. Bộ nén lấy dữ liệu từ Bộ lưu trữ đối tượng và hợp nhất nó thành các phần dữ liệu lớn hơn. Vì máy đầm không được đồng bộ hóa với Sidecar nên điều sau có thể xảy ra: Sidecar chưa có thời gian để hoàn thành khối, Máy đầm quyết định rằng khối này đã được viết hoàn chỉnh. Máy đầm bắt đầu đọc nó. Nó không đọc toàn bộ khối và ngừng hoạt động. Xem chi tiết đây.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Store Gateway có thể trả về dữ liệu không nhất quán do các cuộc đua giữa Compactor và Sidecar. Điều tương tự cũng xảy ra ở đây vì Store Gateway không được đồng bộ hóa với Compactors và Sidecar theo bất kỳ cách nào. Theo đó, tình trạng cạnh tranh có thể xảy ra khi Store Gateway không nhìn thấy một phần dữ liệu hoặc nhìn thấy dữ liệu không cần thiết.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thành phần Truy vấn trong Thanos theo mặc định trả về một phần kết quả nếu một số Sidecar hoặc Cổng cửa hàng hiện không có sẵn. Bạn sẽ nhận được một phần dữ liệu và thậm chí bạn sẽ không biết rằng mình chưa nhận được tất cả dữ liệu. Đây là cách nó hoạt động theo mặc định. Trong tình huống tương tự, VictoriaMetrics trả về một phần dữ liệu được đánh dấu.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Không giống như Thanos, VictoriaMetrics hiếm khi bị mất dữ liệu. Ngay cả khi kết nối từ Prometheus đến VictoriaMetrics bị gián đoạn, đây không phải là vấn đề vì Prometheus vẫn tiếp tục ghi dữ liệu mới đến vào Nhật ký ghi trước, kích thước của nó là 2 giờ. Nếu bạn khôi phục kết nối của mình với VictoriaMetrics trong vòng hai giờ, dữ liệu của bạn sẽ không bị mất. Prometheus có thể thêm dữ liệu sau khi khôi phục kết nối với VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Không giống như Thanos chỉ ghi dữ liệu vào bộ lưu trữ đối tượng sau hai giờ, Prometheus tự động sao chép dữ liệu bằng giao thức ghi từ xa vào bộ lưu trữ từ xa, chẳng hạn như VictoriaMetrics. Bạn không sợ mất bộ nhớ cục bộ trong Prometheus. Nếu anh ta đột nhiên bị mất bộ nhớ cục bộ, thì trong trường hợp xấu nhất, bạn sẽ mất những giây cuối cùng của dữ liệu không có thời gian để ghi vào bộ nhớ từ xa.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Kubernetes tự động quản lý cụm, không giống như Thanos. Rất khó để đặt tất cả các thành phần của Thanos vào một cụm Kubernetes, không giống như các thành phần của cụm VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics có cách cập nhật phiên bản mới rất đơn giản. Chỉ cần dừng VictoriaMetrics, cập nhật các tệp nhị phân và khởi chạy nó. Khi dừng thông qua tín hiệu SIGINT, tất cả các tệp nhị phân VictoriaMetrics sẽ thực hiện tắt máy một cách nhẹ nhàng. Họ lưu chính xác dữ liệu cần thiết, đóng các kết nối đến một cách chính xác để không mất bất cứ thứ gì. Vì vậy bạn sẽ không mất gì khi nâng cấp.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics giúp việc mở rộng cụm trở nên rất dễ dàng. Chỉ cần thêm các thành phần cần thiết và tiếp tục làm việc.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Về những cạm bẫy trong Thanos và VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos có những cạm bẫy sau đây. Prometheus phải lưu trữ dữ liệu trong hai giờ qua. Nếu chúng bị thất lạc, bạn sẽ mất chúng hoàn toàn vì chúng chưa được ghi vào Object Storage như S3.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thành phần Store Gateway và thành phần máy nén có thể cần nhiều bộ nhớ để hoạt động với Bộ lưu trữ đối tượng lớn nếu có nhiều tệp nhỏ được lưu trữ ở đó. Số lượng và kích thước tệp càng lớn thì càng cần nhiều Store Gateway và RAM bộ nén để lưu trữ siêu thông tin. Thanos có rất nhiều vấn đề liên quan đến thực tế là Store Gateway và máy nén gặp sự cố với khối lượng dữ liệu được ghi ở mức trung bình.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos được quảng cáo có khả năng mở rộng vô thời hạn với số lượng Prometheus bạn có. Điều này thực sự là không đúng sự thật. Vì tất cả các yêu cầu đều đi qua thành phần Truy vấn, thành phần này phải thăm dò đồng thời tất cả các thành phần Store Gateway và tất cả các thành phần Sidecar, lấy dữ liệu từ đó rồi xử lý trước dữ liệu đó. Rõ ràng, tốc độ yêu cầu bị giới hạn bởi liên kết yếu chậm nhất, Store Gateway chậm nhất hoặc Sidecar chậm nhất.

Các thành phần này có thể được tải không đồng đều. Ví dụ: bạn có Prometheus, công cụ thu thập hàng triệu số liệu mỗi giây. Và có Prometheus, nơi thu thập hàng nghìn số liệu mỗi giây. Prometheus, thu thập hàng triệu số liệu mỗi giây, đặt tải cao hơn nhiều lên máy chủ mà nó chạy trên đó. Theo đó, Sidecar hoạt động chậm hơn ở đó. Và nói chung mọi thứ đều hoạt động chậm ở đó. Và thành phần Truy vấn sẽ lấy dữ liệu từ đó rất chậm. Theo đó, hiệu suất của toàn bộ cụm của bạn sẽ bị hạn chế bởi chiếc Sidecar chậm chạp này.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Theo mặc định, Thanos cung cấp một phần dữ liệu nếu một số Sidecar và Cổng cửa hàng không khả dụng. Ví dụ: nếu Sidecar của bạn nằm rải rác trên khắp thế giới ở các trung tâm dữ liệu khác nhau thì khả năng xảy ra lỗi kết nối và không có thành phần sẽ tăng lên rất nhiều. Theo đó, trong hầu hết các trường hợp, bạn sẽ nhận được một phần dữ liệu mà không hề hay biết.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics cũng có những cạm bẫy. Cạm bẫy đầu tiên là tùy chọn giới hạn dung lượng RAM được sử dụng cho bộ đệm VictoriaMetrics. Theo mặc định, nó bằng 60% RAM trên máy có VictoriaMetrics đang chạy hoặc 60% RAM của nhóm VictoriaMetrics trong Kubernetes.

Nếu bạn thay đổi giá trị này không chính xác, bạn có thể làm hỏng hiệu suất của VictoriaMetrics. Ví dụ: nếu bạn đặt giá trị quá thấp, dữ liệu có thể không còn vừa với bộ đệm VictoriaMetrics nữa. Vì điều này, cô ấy sẽ phải làm thêm công việc và tải bộ xử lý và đĩa. Nếu bạn đặt tùy chọn này quá lớn, trước tiên, nó sẽ tăng khả năng VictoriaMetrics gặp sự cố do lỗi hết bộ nhớ và thứ hai, nó sẽ dẫn đến thực tế là sẽ còn rất ít RAM trong bộ nhớ hệ điều hành cho bộ đệm tập tin. Và VictoriaMetrics dựa vào bộ đệm tệp để đảm bảo hiệu suất. Nếu không đủ, tải trên đĩa có thể tăng lên rất nhiều. Do đó, lời khuyên: không thay đổi tham số trừ khi thực sự cần thiết.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Sự lựa chọn thứ hai. Đây là Thời gian lưu giữ - khoảng thời gian được đặt thành 1 tháng theo mặc định. Đây là khoảng thời gian VictoriaMetrics lưu trữ dữ liệu. Sau khoảng thời gian này, VictoriaMetrics sẽ xóa dữ liệu.

Nhiều người chạy VictoriaMetrics mà không có thông số này và ghi dữ liệu trong một tháng. Và sau đó họ hỏi: tại sao dữ liệu của tháng trước lại biến mất? Bởi vì thời gian lưu giữ mặc định là 1 tháng. Vì vậy, bạn cần biết và đặt thời gian lưu giữ chính xác.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Chúng ta hãy xem các tính năng độc đáo.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos có một tính năng gọi là downsampling: khoảng thời gian 5 phút và hàng giờ, thường không hoạt động chính xác. Nếu bạn google và xem vấn đề của họ trên github, có rất nhiều vấn đề liên quan đến việc lấy mẫu xuống này, đôi khi nó hoạt động không chính xác hoặc không hoạt động như người dùng mong đợi.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos đã sao chép dữ liệu cho cặp Prometheus HA. Khi hai Prometheus thu thập các số liệu giống nhau từ cùng một mục tiêu và Thanos lưu trữ chúng trong Kho lưu trữ vật thể. Thanos có thể sao chép dữ liệu này một cách chính xác, không giống như VictoriaMetrics.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos có một thành phần cảnh báo có trong sơ đồ của Thanos. Nhưng anh ấy không được khuyến khích sử dụng trong sản xuất.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos có lợi thế là Thanos và Prometheus có cùng mã. Thanos và Prometheus được phát triển bởi cùng một nhà phát triển. Với những cải tiến của Thanos hoặc Prometheus, bên kia sẽ chiến thắng.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Tính năng chính của VictoriaMetrics là MetricsQL. Đây là các tiện ích mở rộng VictoriaMetrics dành cho PromQL mà tôi đã nói đến tại cuộc họp giám sát lớn trước đây.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics hỗ trợ tải dữ liệu bằng nhiều giao thức khác nhau. VictoriaMetrics không chỉ có thể chấp nhận dữ liệu từ Prometheus mà còn thông qua các giao thức Influx, OpenTSDB và Graphite.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Dữ liệu VictoriaMetrics chiếm ít không gian hơn nhiều so với Thanos và Prometheus.

Nếu ghi lại dữ liệu thực, người dùng sẽ nói về việc giảm kích thước dữ liệu trên đĩa từ 2-5 lần so với Prometheus và Thanos.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Một ưu điểm khác của VictoriaMetrics là nó được tối ưu hóa về tốc độ.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Hãy nhìn vào chi phí của cơ sở hạ tầng.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Một trong những ưu điểm của Thanos là lưu trữ dữ liệu trong bộ lưu trữ đối tượng, tương đối rẻ.

Khi lưu trữ dữ liệu trong bộ lưu trữ đối tượng, bạn phải trả tiền cho các hoạt động ghi và đọc dữ liệu (10 USD trên một triệu hoạt động). Khi ghi dữ liệu vào bộ lưu trữ đối tượng, bạn phải trả chi phí lưu trữ để tải dữ liệu lên Internet; nếu cụm của bạn không có trong AWS thì dữ liệu đó sẽ miễn phí tại đó. Khi bạn đọc dữ liệu, bạn phải trả từ 10 USD đến 230 USD cho mỗi 1TB. Điều này có thể rất quan trọng nếu bạn thường xuyên truy vấn dữ liệu lịch sử từ cụm Thanos.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Đối với cụm Thanos, bạn cần trả tiền cho các máy chủ cho các thành phần Compact, Store Gateway, Query yêu cầu nhiều bộ nhớ và CPU cho lượng dữ liệu lớn.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics có các chi phí sau. Nếu bạn lưu trữ dữ liệu trên ổ HDD GCE thì chi phí sẽ là 40 USD cho 1TB. Đối với VictoriaMetrics, ổ HDD thông thường là đủ; không cần ổ SSD, vốn đắt gấp XNUMX lần. VictoriaMetrics được tối ưu hóa cho ổ cứng HDD.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics yêu cầu máy chủ cho các thành phần: các thành phần Đơn hoặc cụm, không giống như các thành phần của Thanos, yêu cầu ít CPU và RAM hơn - và do đó sẽ rẻ hơn.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Ví dụ về việc thực hiện.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Thanos có một ví dụ triển khai trong Gitlab. Gitlab chạy hoàn toàn trên Thanos. Nhưng không phải mọi thứ đều suôn sẻ ở đó. Nếu bạn nhìn họ các vấn đề, thì bạn có thể thấy rằng họ liên tục có một số vấn đề vận hành với Thanos: Không có đủ bộ nhớ cho các thành phần Store Gateway hoặc Query. Họ liên tục phải tăng dung lượng bộ nhớ.

Vì điều này, chi phí để giải quyết những vấn đề này tăng lên.

Cách triển khai thứ hai, có thể thành công hơn, là công ty Improbable bắt đầu phát triển Thanos. Họ đã công bố mã nguồn của Thanos. Improbable là một công ty phát triển game engine.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics có các ví dụ triển khai công khai:

  • xây dựng trang web wix.com
  • Adidas đang triển khai VictoriaMetrics và thậm chí còn thuyết trình tại PromCon 2019 vừa qua
  • TrafficStars - mạng quảng cáo
  • Seznam.cz là một công cụ tìm kiếm phổ biến ở Séc.

Và sau đó có những công ty vô danh mà bây giờ tôi không thể kể tên. Họ không đồng ý.

  • Một nhà phát triển trò chơi lớn. Lớn hơn tôi Không thể tin được.
  • Nhà phát triển phần mềm đồ họa lớn.
  • Ngân hàng lớn của Nga.
  • Nhà sản xuất tuabin gió Châu Âu đã thử nghiệm thành công VictoriaMetrics. Nhà sản xuất này đang triển khai VictoriaMetrics để giám sát dữ liệu được thu thập từ các tuabin gió với tốc độ 50 mẫu/giây trên mỗi cảm biến. Mỗi tuabin gió có hàng trăm cảm biến. Họ có hàng trăm tuabin gió.
  • Các hãng hàng không Nga muốn triển khai VictoriaMetrics nhưng vẫn không thể. Chúng tôi đang ở giai đoạn hợp đồng với họ.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetricsKết luận.

VictoriaMetrics và Thanos giải quyết các vấn đề tương tự nhưng theo những cách khác nhau:

  • Chế độ xem truy vấn toàn cầu
  • chia tỷ lệ ngang
  • lưu giữ tùy ý

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Cảm ơn bạn.

Chúng tôi đang chờ đợi bạn tại kênh điện tín.

Chọn nơi lưu trữ dữ liệu cho Prometheus: Thanos vs VictoriaMetrics

Chỉ những người dùng đã đăng ký mới có thể tham gia khảo sát. Đăng nhập, xin vui lòng.

Bạn sử dụng gì để lưu trữ lâu dài cho Prometheus?

  • 35,3%Thanos6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%khác4

17 người dùng bình chọn. 16 người dùng bỏ phiếu trắng.

Nguồn: www.habr.com

Thêm một lời nhận xét