So sánh thời gian trong splunk

Kết quả sau khi sử dụng eval để tính toán được lưu ở cả hai trường hiện tại hoặc trường mới vừa được chỉ định

  • Nếu trường mới đã tồn tại, các giá trị của trường được thay thế bằng kết quả sau khi thực hiện lệnh eval.
  • Dữ liệu đã được lập chỉ mục(indexed data) không bị sửa đổi và không có dữ liệu mới nào được ghi vào chỉ mục.

Giá trị trường có phân biệt chữ hoa chữ thường.

Lệnh eval cho phép bạn:

  • Tính toán biểu thức
  • Đặt kết quả vừa được tính toán vào một trường mới.
  • Sử dụng trường mới trong các câu search hoặc các biểu thức khác

Các loại toán tử:

  • Số học (Arithmetic): +, -, *, /, %
  • Phép nối (Concatenation): + .
  • Boolean: AND, OR, NOT, XOR
  • So sánh (Comparison) : <, >, <=, >=, !=, =, ==, LIKE

Chi tiết thêm lệnh eval, xem tại : https://docs.splunk.com/Documentation/Splunk/7.0.3/SearchReference/CommonEvalFunctions

1.2 Convert Values Xét ví dụ sau đây:

So sánh thời gian trong splunk

So sánh thời gian trong splunk

Câu search trên hiển thị tổng số byte được sử dụng cho mỗi danh mục sử dụng, kết quả trên rất khó để xác định lượng băng thông đang được sử dụng bằng cách tính theo đơn vị byte. Do đó, cần sử dụng lệnh “eval” để chuyển đổi giá trị byte thành megabyte.

So sánh thời gian trong splunk

So sánh thời gian trong splunk

  • A: Tính số byte cho mỗi kiểu sử dụng
  • B: Tạo một trường mới có tên là bandwith
  • C: Chuyển đổi các giá trị từ byte sang megabyte bằng cách chia giá trị của trường byte cho (1024 * 1024), sau đó gán giá trị này cho bandwidth.

Như vậy, ta đã chuyển đối giá trị từ byte sang megabyte, tuy nhiên, kết quả vẫn khó để đọc, vì có nhiều số sau dấu phẩy, do đó cần làm tròn các giá trị này.

1.3 Round Values Để làm tròn các giá trị, ta sử dụng hàm sau:

round(field/number, decimals): hàm sẽ thực hiện làm tròn field/number theo số chữ số sau dấu phẩy được chỉ định trong “decimals”.

Ví dụ, làm tròn giá trị trong trường Bandwidth đến 2 chữ số sau dấu phẩy:

So sánh thời gian trong splunk

So sánh thời gian trong splunk

Trong trường hợp muốn loại bỏ cột Bytes ra khỏi bảng sau khi đã có cột Bandwidth, sử dụng lệnh “fields” với toán tử “-“ để loại bỏ trường, ví dụ:

So sánh thời gian trong splunk

1.4 Calculating Values

Có thể thực hiện các phép toán trên các trường có giá trị số thập phân. Xét ví dụ sau:

Câu search: index=web sourcetype=access_combined product_name=* action=purchase

Liệt kê các sự kiện được mua thành công (action=purchase) từ tất cả các mặt hàng ( product_name=*).

So sánh thời gian trong splunk

Trong đó có 2 trường cần quan tâm là price(giá gốc của sản phẩm) và sale_price(giá sale của sản phẩm):

So sánh thời gian trong splunk

So sánh thời gian trong splunk

Sử dụng lệnh “stats” để tạo ra bảng gồm product_name, price(đổi tên thành tp), sale_price(đổi tên thành tsp):

So sánh thời gian trong splunk

Sử dụng lệnh “eval” để tính toán phần trăm giảm giá, lưu tại Discount, sau đó định dạng trường Discount dưới dạng %:

So sánh thời gian trong splunk

Sử dụng lệnh “sort” để sắp xếp giảm dần các giá trị trong trường Discount. Tiếp tục sử dụng lệnh “eval” để chuyển dịnh dạng trường Discount từ số sang %. Sau khi hoàn thành tính toán, dùng lệnh “rename” để đổi tên:

  • tp thành “Total List Price”
  • tsp thành “Total Sale Price”
  • product_name as Product

So sánh thời gian trong splunk

Để hỗ trợ cho việc hiển thị, lệnh eval có thêm hàm “tostring” để chuyển đổi các giá trị số sang chuỗi ký tự.

Cấu trúc lệnh: tostring(field, “option”)

Các Options bao gồm:

  • “commas”: dấu chấm(phẩy) phân tách số thập phân, tự động làm tròn đến hai chữ số sau dấu chấm(phẩy).
  • “duration”: chuyển số về dạng thời gian dưới dạng “hh:mm:ss”
  • “hex”: Chuyển số thập phân về định dạng thập lục phân.

Xét ví dụ: Đưa ra doanh thu bán hàng trực tuyến đã bị mất bao nhiêu trong tuần trước do lỗi máy chủ 503.

So sánh thời gian trong splunk

So sánh thời gian trong splunk

Sau khi sử dụng tostring , giá trị của của trường AvegraLostSales và TotalLostRevenue được chuyển từ giá trị số sang chuỗi ký tự.

Xét tiếp ví dụ: Xác định năm phiên của người dùng sử dụng dài nhất trong 4 giờ qua ở định dạng HH: MM: SS.

So sánh thời gian trong splunk

1.5 Formatting và Sorting Values

So sánh thời gian trong splunk

So sánh thời gian trong splunk

Với hai kết quả trên có sự khác biệt vì lệnh eval thêm ký tự vào để chuyển đổi các giá trị số thành chuỗi. Do đó, để sắp xếp một cách chính xác: sắp xếp theo giá trị số trước, sau đó sử dụng eval.

1.6 Multiple Expressios Trong lệnh eval, có thể sử dụng nhiều biểu thức với quy tắc như sau:

  • Mỗi biểu thức tiếp theo tham chiếu đến kết quả của các biểu thức trước đó.
  • Các biểu thức phải được phân tách bằng dấu phẩy.

Cấu trúc biểu thức như sau:

eval fieldname1 = expression1,fieldname2 = expression2, fieldname3 = expression3...

Xét ví dụ sau: Tính new sale price thấp hơn 5% so với tỷ lệ phần trăm chiết khấu hiện tại cho dữ liệu bán hàng trực tuyến.

So sánh thời gian trong splunk

So sánh thời gian trong splunk

A: Dựa trên các giá trị của list_price và current_sale_price, tính tỷ lệ phần trăm current_discount

B: Tính giá trị new_discount bằng cách trừ 5 từ current_discount

C: Tính new_sale_price bằng cách áp dụng phần trăm new_discount

1.7 if Function Cấu trúc hàm if như sau:

Cú pháp: if(X,Y,Z) . Trong đó:

  • Hàm if nhận ba đối số
  • Đối số đầu tiên, X, là một biểu thức Boolean
  • Nếu X là TRUE, thì kết quả sẽ là đối số thứ hai, Y
  • Nếu X là FALSE, kết quả sẽ là đối số thứ ba, Z
  • Các giá trị không phải số phải được đặt trong "dấu ngoặc kép"
  • Giá trị của trường(Field values) được xử lý theo cách phân biệt chữ hoa chữ thường

Xét ví dụ sau: Hiển thị doanh số bán lẻ của tuần trước, được chia theo Asia và Rest of the World.

So sánh thời gian trong splunk

So sánh thời gian trong splunk

Các bước thự hiện câu search trên như sau:

  • Tạo một trường mới có tên là SalesTerritory
  • Dựa vào giá trị VendorID.
  • If VendorID >= 7000 AND < 8000 là TRUE, SalesTerritory là "Asia"
  • If VendorID >= 7000 AND < 8000 là FALSE, SalesTerritory "Rest of the World"

1.8 case Function Cấu trúc hàm case như sau:

Cú pháp: case(X1,Y1,X2,Y2...) . Trong đó:

  • X1, X2, X3,…. là các biểu thức Boolean.
  • Y1, Y2, Y3…. là các kết quả.
  • Đối số đầu tiên, X1, là một biểu thức Boolean
  • Nếu X1 cho kết quả là TRUE, thì kết quả sẽ cho kết quả là Y1
  • Nếu X2 cho kết quả là FALSE, thì sẽ đánh giá biểu thức Boolean tiếp theo(X2), tương tự cho đến hết các biểu thức trong hàm case.

Các ví dụ sẽ được thảo luận trong các phần tiếp theo.

So sánh thời gian trong splunk

2. Filtering Results – search and where

Lệnh search và where được sử dụng để với mục đích để lọc các kết quả. Phân biệt hai lệnh này như sau:

-search:

  • Có thể dễ dàng sử dụng hơn nếu đã quen với cú pháp tìm kiếm cơ bản
  • Xử lý các giá trị trường theo cách KHÔNG phân biệt chữ hoa chữ thường
  • Cho phép tìm kiếm theo từ khóa
  • Có thể được sử dụng tại bất kỳ điểm nào trong quá trình tìm kiếm

-where:

  • Có thể so sánh các giá trị từ hai trường khác nhau
  • Các hàm có sẵn, chẳng hạn như isnotnull ()
  • Xử lý các giá trị trường theo cách CÓ phân biệt chữ hoa chữ thường
  • Không thể xuất hiện đầu tiên trong quá trình tìm kiếm

2.1 search Command Xét ví dụ: Đưa ra các sản phẩm trong 24 giờ qua đã bán được hơn 500$ qua hình thức trực tuyến.

So sánh thời gian trong splunk

2.2 where Command where command: Sử dụng cú pháp biểu thức giống như lệnh eval Sử dụng các biểu thức boolean để lọc kết quả tìm kiếm và chỉ giữ lại kết quả là True Các chuỗi được trích dẫn kép được hiểu là các giá trị trường(Field Values). Xử lý các giá trị trường theo cách phân biệt chữ hoa chữ thường Các chuỗi không được trích dẫn hoặc được trích dẫn đơn được coi là các trường(Field). Để xem chi tiết lệnh where, đọc thêm tại: https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Where?r=searchtip

Xét ví dụ sau: Đưa những ngày trong tuần trước: có nhiều hành động remove hơn hành động change.

So sánh thời gian trong splunk

So sánh thời gian trong splunk

Xét ví dụ sau: Báo cáo số lượng sự kiện trong 24 giờ qua theo địa chỉ IP với một loạt địa chỉ có bắt đầu bằng 10x.y.x.t: