早期的時候,項目基於ES+echart寫了一些儀表盤的展示頁面,雖然ES配合這種char界面有着天然的優勢,但實際寫起代碼來,還是很多重復的勞動,在一次偶然中發現Grafana,看到它提供了很多儀表盤式的圖型,功能很強大,於是下載下來試了下效果不錯。因為全部都是鼠標操作,都不用寫代碼,真正智能套件。
如題,應用Grafana之前,你需要對es聚合查詢知識有一定了解
先看效果
因為網上這種圖比較多,這里就不細看了,目前Grafana如何使用的文章不多,下面是我總結的一些經驗,其中有一部份是從官網查到的資源,先把官網地址貼下,至於如何使用,大家可以參考下官網,官網文檔對於初學者比較難懂,而我寫這篇文章的目的是對於初次使用grafana的同學有個比較底的學習門檻。
1,下載安裝
這塊省略,自行,對於windows版本和linux版本,我都下載試了下,效果完全一樣,使用方式也一樣。
2,配置數據源
先上ES索引,這個索引主要存儲各應用請求的訪問量
這個是我測試環境ES的索引名稱,一般情況索引都是以日期結尾,這點將在grafana建數據源的時候用到,好了,開始操作建數據源
然后再點擊 add datasourch,出現這個界面
上圖中index name里的值是:[hlog-crm3-hig-c-req-elapsed-time-]YYYY.MM.DD
這個是elasticearch-head插件下索引里一條數據,展示這個是為了填Elasticsearch details中對於Time field name字段的理解
保存成功后數據源就建好了
3,建圖表
建這個表的步驟
把標記的三個點都操作完后,效果就出來了,這個就是按ES的聚合操作來的,這是最簡單的求和,意思是在這個時間段內將所有的請求數求和,展示出來的數據表示今天內所有的請求數,注意一點,這個結果值都是按這個聚合時間來算的。
因為是測試數據,所以,數據量比較少。
這個查詢的結果就是,根據sGrp字段分組,查出這個分組下的數據訪問量,而這個分組存的主要是各系統的標識,所以,整個翻譯過來就是,各系統請求訪問量實時監控圖。
如果想x軸想展示出group的名稱,則可以這樣選擇
這樣,x軸就從時間變成了各系統名稱了
如果我只想展示一種,該如何辦了,這個時候就需要用到這個工具的另一個操作了
目前對於這個query的操作我只發現這樣有用,官網上對這個做了詳細說明,至於官網上那種用法,讀者如有更詳細的用法,可以留言給我
這是官網文檔地址:
http://docs.grafana.org/features/datasources/elasticsearch/
還有一個就是耗時分布圖了,這個圖的功能很強大,以前我想到過這樣一種工具來展示,無奈echart對這個支持實現起來比較麻煩,但在這里真的點點就可以了
首先,我得拿出我出的es里的數據來解釋下
span是指這個請求的耗時,那么我將要實現一個根據每個請求的耗時來展示出耗時的區間分布
首先是添加一個heatmap
選擇數據源后這樣操作
選擇平均值,然后再選擇字段,注意,這個時間Y軸的值是個數,而我們需要的是時間(毫秒),所以還得更改下Y軸的值
至於顏色設置什么的,不是重點,讀者可以自己選擇。
這樣一來就可以展示出各請求耗時段時間分布了,至於,如何區分出一個系統的,還是不同時間段的都跟前面的圖表操作一致
后面還有個餅圖的,這里就不再展示,注意,餅圖這個是官方提供的插件,要去官網上下載,操作起來也是很簡單的。
總結
本文的目的就為了簡化Grafana的入門學習成本,本人因為對es圖表有過開發,學習這個軟件時理解起來相對容易點,但在剛開始接觸的時候,還是發現文檔較少,而且大部份文檔都只做出了個效果圖,並沒有實際操作的過程和解釋,學習起來難免有點成本。
當然,Grafana也有一些局限,對於單索引操作比較容易,對於多個索引的過濾暫時是不支持的,不過也能理解,ES本身對於多索引也支持不夠,還有就是如果是特別復雜的聚合計算,grafana還是做不了的,它本身不支持原生的es查詢語法,也就不能對一些多層次的聚合查詢做展示,當然這一點也不影響它,因為對於es來說,單個索引的聚合查詢才是它的優勢,而且沒有比它更加優秀的功能更強大的展示圖表功能了。