pluto
Moderator
SPLUNK FUDAMENTALS 2
Splunk 7.x Fundamentals 2 – Module 11: Creating and Using Macros
Splunk 7.x Fundamentals 2 – Module 11: Creating and Using Macros
Mục tiêu Module:
- Mô tả macro
- Quản lý macro
- Tạo một macro cơ bản
- Sử dụng macro cơ bản
- Xác định các đối số/biến cho macro
- Thêm và sử dụng các đối số bằng macro
Trong trường hợp người dùng cần sử dụng lặp đi lặp lại các câu search nhiều lần, SPL hỗ trợ chứ năng Macro, cho phép người dùng thực hiện với các đặc điểm sau:
- Được chọn phạm vi thời gian tại thời điểm sử dụng Macro.
- Macro có thể là một chuỗi tìm kiếm đầy đủ hoặc một phần của tìm kiếm có thể được sử dụng lại bên trong câu search.
- Cho phép truyền một hoặc nhiều đối số vào Macro.
- Cho phép truyền các giá trị tham số cho macro tại thời điểm thực hiện câu search.
2. Creat a Basic Macro
Xét câu search sau:
sourcetype=vendor_sales VendorCountry="United States"
| stats sum(price) as USD by product_name
| eval USB = "$" + tostring('USD', "commas")

Trong trường hợp cần sử dụng nhiều lần câu search trên, việc lặp đi lặp lại nhiều lần sẽ được thay thế bằng cách sử dụng chức năng Macro(tương tự khái niệm hàm-function trong lập trình).
Để tạo Macro, chọn Settings, chọn Advanced search:

Chọn Search Macros:

Chọn New Search Macros:

Hoàn thành các thông tin sau:
- Name: Tên của Macro.
- Definition: Định nghĩa câu search cho Macro.

3.Sử dụng Macro
Xét kết quả câu search sau(không sử dụng Macro):

Xét kết quả của câu search sau(sử dụng Macro):

Để sử dụng Macro, nhập tên Macro trên thanh tìm kiếm của Splunk , đặt tên Macro vào giữa hai dấu "`", chọn khoảng thời gian cần thực hiện câu search như các câu search thông thường. Kết quả hai cách search KHÔNG sử dụng macro và CÓ sử dụng macro là như nhau. Tuy nhiên, cú pháp câu search được thu gọn, có thể sử dụng Macro để thu gọn câu search nhờ tính chất kế thừa của Macro.
4. Adding Arguments
Splunk cho phép truyền các tham số vào Macro trong quá trình sử dụng câu search, tương tự khái niệm function trong lập trình. Xét câu search sau:
sourcetype=vendor_sales VendorCountry=Germany OR VendorCountry=France OR VendorCountry=Italy
| stats sum(price) as USD by product_name
| eval euro = " €" + tostring(USD*0.79, "commas")
| eval USD = "$" + tostring(USD, "commas")

Câu search trên làm nhiệm vụ chuyển đồng Dolar USD sang đồng Euro, để sử dụng câu search, người dùng cần truyền vào ba tham số trong câu lệnh:
| eval euro = " €" + tostring(USD*0.79, "commas")
- euro: Tên của đồng tiền cần quy đổi, ở đây là euro
- € : Ký tự của đồng tiền cần quy đổi.
- 0.79: Tỷ lệ quy đổi từ đồng USD sang đồng euro.
Tương tự Chọn Settings > chọn Advanced Search> chọn Search Macros> chọn New Search Macro, hoàn thành các thông tin sau:
- Destination app: Phạm vi sử dụng Macro.
- Name: định nghĩa tên Macro kèm số lượng tham số của Macro. Ví dụ: monthly_sales(3) : macro monthly_sales sẽ có ba tham số đầu vào.
- Definition: Định nghĩa cho macro monthly_sales.
- Arguments: tên của ba tham số đầu vào macro gồm: currency, symbol, rate.

Xét phần định nghĩa cho macro monthly_sales sau:
stats sum(price) as USD by product_name
| eval $currency$ = "$symbol$" + tostring(USD*$rate$, "commas")
| eval USD = "$" + tostring(USD, "commas")
So sánh câu search trên với câu search tương đương khi không sử sụng macro:
stats sum(price) as USD by product_name
| eval euro = "€" + tostring(USD*0.79, "commas")
| eval USD = "$" + tostring(USD, "commas")
Theo đó, nhận thấy:
- $currency$ : tương ứng với euro
- $symbol$ : tương ứng với €
- $rate$ : tương ứng 0.79
5. Using Arguments
Xét câu search sau, không sử dụng macro:

Sử dụng macro tương ứng cho câu search trên, để sử dụng macro, gọi tên của macro và truyền vào các giá trị tham số đầu vào, đặt giữa hai dấu “`”
(ví dụ: `month_sales(euro, €,0.79)`)

Kết quả hai cách search KHÔNG sử dụng macro và CÓ sử dụng macro là như nhau. Tuy nhiên, cú pháp câu search được thu gọn, và có thể được sử dụng nhiều lần đối với nhiều đồng tiền khác nhau, bằng cách truyền các tham số tương ứng của các đồng tiền của các nước khác nhau.
Chú ý: khi truyền các giá trị tham số vào macro, các giá trị được ngăn cách nhau bằng dấu phẩy “,”. Có thể có các ký tự space, nhưng khuyến nghị chỉ sử dụng các dấu phẩy , để câu search được đọc dễ dàng.

6. Validating Macros
Trong trường hợp người dùng truyền sai kiểu giá trị tham số, Macro có hỗ trợ thông báo cho người dùng nhập lại đúng các giá trị tham số đầu vào. Để cấu hình, hoàn thành các thông tin trong Macro tương ứng:
- Validation Expression: định nghĩa kiểu giá trị cho tham số. Ví dụ: sử dụng isnum($rate$) để định nghĩa kiểu cho tham số rate là number.
- Validation Error Message: Nhập thông báo nếu người dùng nhập sai giá trị của tham số.

Một số hàm hỗ trợ định nghĩa cho các kiểu giá trị:
- isnum(X): Trả về TRUE nếu kiểu giá trị của X là number.
- isnull(X): Trả về TRUE nếu kiểu giá trị của X là NULL.
- isnotnull(X): Trả về TRUE nếu kiểu giá trị của X là not NULL.
- isint(X): Trả về TRUE nếu kiểu giá trị của X là Interger.
- isbool(X): Trả về TRUE nếu kiểu giá trị của X là Boolean.
Ví dụ với câu search sau đây, giá trị của rate=testrate, sai kiểu giá trị của tham số rate, sẽ có thông báo nhắc người dùng nhập lại giá trị của tham số rate:

Sửa lần cuối:
Bài viết liên quan
Bài viết mới