SPL Search Syntax
Ngôn ngữ tìm kiếm được xây dựng từ năm thành phần:
- Search Terms: các từ khóa để tìm kiếm kết quả mong muốn như: keywords, phrases, các toán tử kết hợp.
- Commands: các lệnh thao tác với kết quả tìm kiếm như thống kê, tính toán, tạo biểu đồ.
- Functions: các hàm để thực hiện các chức năng như tính toán và đánh giá kết quả.
- Arguments: các giá trị muốn truyền vào cho hàm.
- Clauses: dùng để xác định hoặc nhóm các kết quả dưới dạng dữ liệu mong muốn.
Syntax highlight
Từ Splunk phiên bản 6.5 trở đi có hỗ trợ syntax highlight khi nhập các câu lệnh tìm kiếm. Splunk cung cấp các tính năng tự động hoàn thành, và các phần trong câu lệnh tìm kiếm sẽ có màu tự động. Khi con trỏ được đặt trên dấu ngoặc đơn, 2 dấu ngoặc đơn sẽ được tô sáng.
- Toán tử và công cụ sửa đổi lệnh sẽ hiển thị màu cam.
- Các câu lệnh sẽ hiển thị màu xanh nước biển.
- Các tùy chọn lệnh sẽ hiển thị màu xanh lá cây.
- Hàm sẽ hiển thị màu tím.
Search Pipeline
Khi thực hiện câu lệnh tìm kiếm, Splunk sẽ đọc kết quả từ đĩa và tạo một bản sao trong bộ nhớ, xóa những sự kiện trong kết quả tìm kiếm mà không khớp với câu lệnh tìm kiếm. Kết quả cuối cùng giống như một bảng tính, chỉ chứa các trường và giá trị bạn đã tìm kiếm. Cùng với việc sử dụng bộ lọc thời gian thời gian cho các sự kiện, với các cụm từ tìm kiếm tối ưu, sẽ làm cho bảng tính nhỏ hơn và câu lệnh tìm kiếm nhanh hơn.
Pipes dùng để phân tách giữa các thành phần tìm kiếm. Sử dụng một pipes để yêu cầu Splunk chuyển tiếp kết quả tìm kiếm trước đó làm đầu vào của thành phần tìm kiếm tiếp theo.
SPL vs SQL
Chắc hẳn đến đây sẽ có bạn thấy phần nào SPL khá giống SQL khi query, nào là từ raw data rồi lọc thành spreadsheet, rồi table, cuối cùng là result. Thực tế thì cách vận hành SQL cũng tương tự như SQL, nhưng đơn giản hơn. Theo dõi 1 số khái niệm sau đây:
Database Concept | Splunk Concept |
---|---|
SQL query | Splunk search |
table/view | search results |
index | index |
row | result/event |
column | field |
database/schema | index/app |
Một số lưu ý khi sử dụng SPL:
- Tất cả các search term dùng thẳng trực tiếp keyword và toán tử.
- Mặc định các lệnh đều mang nghĩa tích cực (positive) như increase, include, bonus, true,…
- Nếu muốn đảo ngược ý nghĩa của lệnh (negative) thì thêm dấu trừ trước tham số 1 khoảng trắng.
- Nếu muốn chỉ định cụ thể ý nghĩa của từng tham số, thêm dấu cộng/trừ trước tham số.
Một số SPL commands phổ biến
Fields Command
Lệnh fields
cho phép chọn hoặc loại trừ các trường cụ thể khỏi field sidebar. Điều này giúp ích khi cần giới hạn các trường được hiển thị và làm cho tìm kiếm chạy nhanh hơn.
Ví dụ: chỉ hiển thị 2 trường status và clientip
Table command
Lệnh table
cho phép chọn hoặc loại trừ các trường cụ thể khỏi bảng kết quả. Để sắp xếp lại thứ tự hiển thị các cột trong bảng, thay đổi thứ tự của các đối số theo thứ tự các cột trong bảng muốn hiển thị.
Ví dụ: chỉ hiển thị 3 trường JSESSIONID, product_name và price
Rename Command
Lệnh rename
được sử dụng để đổi tên các trường. Có thể sử dụng lệnh rename để đổi tên nhiều trường.
Sort Command
Lệnh sort
cho phép bạn sắp xếp kết quả theo thứ tự tăng dần hoặc giảm dần.
Ví dụ: sắp xếp theo sale_price giảm dần, Vendor tăng dần
Các lệnh khác
Ngoài ra, còn nhiều lệnh khác với cách sử dụng tương tự, bạn có thể tìm hiểu thêm:
deup
: dùng để lọc dữ liệu trùng trên các trườngchart
: dùng tương tự để tạo biểu đồ, dùng với phép toántimechart
: dùng để hiển thị biểu đồ thời gian, dùng với phép toántimewrap
: dùng với timechart để tạo thêm visualize so sánh với mốc thời gian đóearliest
/lastest
: dùng để giới hạn thời gian tìm kiếmspan
/limit
: dùng để kiểm soát visualize, chia nhỏ hoặc giới hạn nhóm dữ liệutop
: dùng để đếm và liệt kê các cột nhiều nhất và tỉ lệ- rare: dùng để đếm và liệt kê các cột thấp nhất và tỉ lệ
- stats: dùng để thống kê, thực hiện các phép toán
- eval: dùng để tạo 1 cột mới dựa trên giá trị tính toán (thường dùng cuối cùng)
Lưu ý: các lệnh trên đều là SPL commands (có màu xanh nước biển)
Một số hàm phổ biến trong SPL
SPL có 1 số hàm built-in dùng để thực hiện tính toán khá tương tự với các cú pháp của Excel hoặc các hàm trong thư viện của các ngôn ngữ lập trình.
- count: đếm số lượng
- sum: tính tổng
- dc: đếm số lượng unique
- list: liệt kê các giá trị
- values: liệt kê giá trị unique
- min: giá trị thấp nhất
- max: giá trị cao nhất
- avg: giá trị trung bình
- in: giá thị thuộc list
- range: giá trị max-min
- round: làm tròn giá trị
- pow: lũy thừa
- random: ngẫu nhiên
- if: điều kiện và kết quả
- case: nhiều điều kiện và kết quả
- searchmatch: tìm kiếm chứa chuỗi
- cidrmatch: tìm kiếm chứa subnet
- upper: viết hoa
- lower: viết thường
- replace: thay thế
- substr: chuỗi con
- tostring: chuyển thành chuỗi
- tonumber: chuyển thành số
Lưu ý: các hàm trên đều là SPL functions (có màu tím)