es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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'):\""

Tags:  , ,

Answer

  1. Avatar for 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 comando lookup 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 comando lookup es la siguiente:

    | lookup <nombretabla> <campobusqueda> OUTPUT <camposalida>
    

    En tu caso, puedes utilizar el siguiente código para unir los dos conjuntos de resultados:

    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>,+?):" 
      | stats count by user 
      | table user]
    | lookup dbxquery_1 value as user OUTPUT email
    

    En este código, primero realizamos las dos búsquedas y unimos los resultados utilizando el comando join. Luego, redireccionamos los resultados al comando lookup, que une los resultados con la tabla dbxquery_1 en el campo value (que coincide con el campo user en la segunda consulta de Splunk). Obtenemos el campo email de la tabla dbxquery_1 como un nuevo campo llamado email.

    Ten en cuenta que deberás reemplazar dbxquery_1 con el nombre real de la tabla de búsqueda.

Comments are closed.