Grafana與Elasticsearch

  以前一直用ELK體系裏的Kibana作ES的WEB前端展現,kibana功能簡單,能夠直接顯示log的內容,很是人性化,缺陷是沒有權限、用戶管理(我以前用Nginx和haproxy其中之一來代替),圖形展現不夠豐富,管理api等限制,更因爲我須要更豐富的圖形展現功能,因此開始尋找他的替代品Grafana。html

  Grafana簡紹:前端

  1. Grafana是用於可視化大型測量數據的開源程序,他提供了強大和優雅的方式去建立、共享、瀏覽數據。dashboard中顯示了你不一樣metric數據源中的數據。git

  2. Grafana最經常使用於因特網基礎設施和應用分析,但在其餘領域也有機會用到,好比:工業傳感器、家庭自動化、過程控制等等。github

  3. Grafana有熱插拔控制面板和可擴展的數據源,目前已經支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。數據庫

  這裏先簡單介紹下個人應用場景,ES用做時序數據庫,後端agent每分鐘讀取雲平臺的性能監控數據,經過Kafka存到ES裏。使用JSON數據存儲格式,ES天天1.8億條doc,由於數據包比較小,ES的後端

Primary Size天天30多G。api

數據存儲格式以下:跨域

wKioL1lI7QHRGURTAAFeXK7R0Kc583.png-wh_50

Grafana展現的效果截圖:瀏覽器

wKioL1lI72XDvd9kAAKdXzhlS6k521.png-wh_50

wKioL1lI79PjfhKCAAHx_yRgW90211.png-wh_50

具體實現:bash

1、添加elasticsearch數據源

  默認Grafana是安裝了ES插件的,若是沒裝須要安裝相應data source插件。

點擊Data Sources-->+ Add data source--> Type-->elasticsearch

wKiom1lJxwLCt80aAAD9pVW9rSo861.png-wh_50

:代理訪問(access proxy)意味着,Grafana的後端將代理從瀏覽器的全部請求,並將它們發送到數據源。這頗有用,由於它能夠消除CORS(跨域站點資源)的問題,以及消除到瀏覽器的傳播認證。

若是你選擇直接訪問(access direct)必須更新Elasticsearch配置容許從瀏覽器進行其餘域的訪問。能夠經過在elasticsearch.yml指定以下配置選項:

http.cors.enabled: true
http.cors.allow-origin: "*"

2、Metric查詢編輯器

  Elasticsearch查詢編輯器容許選擇多個指標和組由多個條款或過濾器。在右邊使用加號和減號圖標來添加/刪除索引或按子句分組。有些度量值和組子句都有選項,單擊選項文本以展開視圖並按選項編輯公制或組。

wKioL1lJ44rgQuYJAAEmKSj43Pg564.png-wh_50

  1. Query:Lucence查詢語法,跟kibana的查詢同樣,詳情請查閱ES的官方文檔

  2. Metric:計量的標準,能夠取最大、最小、平均值或者count條目數等,Options能夠進行腳本的計算,這裏我把value的值乘以8,來進行網絡Byte和bite的換算。

  3. Group by:排序標準。能夠以時間軸進行排序,也能夠以自定義的term進行排序。須要這裏須要注意一點,ES裏若是須要以自定義的字符串term進行排序,會報錯:"Fielddata is disabled on text fields by default.";報錯信息以下圖所示:wKioL1lJ0VSCZ5juAAGxW6JubI0429.png-wh_50

    解決辦法是用"keyword"進行排序,須要手動加入後綴'.keyword',參考文檔以下:https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html

  4. Query裏也能夠用變量來代替,變量是在templating裏預先定義好的。後面再詳細介紹templating的概念。

3、Axes選項

    這裏能夠進行X軸和Y軸的定義。

wKioL1lJ0rvDDEahAACivA6w7i8843.png-wh_50

  1. Unit設置單位的換算,grafana這裏自帶了多種單位換算,包括時間、吞吐、溫度等;

  2. X-Axis裏"mode"的選擇,若是是要曲線圖能夠選擇"Time",若是是要畫柱狀圖能夠選擇"histogram"

4、Legend選項

    這裏主要進行圖上顯示文字的設置。

wKioL1lJ1D_zhF5mAACYNs8u-XY750.png-wh_50

若是不勾選「show」則不會在圖上顯示相關value的信息。

5、Display選項

    這裏主要進行如何畫圖的一些設置。也能夠在圖上設置閥值,超出閥值會自動突出顯示。

  1. Draw Mode:繪製模式,選擇線繪圖仍是柱狀圖繪圖,更改以後須要和Axes中X-Axis的modes聯調,才能正確繪圖。

    Mode Option: ‘Fill’填充程序,若是設置爲0,則不填充,徹底是一條線的形式展現。如圖所示:

    wKiom1lJ1iTRzl3LAAIUcP4GY04754.png-wh_50

    ‘Staircase’若是勾選則以階梯的形式畫圖,如圖示:wKiom1lJ1n6xEG9gAADNyBj1uXc934.png-wh_50

  2. Stacking & Null value:這裏須要注意‘Null value’的選擇,選擇‘connected’,在空值的時候畫圖會自動把線進行先後銜接,若是設置爲零,會畫出駝峯的形狀。

  3. Thresholds:閥值的設置:

    wKiom1lJ17-iClJxAACdlau_qJA281.png-wh_50

   效果圖以下:

   wKioL1lJ1_iBjazIAAIL65_EXmY331.png-wh_50

6、Alert選項

    報警設置,須要提早配置好報警郵箱,遺憾的一點Elasticsearch目前版本還不支持Alert的配置,我已經在grafana的github issue上給ES投了一票,建議有相似需求的同窗也積極參與進來。

7、Templating

Templating在dashboard manage裏設置:

wKiom1lJ2g_gfKjHAACFraUphYc334.png-wh_50

wKiom1lJ2nSxeAGbAAFObDd9eTM345.png-wh_50

"Edit"添加變量,變量建立完成會在dashboard頂部顯示,這裏一樣用的Lucene的查詢語法:

wKioL1lJ2sPAjziNAAGTFm7jGfQ734.png-wh_50

變量的使用,在Metric裏面用‘$’或者‘[[]]’進行變量的調用:

wKioL1lJ2zXjTBYQAADTmcpxz8U393.png-wh_50

另外在General的Title裏面也能夠調用templating裏定義的變量,這樣圖的標題也會隨着變量的改變而改變。

  最後強調一點,更改完全部配置以後不要忘記點擊保存按鈕進行保存。

更多詳細配置見文檔:http://docs.grafana.org/features/datasources/elasticsearch/#using-elasticsearch-in-grafana

Grafana官方文檔:http://docs.grafana.org/

相關文章
相關標籤/搜索