Splunk dbxquery для вызова хранимой процедуры с подпоиском, чтобы заполнить параметр не работает - PullRequest
0 голосов
/ 18 октября 2018

У меня есть два рабочих запроса 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-адрес и дату и возвращает идентификатор машины, который является 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 signature = DHCPACK dest_ip =" 192.0.0.0 "latest =" 30/05/2018: 00: 00: 00 "| переименовать dest_mac в mac_address |table _time, mac_address | sort - _time | head 1 | return mac_address], @utc_date_time = '05 / 30/2018 '"connection =" database1 "

Я прочитал, что внутренний запрос (внутри квадратных скобок) выполняется первым, поэтому я пытаюсь предоставить параметр mac_address во внешнем запросе с результатами внутреннего запроса.

Я получаю сообщение об ошибке, что mac_address слишком длинный,что максимальная длина в базе данных составляет 128. Я почти уверен, что это означает, что внутренний запрос не работает, и он пытается отправить всю текстовую строку в квадратных скобках в хранимую процедуру.

Вот ошибка, которую я получаю, когда пытаюсь выполнить запрос:

com.microsoft.sqlserver.jdbc.SQLServerException: идентификатор, который начинается с подписи index = dhcp= DHCPACK dest_ip = 192.0.0.0 последняя = 05/30/2018: 00: 00: 00 |переименовать dest_mac в mac_address |table _time, ma 'слишком длинный.Максимальная длина - 128.

Я новичок в использовании Splunk и буду признателен за любую помощь, которая может быть предоставлена!

1 Ответ

0 голосов
/ 25 октября 2018

Мне удалось получить помощь от Splunk, и я неправильно выполнял запрос.Вместо того, чтобы использовать квадратные скобки в качестве подпоиска, мне нужно было отобразить параметр dest_mac из запроса 1 в запрос 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\\\"\"
...