我有两个有效的Splunk查询,如下所示。
第一个输入IP地址和日期时间并返回Mac地址:
index = dhcp签名= DHCPACK dest_ip =“ 192.0.0.0” Latest =“ 05/30/2018:00:00:00” |重命名dest_mac为mac_address |表 mac_address,_time |排序-_time |头1 |字段mac_address
第二个调用数据库中的存储过程,并传入mac地址和日期时间,并返回机器ID,这是一个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”
我需要做的是将这两个查询合并为一个查询,其中第一个查询中的Mac地址作为mac_address参数传递给第二个查询。我一直在努力,我想我已经很接近了,但是它不能正常工作,这是我的组合查询:
| dbxquery query =“ EXEC [dbo]。[get_machines_by_mac_date] @mac_address = [index = dhcp签名= DHCPACK dest_ip =“ 192.0.0.0” Latest =“ 05/30/2018:00:00:00” |重命名dest_mac 作为mac_address |表_time,mac_address |排序-_time |头1 | 返回mac_address],@ utc_date_time = '05 / 30/2018'“ connection =“ database1”
我已阅读到首先执行内部查询(在方括号内),所以我试图在外部查询中为mac_address参数提供内部查询的结果。
我不断收到错误消息,指出mac_address太长,数据库的最大长度为128。我很确定这意味着内部查询无法正常工作,并且它正在尝试发送整个文字存储过程的方括号内的文本字符串。
这是我尝试运行查询时返回的错误:
com.microsoft.sqlserver.jdbc.SQLServerException:该标识符 以'index = dhcp signature = DHCPACK dest_ip = 192.0.0.0开头 最新= 05/30/2018:00:00:00 |重命名dest_mac为mac_address |表 _时间,'ma'太长了。最大长度为128。
我是使用Splunk的新手,我将不胜感激!
答案 0 :(得分:0)
我能够从Splunk获得帮助,而我正在错误地进行查询。我不需要将方括号用作子搜索,而是需要将查询1中的dest_mac参数映射到查询2中,这是有效的组合查询:
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\\\"\"