Kibana查詢說明


elasticsearch構建在Lucene之上,過濾器語法和Lucene相同

Kibana接口概述

Kibana接口分為四個主要部分:

  • 發現

  • 可視化

  • 儀表板

  • 設置

我們將按照列出的順序瀏覽每個部分的基礎知識,並演示如何使用每個接口。

Kibana探索

當您第一次連接到Kibana 4時,您將進入發現頁面。 默認情況下,此頁面將顯示您的所有ELK的最近接收的日志。 在這里,你可以根據搜索查詢通過篩選,找到特定的日志消息,則縮小搜索結果與時間過濾器一個特定的時間范圍。

以下是Kibana Discover界面元素的細分:

  • 搜索欄:直屬主導航菜單。 使用此選項可搜索特定字段和/或整個郵件

  • 時間過濾器:右上(時鍾圖標)。 使用此選項可以根據各種相對和絕對時間范圍過濾日志

  • 字段選擇:左,搜索欄下。 選擇字段要修改哪些是顯示在日志查看

  • 日期柱狀圖:搜索欄下的條形圖。 默認情況下,這將顯示所有日志的計數,相對於時間(x軸),由搜索和時間過濾器匹配。 您可以單擊小節,或單擊並拖動,以縮小時間過濾器

  • 日志視圖:右下角。 使用這個要看個人的日志信息,並顯示記錄田野過濾后的數據。 如果沒有選擇字段,則顯示整個日志消息

此動畫演示了Discover頁面的幾個主要功能:

如何使用Kibana發現

這里是對正在執行的操作的逐步描述:

  1. 選擇了“類型”字段,它限制了每個日志記錄顯示的內容(右下) – 默認情況下,顯示整個日志消息

  2. 搜索type: "nginx-access" ,它只匹配Nginx的訪問日志

  3. 展開最新的Nginx訪問日志以更詳細地查看它

請注意,結果被限制為“最后15分鍾”。 如果您沒有獲得任何結果,請確保在指定的時間段內生成了與您的搜索查詢匹配的日志。

收集和過濾的日志消息取決於您的Logstash和Logstash轉發器配置。 在我們的示例中,我們收集syslog和Nginx訪問日志,並通過“類型”過濾它們。 如果您正在收集日志消息,但沒有將數據過濾到不同的字段,對它們進行查詢將更加困難,因為您將無法查詢特定字段。

搜索語法

搜索提供了一種簡單而強大的方法來選擇特定的日志消息子集。 搜索語法非常不言自明,並允許布爾運算符,通配符和字段過濾。 例如,如果你想找到谷歌Chrome瀏覽器用戶生成的Nginx的訪問日志,您可以搜索type: "nginx-access" AND agent: "chrome" 。 您還可以按特定主機或客戶端IP地址范圍或日志中包含的任何其他數據進行搜索。

當您創建要保持一個搜索查詢,你可以通過點擊保存搜索圖標,然后保存按鈕,就像這個動畫:

如何保存Kibana搜索

保存的搜索可以在任何時候通過點擊加載保存搜索圖標可以打開和創建可視化時,他們也可以使用。

我們將保存type: "nginx-access"搜索為“類nginx的訪問”,並用它來創建可視化。

 

在kibana搜索的時候,可以簡單的使用 Lucene通用的語法,或者使用基於JSON格式QueryDSL(DSL:領域特定語言)來構造搜索各種請求(更加靈活,方便構造復雜查詢)。

  Lucene提供了方便您創建自建查詢的API,也通過QueryParser提供了強大的查詢語言。

本文講述Lucene的查詢語句解析器支持的語法,Lucene的查詢語句解析器是使用JavaCC工具生成的詞法解析器,它將查詢字串解析為Lucene Query對象。
 
項(Term)
一條搜索語句被拆分為一些項(term)和操作符(operator)。項有兩種類型:單獨項和短語。
單獨項就是一個單獨的單詞,例如”test” , “hello”。
短語是一組被雙引號包圍的單詞,例如”hello dolly”。
多個項可以用布爾操作符連接起來形成復雜的查詢語句(AND OR )。
 
 
域(Field)
Lucene支持域。您可以指定在某一個域中搜索,或者就使用默認域。域名及默認域是具體索引器實現決定的。kibana的默認域就是message …. message會包含你所有日志,包括你grok過濾之后的。 
他的搜索語法是:  域名+”:”+搜索的項名。


舉個例子,假設某一個Lucene索引包含兩個域,title和text,text是默認域。如果您想查找標題為”The Right Way”且含有”don’t go this way”的文章,您可以輸入:
title:”The Right Way” AND text:go
或者
title:”Do it right” AND right
因為text是默認域,所以這個域名可以不行。
注意:域名只對緊接於其后的項生效,所以
title:Do it right
只有”Do”屬於title域。”it”和”right”仍將在默認域中搜索(這里是text域)。
 
項修飾符(Term Modifiers)
Lucene支持項修飾符以支持更寬范圍的搜索選項。
kibana默認就是lucene搜索的,一些模糊搜索是可以用通配符,Lucene支持單個與多個字符的通配搜索。
使用符號”?”表示單個任意字符的通配。
使用符號”*”表示多個任意字符的通配。
單個任意字符匹配的是所有可能單個字符。例如,搜索”text或者”test”,可以這樣:
te?t
多個任意字符匹配的是0個及更多個可能字符。例如,搜索test, tests 或者 tester,可以這樣:
test*
您也可以在字符竄中間使用多個任意字符通配符。
te*t
注意:您不能在搜索的項開始使用*或者?符號。
 
范圍查詢

有一些需求是range的范圍類型的,

 

1
mod_date:[20020101 TO 20030101]

 

模糊查詢
Lucene支持基於Levenshtein Distance與Edit Distance算法的模糊搜索。要使用模糊搜索只需要在單獨項的最后加上符號”~”。例如搜索拼寫類似於”roam”的項這樣寫:
roam~
這次搜索將找到形如foam和roams的單詞。
注意:使用模糊查詢將自動得到增量因子(boost factor)為0.2的搜索結果.
 
 
鄰近搜索(Proximity Searches)
Lucene還支持查找相隔一定距離的單詞。鄰近搜索是在短語最后加上符號”~”。例如在文檔中搜索相隔10個單詞的”apache”和”jakarta”,這樣寫:
“jakarta apache”~10
 
 
Boosting a Term
Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, “^”, symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be.
Lucene可以設置在搜索時匹配項的相似度。在項的最后加上符號”^”緊接一個數字(增量值),表示搜索時的相似度。增量值越高,搜索到的項相關度越好。
Boosting allows you to control the relevance of a document by boosting its term. For example, if you are searching for jakarta apache and you want the term “jakarta” to be more relevant boost it using the ^ symbol along with the boost factor next to the term. You would type:
通過增量一個項可以控制搜索文檔時的相關度。例如如果您要搜索jakarta apache,同時您想讓”jakarta”的相關度更加好,那么在其后加上”^”符號和增量值,也就是您輸入:
 
jakarta^4 apache
This will make documents with the term jakarta appear more relevant. You can also boost Phrase Terms as in the example:
這將使得生成的doucment盡可能與jakarta相關度高。您也可以增量短語,象以下這個例子一樣:
“jakarta apache”^4 “jakarta lucene”
By default, the boost factor is 1. Although, the boost factor must be positive, it can be less than 1 (i.e. .2)
默認情況下,增量值是1。增量值也可以小於1(例如0.2),但必須是有效的。
 
 
 
布爾操作符
布爾操作符可將項通過邏輯操作連接起來。Lucene支持AND, “+”, OR, NOT 和 “-”這些操作符。(注意:布爾操作符必須全部大寫)
OR
OR操作符是默認的連接操作符。這意味着如果兩個項之間沒有布爾操作符,就是使用OR操作符。OR操作符連接兩個項,意味着查找含有任意項的文檔。這與集合並運算相同。符號||可以代替符號OR。
搜索含有”xiaorui.cc apache” 或者 “xiaorui.cc”的文檔,可以使用這樣的查詢:
“jakarta apache” jakarta

 

1
2
3
"xiaorui.cc apache" xiaorui.cc
或者
"xiaorui.cc apache" OR xiaorui.cc

 
AND
AND操作符匹配的是兩項同時出現的文檔。這個與集合交操作相等。符號&&可以代替符號AND。
搜索同時含有”jakarta apache” 與 “jakarta lucene”的文檔,使用查詢:
 

1
"jakarta apache" AND "jakarta lucene"

+
“+”操作符或者稱為存在操作符,要求符號”+”后的項必須在文檔相應的域中存在。
搜索必須含有”jakarta”,可能含有”lucene”的文檔,使用查詢:

+jakarta apache

他其實跟AND 是有些像的,直接在lucene query  ==》   A  B的話,意思是 A 或者B的。 這有些蛋疼… …  

 
NOT
NOT操作符排除那些含有NOT符號后面項的文檔。這和集合的差運算相同。符號!可以代替符號NOT。
搜索含有”jakarta apache”,但是不含有”jakarta lucene”的文檔,使用查詢:
“jakarta apache” NOT “jakarta lucene”
注意:NOT操作符不能單獨與項使用構成查詢。例如,以下的查詢查不到任何結果:
NOT “jakarta apache”
 
-
“-”操作符或者禁止操作符排除含有”-”后面的相似項的文檔。
搜索含有”jakarta apache”,但不是”jakarta lucene”,使用查詢:
“jakarta apache” -”jakarta lucene”
 
 
分組(Grouping)
Lucene支持使用圓括號來組合字句形成子查詢。這對於想控制查詢布爾邏輯的人十分有用。
搜索含有”jakarta”或者”apache”,同時含有”website”的文檔,使用查詢:
(jakarta OR apache) AND website
這樣就消除了歧義,保證website必須存在,jakarta和apache中之一也存在。
 
 
轉義特殊字符(Escaping Special Characters)
Lucene支持轉義特殊字符,因為特殊字符是查詢語法用到的。現在,特殊字符包括
+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \
轉義特殊字符只需在字符前加上符號\,例如搜索(1+1):2,使用查詢
\(1\+1\)\:2

 

 

 

Kibana可視化

Kibana可視化頁面是您可以在其中創建,修改和查看自己的自定義可視化。 有幾種不同類型的可視化,從垂直柱狀圖餅狀圖來平鋪圖 (用於在地圖上顯示的數據)和數據表 。 可視化還可以與其他有權訪問您的Kibana實例的用戶共享。

如果這是您第一次使用Kibana可視化,您必須重新加載字段列表,然后才能繼續。 說明要做到這一點都覆蓋在刷新野外數據款,下Kibana設置部分。

創建垂直條形圖

要創建一個可視化,首先,單擊可視化菜單項。

決定所需的可視化類型,然后選擇它。 我們將創建一個垂直條形圖 ,這是一個很好的起點。

現在您必須選擇搜索源。 您可以創建新的搜索或使用保存的搜索。 我們將與后者的方法去,並選擇我們之前創建的類型nginx的訪問搜索。

首先,右側的預覽圖將是一個實心條(假設您的搜索找到日志消息),因為它只包含Y軸的“計數”。 也就是說,它只是顯示使用指定的搜索查詢找到的日志數。

為了使可視化更實用,讓我們添加了一些新的水桶給它。

首先,添加X軸斗,然后單擊聚合下拉菜單,然后選擇“日期直方圖”。 如果你點擊應用按鈕,單條會分裂成沿X軸的幾家酒吧。 現在,計數顯示為多個條形,划分為時間間隔(可以通過從下拉菜單中選擇間隔進行修改) – 類似於您在“發現”頁面上看到的內容。

如果我們想使圖形更有趣,我們可以單擊添加子聚合按鈕。 選擇拆分條吊桶式。 單擊子聚集下拉菜單,然后選擇“重要條款”,然后單擊字段下拉菜單並選擇“clientip.raw”,然后單擊大小字段,然后輸入“10”。 點擊應用按鈕來創建新的圖形。

這里是你應該看到的截圖:

Kibana可視化設置

如果可視化的日志由多個IP地址生成(即多個人訪問您的網站),您會看到每個條將被分為彩色段。 每個彩色段代表由特定IP地址(即您網站的特定訪問者)生成的日志計數,圖表將顯示最多10個不同的段(因為大小設置)。 您可以鼠標懸停並單擊圖中的任何項目,以深入查看特定的日志消息。

當您准備好保存您的可視化,單擊保存可視化圖標,頂部附近,然后將其命名,然后點擊保存按鈕。

創建另一個可視化

在繼續下一部分之前,我們將演示如何創建儀表板,您應該至少創建一個可視化。 嘗試並探索各種可視化類型。

例如,您可以創建前5(最高計數)日志“類型”的餅圖。 要做到這一點,請單擊可視化 ,然后選擇餅圖 。 然后使用搜索 ,並離開搜索為“”(即所有日志)。 然后選擇*分割片**桶。 點擊聚集下拉菜單,選擇“重大條款”,點擊字段下拉,選擇“type.raw”,然后單擊大小字段,然后輸入“5”。 現在點擊應用按鈕,保存可視化的“五大”。

下面是剛才描述的設置的屏幕截圖:

餅圖設置

因為,在我們的示例中,我們只收集syslogs和Nginx訪問日志,在餅圖中只有兩個切片。

一旦你完成了可視化,讓我們繼續創建一個Kibana儀表板。

Kibana儀表板

Kibana儀表板頁面可供您創建,修改和查看自己的自定義儀表板。 使用信息中心,您可以將多個可視化結果合並到單個頁面上,然后通過提供搜索查詢或通過單擊可視化中的元素來選擇過濾器來對其進行過濾。 儀表板對於您想要獲取日志概述以及在各種可視化和日志之間建立關聯非常有用。

創建儀表板

要創建儀表盤Kibana,首先,單擊儀表盤菜單項。

如果您尚未創建信息中心,則會看到一個大部分空白的頁面,其中顯示“准備開始?”。 如果您沒有看到這個畫面(也就是已經有儀表盤上的可視化),按新的儀表盤圖標 (搜索欄的右邊)到那里。

此動畫演示如何向信息中心添加可視化:

創建Kibana儀表板

下面是正在執行的步驟的細分:

  1. 點擊添加可視化圖標

  2. 添加了“日志計數”餅圖和“Nginx:十大客戶端IP”直方圖

  3. 折疊添加可視化菜單

  4. 重新安排和調整儀表板上的可視化

  5. 點擊保存儀表盤圖標

在保存信息中心之前選擇一個名稱。

這應該給你一個好主意,如何創建一個儀表板。 繼續創建您認為可能需要的任何儀表板。 接下來我們將介紹使用信息中心。

使用儀表板

可以通過輸入搜索查詢,更改時間過濾器或單擊可視化中的元素進一步過濾儀表板。

例如,如果您單擊直方圖中的特定顏色段,Kibana將允許您對該段表示的重要術語進行過濾。 以下是將過濾器應用於信息中心的示例屏幕截圖:

過濾信息中心

請務必點擊Apply Now按鈕來過濾結果,並重繪儀表盤的可視化效果。 可以根據需要應用和移除過濾器。

搜索和時間過濾器的工作方式與“發現”頁面相同,只是它們僅應用於儀表板中顯示的數據子集。

Kibana設置

Kibana設置頁面允許您更改各種默認值或索引模式。 在本教程中,我們將保持它的簡單和重點指標對象部分。

重新加載字段數據

當您向Logstash數據添加新字段時,例如,如果為新日志類型添加過濾器,則可能需要重新加載字段列表。如果在Kibana中找不到已過濾的字段,則必須重新加載字段列表,因為此數據只會定期高速緩存。

要做到這一點,單擊設置菜單項,然后單擊“logstash- *”(下指數模式 ):

重新加載字段列表

然后單擊黃色刷新字段列表按鈕。 點擊OK按鈕進行確認。

編輯保存的對象

“對象”部分允許您編輯,查看和刪除任何已保存的儀表板,搜索和可視化。

到那里,點擊設置菜單項,然后將對象子菜單。

在這里,您可以從選項卡中選擇以查找要編輯,查看或刪除的對象:

編輯保存的對象

在截圖中,我們選擇了一個重復的可視化。 可以通過單擊相應的按鈕來編輯,查看或刪除它。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM