A query filter is composed of terms and operators.
There are two types of terms:
A single term is a single word such as
A sequence is a group of words surrounded by double quotes, such as
To combine multiple terms into a complex query, you can use any of the following case sensitive Boolean operators:
|Intersection: both terms are in the selected events (if nothing is added, AND is taken by default)||authentication AND failure|
|Union: either term is contained in the selected events||authentication OR password|
|Exclusion: the following term is NOT in the event (apply to each individual raw text search)||authentication AND -password|
Escape special characters and spaces
The following characters, which are considered special:
\, and spaces require escaping with the
You cannot search for special characters in a log message. You can search for special characters when they are inside of an attribute.
To search for special characters, parse them into an attribute with the Grok Parser, and search for logs that contain that attribute.
To search on a specific attribute, add
@ to specify you are searching on an attribute.
For instance, if your attribute name is url and you want to filter on the url value
It is not required to define a facet to search on attributes and tags.
Attributes searches are case sensitive. Use free text search to get case insensitive results. Another option is to use the
lowercase filter with your Grok parser while parsing to get case insensitive results during search.
Searching for an attribute value that contains special characters requires escaping or double quotes.
- For example, for an attribute
my_attribute with the value
hello:world, search using:
- To match a single special character or space, use the
? wildcard. For example, for an attribute
my_attribute with the value
hello world, search using:
|Searches all logs matching |
/api/v1/test in the attribute
|Searches all logs containing a value in |
http.url attribute that start with
@http.status_code:[200 TO 299] @http.url_details.path:\/api\/v1\/*
|Searches all logs containing a |
http.status_code value between 200 and 299, and containing a value in
http.url_details.path attribute that start with
|Searches all logs not containing the |
Search using CIDR notation
Classless Inter Domain Routing (CIDR) is a notation that allows users to define a range of IP addresses (also called CIDR blocks) succinctly. CIDR is most commonly used to define a network (such as a VPC) or a subnetwork (such as public/private subnet within a VPC).
Users can use the
CIDR() function to query attributes in logs using CIDR notation. The
CIDR() function needs to be passed in a log attribute as a parameter to filter against, followed by one or multiple CIDR blocks.
CIDR(@network.client.ip,126.96.36.199/8) matches and filters logs that have IP addresses in the field
network.client.ip that fall under the 188.8.131.52/8 CIDR block.
CIDR(@network.ip.list,184.108.40.206/8, 220.127.116.11/8) matches and filters logs that have any IP addresses in an array attribute
network.ip.list that fall under the 18.104.22.168/8 or 22.214.171.124/8 CIDR blocks.
source:pan.firewall evt.name:reject CIDR(@network.client.ip, 126.96.36.199/8) would match and filter reject events from palo alto firewall that originate in the 188.8.131.52/8 subnet
source:vpc NOT(CIDR(@network.client.ip, 184.108.40.206/8)) CIDR(@network.destination.ip, 220.127.116.11/8) will show all VPC logs that do not originate in subnet 18.104.22.168/8 but are designated for destination subnet 22.214.171.124/8 because you want to analyze network traffic in your environments between subnets
CIDR() function supports both IPv4 and IPv6 CIDR notations and works in Log Explorer, Live Tail, log widgets in Dashboards, log monitors, and log configurations.
To perform a multi-character wildcard search, use the
* symbol as follows:
service:web* matches every log message that has a service starting with
web* matches all log messages starting with
*web matches all log messages that end with
Note: Wildcards only work as wildcards outside of double quotes. For example,
"*test*" matches a log which has the string
*test* in its message.
*test* matches a log which has the string test anywhere in its message.
Wildcard searches work within tags and attributes (faceted or not) with this syntax. This query returns all the services that end with the string
Wildcard searches can also be used to search in the plain text of a log that is not part of a facet. This query returns all the logs that contain the string
However, this search term does not return logs that contain the string
NETWORK if it is in a facet and not part of the log message.
When searching for an attribute or tag value that contains special characters or requires escaping or double quotes, use the
? wildcard to match a single special character or space. For example, to search for an attribute
my_attribute with the value
In order to search on a numerical attribute, first add it as a facet. You can then use numerical operators (
>=) to perform a search on numerical facets.
For instance, retrieve all logs that have a response time over 100ms with:
You can search for numerical attribute within a specific range. For instance, retrieve all your 4xx errors with:
@http.status_code:[400 TO 499]
Your logs inherit tags from hosts and integrations that generate them. They can be used in the search and as facets as well:
test is searching for the string “test”.
env:(prod OR test) matches all logs with the tag
env:prod or the tag
(env:prod AND -version:beta) matches all logs that contain tag
env:prod and that do not contain tag
If your tags don’t follow tags best practices and don’t use the
key:value syntax, use this search query:
In the below example, clicking on the
Peter value in the facet returns all the logs that contains a
users.names attribute, whose value is either
Peter or an array that contains
Note: Search can also be used on non-faceted array attributes using an equivalent syntax.
In the following example, CloudWatch logs for Windows contain an array of JSON objects under
@Event.EventData.Data. You cannot create a facet on array of JSON objects, but you can search using the following syntax.
@Event.EventData.Data.Name:ObjectServer matches all logs with the key
Name and value
Saved Views contain your search query, columns, time horizon, and facet.
Additional helpful documentation, links, and articles: