Splunk Splunk 7.x Fundamentals 2 – Module 11: Creating and Using Macros

pluto

Moderator
SPLUNK FUDAMENTALS 2

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
1. Macros Overview
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")
image001.jpg


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:
image003.jpg




Chọn Search Macros:
image004.jpg




Chọn New Search Macros:
image006.jpg






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.
Sau đó chọn Save để lưu lại Macro đã tạo.
image007.jpg





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




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

image011.jpg

Để 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")



image013.jpg



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.
Mở rộng câu seach trên, xây dựng một macro có chức năng quy đổi giá trị từ đồng USB sang các đồng khác. Lúc này, cần sử dụng chức năng tạo tham số trong macro, để truyền ba giá trị đầu vào, gồm: Tên của đồng tiền, Ký tự của đồng tiền và tỉ lệ quy đổi từ đồng USB sang đồng tiền cần quy đổi.


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.

image015.jpg




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
Vậy: sau khi xác định các tham số truyền vào macro, cần viết câu search định nghĩa của macro, trong đó, thay thế các tham số bằng tên tham số, các tên tham số này được đặt giữa ký tự dollar “$” trong câu search định nghĩa macro. Sau khi có câu search định nghĩa macro, cấu hình macro theo các bước trên, lúc này đã có thể sử dụng macro.

5. Using Arguments


Xét câu search sau, không sử dụng macro:
image016.jpg





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)`)
image018.jpg


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




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ố.
Sau khi hoàn thành các thông tin , chọn Save để lưu lại.
image022.jpg



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:
image024.jpg
 
Last edited:
Top