0x00 概述
elasticsearch構建在Lucene之上,過濾器語法和Lucene相同html
Kibana接口概述nginx
Kibana接口分爲四個主要部分:web
-
發現算法
-
可視化chrome
-
儀表板apache
-
設置api
咱們將按照列出的順序瀏覽每一個部分的基礎知識,並演示如何使用每一個接口。瀏覽器
0x01 Kibana探索
當您第一次鏈接到Kibana 4時,您將進入發現頁面。 默認狀況下,此頁面將顯示您的全部ELK的最近接收的日誌。 在這裏,你能夠根據搜索查詢經過篩選,找到特定的日誌消息,則縮小搜索結果與時間過濾器一個特定的時間範圍。緩存
如下是Kibana Discover界面元素的細分:app
-
搜索欄:直屬主導航菜單。 使用此選項可搜索特定字段和/或整個郵件
-
時間過濾器:右上(時鐘圖標)。 使用此選項能夠根據各類相對和絕對時間範圍過濾日誌
-
字段選擇:左,搜索欄下。 選擇字段要修改哪些是顯示在日誌查看
-
日期柱狀圖:搜索欄下的條形圖。 默認狀況下,這將顯示全部日誌的計數,相對於時間(x軸),由搜索和時間過濾器匹配。 您能夠單擊小節,或單擊並拖動,以縮小時間過濾器
-
日誌視圖:右下角。 使用這個要看我的的日誌信息,並顯示記錄田野過濾後的數據。 若是沒有選擇字段,則顯示整個日誌消息
此動畫演示了Discover頁面的幾個主要功能:
這裏是對正在執行的操做的逐步描述:
-
選擇了「類型」字段,它限制了每一個日誌記錄顯示的內容(右下) – 默認狀況下,顯示整個日誌消息
-
搜索
type: "nginx-access"
,它只匹配Nginx的訪問日誌 -
展開最新的Nginx訪問日誌以更詳細地查看它
請注意,結果被限制爲「最後15分鐘」。 若是您沒有得到任何結果,請確保在指定的時間段內生成了與您的搜索查詢匹配的日誌。
收集和過濾的日誌消息取決於您的Logstash和Logstash轉發器配置。 在咱們的示例中,咱們收集syslog和Nginx訪問日誌,並經過「類型」過濾它們。 若是您正在收集日誌消息,但沒有將數據過濾到不一樣的字段,對它們進行查詢將更加困難,由於您將沒法查詢特定字段。
搜索語法
搜索提供了一種簡單而強大的方法來選擇特定的日誌消息子集。 搜索語法很是不言自明,並容許布爾運算符,通配符和字段過濾。 例如,若是你想找到谷歌Chrome瀏覽器用戶生成的Nginx的訪問日誌,您能夠搜索type: "nginx-access" AND agent: "chrome"
。 您還能夠按特定主機或客戶端IP地址範圍或日誌中包含的任何其餘數據進行搜索。
當您建立要保持一個搜索查詢,你能夠經過點擊保存搜索圖標,而後保存按鈕,就像這個動畫:
保存的搜索能夠在任什麼時候候經過點擊加載保存搜索圖標能夠打開和建立可視化時,他們也可使用。
咱們將保存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
0x02 Kibana可視化
Kibana可視化頁面是您能夠在其中建立,修改和查看本身的自定義可視化。 有幾種不一樣類型的可視化,從垂直柱狀圖和餅狀圖來平鋪圖 (用於在地圖上顯示的數據)和數據表 。 可視化還能夠與其餘有權訪問您的Kibana實例的用戶共享。
若是這是您第一次使用Kibana可視化,您必須從新加載字段列表,而後才能繼續。 說明要作到這一點都覆蓋在刷新野外數據款,下Kibana設置部分。
建立垂直條形圖
要建立一個可視化,首先,單擊可視化菜單項。
決定所需的可視化類型,而後選擇它。 咱們將建立一個垂直條形圖 ,這是一個很好的起點。
如今您必須選擇搜索源。 您能夠建立新的搜索或使用保存的搜索。 咱們將與後者的方法去,並選擇咱們以前建立的類型nginx的訪問搜索。
首先,右側的預覽圖將是一個實心條(假設您的搜索找到日誌消息),由於它只包含Y軸的「計數」。 也就是說,它只是顯示使用指定的搜索查詢找到的日誌數。
爲了使可視化更實用,讓咱們添加了一些新的水桶給它。
首先,添加X軸鬥,而後單擊聚合下拉菜單,而後選擇「日期直方圖」。 若是你點擊應用按鈕,單條會分裂成沿X軸的幾家酒吧。 如今,計數顯示爲多個條形,劃分爲時間間隔(能夠經過從下拉菜單中選擇間隔進行修改) – 相似於您在「發現」頁面上看到的內容。
若是咱們想使圖形更有趣,咱們能夠單擊添加子聚合按鈕。 選擇拆分條吊桶式。 單擊子彙集下拉菜單,而後選擇「重要條款」,而後單擊字段下拉菜單並選擇「clientip.raw」,而後單擊大小字段,而後輸入「10」。 點擊應用按鈕來建立新的圖形。
這裏是你應該看到的截圖:
若是可視化的日誌由多個IP地址生成(即多我的訪問您的網站),您會看到每一個條將被分爲彩色段。 每一個彩色段表明由特定IP地址(即您網站的特定訪問者)生成的日誌計數,圖表將顯示最多10個不一樣的段(由於大小設置)。 您能夠鼠標懸停並單擊圖中的任何項目,以深刻查看特定的日誌消息。
當您準備好保存您的可視化,單擊保存可視化圖標,頂部附近,而後將其命名,而後點擊保存按鈕。
建立另外一個可視化
在繼續下一部分以前,咱們將演示如何建立儀表板,您應該至少建立一個可視化。 嘗試並探索各類可視化類型。
例如,您能夠建立前5(最高計數)日誌「類型」的餅圖。 要作到這一點,請單擊可視化 ,而後選擇餅圖 。 而後使用新的搜索 ,並離開搜索爲「」(即全部日誌)。 而後選擇*分割片**桶。 點擊彙集下拉菜單,選擇「重大條款」,點擊字段下拉,選擇「type.raw」,而後單擊大小字段,而後輸入「5」。 如今點擊應用按鈕,保存可視化的「五大」。
下面是剛纔描述的設置的屏幕截圖:
由於,在咱們的示例中,咱們只收集syslogs和Nginx訪問日誌,在餅圖中只有兩個切片。
一旦你完成了可視化,讓咱們繼續建立一個Kibana儀表板。
Kibana儀表板
Kibana儀表板頁面可供您建立,修改和查看本身的自定義儀表板。 使用信息中心,您能夠將多個可視化結果合併到單個頁面上,而後經過提供搜索查詢或經過單擊可視化中的元素來選擇過濾器來對其進行過濾。 儀表板對於您想要獲取日誌概述以及在各類可視化和日誌之間創建關聯很是有用。
建立儀表板
要建立儀表盤Kibana,首先,單擊儀表盤菜單項。
若是您還沒有建立信息中心,則會看到一個大部分空白的頁面,其中顯示「準備開始?」。 若是您沒有看到這個畫面(也就是已經有儀表盤上的可視化),按新的儀表盤圖標 (搜索欄的右邊)到那裏。
此動畫演示如何向信息中心添加可視化:
下面是正在執行的步驟的細分:
-
點擊添加可視化圖標
-
添加了「日誌計數」餅圖和「Nginx:十大客戶端IP」直方圖
-
摺疊添加可視化菜單
-
從新安排和調整儀表板上的可視化
-
點擊保存儀表盤圖標
在保存信息中心以前選擇一個名稱。
這應該給你一個好主意,如何建立一個儀表板。 繼續建立您認爲可能須要的任何儀表板。 接下來咱們將介紹使用信息中心。
使用儀表板
能夠經過輸入搜索查詢,更改時間過濾器或單擊可視化中的元素進一步過濾儀表板。
例如,若是您單擊直方圖中的特定顏色段,Kibana將容許您對該段表示的重要術語進行過濾。 如下是將過濾器應用於信息中心的示例屏幕截圖:
請務必點擊Apply Now按鈕來過濾結果,並重繪儀表盤的可視化效果。 能夠根據須要應用和移除過濾器。
搜索和時間過濾器的工做方式與「發現」頁面相同,只是它們僅應用於儀表板中顯示的數據子集。
Kibana設置
Kibana設置頁面容許您更改各類默認值或索引模式。 在本教程中,咱們將保持它的簡單和重點指標和對象部分。
從新加載字段數據
當您向Logstash數據添加新字段時,例如,若是爲新日誌類型添加過濾器,則可能須要從新加載字段列表。若是在Kibana中找不到已過濾的字段,則必須從新加載字段列表,由於此數據只會按期高速緩存。
要作到這一點,單擊設置菜單項,而後單擊「logstash- *」(下指數模式 ):
而後單擊黃色刷新字段列表按鈕。 點擊OK按鈕進行確認。
編輯保存的對象
「對象」部分容許您編輯,查看和刪除任何已保存的儀表板,搜索和可視化。
到那裏,點擊設置菜單項,而後將對象子菜單。
在這裏,您能夠從選項卡中選擇以查找要編輯,查看或刪除的對象:
在截圖中,咱們選擇了一個重複的可視化。 能夠經過單擊相應的按鈕來編輯,查看或刪除它。