On This Page

Home / Stream/ Integrations/ Sources/F5 BIG-IP Source

F5 BIG-IP Source

The F5 BIG-IP Source receives telemetry from F5 BIG-IP Telemetry Streaming using the HTTP Event Collector (HEC) protocol. This Source supports the /services/collector/event and /services/collector/raw endpoints, and it can send HEC indexer acknowledgements.

Type: Push | TLS Support: Yes | Event Breaker Support: No

This Source supports gzip-compressed inbound data when the Content-Encoding: gzip connection header is set.

Configure an F5 BIG-IP Source

  1. On the top bar, select Products, and then select Cribl Stream. Under Worker Groups, select a Worker Group. Next, you have two options:
    • To configure via QuickConnect, navigate to Routing > QuickConnect. Select Add Source and select the Source you want from the list, choosing either Select Existing or Add New.
    • To configure via the Routes, select Data > Sources. Select Add Source, and then select F5 BIG-IP.
  2. In the New Source modal, configure the following under General Settings:
    • Input ID: Enter a unique name to identify this Source definition. If you clone this Source, Cribl Stream adds -CLONE to the original Input ID.
    • Description: Enter a description for this Source.
    • Address: Enter the hostname or IP address on which to listen for HTTP or HTTPS data. Defaults to 0.0.0.0. Supports IPv4 and IPv6 addresses.
    • Port: Enter the port number on which to listen.
    • HEC endpoint: Keep the default /services/collector. F5 BIG-IP Telemetry Streaming has no custom HEC path setting. It always posts structured events to /services/collector/event. This Source also supports the /services/collector/raw endpoint and indexer acknowledgements.
  3. Under Optional Settings, configure the following:
    • Allowed indexes: Enter values to allow in the HEC event index field. Supports wildcards. Leave blank to skip validation. These values can expand index validation at the token level.
    • HEC Acks: Toggle on to enable HEC indexer acknowledgements. Defaults to toggled off. See Working with HEC Acks.
    • Tags: Add tags that you can use to filter and group Sources. These tags aren’t added to processed events.
  4. Optionally, adjust the TLS, persistent queue, Processing, Auth Tokens, and Advanced settings, or Connected Destinations.
  5. Select Save, then Commit & Deploy.

TLS Settings (Server Side)

Enabled: Toggle on to enable Transport Layer Security (TLS) on this connection. Defaults to toggled off. When toggled on, configure the following settings.

Under Server Certificate, select a certificate from the store to auto-fill the paths, or enter them manually:

  • Certificate: Select an existing certificate name from the drop-down or add a new certificate by selecting Create. See Add a TLS Certificate to a Worker Group for details.
  • Certificate path: Enter the server path that contains certificates in Privacy Enhanced Mail (PEM) format. You can reference $ENV_VARS.
  • Private key path: Enter the server path that contains the private key in PEM format. You can reference $ENV_VARS.
  • Passphrase: Enter the passphrase used to decrypt the private key.

Under Mutual Authentication (mTLS):

  • Authenticate client (mutual auth): Toggle on to require clients to present certificates. Defaults to toggled off. When toggled on, configure these settings:
    • Trusted client CA path: Enter the server path that contains the certificate authority (CA) certificates to trust as the chain root when verifying a client’s identity. This is typically the root CA that anchors the client’s certificate chain. You can reference $ENV_VARS.
    • Validate client certificates: Toggle on to reject certificates that aren’t authorized by a CA in the Trusted client CA path or by another trusted CA. Defaults to toggled on.
    • Common name: Enter a regex to match against the CN and SAN fields in the client certificate. Cribl Stream rejects clients unless it finds at least one match. Defaults to /.*/.

Under TLS Version, reject clients using TLS versions below or above these thresholds:

  • Minimum TLS version: Select the minimum TLS version to accept.
  • Maximum TLS version: Select the maximum TLS version to accept.

Persistent Queue Settings

In the Persistent Queue Settings tab, you can optionally specify persistent queue storage, using the following controls. Persistent queue buffers and preserves incoming events when a downstream Destination has an outage or experiences backpressure.

Before enabling persistent queue, learn more about persistent queue behavior and how to optimize it with your system:

On Cribl-managed Cloud Workers (with an Enterprise plan), this tab exposes only the Enable persistent queue toggle. If enabled, PQ is automatically configured in Always On mode, with a maximum queue size of 1 GB disk space allocated per PQ-enabled Source, per Worker Process.

The 1 GB limit is on uncompressed inbound data, and the queue does not perform any compression. This limit is not configurable. For configurable queue size, compression, mode, and other options below, use a hybrid Group.

All other settings described in this section apply to on-prem and hybrid deployments only.

Enable persistent queue: Default is toggled off. When toggled on:

Mode: Select a condition for engaging persistent queues.

  • Always On: This default option will always write events to the persistent queue, before forwarding them to the Cribl Stream data processing engine.
  • Smart: This option will engage PQ only when the Source detects backpressure from the Cribl Stream data processing engine. Smart mode only engages when necessary, such as when a downstream Destination becomes blocked and the Buffer size limit reaches its limit. When persistent queue is set to Smart mode, Cribl Stream attempts to flush the queue when every new event arrives. The only time events stay in the buffer is when a downstream Destination becomes blocked.

Deprecation Notice

To improve data integrity, Smart mode is deprecated for Source persistent queue on hybrid and on-prem deployments. In January 2027, affected configurations will automatically migrate to Always On mode. Consider updating existing configurations to Always On mode prior to the automatic migration date. Before changing the configuration:

Buffer size limit (bytes): The maximum memory to buffer events before flushing them to persistent queue on disk. Enter a value with a unit suffix. For example: 64KB, 1MB, or 10MB. Spaces between the number and unit are allowed (such as 64 KB). Units are case-insensitive. Plain byte values (like 65536) are accepted, but decimals (like 0.5MB) are not. The valid range is 64KB to 10MB. Values outside this range are rounded to the nearest limit. Defaults to 1MB.

Deprecation Notice

The Buffer size limit (bytes) setting replaces the deprecated Max buffer size setting to provide more predictable memory management in version 4.18.0. The Max buffer size setting will be removed in version 4.19.1. For upgraded Worker Groups and Fleets, the new byte-based limit defaults to 1MB. Update your configurations to the new byte-based limit to ensure optimal memory stability.

Commit frequency: The number of events to send downstream before committing that Cribl Stream has read them. Defaults to 42.

File size limit: The maximum data volume to store in each queue file before closing it and (optionally) applying the configured Compression. Enter a numeral with units of KB, MB, and so on. If not specified, Cribl Stream applies the default 10 MB. When you save the configuration, File size limit must be greater than or equal to Buffer size limit (bytes). Cribl Stream rejects invalid combinations.

Queue size limit: The maximum amount of disk space that the queue is allowed to consume on each Worker Process. Once this limit is reached, this Source stops queueing data and applies the Queue-full behavior. Required, and defaults to 5 GB. Accepts positive numbers with units of KB, MB, GB, and so on. Can be set as high as 1 TB, unless you’ve configured a different Worker Process PQ size limit in Group or Fleet settings.

Queue file path: The location for the persistent queue files. Defaults to $CRIBL_HOME/state/queues. To this field’s specified path, Cribl Stream appends /<worker-id>/inputs/<input-id>.

Compression: Optional codec to compress the persisted data after a file closes. Defaults to None; Gzip is also available.

Queue-full behavior: Whether to block or drop events when the queue begins to exert backpressure. A queue begins to exert backpressure when the disk is low or at full capacity.

  • Block (Default): Does not accept new data until the queue has capacity. When the sender supports backpressure signaling, Cribl Stream returns block signals to the sender.
  • Drop new data: Discards incoming events while leaving the contents of the persistent queue unchanged.

In Cribl Stream 4.1 and newer, the Source persistent queue default Mode is Always on, to best ensure events’ delivery. For details on optimizing this selection, see Optimize Source Persistent Queues.

You can optimize Workers’ startup connections and CPU load at Group/Fleet settings > Worker Processes.

Processing Settings

Fields

Add fields to each event using Eval-like functionality:

  • Field Name: Enter the field name.
  • Value: Enter a JavaScript expression that determines the field’s value.

Fields configured here can be overridden by fields added at the token or request level.

Pre-Processing

Pipeline: From the drop-down, select one Pipeline or Pack to process data before sending it through Routes.

Auth Tokens

Add one or more tokens that F5 BIG-IP can use to authenticate. If you don’t configure a token, the Source permits unauthorized access.

Select Add Token, and then configure the following for each token:

Authentication method: Select Secret to use a text secret. This Source doesn’t support manually entered tokens.

Token secret (text secret): Select Select local secret or Select global secret, and then select an existing text secret or select Create text secret to create a new one.

Enable token: Toggle on to allow client access with this token. Defaults to toggled on.

Allowed indexes: Enter the values to allow in the HEC event index field at the token level. Supports multiple values and wildcards. Leave blank to skip validation.

Description: Enter a description for the token. The description becomes the token’s display name.

Fields: Add fields to events that reference this token. Each field is a Field Name and Value pair. These fields can be overridden by fields at the request level.

Advanced Settings

Emit per-token request metrics: Toggle on to emit per-token <prefix>.http.perToken and summary <prefix>.http.summary request metrics. Defaults to toggled off.

Show originating IP: Toggle on to extract the client IP address and port from PROXY protocol v1 or v2. When toggled on, Cribl Stream ignores the X-Forwarded-For header. Defaults to toggled off.

Capture request headers: Toggle on to add request headers to events in the __headers field. Defaults to toggled off.

When Capture request headers is enabled, this Source stores request headers in the __headers field. Some Destinations also read __headers for outbound behavior. HTTP Destinations such as Webhook, Loki, Microsoft Sentinel, Dynatrace HTTP, and Cortex XSIAM use it to inject dynamic request headers. Kafka Destinations use it for message headers. Other Destinations that read __headers can be affected the same way. Forwarding captured events to these Destinations without removing __headers can cause TLS validation failures or expose inbound authentication headers. Use an Eval Function in a Pipeline to remove __headers (or copy it to another field name, then remove __headers) before the Destination. See __headers field conflicts.

CORS allowed origins: Enter HTTP origins to which Cribl Stream sends Cross-Origin Resource Sharing (CORS) Access-Control-Allow-* headers. Supports wildcards.

CORS allowed headers: Enter HTTP headers that Cribl Stream sends to allowed origins as Access-Control-Allow-Headers in a CORS preflight response. Enter * to allow all headers.

Active request limit: Enter the maximum number of active requests allowed per Worker Process. Defaults to 256. Enter 0 for unlimited. This setting is available only for on-prem deployments.

Activity log sample rate: Enter how often Cribl Stream logs request activity at the info level. Defaults to 100, which logs every 100th request. The minimum value is 1.

Requests-per-socket limit: Enter the maximum number of requests allowed per socket before Cribl Stream instructs the client to close the connection. Defaults to 0, which allows unlimited requests.

Socket timeout (seconds): Enter how long Cribl Stream waits before treating an inactive socket as timed out. Defaults to 0, which waits indefinitely.

Request timeout (seconds): Enter how long Cribl Stream waits for an incoming request to complete before aborting it. Defaults to 0, which disables the timeout.

Keep-alive timeout (seconds): Enter how long Cribl Stream waits for more data after sending the last response. Defaults to 5 seconds. The minimum is 1 second, and the maximum is 600 seconds.

IP allowlist regex: Enter a regex that matches IP addresses whose messages Cribl Stream processes, unless the denylist also matches. Defaults to /.*/.

IP denylist regex: Enter a regex that matches IP addresses whose messages Cribl Stream ignores. The denylist takes precedence over the allowlist. Defaults to /^$/.

Environment: If you’re using GitOps, enter the Git branch on which to enable this configuration. Leave blank to enable the configuration everywhere.

Connected Destinations

Select Send to Routes to enable conditional routing, filtering, and cloning of this Source’s data via the Routing table.

Select QuickConnect to send this Source’s data to one or more Destinations via independent, direct connections.

Configure F5 BIG-IP to Forward Data

After configuring this Source, create a Splunk consumer in F5 BIG-IP Telemetry Streaming:

  • Set host and port to the hostname and Port of this Source. Use https if you enabled TLS.
  • Set passphrase.cipherText to the value of a text secret you referenced under Auth Tokens.

Send Data to the HEC Endpoints

This Source accepts structured HEC events at /services/collector/event, raw events at /services/collector/raw, and health checks at /services/collector/health. When HEC Acks is toggled on, it also accepts acknowledgement requests at /services/collector/ack.

F5 BIG-IP Telemetry Streaming posts telemetry to http(s)://<host>:<port>/services/collector/event with the token in the Authorization: Splunk <token> header.

If HEC Acks is toggled off and a sender requests acknowledgements, Cribl Stream responds with HTTP 400 and the text ACK is disabled.

Working with HEC Acks

Cribl Stream returns a 200 or similar HTTP status when it receives an event.

Some senders also send acknowledgement requests, which ask Cribl Stream to confirm delivery of an array of event IDs. How Cribl Stream responds depends on HEC Acks:

  • When HEC Acks is toggled on, Cribl Stream responds to an acknowledgement request with HTTP 200 and an acknowledgement for the event IDs in the request.
  • When HEC Acks is toggled off, Cribl Stream responds with HTTP 400 and text that says ACK is disabled.

Acknowledgement requests typically include a channel ID in the X-Splunk-Request-Channel header or as a URL query parameter.

The acknowledgement response cites the event IDs from the request. It doesn’t confirm that Cribl Stream ingested those events. To verify ingestion, confirm that the sender received a 200 or similar HTTP response for the original event request.

Internal Fields

Cribl Stream uses internal fields to help process data from this Source:

  • __headers: Contains request headers when Capture request headers is toggled on.
  • __hecToken: Contains the HEC token associated with the event.
  • __inputId: Identifies the Source in the format f5_big_ip:<input-id>.
  • __srcIpPort: Contains the source IP address and port.

Troubleshooting

The Source’s configuration modal has helpful tabs for troubleshooting:

Live Data: Try capturing live data to see real-time events as they are ingested. On the Live Data tab, click Start Capture to begin viewing real-time data.

Logs: Review and search the logs that provide detailed information about the ingestion process, including any errors or warnings that may have occurred.

You can also view the Monitoring page that provides a comprehensive overview of data volume and rate, helping you identify ingestion issues. Analyze the graphs showing events and bytes in/out over time.

__headers Field Conflicts with Destinations

When Capture request headers is enabled, this Source writes inbound headers to the __headers field. Some Destinations also use __headers for outbound HTTP headers or related TLS behavior, so the fields can interfere silently. Destinations that read __headers include HTTP Destinations such as Webhook, Loki, Microsoft Sentinel, Dynatrace HTTP, and Cortex XSIAM, which use it for dynamic request headers, and Kafka Destinations, which use it for message headers. Other Destinations that read __headers can be affected the same way.

In that case, events can leave Cribl Stream successfully (Source, Route, and Destination metrics look healthy) while data does not arrive or is rejected downstream. Destination logs may show no errors, or you may see TLS certificate or hostname validation failures, or authentication errors such as invalid audience.

To avoid the conflict, use an Eval Function in a Pipeline to remove __headers before the Destination. To keep the captured headers under another name, add a field that copies __headers, then remove __headers (the Rename Function cannot operate on fields whose names begin with __). If TLS or certificate errors appear and __headers contains a host value, you can also toggle Validate server certs off on the Destination. That weakens TLS verification, so use it only after you confirm the conflict is the cause.

Requests Return 404

F5 BIG-IP Telemetry Streaming always posts to /services/collector/event. Keep HEC endpoint set to the default /services/collector.

ACK Is Disabled

Toggle on HEC Acks if the sender requires indexer acknowledgements. Send acknowledgement requests to /services/collector/ack with a channel ID. If the sender doesn’t require acknowledgements, send events to /services/collector/event or /services/collector/raw without requesting them.