隨着業務的愈加複雜,對軟件系統的要求愈來愈高,這意味着咱們須要隨時掌控系統的運行狀況。所以,對系統的實時監控以及可視化展現,就成了基礎架構的必須能力。mysql
Grafana是一款可視化工具,有着很是漂亮的圖表和佈局展現,功能齊全的度量儀表盤和圖形編輯器,大多使用在時序數據的監控方面,如同Kibana相似。sql
Grafana的UI更加靈活,有豐富的插件,功能強大。數據庫
官方地址:grafana.com/grafana後端
Grafana的套路基本上跟kibana差很少,都是根據查詢條件設置聚合規則,在合適的圖表上進行展現,多個圖表共同組建成一個dashboard,熟悉kibana的用戶應該能夠很是容易上手。瀏覽器
另外Grafana的可視化功能比kibana強得多,後面逐步會介紹到,並且4以上版本將集成報警功能。bash
Grafana 的主要特色架構
一、展現方式:快速靈活的客戶端圖表,面板插件有許多不一樣方式的可視化指標和日誌,官方庫中具備豐富的儀表盤插件,好比熱圖、折線圖、圖表等多種展現方式;併發
二、數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;app
三、通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算併發送通知,在數據達到閾值時經過Slack、PagerDuty等得到通知;elasticsearch
四、混合展現:在同一圖表中混合使用不一樣的數據源,能夠基於每一個查詢指定數據源,甚至自定義數據源;
五、註釋:使用來自不一樣數據源的豐富事件註釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記;
六、過濾器:Ad-hoc過濾器容許動態建立新的鍵/值過濾器,這些過濾器會自動應用於使用該數據源的全部查詢。
根據本身的系統版本和配置,下載對應的包,官方提供了以下說明,可直接按照說明進行下載,本文以操做系統RedHat & CentOS爲例,介紹下Grafana最新版本的安裝。
Start Grafana by running:
sudo service grafana-server start
sudo update-rc.d grafana-server defaults //設置開機啓動(可選)
複製代碼
systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
sudo systemctl enable grafana-server.service //設置開機啓動
複製代碼
啓動服務,打開瀏覽器,輸入IP+端口,3000爲Grafana 的默認偵聽端口。
系統默認用戶名和密碼爲admin/admin,第一次登錄系統會要求修改密碼,修改密碼後登錄,界面顯示以下:
默認狀況下,Grafana 的配置存儲於sqlite3中,若是你想使用其餘存儲後端,如mysql,postgresql等,請參考官方文檔配置::docs.grafana.org/installatio…
Grafana 的幾個基本構成和基本概念參考官方文檔: docs.grafana.org/guides/basi…
1.添加數據源 先要明確一點,Grafana 只是一個dashboard(4版本開始將引入報警功能),負責把數據庫中的數據進行可視化展現,自己並不存儲任何數據,
另外某些查詢和聚合使用的是數據庫自己提供的功能,須要對應的數據庫去支持。所以不表明你換了一個數據庫後端就必定能展現相同的圖形。
Grafana 目前支持的數據庫有: Graphite, Prometheus, Elasticsearch, InfluxDB, OpenTSDB, AWS Cloudwatch。將來可能會有更多的數據庫的支持加入,請關注更新。
也可使用第三方插件引入支持。
這裏使用Elasticsearch做爲數據庫的來源。首先進入數據源的設置頁面,點擊左上角的圖標,選擇Data Sources-Add data source:
進入數據源的設置,例如咱們要從logstash-YYYY.MM.DD這些index中讀取數據,就像kibana默認的index那樣配置便可:
數據源配置好以後,就能夠開始可視化的第一步了。這一步相對較爲簡單,只要熟悉ES的查詢語法就能夠輕鬆寫出來。
想建立圖表,首先得有dashboard,new一個dashboard出來,而後後添加Panel。
簡單解釋一下這些配置:
query: 對應的就是kibana上面的查詢條件,先把想要展現的數據所有select出來,而後進行聚合或篩選,Alias是給這個查詢起個別名,可用於圖例說明
metric: 這個就是關鍵的指標量的,到底展現的是什麼東西。這裏展現的是GROUP BY以後對value求平均值
Group by: 對應elasticsearch的bucket,按照type_instance分桶
整個查詢下來大體至關於SQL中的
SELECT avg(val) WHERE query_string('ac:$applicationName AND sn:$serviceName') GROUP BY sn GROUP BY Date_Histogram(tb)
複製代碼
注:其中$applicationName
[應用名稱]和$serviceName
[服務名稱]使用的是模版變量功能。
最關鍵的地方在Query這個配置,這裏就是定義怎麼獲取到$serviceName這個變量的全部可選值,每一個數據庫的語法不同,
好比Elasticsearch的Template語法在這裏:docs.grafana.org/datasources… ,若是你使用的是其餘數據源,那麼查詢對應數據源的模板語法便可。
以上即爲Grafana的安裝及使用簡介,更多使用方式,請參考這裏:docs.grafana.org/guides/gett…