Splunk Splunk 7.x Fundamentals 2 – Module 5: Filtering and Formatting Data

pluto

Internship/Fresher
Sep 8, 2020
51
11
8
SPLUNK FUDAMENTALS 2

Splunk 7.x Fundamentals 2 – Module 5: Filtering and Formatting Data

Mục tiêu Module.

  • Sử dụng lệnh eval để:
  • Thực hiện các phép tính
  • Chuyển đổi giá trị
  • Làm tròn các giá trị
  • Định dạng lại giá trị
  • Sử dụng câu lệnh điều kiện
  • Sử dụng lệnh search và where để lọc kết quả đã được tính toán
  • Sử dụng lệnh fillnull
1.eval Command

1.1Overview
eval cho phép thực hiện tính toán và thao tác lên các giá trị(value) của trường(field) trong tập dữ liệu.

Ví dụ: eval fieldname1 = expression1 [, fieldname2 = expression2 ...]

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:
1609121948838.png

image002.jpg


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.
1609121976369.png

image004.jpg


  • 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:
1609122014345.png

image006.jpg


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ụ:
1609122042767.png



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=*).
image008.jpg




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):
image010.jpg
image011.jpg



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):
image012.jpg




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 %:
1609122220896.png




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
image015.jpg


Để 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.

image016.jpg


image018.jpg

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.
1609122601303.png


1.5 Formatting và Sorting Values

1609122627102.png
1609122634271.png


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.

1609122674781.png

image024.jpg



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.

1609122761303.png

1609122766262.png



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.
1609122822650.png


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.

1609122875188.png


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.
1609122907635.png
image031.jpg




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:


1609122948267.jpeg
 

Attachments

  • image027.jpg
    image027.jpg
    12.9 KB · Views: 0
Last edited:

About us

  • Securityzone.vn là một trang web chuyên về an ninh mạng và công nghệ thông tin. Trang web này cung cấp các bài viết, tin tức, video, diễn đàn và các dịch vụ liên quan đến lĩnh vực này. Securityzone.vn là một trong những cộng đồng IT lớn và uy tín tại Việt Nam, thu hút nhiều người quan tâm và tham gia. Securityzone.vn cũng là nơi để các chuyên gia, nhà nghiên cứu, sinh viên và người yêu thích an ninh mạng có thể trao đổi, học hỏi và chia sẻ kiến thức, kinh nghiệm và giải pháp về các vấn đề bảo mật trong thời đại số.

Quick Navigation

User Menu