The Splunk search processing language
Searches are made up of this basic components
Search terms – what are you looking for?
-keywords, phrases, Booleans, etc.
Commands – what do you want to with results?
-Create a chart, compute statistic, evaluate and format etc.
Functions – how you want to chart, compute, evaluate the results?
-Get a sum, get an average, transform the values etc
Arguments – are there variable you want to apply to this functions?
Calculate the average value for a specific field, convert millisecond to seconds, etc
Clauses – how do you want to group the results?
-Get the average of values for the price field grouped by product, etc.
Here is a sample event: 172.26.34.223 – – [24/Mar/2018:12:05:27 -0700] “GET /trade/app?action=logout HTTP/1.1” 200 295
Look at the following search: host=webserver
You can use the standard <field>=<value> syntax.
Search for events on all “hosts” servers for accesses by the user “root”. It then reports the 20 most recent events.
host=* eventtype=access user=root
Search across all public indexes.
Search across all public indexes. index=*
Search across all indexes, public and internal. index=* OR index=_*
if you often search for failed logins “failed login” OR “FAILED LOGIN” OR “Authentication failure” OR “Failed to authenticate user”
Web access errors from the beginning of the week to the current time of your search (now).
eventtype=webaccess error earliest=@w0
Web access errors from the current business week (Monday to Friday).
eventtype=webaccess error earliest=@w1 latest=+7d@w6
Subsearches must be enclosed in square brackets in the primary search.
sourcetype=access_* status=200 action=purchase [search sourcetype=access_* status=200 action=purchase | top limit=1 clientip | table clientip] | stats count, dc(productId), values(productId) by clientip
index=_internal earliest=-15m latest=now
The following search example is attempting to return the bytes for the individual indexes.
index=_internal source=*license* type=usage | stats sum(b) BY index
In this search the stats portion of the search is commented out.
index=_internal source=*license* type=usage `comment(“| stats sum(b) BY index”)
Web access errors from the last full business week
eventtype=webaccess error earliest=-7d@w1 latest=@w6
Display customer interactions and retrieve only clientip
sourcetype=access_combined* | fields clientip
Display the action, productId, and status of customer
sourcetype=access_combined* action=* productId=* | table action, productId, status
sourcetype=access_combined* action=* productId=* | table action, productId, status | rename productId as “Product ID” , actions as “Customer Purchase”, status as “HTTP Status Code”
Display and ports
sourcetype=linux_secure port “failed password” | rex “\s+(?<ports>port\s\d+)” | top src port
sourcetype=linux_secure port “failed password” | rex “(?i) port (?P<port>[^ }+” | top port
sourcetype=linux_secure port “failed password” | erex Port examples=”4940,4608,4920” | top port
Display the top mail domains from sourcetype=cisco_esa
sourcetype=cisco_esa | rex field=mailfrom “@(?<maildomain>.*)” | top limit=10 maildomain
Most IP or Top product selling in 24 hours.
sourcetype=linux_secure password fail* | top src
sourcetype=access_combined* action=purchase status=200 | top product_name
Display the count of retail sales made yesterday
sourcetype=vendor_sales | stats count as “Retail Sales”
Count the number of events
sourcetype=access_combined* | stats count(actions)
How many unique website visited
sourcetype=cisco_wsa_squid | stats dc(s_hostname)
Display the quantity of sales by product name and price
sourcetype=vendor_sales | stats count as quantity by product_name, price
Which website have employees accessed
sourcetype=cisco_wsa_squid | stats list(s_hostname) by cs_username
sourcetype=access_combinde* action=purchase | timechart count(product_name) by categoryId
sourcetype=access_combinde* action=purchase | chart count(product_name) by categoryId
sourcetype=vendor_sales | geostats latfield=VendorLatitude longfiled=VendorLongitude count by
product_namesourcetype=acess_combined* action=purchase | stats sum(price) as count | gauge count 0 10000 20000
Display the errors that our host produce
sourcetype=access_combined* status>299 | chart count over status by host
Display the transactions that failed for each product from the shopping cars online
sourcetype=access_combined* status>299 | chart count over host by itemId
Sourcetype=access_combinded* product_name=* | timechart span=30m count by product_name
sourcetype=access_combined* status=4* clientip=”69.72.161.186″
The best way to learn Splunk Search is to use the Splunk tutorial data(http://docs.splunk.com/Documentation/Splunk/7.0.2/SearchTutorial/Systemrequirements#Download_the_tutorial_data_files)
The below links guide you how to upload the data
https://docs.splunk.com/Documentation/Splunk/7.0.2/SearchTutorial/GetthetutorialdataintoSplunk