"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Tôi đề nghị đọc bản ghi lại báo cáo của Roman Khavronenko "ExtendedPromQL"

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Sơ lược về tôi. Tên tôi là Roman. Tôi làm việc cho CloudFlare và sống ở London. Nhưng tôi cũng là người bảo trì VictoriaMetrics.
Và tôi là tác giả Plugin ClickHouse cho Grafana và ClickHouse-proxy là một proxy nhỏ cho ClickHouse.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Chúng ta sẽ bắt đầu với phần đầu tiên, có tên là “Những khó khăn trong dịch thuật” và trong đó tôi sẽ nói về thực tế là bất kỳ ngôn ngữ nào hoặc thậm chí chỉ là ngôn ngữ giao tiếp đều rất quan trọng. Bởi vì đây là cách bạn truyền đạt suy nghĩ của mình cho người khác hoặc hệ thống, cách bạn đưa ra yêu cầu. Mọi người trên Internet đang tranh luận về ngôn ngữ nào tốt hơn - java hay ngôn ngữ nào khác. Đối với bản thân tôi, tôi quyết định rằng cần phải chọn một nhiệm vụ, bởi vì tất cả điều này là cụ thể.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Hãy bắt đầu ngay từ đầu. PromQL là gì? PromQL là Ngôn ngữ truy vấn Prometheus. Đây là cách chúng tôi tạo truy vấn trong Prometheus để lấy dữ liệu chuỗi thời gian, chuỗi thời gian.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Dữ liệu chuỗi thời gian là gì? Theo nghĩa đen, đây là ba tham số.

Đây là:

  • Chúng tôi đang tìm gì vậy.
  • Khi chúng ta nhìn vào nó.
  • Và nó thể hiện giá trị gì.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Nếu bạn nhìn vào biểu đồ này (biểu đồ này là từ điện thoại của tôi, hiển thị số liệu thống kê về các bước của tôi), thì tại đây bạn có thể nhanh chóng trả lời những câu hỏi này.

Chúng tôi đang xem xét các bước. Chúng ta thấy ý nghĩa và chúng ta thấy thời gian khi nhìn vào nó. Tức là, nhìn vào sơ đồ này, bạn có thể dễ dàng nói rằng vào Chủ nhật, tôi đã đi bộ khoảng 15 bước. Đây là dữ liệu chuỗi thời gian.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Bây giờ chúng ta hãy "phá vỡ" (transform) chúng thành một mô hình dữ liệu khác dưới dạng bảng. Ở đây chúng tôi cũng có những gì chúng tôi đang xem xét. Ở đây tôi đã thêm một ít dữ liệu bổ sung, mà chúng tôi sẽ gọi là siêu dữ liệu, tức là không phải tôi đã trải qua mà là của hai người, chẳng hạn như Jay và Silent Bob. Đó là những gì chúng tôi đang xem xét; những gì nó hiển thị và khi nó hiển thị giá trị đó.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko
Bây giờ hãy thử lưu trữ tất cả dữ liệu này trong cơ sở dữ liệu. Ví dụ tôi lấy cú pháp ClickHouse. Và ở đây chúng tôi đang tạo một bảng có tên là "Các bước", tức là những gì chúng tôi đang xem xét. Có một thời gian ở đây khi chúng ta nhìn vào nó; những gì nó hiển thị và một số siêu dữ liệu nơi chúng tôi sẽ lưu trữ đó là ai: Jay và Silent Bob.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và để cố gắng hình dung tất cả, chúng tôi sẽ sử dụng Grafana, bởi vì, thứ nhất, nó rất đẹp.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Ngoài ra, chúng tôi sẽ sử dụng plugin này. Có hai lý do cho việc này. Thứ nhất là do tôi viết nó. Và tôi biết chính xác việc lấy dữ liệu chuỗi thời gian từ ClickHouse để hiển thị nó trong Grafana khó đến mức nào.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Chúng tôi sẽ hiển thị trong Bảng đồ thị. Đây là bảng phổ biến nhất trong Grafana và hiển thị giá trị theo thời gian, vì vậy chúng tôi chỉ cần hai tham số.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko
Hãy viết truy vấn đơn giản nhất - cách hiển thị số liệu thống kê bước trong Grafana, lưu trữ dữ liệu này trong ClickHouse, trong bảng mà chúng tôi đã tạo. Và chúng tôi viết một truy vấn đơn giản như vậy. Chúng tôi chọn từ các bước. Chúng tôi chọn một giá trị và chọn thời gian của các giá trị này, tức là ba tham số giống nhau mà chúng tôi đã nói đến.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và kết quả là, chúng ta có được biểu đồ này. Ai biết tại sao anh ấy lại kỳ lạ như vậy?

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Đúng vậy, bạn cần sắp xếp theo thời gian.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và cuối cùng, chúng tôi có được một lịch trình tốt hơn, nhưng vẫn kỳ lạ. Ai biết tại sao? Đúng vậy, có hai người tham gia và chúng tôi đưa ra hai chuỗi thời gian trong Grafana, bởi vì nếu chúng ta xử lý lại mô hình dữ liệu, thì mỗi chuỗi thời gian là sự kết hợp duy nhất của một tên và tất cả các nhãn khóa-giá trị.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Vì vậy, chúng ta cần chọn một người cụ thể. Chúng tôi chọn Jay.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và vẽ lại. Bây giờ biểu đồ trông giống như sự thật. Bây giờ nó là một lịch trình bình thường và mọi thứ đang hoạt động tốt.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và, có lẽ, bạn biết cách thực hiện điều tương tự, nhưng trong Prometheus thông qua PromQL. Đại khái như thế này. Một chút dễ dàng hơn. Và hãy phá vỡ tất cả. Chúng tôi đã thực hiện các bước. Và lọc bởi Jay. Chúng tôi không chỉ định ở đây rằng chúng tôi cần lấy một giá trị và chúng tôi không chọn thời gian.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Bây giờ chúng ta hãy thử tính tốc độ di chuyển của Jay hoặc Silent Bob. Trong ClickHouse, chúng ta sẽ cần thực hiện runningDifference, tức là tính toán sự khác biệt giữa các cặp điểm và chia chúng theo thời gian để có được tốc độ chính xác. Yêu cầu sẽ giống như thế này.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và anh ấy sẽ hiển thị xấp xỉ các giá trị này, tức là khoảng 1,8 bước mỗi giây đối với Silent Bob hoặc Jay.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và trong Prometheus, bạn cũng biết cách làm điều đó. Dễ dàng hơn nhiều so với trước đây.

"ExtendedPromQL" - bảng điểm báo cáo của Roman KhavronenkoVà để làm cho nó dễ thực hiện trong Grafana, tôi đã thêm một trình bao bọc trông rất giống với PromQL. Nó được gọi là Macro tỷ lệ, hoặc bất cứ điều gì bạn muốn gọi nó. Trong Grafana, bạn chỉ cần viết "tỷ lệ", nhưng đâu đó trong sâu thẳm nó lại biến thành một yêu cầu lớn như vậy. Và bạn thậm chí không cần phải nhìn vào nó, nó ở đâu đó, nhưng bạn tiết kiệm được rất nhiều thời gian, bởi vì việc viết các truy vấn SQL khổng lồ như vậy luôn rất tốn kém. Bạn có thể dễ dàng phạm sai lầm và sau đó không hiểu chuyện gì đang xảy ra trong một thời gian dài.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và đây là một truy vấn thậm chí không vừa trên một trang chiếu, và tôi thậm chí phải chia nó thành hai cột. Đây cũng là một yêu cầu trong ClickHouse, có cùng tốc độ, nhưng cho cả hai chuỗi thời gian: Silent Bob và Jay, vì vậy chúng tôi có hai chuỗi thời gian trên bảng điều khiển. Và điều này đã rất khó khăn, theo ý kiến ​​​​của tôi.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và theo Prometheus, nó sẽ là tổng (tỷ lệ). Đối với ClickHouse, tôi đã tạo một macro riêng gọi là RateColumns trông giống như một truy vấn Prometheus.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Chúng tôi đã xem xét và có vẻ như PromQL rất tuyệt, nhưng tất nhiên, nó cũng có những hạn chế.

Đây là:

  • LỰA CHỌN hạn chế.
  • Cạnh THAM GIA.
  • Không hỗ trợ HAVING.

Và nếu bạn đã làm việc với nó trong một thời gian dài, thì bạn sẽ biết rằng đôi khi rất khó để làm điều gì đó trong PromQL và trong SQL, bạn có thể làm hầu hết mọi thứ, bởi vì tất cả các tùy chọn mà chúng ta vừa nói đến đều có thể được thực hiện trong SQL . Nhưng nó sẽ được thuận tiện để sử dụng nó? Và điều này khiến tôi nghĩ rằng không phải lúc nào ngôn ngữ mạnh nhất cũng có thể là ngôn ngữ thuận tiện nhất.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Do đó, đôi khi bạn cần chọn ngôn ngữ cho các tác vụ. Nó giống như cuộc chiến giữa Batman và Superman. Rõ ràng là Superman mạnh hơn, nhưng Batman đã có thể đánh bại anh ta vì anh ta thực tế hơn và biết chính xác mình đang làm gì.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và phần tiếp theo là Mở rộng PromQL.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Một lần nữa về VictoriaMetrics. VictoriaMetrics là gì? Đây là cơ sở dữ liệu chuỗi thời gian, nó nằm trong OpenSource, chúng tôi phân phối các phiên bản đơn và cụm của nó. Theo điểm chuẩn của chúng tôi, đây là loại nhanh nhất hiện có trên thị trường và nó tương tự về mặt nén, tức là người sống báo cáo mức nén khoảng 0,4 byte mỗi điểm, trong khi Prometheus có 1,2-1,4.

Chúng tôi hỗ trợ không chỉ Prometheus. Chúng tôi hỗ trợ InfluxDB, Graphite, OpenTSDB.

Bạn có thể "viết" trong chúng tôi, nghĩa là bạn có thể chuyển dữ liệu cũ.

Và chúng tôi cũng hoạt động hoàn hảo với Prometheus và Grafana, tức là chúng tôi hỗ trợ công cụ PromQL. Và trong Grafana, bạn có thể chỉ cần thay đổi điểm cuối Prometheus thành VictoriaMetrics và tất cả bảng thông tin của bạn sẽ hoạt động như bình thường.

Nhưng bạn cũng có thể sử dụng chip bổ sung do VictoriaMetrics cung cấp.

Chúng tôi sẽ nhanh chóng xem xét các tính năng chúng tôi đã thêm.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Bỏ qua tham số khoảng thời gian - bạn có thể bỏ qua khoảng thời gian tham số trong Grafana. Khi bạn không muốn nhận được các đồ thị lạ khi phóng to/thu nhỏ bảng điều khiển, nên sử dụng biến $__interval. Đây là một thay đổi Grafana nội bộ và nó tự chọn phạm vi dữ liệu. Và VictoriaMetrics có thể tự hiểu phạm vi này nên là bao nhiêu. Và bạn không phải cập nhật tất cả các truy vấn của mình. Nó sẽ được dễ dàng hơn nhiều.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Chức năng thứ hai là tham chiếu khoảng thời gian. Bạn có thể sử dụng khoảng cách này trong các biểu thức của mình. Bạn có thể nhân, chia, chuyển nhượng, tham khảo nó.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Tiếp theo là họ hàm rollup. Hàm tổng số chuyển đổi bất kỳ chuỗi thời gian nào của bạn thành ba chuỗi thời gian riêng biệt. Đây là tối thiểu, tối đa và trung bình. Tôi thấy nó rất thuận tiện, bởi vì đôi khi nó có thể hiển thị một số ngoại lệ (dị thường) và không chính xác.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và nếu bạn chỉ đang giận dữ hoặc đánh giá, thì bạn có thể bỏ lỡ một số trường hợp trong đó chuỗi thời gian không hoạt động theo cách bạn dự định. Nó dễ nhìn hơn nhiều với chức năng này, giả sử giá trị tối đa thấp hơn rất nhiều so với trung bình.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Tiếp theo là biến mặc định. Mặc định - điều này có nghĩa là chúng ta cần rút ra giá trị nào trong Grafana nếu hiện tại chúng ta không có chuỗi thời gian. Khi nào nó xảy ra? Giả sử bạn xuất một số chỉ số lỗi. Và bạn có một ứng dụng tuyệt vời đến mức khi bạn bắt đầu, bạn không có lỗi và thậm chí không có lỗi trong ba giờ hoặc thậm chí một ngày tiếp theo. Và bạn có bảng điều khiển hiển thị các mối quan hệ từ thành công đến lỗi. Và họ sẽ không hiển thị gì cho bạn vì bạn không có chỉ số lỗi. Và theo mặc định, bạn có thể chỉ định bất cứ thứ gì.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Keep_last_Value - lưu giá trị cuối cùng của số liệu nếu nó bị thiếu. Nếu Prometheus sau lần cạo tiếp theo không tìm thấy nó trong vòng 5 phút, thì ở đây chúng tôi sẽ ghi nhớ giá trị cuối cùng của nó và biểu đồ của bạn sẽ không bị hỏng nữa.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Scrape_interval - hiển thị tần suất Prometheus thu thập dữ liệu về chỉ số của bạn, với tần suất như thế nào. Ở đây bạn có thể xem pass chẳng hạn.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko
Thay thế nhãn là một tính năng phổ biến. Nhưng chúng tôi nghĩ rằng nó hơi phức tạp vì nó có các đối số nguyên. Và bạn không chỉ cần nhớ 5 đối số mà còn phải nhớ trình tự của chúng.
"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko
Vì vậy, tại sao không làm cho chúng đơn giản hơn? Tức là chia nhỏ nó thành các hàm nhỏ với cú pháp rõ ràng.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và bây giờ là thú vị nhất. Tại sao chúng tôi nghĩ rằng đó là PromQL mở rộng? Bởi vì chúng tôi hỗ trợ Biểu thức bảng chung. Bạn có thể làm theo mã QR (https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL), xem các liên kết có ví dụ, từ sân chơi, nơi bạn có thể chạy các truy vấn trực tiếp trong VictoriaMetrics mà không cần cài đặt nó chỉ trong trình duyệt.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và nó là gì? Yêu cầu từ phía trên này là một yêu cầu khá phổ biến. Tôi nghĩ rằng trong bất kỳ bảng điều khiển nào ở nhiều công ty, bạn sử dụng cùng một bộ lọc cho mọi thứ. Thường là vậy. Nhưng khi bạn cần thêm một số bộ lọc mới, bạn phải cập nhật từng bảng điều khiển hoặc tải xuống bảng điều khiển, mở nó bằng JSON, thực hiện tìm thay thế, điều này cũng mất thời gian. Tại sao không lưu trữ giá trị này trong một biến và sử dụng lại nó? Theo tôi, có vẻ đơn giản và rõ ràng hơn nhiều.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Ví dụ: khi tôi cần cập nhật các bộ lọc trong Grafana trong tất cả các yêu cầu và bảng điều khiển có thể rất lớn hoặc thậm chí có thể có một vài trong số chúng. Và tôi muốn giải quyết vấn đề này như thế nào trong Grafana?

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Tôi giải quyết vấn đề này như sau: Tôi tạo một CommonFilter và xác định bộ lọc này trong đó, sau đó tôi sử dụng lại nó trong các truy vấn. Nhưng nếu bạn làm tương tự bây giờ, nó sẽ không hoạt động vì Grafana không cho phép bạn sử dụng các biến bên trong các biến truy vấn. Và đó là một chút kỳ lạ.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và vì vậy tôi đã thực hiện một tùy chọn cho phép bạn làm điều này. Và nếu bạn quan tâm hoặc muốn một tính năng như vậy thì hãy ủng hộ hoặc không thích nếu bạn không thích ý tưởng này. https://github.com/grafana/grafana/pull/16694

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Tìm hiểu thêm về PromQL mở rộng. Ở đây, chúng tôi định nghĩa không chỉ một biến, mà trực tiếp là toàn bộ hàm. Và chúng tôi gọi nó là ru (sử dụng tài nguyên). Và chức năng này chấp nhận tài nguyên miễn phí, giới hạn tài nguyên và bộ lọc. Cú pháp có vẻ đơn giản. Và rất dễ sử dụng chức năng này và tính phần trăm bộ nhớ trống mà chúng ta có. Tức là chúng ta có bao nhiêu bộ nhớ, giới hạn nào và lọc như thế nào. Sẽ tốt hơn rất nhiều nếu bạn viết tất cả bằng cách sử dụng lại các bộ lọc giống nhau, bởi vì nó sẽ trở thành một truy vấn lớn, lớn.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Và đây là một ví dụ về một yêu cầu lớn, lớn như vậy. Đó là từ bảng điều khiển NodeExporter chính thức cho Grafana. Nhưng tôi không thực sự hiểu những gì đang xảy ra ở đây. Tất nhiên, đó là điều tôi hiểu nếu bạn nhìn kỹ, nhưng số lượng dấu ngoặc có thể ngay lập tức làm giảm động lực để hiểu những gì đang xảy ra ở đây. Và tại sao không làm cho nó đơn giản và rõ ràng hơn?

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Ví dụ, như thế này, làm nổi bật những điều hoặc phần quan trọng trong các biến. Và sau đó làm toán cơ bản của bạn. Điều này giống như lập trình hơn, đây là điều tôi muốn thấy trong tương lai ở Grafana.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Đây là ví dụ thứ hai về cách chúng tôi có thể làm cho nó dễ dàng hơn nếu chúng tôi đã có chức năng ru này và nó đã tồn tại trực tiếp trong VictoriaMetrics. Và sau đó bạn chỉ cần chuyển giá trị đã lưu trong bộ nhớ cache mà bạn đã khai báo trong CTE.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Tôi đã nói về tầm quan trọng của việc sử dụng đúng ngôn ngữ lập trình. Và, có lẽ, có điều gì đó khác biệt đang diễn ra ở Grafana ở mọi công ty. Và, có thể, bạn vẫn cấp quyền truy cập vào Grafana cho các nhà phát triển của mình và các nhà phát triển sẽ làm điều gì đó của riêng họ. Và tất cả họ làm điều đó theo một cách khác nhau. Nhưng tôi muốn nó bằng cách nào đó giống nhau, tức là giảm xuống một tiêu chuẩn chung.

Giả sử bạn thậm chí không chỉ có kỹ sư hệ thống, thậm chí bạn có thể có chuyên gia, nhà phát triển hoặc SRE. Có thể bạn có các chuyên gia biết giám sát là gì, biết Grafana là gì, tức là họ đã làm việc với vấn đề này trong nhiều năm và họ biết chính xác cách thực hiện đúng. Và họ đã viết nó 100 lần và giải thích cho mọi người, nhưng không hiểu sao không ai nghe.

Điều gì sẽ xảy ra nếu họ có thể đưa kiến ​​thức này trực tiếp vào Grafana để những người dùng khác có thể sử dụng lại các chức năng? Và nếu cần tính phần trăm bộ nhớ trống, thì họ chỉ cần áp dụng hàm này. Nhưng điều gì sẽ xảy ra nếu những người tạo ra các nhà xuất khẩu, cùng với sản phẩm của họ, cũng cung cấp một bộ chức năng, cách làm việc với các chỉ số của họ, bởi vì họ biết chính xác những chỉ số này là gì và cách tính toán chúng một cách chính xác?

Cái này không thực sự tồn tại. Đây là những gì tôi đã làm bản thân mình. Đây là hỗ trợ thư viện trong Grafana. Giả sử những người tạo ra NodeExporter đã làm những gì tôi mô tả. Và cũng cung cấp một tập hợp các tính năng.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Đó là, nó trông giống như thế này. Bạn kết nối thư viện này với Grafana, bạn tiến hành chỉnh sửa và tại đây, cách làm việc với số liệu này rất đơn giản trong JSON. Đó là, một số tập hợp các chức năng, mô tả của chúng và những gì chúng mở ra.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Theo tôi, điều này có thể hữu ích, bởi vì sau đó bạn sẽ viết bằng Grafana giống như vậy. Và Grafana "nói" với bạn rằng có một chức năng như vậy và như vậy từ một thư viện như vậy và như vậy - hãy sử dụng nó. Tôi nghĩ điều đó sẽ rất tuyệt.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

Một chút về VictoriaMetrics. Chúng tôi làm rất nhiều điều thú vị. Đọc các bài viết của chúng tôi về nén, về sự cạnh tranh của chúng tôi với các ứng dụng dữ liệu chuỗi thời gian khác, giải thích của chúng tôi về cách làm việc với PromQL, vì có nhiều người mới bắt đầu làm điều này, cũng như về khả năng mở rộng theo chiều dọc và về cuộc đối đầu với Thanos.

"ExtendedPromQL" - bảng điểm báo cáo của Roman Khavronenko

câu hỏi:

Tôi sẽ bắt đầu câu hỏi của mình bằng một câu chuyện cuộc sống đơn giản. Khi tôi mới bắt đầu sử dụng Grafana, tôi đã viết một truy vấn 5 dòng rất thuyết phục. Kết quả cuối cùng là một biểu đồ rất thuyết phục. Biểu đồ này gần như đã đi vào sản xuất. Nhưng khi kiểm tra kỹ hơn, hóa ra biểu đồ này cho thấy những điều hoàn toàn vô nghĩa không liên quan gì đến thực tế, mặc dù các con số nằm trong phạm vi mà chúng ta mong đợi. Và câu hỏi của tôi. Chúng tôi có thư viện, chúng tôi có chức năng, nhưng làm cách nào để viết bài kiểm tra cho Grafana? Bạn đã viết một truy vấn phức tạp ảnh hưởng đến quyết định kinh doanh - đặt hàng một thùng chứa máy chủ thực hay không đặt hàng. Và như chúng ta đã biết, hàm số này vẽ đồ thị tương tự như chân lý. Cảm ơn.

Cảm ơn vì câu hỏi. Có hai phần ở đây. Đầu tiên, dựa trên kinh nghiệm của tôi, tôi có ấn tượng rằng hầu hết người dùng khi họ nhìn vào biểu đồ của họ đều không hiểu những gì họ đang cho họ thấy. Bằng cách nào đó, mọi người rất giỏi trong việc viện lý do cho bất kỳ sự bất thường nào xảy ra trên biểu đồ, ngay cả khi đó là lỗi bên trong một chức năng. Và phần thứ hai - đối với tôi, có vẻ như việc sử dụng các chức năng như vậy sẽ phù hợp hơn nhiều để giải quyết vấn đề của bạn, thay vì mỗi nhà phát triển của bạn lập kế hoạch năng lực của riêng họ và mắc lỗi với một số xác suất.

Làm thế nào để kiểm tra?

Làm thế nào để kiểm tra? Chắc là không.

Như một bài kiểm tra ở Grafana.

Còn Grafana thì sao? Grafana dịch trực tiếp yêu cầu này sang DataSource.

Bằng cách thêm một chút vào các thông số.

Không, không có gì được thêm vào Grafana. Có thể có các tham số GET, chẳng hạn như bước. Nó không được chỉ định rõ ràng, nhưng bạn có thể ghi đè lên nó, bạn không thể ghi đè lên nó, nhưng nó được thêm tự động. Bạn không viết bài kiểm tra ở đây. Tôi không nghĩ bạn nên dựa vào Grafana ở đây như một nguồn sự thật.

Cảm ơn bạn đã báo cáo! Cảm ơn đã nén! Bạn đã nhớ lại về việc ánh xạ một biến trong biểu đồ, rằng trong Grafana, bạn không thể sử dụng một biến trong một biến. Bạn hiểu ý tôi muốn nói gì không?

Vâng.

Điều này ban đầu khiến tôi đau đầu khi tôi muốn đưa ra cảnh báo ở Grafana. Và ở đó bạn cần thực hiện cảnh báo cho từng máy chủ riêng biệt. Đây là điều bạn đã làm, nó có hoạt động với các cảnh báo trong Grafana không?

Nếu Grafana không truy cập các biến theo một số cách khác, thì có, nó sẽ hoạt động. Nhưng lời khuyên của tôi là hoàn toàn không nên sử dụng cảnh báo trong Grafana, tốt hơn hết bạn nên sử dụng trình quản lý cảnh báo.

Có, tôi sử dụng nó, nhưng việc thiết lập ở Grafana có vẻ dễ dàng hơn, nhưng cảm ơn vì mẹo!

Nguồn: www.habr.com

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