Splunk Regex用于过滤主机名

时间:2013-03-19 15:03:23

标签: regex splunk

我对splunk相当新鲜。我们有三个hbase集群,所有这些集群都有多个zookeeper节点和区域服务器,就像我在下面提到的那样。

群集1

test101.blah.com
test102.blah.com
..
test199.blah.com

Cluster2中

test201.blah.com
test202.blah.com
..
test299.blah.com

Cluster3

test301.blah.com
..
test399.blah.com

我正在尝试过滤以特定群集为中心的日志。所以我使用生成器像这样创建像host="test101.blah.com" or host=test102.blah.com"..or host="test199.blah.com"这样的过滤语句,并为其他集群构建相同的查询。

我知道效率低下。有没有一种有效的方法通过splunk通过正则表达式或模式匹配来实现这一点?

2 个答案:

答案 0 :(得分:2)

我找到了一个更简单的方法来解决这个问题而没有正则表达式,但直接使用splunk功能,我的三个群集的规则最终成为了这个。

host>="test101*" AND host<="test199*" 
host>="test201*" AND host<="test299*"
host>="test301*" AND host<="test399*"

答案 1 :(得分:0)

按群集搜索示例主机名的最简单答案是: 对于Cluster1:host="test1*" 对于Cluster2:host="test2*" 对于Cluster3:host="test3*"

如果你在大型数据集上做了很多这样的事情,你可能想要测试比较的效率。

您可能希望能够按群集进行进一步的操作,例如统计数据或时间表,因此我建议您使用props.conf中的eval,rex,字段提取或创建“集群”创建新字段索引时的自定义字段,用于快速搜索。

例如,使用“rex”,这将从基本搜索中获取事件并在“host”字段中查找“test”模式,然后将以下数字捕获到名为“cluster”的字段中:

 | rex field=host "(?i)test(?P<cluster>[\\d])"

现在您可以按群集显示统计信息:

 | rex field=host "(?i)test(?P<cluster>[\\d])" | stats count by cluster