2013-03-19 61 views
0

我對splunk很新穎。我們有三個hbase集羣,並且所有這些集羣都有多個zookeeper節點和區域服務器,就像我在下面提到的那樣。Splunk正則表達式用於通過主機名進行篩選

集羣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 

我試圖過濾器F或以特定羣集爲中心的日誌。所以我使用了一個生成器來創建類似這樣的過濾語句host="test101.blah.com" or host=test102.blah.com"..or host="test199.blah.com",併爲其他集羣構建相同的查詢。

我知道它的低效率。有沒有一種有效的方式來通過正則表達式或通過splunk進行模式匹配?

回答

2

我發現了一個更簡單的替代方案來解決這個問題,而沒有正則表達式,但直接使用splunk功能,我的三個集羣的規則最終成爲這個。

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

最簡單的答案通過集羣爲您的主機名例如要搜索將是: 獲得Cluster1:host="test1*" 對於Cluster2中:host="test2*" 對於Cluster3:host="test3*"

如果你做了很多這種過度的您可能想要測試比較效率的大型數據集。

您可能希望能夠按集羣進行進一步操作,例如統計信息或時間表,所以我建議您在props.conf中使用eval,rex,字段提取爲「集羣」創建新字段,或者在索引時創建一個自定義字段以獲得最快搜索。例如,使用「rex」,它會從基本搜索中獲取事件,並在「主機」字段中查找「測試」模式,然後將以下數字捕獲到名爲「cluster」的字段中:

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

所以現在你可以通過顯示集羣統計:

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