ELK kibana查詢與過濾總結

 

Kibana自帶了與或非的邏輯語法,還有取值範圍等等。html

AND正則表達式

http_code:502 AND domain:"www.xnow.me"json

以上搜索能夠過濾出來www.xnow.me的返回碼爲502的請求。dom

ORelasticsearch

domain:"www.xnow.me" AND ( http_code:500 OR http_code:502)ide

以上搜索能夠過濾出來www.xnow.me中,返回碼是502或者500的請求。ui

NOTurl

http_code:500 AND NOT domain:"www.xnow.me"spa

以上搜索能夠過濾非www.xnow.me的其它域名,返回碼爲500的請求。日誌

取值範圍

domain:"www.xnow.me" AND http_code:[400 TO 599]

使用以上搜索,能夠看到www.xnow.me上,400到599的全部返回碼,譬如404,503等等。

 

好比有個字段是響應時間request_time,如何查詢request_time大於0.5的日誌?

price:[0.5 TO *]

注意必須確保該字段爲數值型

 

能夠參考官方文檔 https://www.elastic.co/guide/en/kibana/3.0/queries.html

 

高階,使用正則表達式搜索

grep的牛逼之處正是在於其對正則表達式的支持,掌握了kibana的正則表達式,grep天然就變得無足輕重了。如下使用json格式的字符串進行過濾。如下是我最經常使用的正則的搜索,過濾請求路徑中的內容,能夠很方便的分析出指定url的請求量變化。

{
  "regexp": {
    "request": "/login.*"
  }
}

以上搜索會過濾出路徑起始爲/login的請求。大多數正則引擎都使用^和$來對字符串的起始和結束進行錨點,可是kibana不用,好比在上面的例子中,/login.*,在其它引擎中能夠表示爲,^/login,此處的.*也不可忽略。

其它正則語法大多相似,下面簡單描述下:

匹配任何字符

. 點能夠用來匹配任何字符,ab.d能夠匹配到abcd或者ab2d。

匹配重複出現一次或者屢次

+ 加號能夠匹配前面出現的字符再出現一次或者好幾回,a+.+c能夠匹配到aabbc或者aaaaaxxxc

* 星號匹配字符出現0次或者屢次。

? 問號匹配字符出現0次或者1次。

限制出現確切的次數

{} 大括號能夠過濾字符出現的確切次數
{3} 表示前一字符出現三次
{2,4} 表示前一字符可出現2,3或者4次。
{2,} 表示前一字符至少重複2次

字符組

用小括號()括起來的字符串能夠認做一個組,例如ababab能夠認爲是(ab)這個組重複了3次,能夠被(ab){3}或者(ab)+等等來匹配。

波浪號

還有一個很神奇的波浪號,ab~d表示,第一個字符是a,第二個字符是b,後面是任意長度的任意字符串但不能是c,最後一個字符是d。因此abcdef能夠使用以下的正則來匹配:

ab~df # 匹配
ab~cf # 匹配
ab~cdef # 不匹配
a~(cb)def # 匹配
a~(bc)def # 不匹配

關於kibana的正則還有不少其它用法,大多數我都沒用到過,因此此處不一一列舉了,感興趣的童鞋能夠參考Elasticsearch的官網的這篇文章Regexp Query,以上部分也大可能是取自這篇文檔。

 

 

參考:http://xnow.me/ops/how-to-search-in-elk.html

http://www.ttlsa.com/elk/elk-kibana-query-and-filter/

相關文章
相關標籤/搜索