我对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通过正则表达式或模式匹配来实现这一点?
答案 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