以前一直用ELK體系裏的Kibana作ES的WEB前端展現,kibana功能簡單,能夠直接顯示log的內容,很是人性化,缺陷是沒有權限、用戶管理(我以前用Nginx和haproxy其中之一來代替),圖形展現不夠豐富,管理api等限制,更因爲我須要更豐富的圖形展現功能,因此開始尋找他的替代品Grafana。html
Grafana簡紹:前端
Grafana是用於可視化大型測量數據的開源程序,他提供了強大和優雅的方式去建立、共享、瀏覽數據。dashboard中顯示了你不一樣metric數據源中的數據。git
Grafana最經常使用於因特網基礎設施和應用分析,但在其餘領域也有機會用到,好比:工業傳感器、家庭自動化、過程控制等等。github
Grafana有熱插拔控制面板和可擴展的數據源,目前已經支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。數據庫
這裏先簡單介紹下個人應用場景,ES用做時序數據庫,後端agent每分鐘讀取雲平臺的性能監控數據,經過Kafka存到ES裏。使用JSON數據存儲格式,ES天天1.8億條doc,由於數據包比較小,ES的後端
Primary Size天天30多G。api
數據存儲格式以下:跨域
Grafana展現的效果截圖:瀏覽器
具體實現:bash
1、添加elasticsearch數據源
默認Grafana是安裝了ES插件的,若是沒裝須要安裝相應data source插件。
點擊Data Sources-->+ Add data source--> Type-->elasticsearch
注:代理訪問(access proxy)意味着,Grafana的後端將代理從瀏覽器的全部請求,並將它們發送到數據源。這頗有用,由於它能夠消除CORS(跨域站點資源)的問題,以及消除到瀏覽器的傳播認證。
若是你選擇直接訪問(access direct)必須更新Elasticsearch配置容許從瀏覽器進行其餘域的訪問。能夠經過在elasticsearch.yml指定以下配置選項:
http.cors.enabled: true http.cors.allow-origin: "*"
2、Metric查詢編輯器
Elasticsearch查詢編輯器容許選擇多個指標和組由多個條款或過濾器。在右邊使用加號和減號圖標來添加/刪除索引或按子句分組。有些度量值和組子句都有選項,單擊選項文本以展開視圖並按選項編輯公制或組。
Query:Lucence查詢語法,跟kibana的查詢同樣,詳情請查閱ES的官方文檔。
Metric:計量的標準,能夠取最大、最小、平均值或者count條目數等,Options能夠進行腳本的計算,這裏我把value的值乘以8,來進行網絡Byte和bite的換算。
Group by:排序標準。能夠以時間軸進行排序,也能夠以自定義的term進行排序。須要這裏須要注意一點,ES裏若是須要以自定義的字符串term進行排序,會報錯:"Fielddata is disabled on text fields by default.";報錯信息以下圖所示:
解決辦法是用"keyword"進行排序,須要手動加入後綴'.keyword',參考文檔以下:https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html
Query裏也能夠用變量來代替,變量是在templating裏預先定義好的。後面再詳細介紹templating的概念。
3、Axes選項
這裏能夠進行X軸和Y軸的定義。
Unit設置單位的換算,grafana這裏自帶了多種單位換算,包括時間、吞吐、溫度等;
X-Axis裏"mode"的選擇,若是是要曲線圖能夠選擇"Time",若是是要畫柱狀圖能夠選擇"histogram"
4、Legend選項
這裏主要進行圖上顯示文字的設置。
若是不勾選「show」則不會在圖上顯示相關value的信息。
5、Display選項
這裏主要進行如何畫圖的一些設置。也能夠在圖上設置閥值,超出閥值會自動突出顯示。
Draw Mode:繪製模式,選擇線繪圖仍是柱狀圖繪圖,更改以後須要和Axes中X-Axis的modes聯調,才能正確繪圖。
Mode Option: ‘Fill’填充程序,若是設置爲0,則不填充,徹底是一條線的形式展現。如圖所示:
Stacking & Null value:這裏須要注意‘Null value’的選擇,選擇‘connected’,在空值的時候畫圖會自動把線進行先後銜接,若是設置爲零,會畫出駝峯的形狀。
Thresholds:閥值的設置:
6、Alert選項
報警設置,須要提早配置好報警郵箱,遺憾的一點Elasticsearch目前版本還不支持Alert的配置,我已經在grafana的github issue上給ES投了一票,建議有相似需求的同窗也積極參與進來。
7、Templating
Templating在dashboard manage裏設置:
"Edit"添加變量,變量建立完成會在dashboard頂部顯示,這裏一樣用的Lucene的查詢語法:
變量的使用,在Metric裏面用‘$’或者‘[[]]’進行變量的調用:
另外在General的Title裏面也能夠調用templating裏定義的變量,這樣圖的標題也會隨着變量的改變而改變。
最後強調一點,更改完全部配置以後不要忘記點擊保存按鈕進行保存。
更多詳細配置見文檔:http://docs.grafana.org/features/datasources/elasticsearch/#using-elasticsearch-in-grafana
Grafana官方文檔:http://docs.grafana.org/