Logstash从sp_executesql中提取值

时间:2015-12-07 15:15:28

标签: elasticsearch logstash

我们正在跟踪并将我们的SQL Server程序超时发送到Elasticsearch,因此我们可以在Kibana中对它们进行可视化以发现问题。

我们的一些SQL查询已参数化并使用sp_executesql

是否可以从查询中提取其参数及其值?

例如:

EXEC sp_executesql N'EXEC dbo.MySearchProcedure @UserId=@p0,@SearchPhrase=@p1'
    , N'@p0 int,@p1 nvarchar(max)'
    , @p0 = 11111
    , @p1 = N'denmark';

从中得到这个结果:

{
  "Procedure": "dbo.MySearchProcedure",
  "Statement": "exec sp_executesql N'exec Search.GetAnalysisResultsListTextSearch @SubscriberId=@p0,@SearchTerms=@p1,@SortType=@p2',N'@p0 int,@p1 nvarchar(max) ,@p2 int',@p0=47594,@p1=N'denmark',@p2=0",
  "Parameters": {
    "UserId": 11111,
    "SearchPhrase": "denmark"
  }
}

1 个答案:

答案 0 :(得分:1)

听起来像ruby {}过滤器的工作。首先,在查询中找到所有key = value对(@ userid = @ p0,可能使用ruby的scan功能),然后找到分配(@ p0 = 1234,再次使用scan),然后创建一个新字段将两者结合起来(userid = 1234)。在红宝石过滤器中:

 event['userid'] = '1234'