Splunk Search

Splunk dbxquery to call stored procedure with subsearch to populate parameter not working

rdclark
Engager

I have two working Splunk queries as follows.

The first one takes in an IP Address and datetime and returns a Mac Address:

index=dhcp signature=DHCPACK dest_ip="192.0.0.0" latest="05/30/2018:00:00:00"| rename dest_mac as mac_address | table mac_address, _time | sort - _time | head 1 | fields mac_address

The second one calls a stored procedure in the database and passes in the mac address and a datetime and returns a machine id, which is a guid:

| dbxquery query="EXEC [dbo].[get_machines_by_mac_date] @mac_address = '11:22:33:44:55:66', @utc_date_time = '05/30/2018'" connection="database1"

What I need to do is combine these two into one query where the Mac Address found in the first is passed to the second one as the mac_address parameter. I've been working on this, and I think I'm pretty close, but its just not working right, here is the combined query I have:

| dbxquery query="EXEC [dbo].[get_machines_by_mac_date] @mac_address = [index=dhcp signature=DHCPACK dest_ip="192.0.0.0" latest="05/30/2018:00:00:00"| rename dest_mac as mac_address | table _time, mac_address | sort - _time | head 1 | return mac_address], @utc_date_time = '05/30/2018'" connection="database1"

I've read that the inner query (inside the square brackets) gets executed first, so I'm trying to supply the mac_address parameter in the outer query with the results of the inner query.
I keep getting an error back that the mac_address is too long and that the maximum length in the database is 128. I'm pretty sure this means that the inner query isn't working and it is trying to send the entire literal text string within the square brackets to the stored procedure.

Here is the error I get back when I try to run the query:

*com.microsoft.sqlserver.jdbc.SQLServerException: The identifier that starts with 'index=dhcp signature=DHCPACK dest_ip=192.0.0.0 latest=05/30/2018:00:00:00| rename dest_mac as mac_address | table _time, ma' is too long. Maximum length is 128.*

I'm new at using Splunk and I would appreciate any help that can be provided!

0 Karma
1 Solution

rdclark
Engager

I was able to get help from Splunk, and I was going about the query incorrectly. Instead of using the square brackets as a subsearch, I needed to map the dest_mac parameter from query 1 into query 2, here is the working combined query:

index=dhcp signature=DHCPACK dest_ip=192.0.0.0 latest=05/30/2018:00:00:00 
| table dest_mac 
| sort- _time | head 1 | map search=\" 
| dbxquery procedure=\\\"{{call get_machines_by_mac_date(?,?)}}\\\" 
connection=\"database1\" params=\\\"\\\"$dest_mac$\\\", 05/30/2018\\\"\"

View solution in original post

0 Karma

rdclark
Engager

I was able to get help from Splunk, and I was going about the query incorrectly. Instead of using the square brackets as a subsearch, I needed to map the dest_mac parameter from query 1 into query 2, here is the working combined query:

index=dhcp signature=DHCPACK dest_ip=192.0.0.0 latest=05/30/2018:00:00:00 
| table dest_mac 
| sort- _time | head 1 | map search=\" 
| dbxquery procedure=\\\"{{call get_machines_by_mac_date(?,?)}}\\\" 
connection=\"database1\" params=\\\"\\\"$dest_mac$\\\", 05/30/2018\\\"\"
0 Karma
Get Updates on the Splunk Community!

Observe and Secure All Apps with Splunk

  Join Us for Our Next Tech Talk: Observe and Secure All Apps with SplunkAs organizations continue to innovate ...

Splunk Decoded: Business Transactions vs Business IQ

It’s the morning of Black Friday, and your e-commerce site is handling 10x normal traffic. Orders are flowing, ...

Fastest way to demo Observability

I’ve been having a lot of fun learning about Kubernetes and Observability. I set myself an interesting ...