How I did it - "Visualizing Data with F5 TS and Splunk"

The new Splunk Add-on for F5 BIG-IP includes several objects, (modular inputs, CIM-knowledge, etc.) that work to “normalize” incoming BIG-IP data for use with other Splunk apps, such as Splunk Enterprise Security and the Splunk App for PCI Compliance.   

The add-on includes a mechanism for pulling network traffic data, system logs, system settings, performance metrics, and traffic statistics from the F5 BIG-IP platform using F5’s iControl API, (see below).

But what I'm really excited about is that the add-on now integrates with F5 Telemetry Streaming, (TS). With TS I am easily able to declaratively aggregate, normalize, and push BIG-IP statistics and events, (JSON-formatted) to a variety of third-party analytics vendors. 

For the remainder of this article, we’ll take a look at how I integrate F5 TS with Splunk Enterprise. I’ll be working with an existing BIG-IP deployment as well as a newly deployed Splunk Enterprise instance. As an added bonus, (and since it’s part of the article’s title) I’ll import a couple custom dashboards, (see below) to visualize our newly ingested telemetry data.

Oh! As an "Extra" added bonus, here is a link to a video walk through of this solution.  

Installing the Splunk Add-on for F5 BIG-IP and Splunk CIM

Installing the Splunk F5 add-on is very simple. Additionally, to make use of the add-on I’ll need to install Splunk’s Common Information Model, (CIM).   

1.    From the top Splunk the search page, I select ‘Apps’ → ‘Find More Apps’.  

2.   I browse for “CIM” and select the Splunk Common Information Model add-on.

3.   I accept the license agreement, provide my Splunk account login credentials and select ‘Login and Install’.

4.   I’ll repeat steps 2-3 to install the Splunk Add-on for F5 BIG-IP. 

Setup Splunk HTTP Event Collector

To receive incoming telemetry data into my Splunk Enterprise environment over HTTP/HTTPs I will need to create an HTTP Event Collector.

1.    From the UI I select ‘Settings’ → ‘Data Inputs’. I select ‘HTTP Event Collector’ from the input list.

2.   Prior to creating a new event collector token, I must first enable token access for my Splunk environment. On the ‘HTTP Event Collector’ page, I select ‘Global Settings’. I set ‘All Tokens’ to enabled, default index, incoming port and ensure SSL is enabled. I click ‘Save’ to exit.

3.    I select ‘New Token’ and provide a name for the new collector and select ‘Next’.

4.    On the ‘Input Settings’ tab I’ll select my allowed index(es) and select ‘Review’ then ‘Submit’.

5.    Once the token is created, I will need to copy the token for use with my F5 TS configuration.

Configure Telemetry Streaming

With my Splunk environment ready to receive telemetry data, I now turn my attention to configuring the BIG-IP for telemetry streaming. Fortunately, F5’s Automation Toolchain configuring the BIG-IP is quite simple.  

1.    I’ll use Postman to POST an AS3 declaration to configure telemetry resources, (telemetry listener, log publisher, logging profiles, etc.).  

The above AS3 declaration, (available here) deploys the required BIG-IP objects for pushing event data to a third-party vendor. Notably, it creates four (4) logging profiles I’ll attach to my application’s virtual server.

2.    Still using Postman, I POST my TS declaration, (sample). I will need to provide my Splunk HTTP Collector endpoint address/port as well as the token generated previously.

Associate Logging Profiles to Virtual Server

The final step to configuring the BIG-IP for telemetry streaming is associating the logging profiles I just created with my existing virtual server. In addition to system telemetry, these logging profiles, when assigned to a virtual, will send LTM, AVR, and ASM telemetry.

1.    From the BIG-IP management UI, I select ‘Local Traffic’ → ‘Virtual Servers’ → <virtual>.

2.    Under ‘Configuration’ I select ‘Advanced’, scroll down and select the HTTP, TCP, and request logging profiles previously created. I select ‘Update’ at the bottom of the page to save

3.   From the top of the virtual server page, I select ‘Security’ → ‘Policies’. From the policy settings page, I can see that there is an existing WAF policy associated with my application. To enable ASM logging, I select the previously created ASM logging profile from the available logging profiles and select ‘Update’ to save my changes.

With the configuration process complete, I should now start seeing event data in my Splunk Environment.  

Import Dashboards

“Ok, so I have event data streaming into my Splunk environment; now what?” 

Since I have installed the Splunk F5 add-on, I can integrate my “normalized” data with other data sources to populate various Splunk applications like Splunk Enterprise Security and Splunk App for PCI Compliance. Likewise, I can use dashboards to visualize my telemetry data as well as monitor BIG-IP resources/processes. To finish up, I’ll use the following steps to create custom dashboards visualizing BIG-IP metrics and Advanced WAF, (formerly ASM) attack information.

1.    From the Splunk Search page, I navigate to the Dashboards page by selecting ‘Dashboards’.

2.   Select ‘Create New Dashboard’ from the Dashboards page.

3.   Provide a name for the new dashboard and select ‘Create Dashboard’. The dashboard name, (ID will remain unchanged) will be updated in the next step where I replace the newly created dashboard’s XML source with one of the community-supported dashboard XML files here.

4.   On the ‘Edit Dashboard' screen I select ‘Source’ to edit the dashboard XML. I replace the existing XML data with the contents of the ‘advWafInsights.xml’ file. Select ‘Save’ to install the new dashboard.  

 

5.    I’ll repeat steps 1-4 using ‘bigipSystemMetrics.xml’ to install the BIG-IP metrics dashboard,

 

Additional Links

·     F5 Telemetry Streaming

·     Splunk Add-on for F5 BIG-IP

·     Splunk Common Information Model 

·     F5 Automation Toolchain

Updated Dec 13, 2022
Version 2.0
  • I was having intermittent issues with receiving AVR information. I actually left the org that I was doing all this work with. We would see it sometimes and then sometimes it wouldnt produce events. I never got a chance to dive into the issue. We did find the TMSH command Greg referenced to fix the issue and we started getting SOME events but it was "glitchy". Sorry I don't have more to offer.
  • Hello abyanfaishal 

    Did you use AS3 to set up your listener? Ie, is this really the name of it:

    /Common/Shared/telemetry_publisher

    In my case, I had not used AS3 to set up this. So mine was called "/Common/telemetry_publisher". And I had to edit my TMSH command to reflect that. See my comment on this article dated 10 Apr 2023.

    Does that help?

    Mike O'Leary

  • Hi MichaelOLeary 

    i found the root cause already, There is a functional code change in 15.1.6.1 and up, that blocking iRule using node and loopback IP based on https://my.f5.com/manage/s/article/K05413010, i know it earlier but i still didnt have guts since it will open me to a vulnerability, do you guys have any chance to help me to fix or to find another way around to get similar result as the iRule?

    the iRule is

    ltm rule telemetry_local_rule {
    when CLIENT_ACCEPTED {
        node 127.0.0.1 6514
    }
    }  

    Thankyou

  • Hello @abyanfaishal 

    I believe the command to fix as noted in the article you mentioned - https://my.f5.com/manage/s/article/K05413010 (see command below) will address the issue.  Unfortunately, I don't know of a way to avoid the allowing loopback address.

    Command - tmsh modify sys db tmm.tcl.rule.node.allow_loopback_addresses value true
    tmsh save sys config

    Thanks,

    Greg