你還在用命令看日志?快用 Kibana 吧,一張圖勝過千萬行日志
Kibana是一個(gè)開源的分析和可視化平臺(tái),設(shè)計(jì)用于和Elasticsearch一起工作。
你用Kibana來搜索,查看,并和存儲(chǔ)在Elasticsearch索引中的數(shù)據(jù)進(jìn)行交互。
你可以輕松地執(zhí)行高級(jí)數(shù)據(jù)分析,并且以各種圖標(biāo)、表格和地圖的形式可視化數(shù)據(jù)。
Kibana使得理解大量數(shù)據(jù)變得很容易。它簡(jiǎn)單的、基于瀏覽器的界面使你能夠快速創(chuàng)建和共享動(dòng)態(tài)儀表板,實(shí)時(shí)顯示Elasticsearch查詢的變化。
安裝Kibana
Kibana配置
??https://www.elastic.co/guide/en/kibana/current/settings.html ??
訪問Kibana
Kibana是一個(gè)Web應(yīng)用程序,你可以通過5601來訪問它。例如:localhost:5601 或者 http://YOURDOMAIN.com:5601
當(dāng)訪問Kibana時(shí),默認(rèn)情況下,Discover頁面加載時(shí)選擇了默認(rèn)索引模式。時(shí)間過濾器設(shè)置為最近15分鐘,搜索查詢?cè)O(shè)置為match-all(*)
檢查Kibana狀態(tài)
??http://localhost:5601/status ??
或者 http://192.168.101.5:5601/api/status 返回JSON格式狀態(tài)信息
用Elasticsearch連接到Kibana
在你開始用Kibana之前,你需要告訴Kibana你想探索哪個(gè)Elasticsearch索引。第一次訪問Kibana是,系統(tǒng)會(huì)提示你定義一個(gè)索引模式以匹配一個(gè)或多個(gè)索引的名字。
(提示:默認(rèn)情況下,Kibana連接允許在localhost上的Elasticsearch實(shí)例。為了連接到一個(gè)不同的Elasticsearch實(shí)例,修改kabana.yml中Elasticsearch的URL,然后重啟Kibana。)
為了配置你想要用Kibana訪問的Elasticsearch索引:
- 1、訪問Kibana UI。例如,localhost:56011 或者 http://YOURDOMAIN.com:5601
- 2、指定一個(gè)索引模式來匹配一個(gè)或多個(gè)你的Elasticsearch索引。當(dāng)你指定了你的索引模式以后,任何匹配到的索引都將被展示出來。(畫外音:*匹配0個(gè)或多個(gè)字符;指定索引默認(rèn)是為了匹配索引,確切的說是匹配索引名字)
- 3、點(diǎn)擊“Next Step”以選擇你想要用來執(zhí)行基于時(shí)間比較的包含timestamp字段的索引。如果你的索引沒有基于時(shí)間的數(shù)據(jù),那么選擇“I don’t want to use the Time Filter”選項(xiàng)。
- 4、點(diǎn)擊“Create index pattern”按鈕來添加索引模式。第一個(gè)索引模式自動(dòng)配置為默認(rèn)的索引默認(rèn),以后當(dāng)你有多個(gè)索引模式的時(shí)候,你就可以選擇將哪一個(gè)設(shè)為默認(rèn)。(提示:Management > Index Patterns)
現(xiàn)在,Kibana已經(jīng)連接到你的Elasticsearch數(shù)據(jù)。Kibana展示了一個(gè)只讀的字段列表,這些字段是匹配到的這個(gè)索引配置的字段。
Discover
你可以從Discover頁面交互式的探索你的數(shù)據(jù)。你可以訪問與所選擇的索引默認(rèn)匹配的每個(gè)索引中的每個(gè)文檔。你可以提交查詢請(qǐng)求,過濾搜索結(jié)構(gòu),并查看文檔數(shù)據(jù)。你也可以看到匹配查詢請(qǐng)求的文檔數(shù)量,以及字段值統(tǒng)計(jì)信息。如果你選擇的索引模式配置了time字段,則文檔隨時(shí)間的分布將顯示在頁面頂部的直方圖中。
設(shè)置時(shí)間過濾
搜索數(shù)據(jù)
你可以在搜索框中輸入查詢條件來查詢當(dāng)前索引模式匹配的索引。在查詢的時(shí)候,你可以使用Kibana標(biāo)準(zhǔn)的查詢語言(基于Lucene的查詢語法)或者完全基于JSON的Elasticsearch查詢語言DSL。Kibana查詢語言可以使用自動(dòng)完成和簡(jiǎn)化的查詢語法作為實(shí)驗(yàn)特性,您可以在查詢欄的“選項(xiàng)”菜單下進(jìn)行選擇。
當(dāng)你提交一個(gè)查詢請(qǐng)求時(shí),直方圖、文檔表和字段列表都會(huì)更新,以反映搜索結(jié)果。命中(匹配到的文檔)總數(shù)會(huì)顯示在工具欄中。文檔表格中顯示了前500個(gè)命中。默認(rèn)情況下,按時(shí)間倒序排列,首先顯示最新的文檔。你可以通過點(diǎn)擊“Time”列來逆轉(zhuǎn)排序順序。
Lucene查詢語法
Kibana查詢語言基于Lucene查詢語法。下面是一些提示,可能會(huì)幫到你:
- 為了執(zhí)行一個(gè)文本搜索,可以簡(jiǎn)單的輸入一個(gè)文本字符串。例如,如果你想搜索web服務(wù)器的日志,你可以輸入關(guān)鍵字"safari",這樣你就可以搜索到所有有關(guān)"safari"的字段
- 為了搜索一個(gè)特定字段的特定值,可以用字段的名稱作為前綴。例如,你輸入"status:200",將會(huì)找到所有status字段的值是200的文檔
- 為了搜索一個(gè)范圍值,你可以用括號(hào)范圍語法,[START_VALUE TO END_VALUE]。例如,為了找到狀態(tài)碼是4xx的文檔,你可以輸入status:[400 TO 499]
- 為了指定更改復(fù)雜的查詢條件,你可以用布爾操作符 AND , OR , 和 NOT。例如,為了找到狀態(tài)碼是4xx并且extension字段是php或者h(yuǎn)tml的文檔,你可以輸入status:[400 TO 499] AND (extension:php OR extension:html)
Kibana查詢語法增強(qiáng)
新的更簡(jiǎn)單的語法
如果你熟悉Kibana的舊Lucene查詢語法,那么你應(yīng)該對(duì)這種新的語法也不會(huì)陌生。基本原理保持不變,我們只是簡(jiǎn)單地改進(jìn)了一些東西,使查詢語言更易于使用。
response:200 將匹配response字段的值是200的文檔
用引號(hào)引起來的一段字符串叫短語搜索。例如,message:"Quick brown fox" 將在message字段中搜索"quick brown fox"這個(gè)短語。如果沒有引號(hào),將會(huì)匹配到包含這些詞的所有文檔,而不管它們的順序如何。這就意味著,會(huì)匹配到"Quick brown fox",而不會(huì)匹配"quick fox brown"。(畫外音:引號(hào)引起來作為一個(gè)整體)
查詢解析器將不再基于空格進(jìn)行分割。多個(gè)搜索項(xiàng)必須由明確的布爾運(yùn)算符分隔。注意,布爾運(yùn)算符不區(qū)分大小寫。
在Lucene中,response:200 extension:php 等價(jià)于 response:200 and extension:php。這將匹配response字段值匹配200并且extenion字段值匹配php的文檔。
如果我們把中間換成or,那么response:200 or extension:php將匹配response字段匹配200 或者 extension字段匹配php的文檔。
默認(rèn)情況下,and 比 or 具有更高優(yōu)先級(jí)。
response:200 and extension:php or extension:css 將匹配response是200并且extension是php,或者匹配extension是css而response任意
括號(hào)可以改變這種優(yōu)先級(jí)
response:200 and (extension:php or extension:css) 將匹配response是200并且extension是php或者css的文檔
還有一種簡(jiǎn)寫的方式:
response:(200 or 404) 將匹配response字段是200或404的文檔。字符值也可以是多個(gè),比如:tags:(success and info and security)
還可以用not
not response:200 將匹配response不是200的文檔
response:200 and not (extension:php or extension:css) 將匹配response是200并且extension不是php也不是css的文檔
范圍檢索和Lucene有一點(diǎn)點(diǎn)不同
代替 byte:>1000,我們用byte > 1000
“
, >=, <, <= 都是有效的操作符
”
response:* 將匹配所有存在response字段的文檔
通配符查詢也是可以的。machine.os:win* 將匹配machine.os字段以win開頭的文檔,像"windows 7"和"windows 10"這樣的值都會(huì)被匹配到。
通配符也允許我們一次搜索多個(gè)字段,例如,假設(shè)我們有machine.os和machine.os.keyword兩個(gè)字段,我們想要搜索這兩個(gè)字段都有"windows 10",那么我們可以這樣寫"machine.os*:windows 10"
刷新搜索結(jié)果
按字段過濾
以上是控制列表顯示哪些字段,還有一種方式是在查看文檔數(shù)據(jù)的時(shí)候點(diǎn)那個(gè)像書一樣的小圖標(biāo)
刪除也是可以的
我們還可以編輯一個(gè)DSL查詢語句,用于過濾篩選,例如
查看文檔數(shù)據(jù)
查看文檔上下文
查看字段數(shù)據(jù)統(tǒng)計(jì)
Visualize
Visualize使得你可以創(chuàng)建在你的Elasticsearch索引中的數(shù)據(jù)的可視化效果。然后,你可以構(gòu)建dashboard來展示相關(guān)可視化。
Kibana可視化是基于Elasticsearch查詢的。通過用一系列的Elasticsearch聚集來提取并處理你的數(shù)據(jù),你可以創(chuàng)建圖片來線上你需要了解的趨勢(shì)、峰值和低點(diǎn)。
創(chuàng)建一個(gè)可視化
為了創(chuàng)建一個(gè)可視化的視圖:
- 第1步:點(diǎn)擊左側(cè)導(dǎo)航條中的“Visualize”按鈕
- 第2步:點(diǎn)擊“Create new visualization”按鈕或者**加號(hào)(+)**按鈕
- 第3步:選擇一個(gè)可視化類型
- 第4步:指定一個(gè)搜索查詢來檢索可視化數(shù)據(jù)
- 第5步:在可視化的構(gòu)建器中選擇Y軸的聚合操作。例如,sum,average,count等等
- 第6步:設(shè)置X軸
例如:
Dashboard
Kibana儀表板顯示可視化和搜索的集合。你可以安排、調(diào)整和編輯儀表板內(nèi)容,然后保存儀表板以便共享它。
構(gòu)建一個(gè)Dashboard
- 第1步:在導(dǎo)航條上點(diǎn)擊“Dashboard”
- 第2步:點(diǎn)擊“Create new dashboard”或者“加號(hào)(+)”按鈕
- 第3步:點(diǎn)擊“Add”按鈕
- 第4步:為了添加一個(gè)可視化,從可視化列表中選擇一個(gè),或者點(diǎn)擊“Add new visualization”按鈕新創(chuàng)建一個(gè)
- 第5步:為了添加一個(gè)已保存的查詢,點(diǎn)擊“Saved Search”選項(xiàng)卡,然后從列表中選擇一個(gè)
- 第6步:當(dāng)你完成添加并且調(diào)整了dashboard的內(nèi)容后,去頂部菜單欄,點(diǎn)擊“Save”,然后輸入一個(gè)名字。
默認(rèn)情況下,Kibana儀表板使用淺色主題。要使用深色主題,單擊“選項(xiàng)”并選擇“使用深色主題”。要將dark主題設(shè)置為默認(rèn),請(qǐng)轉(zhuǎn)到管理>Management > Advanced ,并將dashboard:defaultDarkTheme設(shè)置為On。
Monitoring
Elasticsearch控制臺(tái)打印日志
[2018-08-15T14:48:26,874][INFO ][o.e.c.m.MetaDataCreateIndexService] [Px524Ts] [.monitoring-kibana-6-2018.08.15] creating index, cause [auto(bulk api)], templates [.monitoring-kibana], shards [1]/[0], mappings [doc]
Kibana控制臺(tái)打印日志
log [03:26:53.605] [info][license][xpack] Imported license information from Elasticsearch for the [monitoring] cluster: mode: basic | status: active