Kibana 用戶指南(Timelion入門)

Timelion入門

Timelion使你能夠輕鬆得到如下問題的答案:html

  • 隨着時間的推移,每一個惟一的用戶會查看多少個頁面?
  • 這個星期五和上週五之間的交通量有什麼不一樣?
  • 今天有多少日本人口來到個人網站?
  • 標準普爾500指數的10日均線是多少?
  • 過去兩年收到的全部搜索請求的累計總和是多少?

建立時間序列可視化

本教程將使用Metricbeat的時間序列數據帶你瀏覽Timelion提供的一些函數,首先下載Metricbeat,按照這裏的說明在本地獲取數據。express

你將建立的第一個可視化將比較在用戶空間中花費的CPU時間與一小時的結果偏移量的實時百分比,爲了建立這個可視化,咱們須要建立兩個Timelion表達式,一個是system.cpu.user.pct的實時平均數,另外一個是1小時的平均偏移量。segmentfault

首先,你須要在第一個表達式中定義indextimefieldmetric,並在Timelion查詢欄中輸入如下表達式。網絡

.es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct')

timelion-create01.png

如今你須要添加另外一個具備前一小時數據的系列,以便進行比較,爲此,你必須向.es()函數添加一個offset參數,offset將用日期表達式偏移序列檢索。對於本例,你但願將數據偏移一小時,並使用日期表達式-1h,使用逗號分隔這兩個系列,在Timelion查詢欄中輸入如下表達式:ide

.es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct'), .es(offset=-1h,index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct')

timelion-create02.png

很難區分這兩個系列,自定義標籤以便於區分它們,你老是能夠將.label()函數附加到任何表達式以添加自定義標籤,在Timelion查詢欄中輸入如下表達式來定製標籤:函數

.es(offset=-1h,index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('last hour'), .es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('current hour')

timelion-create03.png

保存完整的Timelion工做表做爲Metricbeat示例,做爲一種最佳實踐,你應該在完成本教程的過程當中保存對本工做表所作的任何重要更改。學習

定製和格式化可視化

Timelion有不少定製選項,你幾乎可使用可用的函數對圖表的每一個方面進行個性化設置,對於本教程,你將執行如下修改。網站

  • 添加一個標題
  • 更改系列類型
  • 改變一個系列的顏色和不透明度
  • 修改圖例

在上一節中,你用兩個系列建立了一個時間軸圖表,讓咱們繼續定製這個可視化。ui

在進行任何其餘修改以前,將title()函數附加到表達式的末尾,以添加具備有意義名稱的標題,這將使不熟悉的用戶更容易理解可視化目的。對於這個示例,將title('CPU usage over time')添加到原始系列中,在Timelion 查詢欄中使用如下表達式:spa

.es(offset=-1h,index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('last hour'), .es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('current hour').title('CPU usage over time')

timelion-customize01.png

爲了進一步區分過去一小時系列,你將把圖表類型更改成區域圖表,爲了作到這一點,你須要使用.lines()函數來定製折線圖,你將設置fillwidth參數,分別設置折線圖的填充和折線寬度。在本例中,你將經過添加.lines(fill=1,width=0.5)將填充級別設置爲1,邊框寬度設置爲0.5,在Timelion查詢欄中使用如下表達式:

.es(offset=-1h,index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('last hour').lines(fill=1,width=0.5), .es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('current hour').title('CPU usage over time')

timelion-customize02.png

讓咱們給這些系列塗上顏色,使當前的小時系列比過去一個小時系列流行一點,color()函數可用於更改任何系列的顏色,並接受標準顏色名稱、十六進制值或分組系列的顏色模式。對於這個示例,你將在過去一個小時使用.color(gray),而在當前小時使用.color(#1E90FF),在Timelion查詢欄中輸入如下表達式進行調整:

.es(offset=-1h,index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('last hour').lines(fill=1,width=0.5).color(gray), .es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('current hour').title('CPU usage over time').color(#1E90FF)

timelion-customize03.png

最後但並不是最不重要,調整圖例,使其佔用儘量小的空間,你可使用.legend()函數來設置圖例的位置和樣式。在本例中,經過將.legend(columns=2, position=nw)兩列追加到原始系列,將圖例放置在可視化的西北位置,使用如下表達式進行調整:

.es(offset=-1h,index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('last hour').lines(fill=1,width=0.5).color(gray), .es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct').label('current hour').title('CPU usage over time').color(#1E90FF).legend(columns=2, position=nw)

timelion-customize04.png

保存你的更改並繼續到下一節學習數學函數。

使用數學函數

在前兩部分中,你已經學習瞭如何建立和樣式化Timelion可視化,本節將探索Timelion提供的數學函數。你將繼續使用Metricbeat數據爲入站和出站網絡流量建立新的Timelion可視化,首先,你須要在工做表中添加一個新的Timelion可視化。

在頂部菜單中,單擊Add添加第二個可視化,當添加到工做表中時,你會注意到查詢欄已經被替換爲默認的.es(*)表達式,這是由於查詢與你選擇的Timelion工做表上的可視化相關聯。

timelion-math01.png

要開始跟蹤入站/出站網絡流量,你的第一個表達式將計算system.network.in.bytes的最大值,將下面的表達式輸入到你的Timelion查詢欄:

.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes)

timelion-math02.png

在繪製變化率時,監視網絡流量更有價值,derivative()函數就是這樣作的 - 繪製值隨時間的變化,經過在表達式末尾添加.derivative()能夠很容易地作到這一點,使用如下表達式來更新你的可視化:

.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative()

timelion-math03.png

如今是出站流量,你須要爲system.network.out.bytes添加相似的計算,因爲出站流量將離開你的機器,所以將此指標表示爲負數是有意義的,.multiply()函數將系列乘以一個數字,這個數字是系列或系列列表的結果。對於本例,你將使用.multiply(-1)將出站網絡流量轉換爲負值,使用如下表達式來更新你的可視化:

.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative(), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1)

timelion-math04.png

爲了使這個可視化更容易使用,將這個系列從字節轉換爲兆字節,Timelion有一個.divide()函數可使用,.divide()接受與.multiply()相同的輸入,並將這個系列除以所定義的除數,使用如下表達式來更新你的可視化:

.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative().divide(1048576), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1).divide(1048576)

timelion-math05.png

使用上一節中學習的格式化函數.title().label().color().lines().legend(),讓咱們稍微整理一下這個可視化,使用如下表達式來更新你的可視化:

.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative().divide(1048576).lines(fill=2, width=1).color(green).label("Inbound traffic").title("Network traffic (MB/s)"), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1).divide(1048576).lines(fill=2, width=1).color(blue).label("Outbound traffic").legend(columns=2, position=nw)

timelion-math06.png

保存你的更改並繼續到下一節學習條件邏輯和跟蹤趨勢。

使用條件邏輯和跟蹤趨勢

在本節中,你將學習如何使用條件邏輯修改時間序列數據,並使用移動平均值建立趨勢,這有助於隨着時間的推移很容易地發現異常值和模式。

對於本教程,你將繼續使用Metricbeat數據添加另外一個監控內存消耗的可視化,首先,使用如下表達式繪製system.memory.actual.used.bytes的最大值。

.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes')

timelion-conditional01.png

讓咱們建立兩個閾值來監視使用的內存數量,在本教程中,警告閾值爲12.5GB,嚴重閾值爲15GB,當使用內存的最大數量超過這些閾值中的任何一個時,將相應地對該系列進行着色。

若是你的計算機的閾值太高或太低,請相應地進行調整。

要配置這兩個閾值,可使用Timelion的條件邏輯,在本教程中,你將使用if()將每一個點與一個數字進行比較,若是條件的值爲true,則調整樣式,若是條件的值爲false,則使用默認樣式,Timelion提供瞭如下六個操做符值進行比較。

eq 相等
ne 不相等
lt 小於
lte 小於或等於
gt 大於
gte 大於或等於

因爲有兩個閾值,所以對它們進行不一樣的樣式是有意義的,使用gt操做符將警告閾值用.color('#FFCC11')塗成黃色,將嚴重閾值用.color('red')塗成紅色,在Timelion查詢欄中輸入如下表達式,以應用條件邏輯和閾值樣式:

.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,12500000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('warning').color('#FFCC11'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,15000000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('severe').color('red')

timelion-conditional02.png

有關Timelions條件功能的更多信息,請參閱I have but one .condition()的博客文章。

如今你已經定義了閾值來輕鬆地識別異常值,讓咱們建立一個新的系列來肯定真正的趨勢是什麼,Timelion的mvavg()函數容許計算給定窗口上的移動平均值,這對嘈雜的時間序列特別有用,對於本教程,你將使用.mvavg(10)來建立具備10個數據點窗口的移動平均線,使用如下表達式建立最大內存使用量的移動平均值:

.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,12500000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('warning').color('#FFCC11'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,15000000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('severe').color('red'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').mvavg(10)

timelion-conditional03.png

如今你已經有了閾值和移動平均值,讓咱們格式化可視化,以便更容易使用,和最後一部分同樣,使用.color().line().title().legend()函數相應地更新可視化:

.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').label('max memory').title('Memory consumption over time'), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,12500000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('warning').color('#FFCC11').lines(width=5), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').if(gt,15000000000,.es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes'),null).label('severe').color('red').lines(width=5), .es(index=metricbeat-*, timefield='@timestamp', metric='max:system.memory.actual.used.bytes').mvavg(10).label('mvavg').lines(width=2).color(#5E5E5E).legend(columns=4, position=nw)

timelion-conditional04.png

保存你的Timelion工做表並繼續到下一節,將這些新的可視化添加到你的儀表盤。

添加到儀表盤

你已經正式利用了Timelion的功能來建立時間序列可視化,本教程的最後一步是向儀表盤添加你新的可視化,下面,本節將向你展現如何從Timelion工做表中保存可視化,並將其添加到現有的儀表盤中。

要將Timelion可視化保存爲儀表盤面板,請執行如下步驟。

  1. 選擇要添加到一個(或多個)儀表盤上的可視化視圖。
  2. 點擊頂部菜單中的Save選項。
  3. 選擇Save current expression as Kibana dashboard panel
  4. 命名你的面板並點擊Save以做爲儀表盤可視化。

timelion-save01.png

如今你能夠將這個儀表盤面板添加到任何你想要的儀表盤上,這個可視化如今將在可視化列表中列出,繼續並按照你建立的其餘可視化效果的相同過程進行操做。

建立一個新的儀表盤或打開一個現有的儀表盤,以添加Timelion可視化,就像其餘任何可視化同樣。

timelion-save02.png

你還能夠從Visualize應用程序中建立時間序列可視化 - 只需選擇Timeseries可視化類型,並在expression字段中輸入一個Timelion表達式。

內聯幫助和文檔

不能記住一個函數或搜索一個新的函數?莫老是能夠在Timelion中引用內聯幫助和文檔。

Timelion表達式語言的文檔是內置的,單擊頂部菜單中的Docs能夠查看可用的函數並訪問內聯引用,當你開始在查詢欄中輸入函數時,Timelion會實時顯示相關參數。

timelion-arg-help.jpg


上一篇:Dashboard

相關文章
相關標籤/搜索