Home / Edge/ Working with Fleets and Edge Nodes/ Edge Nodes·Filter Edge Nodes

Filter Edge Nodes

Learn how to filter large lists of Edge Nodes


When your Cribl Edge deployment has a large number of Nodes, you may want to filter your Node list down to a manageable subset of Nodes. This can help you monitor your Edge Nodes and troubleshoot any issues.

For example, you may want to view all of the Edge Nodes that are experiencing upgrade issues. Or, you may need to update the configuration of Nodes that are running a certain operating system version, but you don’t know which Fleets they belong to.

The Filters option allows you to apply filter criteria to your Node list, so you can quickly find Nodes by OS Platform, IP address, install type, version and more.

Access Node Filters

In Cribl Edge, you can filter Edge Nodes in two places:

  • In a specific Fleet in the Edge Nodes list. Navigate to Fleets, then select a Fleet.
  • On the list of all Edge Nodes, in both List View and Map View. Navigate to Edge Nodes from the sidebar.
The Filters option
The Filters option

Filter Modes

You can choose between the default form-based mode and Advanced mode when you create a Node filter. Form-based mode contains the preconfigured fields and checkboxes you see when you select Filters.

For a table of the options and their definitions, see Form-based Filter Options.

Advanced mode is a Javascript input field where you can create your own filter, referencing the JSON objects that are associated with an Edge Node.

You can edit the Javascript by typing in the Expression field, but doing so disables the form-based filters unless you undo the changes. To revert back to the form-based filter, select Undo changes.

Some filter combinations will never return any results – for example, OS platform set to Linux and Install type set to MSI, since MSI is only used for Windows installations.

Create an Edge Node Filter

The Filters option lets you group a list of Nodes by criteria such as OS platform, IP address, install type, version, and more.

To create an Edge Node filter:

  1. Navigate to a list of Edge Nodes, either from the Nodes tab in a Fleet or from the Edge Nodes sidebar.
  2. Select Filters to open the Filters panel.
  3. Create a filter by selecting from the Node Filter Options, or toggle Advanced to write your own filter using Javascript.
  4. Once you have selected filter criteria, you can use the Filter Edge Nodes field to further narrow down the list of visible Nodes.
  5. Select Clear filters to undo your selections in the Filters panel. This does not clear the Filter Edge Nodes field.

Share a Filter

To share a filter with another Cribl user:

  1. Select the Filters button and create a filter.
  2. Select the link icon to copy the filters to your clipboard, or copy the browser URL.
  3. Now you can share the link with another user.

Filters are Workspace-specific, so they will only work within the Workspace where you created it.

Form-based Filter Options

You can choose from a set of preconfigured, form-based filter options, and each has an associated Javascript property. You’ll see the Javascript property in the Expressions field when you toggle on Advanced mode.

FieldDescriptionJavascript property
Fleet
Find Nodes based on their Fleet assignment. Visible when filtering from the Edge Nodes page.group=='<fleet>'
Upgrade statusThe upgrade status of the Edge Node.
  • Current: When the Fleet has a Target Version set, this filters Nodes that are running the same version as the Fleet or a newer version.
  • Active: Nodes that are actively upgrading.
  • Skipped: Nodes with a skipped upgrade.
  • Failed: Nodes that failed to upgrade.
nodeUpgradeStatus.state
Source statusThe health status for each Source associated with the Nodes.(lastMetrics['health.inputs'])
Destination statusThe health status for each Destination associated with the Nodes.(lastMetrics['health.outputs'])
Edge versionEnter a semantic version of Cribl Edge. For example, 4.1.0.info.cribl.version.toLowerCase()
HostThe host of the Edge Node. You can type in any part of the host string.info.hostname.toLowerCase().includes(<host>)
OS platformThe operating system platform that the Edge Node is running on.(info.platform === '<os-platform>')
OS versionThe version of the operating system the Edge Node is running on. For example, Windows 10.info.release.toLowerCase().includes('<OS version>')
ArchitectureThe processor architecture for the Edge Node.(info.architecture === '<architecture>')
IP addressThe IP address of the Edge Node. Entering a partial value returns all Nodes with matching values. For example, entering 17 will return all Nodes that have 17 somewhere in the address.info.conn_ip.toLowerCase().includes('<ip-here>')
Install typeThe installation type for the Node. Select RPM or Container. Useful for determining which Nodes can’t be upgraded by the Leader.(info.env.CRIBL_INSTALL_TYPE === '<type>')

Advanced Filter Options

You can use the following Node properties and types to create your Advanced filter in Javascript.

Node PropertyType
idstring
statusstring (Healthy)
groupstring (Fleet name)
info
hostnamestring 
platformstring (OS Platform; linux, win32 etc.)
architecturestring (CPU Architecture; arm64, x64 etc.)
releasestring (OS Kernel release)
cpusnumber (Number of CPU cores)
totalmemnumber (Memory in bytes)
nodestring (NodeJS version)
cribl
startTimenumber (epoch timestamp in msecs when the process started)
guidstring (unique instance ID)
installTypestring
    Install Type. Can be CONTAINER or RPM.
    If this is set, Leader upgrades are skipped)
tagsstring array (tags configured on the Node) 
versionstring (Edge version)
freeDiskSpacenumber (Free disk space in bytes)
totalDiskSpacenumber (Total disk space in bytes)
kube (this will only be populated for Nodes running in a Kubernetes Cluster)
sourcestring (always cluster)
nodestring (Node name where this Pod is running)
podstring (Pod Name)
namespacestring (namespace, always cribl)
owner
kindstring (DaemonSet)
namestring (cribl-edge)
conn ipstring (this is the IP that Cribl Leader sees; different from actual IP of the Node)
localTimenumber (local epoch time on the Node in msec)
lastMsgTimenumber (time when Node sent the last message in msec)
firstMsgTimenumber (time when Node sent the first message in msec)
nodeUpgradeStatus
timestampnumber (time when Node entered the state below in msec)
state

number

0 for Current (Node is upgraded to version setting in the Fleet)

1 for Active (Node is being upgraded to version setting in the Fleet)

3 for Failed (upgrade failed when tried to upgrade to version setting in the Fleet)

skippednumber (if set, this Node is skipped by thr Leader's automatic upgrade.  See InstallType above)
lastMetrics
edge.dropped eventsnumber (events dropped by Node)
health.inputs

number (Source health status)

0 - All sources in the Node are healthy

1 - One or more sources in the Node have warnings

2 - One or more sources in the Node have errors.

health.outputs

number (Destination health status)

0 - All sources in the Node are healthy

1 - One or more sources in the Node have warnings

2 - One or more sources in the Node have errors

total.in_eventsnumber (total events ingested by Node)
total.out_eventsnumber (total events sent out by Node)
total.dropped_eventsnumber (total events dropped by Node)
total.in_bytesnumber (total ingested bytes)
total.out_bytesnumber (total bytes egressed)

Example Advanced Filter Expressions

You can use these example expressions as a starting point to build your advanced filters.

Edge Nodes with >10 CPUs and >8 GB RAM

Because total memory is reported in bytes, we need to calculate 8GB to bytes before using it in the filter.

info.cpus >= 4 && info.totalmem >= 8388608000

Nodes running the System State Source

lastMetrics.hasOwnProperty('health.inputs:input:system_state:in_system_state')

Nodes Running the System State Source and experiencing issues with Destinations

lastMetrics.hasOwnProperty('health.inputs:input:system_state:in_system_state') && lastMetrics['health.outputs'] === 2

Nodes with errors in either Sources or Destinations

lastMetrics['health.inputs'] === 2 || lastMetrics['health.outputs'] === 2