Fusionar Splunk dbxquery con búsqueda de Splunk.
Estoy tratando de combinar una consulta de búsqueda de Splunk con un conjunto de resultados de consulta de base de datos. Básicamente tengo una consulta dbxquery de Splunk 1 que devuelve el “userid” y el “email” de la base de datos de la siguiente manera para un id de usuario particular:
La consulta anterior produce la siguiente salida:
VALUE EMAIL
xv67383 xyz@test.com
Otra consulta es una consulta Splunk 2 que proporciona los ids de usuario de la siguiente manera:
index=index1 (host=xyz OR host=ABC) earliest=-20m@m
| rex field=_raw "samlToken=(?>user>.+?):"
| join type=outer usetime=true earlier=true username,host,user
[search index=index1 source="/logs/occurences.log" SERVER_SERVER_CONNECT NOT AMP earliest=@w0
| rex field=_raw "Origusername\((?>username>.+?)\)"
| rex field=username"^(?<user>,+?):"
| rename _time as epoch1]
| "stats count by user | sort -count | table user
La consulta 2 anterior devuelve una columna llamada “user” pero no el “email”.
Lo que quiero hacer es agregar una columna llamada “email” de la consulta dbxquery 1 de Splunk para todas las filas coincidentes por userid en la salida de la consulta 1. Básicamente, quiero agregar el correo electrónico como campo adicional para cada usuario devuelto en la consulta 2.
Lo que he intentado hasta ahora no me da ningún resultado. Cualquier ayuda será apreciada.
index=index1 (host=xyz OR host=ABC) earliest=-20m@m
| rex field=_raw "samlToken=(?>user>.+?):"
| join type=outer usetime=true earlier=true username,host,user
[search index=index1 source="/logs/occurences.log" SERVER_SERVER_CONNECT NOT AMP earliest=@w0
| rex field=_raw "Origusername\((?>username>.+?)\)"
| rex field=username"^(?<user>,+?):"
| rename _time as epoch1]
| "stats count by user | sort -count
| table user
| map search="| dbxquery connection=\"CMDB009\" query=\"SELECT dra.value, z.email FROM DRES_PRINTABLE z, DRES.CREDENTIAL bc, DRES.CRATTR dra WHERE z.userid = bc.drid AND z.drid = dra.dredid AND dra.value in ('$user'):\""
davy.ai
Para combinar la consulta de búsqueda de Splunk con un conjunto de resultados de consulta de base de datos, puedes utilizar el comando
lookup
en Splunk. El comandolookup
te permite unir los resultados de dos búsquedas en un campo común.Primero, debes asegurarte de que el campo userid en los resultados de la segunda consulta de Splunk coincida con el campo userid en los resultados de la consulta SQL. Si no es así, es posible que debas utilizar el comando
rename
para renombrar el campo en una de las consultas.Una vez que los nombres de campo de userid coincidan, puedes utilizar el comando
lookup
para unir los dos conjuntos de resultados en el campo userid. La sintaxis para el comandolookup
es la siguiente:En tu caso, puedes utilizar el siguiente código para unir los dos conjuntos de resultados:
En este código, primero realizamos las dos búsquedas y unimos los resultados utilizando el comando
join
. Luego, redireccionamos los resultados al comandolookup
, que une los resultados con la tabladbxquery_1
en el campovalue
(que coincide con el campouser
en la segunda consulta de Splunk). Obtenemos el campoemail
de la tabladbxquery_1
como un nuevo campo llamadoemail
.Ten en cuenta que deberás reemplazar
dbxquery_1
con el nombre real de la tabla de búsqueda.