两个 Splunk 搜索结果之间的差异

Delta between two Splunk search results

我正在尝试找出两次搜索之间的增量。

index="xyz-index" userId | rename attributes.privateGroups as privateGroups 
| join type=inner userId [ search index="xyz-index" userId | rename attributes.publicGroups as publicGroups]
| table userId, privateGroups, publicGroups
  1. 我想找出 privateGroups 和 publicGroups 中的 userIds
  2. 我只想在 privateGroups 中找出 userIds 而不是在 publicGroups 中,反之亦然

对于上面提到的我厌倦了内部查询但是当我改变搜索顺序时我得到了两个不同的搜索结果。

第二个查询也请帮帮我好吗?下面是3个事件,101 user id分两组而102只有一组


{
    userId : 101
    levle : INFO
    timestamp : 2020-06-10
    attributes: {
        privateGroups :  JohnOrg
    }
}
{
    userId : 101
    levle : INFO
    timestamp : 2020-05-09
    attributes: {
        publicGroups :  DistrictOrg
    }
}
{
    userId : 102
    levle : INFO
    timestamp : 2020-05-09
    attributes: {
        publicGroups :  DistrictOrg
    }
}

你可以在没有 join 的情况下这样做:

index="xyz-index" userId=*
| rename attributes.privateGroups as privateGroups attributes.publicGroups as publicGroups

确保 privateGroupspublicGroups 字段存在于所有事件中

| fillnull value="-" privateGroups publicGroups

因为我们知道其中带有“-”的字段填充了 fillnull:

| eval both=if(privateGroups!="-" AND publicGroups!="-",1,0)
| eval inPrivate=if(privateGroups!="-",1,0)
| eval inPublic=if(publicGroups!="-",1,0)

确保每个 "type" 只有一个事件 (public-vs-private-vs-both) with userId:

| stats count by userId both inPrivate inPublic

最后,报告两者中的 userIds,仅 public 和私有:

| stats sum(both) as both_count sum(inPrivate) as private_count sum(inPublic) as public_count by userId