1.概述--美觀、強大的可視化監控指標展現工具
grafana 是一款採用 go 語言編寫的開源應用,主要用於大規模指標數據的可視化展示,是網絡架構和應用分析中最流行的時序數據展現工具,目前已經支持絕大部分經常使用的時序數據庫。最好的參考資料就是官網(http://docs.grafana.org/),雖然是英文,可是看多了就會啦。html
1.1基本概念
Grafana支持許多不一樣的數據源。每一個數據源都有一個特定的查詢編輯器,該編輯器定製的特性和功能是公開的特定數據來源。 官方支持如下數據源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。正則表達式
每一個數據源的查詢語言和能力都是不一樣的。你能夠把來自多個數據源的數據組合到一個儀表板,但每個面板被綁定到一個特定的數據源,它就屬於一個特定的組織。sql
支持的數據源數據庫
DashBoard:儀表盤,就像汽車儀表盤同樣能夠展現不少信息,包括車速,水箱溫度等。Grafana的DashBoard就是以各類圖形的方式來展現從Datasource拿到的數據。後端
Row:行,DashBoard的基本組成單元,一個DashBoard能夠包含不少個row。一個row能夠展現一種信息或者多種信息的組合,好比系統內存使用率,CPU五分鐘及十分鐘平均負載等。因此在一個DashBoard上能夠集中展現不少內容。瀏覽器
Panel:面板,實際上就是row展現信息的方式,支持表格(table),列表(alert list),熱圖(Heatmap)等多種方式,具體能夠去官網上查閱。服務器
Query Editor:查詢編輯器,用來指定獲取哪一部分數據。相似於sql查詢語句,好比你要在某個row裏面展現test這張表的數據,那麼Query Editor裏面就能夠寫成select *from test。這只是一種比方,實際上每一個DataSource獲取數據的方式都不同,因此寫法也不同(http://docs.grafana.org/features/datasources/),好比像zabbix,數據是以指定某個監控項的方式來獲取的。網絡
Organization:組織,org是一個很大的概念,每一個用戶能夠擁有多個org,grafana有一個默認的main org。用戶登陸後能夠在不一樣的org之間切換,前提是該用戶擁有多個org。不一樣的org之間徹底不同,包括datasource,dashboard等都不同。建立一個org就至關於開了一個全新的視圖,全部的datasource,dashboard等都要再從新開始建立。架構
User:用戶,這個概念應該很簡單,不用多說。Grafana裏面用戶有三種角色admin,editor,viewer。admin權限最高,能夠執行任何操做,包括建立用戶,新增Datasource,建立DashBoard。editor角色不能夠建立用戶,不能夠新增Datasource,能夠建立DashBoard。viewer角色僅能夠查看DashBoard。在2.1版本及以後新增了一種角色read only editor(只讀編輯模式),這種模式容許用戶修改DashBoard,可是不容許保存。每一個user能夠擁有多個organization。編輯器
dashboard界面最上面一行解釋
界面頂部標題標註
上圖顯示了信息中心的頂部標題。
1側面菜單切換:切換側邊菜單,容許您專一於儀表盤中顯示的數據。側面菜單提供對與儀表盤無關的功能(如用戶,組織和數據源)的訪問。
2信息中心下拉菜單:此下拉菜單顯示您當前正在查看的信息中心,並容許您輕鬆切換到新的信息中心。從這裏,您還能夠建立新的信息中心,導入現有的信息中心和管理信息中心播放列表。
3星型儀表盤:對當前儀表盤執行星號(或取消星標)。加星標的信息中心在默認狀況下會顯示在您本身的主頁信息中心上,而且是標記您感興趣的信息中心的便捷方式。
4共享儀表盤:經過建立連接或建立其靜態快照來共享當前儀表盤。在共享前確保信息中心已保存。
5保存儀表盤:當前儀表盤將與當前儀表盤名稱一塊兒保存。
6設置:管理儀表盤設置和功能,如模板和註釋。
2.全面瓦解
對於grafana的部署,網上一搜一大把,這裏不做累贅,可參考(grafana官網安裝說明、grafana酷炫圖表),繼續如下內容。
2.1登陸grafana
要運行Grafana,請打開瀏覽器並轉到http://localhost:3000/,若是你還沒有配置不一樣的端口,則3000是Grafana監聽的默認http端口。默認用戶名爲admin,默認密碼爲admin。當你第一次登陸時,系統會要求你更改密碼,咱們強烈建議你遵循Grafana的最佳作法並更改默認管理員密碼,你能夠稍後轉到用戶首選項並更改你的用戶名。
登陸界面,可看到版本號
2.2數據源配置
按照前面的數據源,這裏講解幾個咱們常使用的數據源的配置,包括es、opentsdb、influxdb和zabbix,也能夠新增其餘的數據源。
經常使用數據源示例
opentsdb數據源配置示例
其中關於Access這裏具體解釋下:Server (default) = 須要從Grafana後端/服務器訪問,Browser = 須要從瀏覽器訪問,對應上面的url。
es數據源配置示例
influxdb數據源配置示例
2.3儀表盤配置
在配置好所使用的數據源以後,便可新增配置本身的面板。面板也存在多種:
儀表盤
這裏選取graph爲例,以下圖所示,新增或配置儀表盤。右上角的紅框中表示:新建、標星、分享、保存、設置、查詢模式、時間段、縮小(針對時間段進行放寬,即小時間段換成了大時間段)、刷新等
新增儀表盤或編輯已有儀表盤
Graph裏面的選項有:General(常規選擇)、Metrics(指標)、Axes(座標軸)、Legend(圖例)、 Display(顯示樣式)、Alert(告警)、Time range(時間範圍)
(1)General(常規選擇:http://docs.grafana.org/features/panels/graph/)
常規選擇
General容許定製面板的外觀和菜單選項。
General Options
Title:儀表盤上的面板標題
Description:儀表盤描述信息
Transparent :是否透明,選擇以後會把該圖的背景去掉,即透明狀態
Repeat panel:是否重複panel,填寫是重複的變量(參考後文3.2變量配置),即這個標題名中添加對應的變量,引用該變量需添加$,圖標題便可隨着自選的變量而變化。
鑽取/詳細信息連接
Drilldown / detail link(爲當前panel增長超連接)
Drilldown項容許在面板添加動態連接,能夠連接到其餘的dashboards或urls。
每一個連接都有一個title,一個type和params。連接能夠是dashboard,或是絕對連接。若是是dashboard連接,則dashboard值必須是儀表盤的名稱。若是它是一個絕對連接,URL就是連接的URL。
params容許添加額外的URL參數的連接。格式是name=value,多種參數用&分隔。模板變量能夠做爲使用$ myVar做爲值。
當鏈接到另外一個Dashboard使用的模板變量,你可使用var-myVar =value 填充模板變量所需的值從連接。
(2)Metrics(指標)
metrics頁簽訂義要呈現的系列數據和源。每一個數據源提供不一樣的選擇(參考官網)。這裏以opentsdb數據源爲例:
指標
Data Source:數據源,在前面配置好數據源以後,在這裏直接選擇對應的數據源
查詢A、B:能夠根據狀況進行新增或刪除
metric:指標名,輸入部分指標名,會自動查詢匹配,能夠快速進行選擇
Aggregator:聚合條件,區分下第一行和第二行的aggregator,第一個是對指標值的聚合,第二個是對採樣週期裏的聚合
Alias:別名,根據須要進行自定義
Down sample:採樣週期,即每隔多少週期採集一次數據並展示出來,詳情可見3.1特殊配置之interval
Filters:過濾條件,能夠添加多個,group by是否分組進行展現,其中參數type部分經常使用選擇項的解釋:literal_or, ilteral_or, wildcard,regexp等能夠當作是一個具備返回值的函數
literal_or:返回一個或多個值,示例:hostname=literal_or(data-3|data-4|data-160),至關於數據庫中的WHERE hostname IN ('data-3','data-4','data-160')
ilteral_or:做用於literal_or相似,區別是literal_or大小寫敏感,ilteral_or不區分大小寫
not_literal_or:做用於literal_or相反,大小寫敏感
not_iliteral_or:做用於not_literal_or相似,不區分大小寫
wildcard:能夠在一個字符串加一個*前綴、後綴、中綴(字符串中間添加修飾符號)或者多箇中綴,*能夠表明任意的字符,示例:hostname=wildcard(data*),表示表明任何以data開頭的主機名,至關於數據庫中的WHERE hostname='data%'
regexp:正則表達式 功能很是強大,能夠編寫很是靈活的過濾規則,示例:regexp(data\-[0-9]),表示data-1到data-9之間的全部主機,須要注意的是特殊字符須要轉義,如-,轉義符爲\
Tags:標籤,對應的就是填寫對應的指標和具體的值(注意和filters中的區別,這裏只能填寫具體的值,而不是寫一類值)
(3)Axes(座標軸)
座標軸
Left Y和Right Y能夠自定義,便可以設置多重座標軸,方便對比查看
Show:是否顯示,能夠經過從顯示軸中取消適當的框來隱藏軸。
Unit:y軸的顯示單元
Scale:Y軸的間隔度。選擇「log base 2」以double的速度遞增,(0、一、二、四、8...),選擇「log base 32」,就是(0、一、32...)
Y-Min:Y軸的最小值(默認atuo)
Y-Max:Y軸的最大值(默認atuo)
Lable:Y軸的文本標籤
(4)Legend(圖例)
圖例
經過選擇顯示覆選框隱藏圖例。若是它被顯示,它能夠經過檢查表複選框顯示爲一個值表。沒有值的系列可使用隱藏空複選框,從而在圖例中隱藏。
options:
show:是否顯示圖例
as table:做爲表格樣式顯示
to the right:顯示在右邊
values:
在圖例中,顯示每一個series的max\min\avg\total\current,能設置小數點位數。在圖上顯示,
經過點擊列標題(若是保存的話,這個選項將會被持久化)來排序,經過min/max/avg來排序。
點擊圖例「」,也可單純顯示某個series。
(5)Display(顯示樣式)
顯示樣式
一、Draw option
Draw Modes:Bars(柱狀圖)、lines(折線圖)、Points(點)
Mode Options:Fill(充滿區域透明度),Line Width(線寬度),Staircase(是否階梯),Point Radius(點的半徑,以此控制點的大小)
Hover tooltip
Mode:All series(鼠標移到點上顯示全部圖例的值),single(鼠標移到點上顯示該series圖例的值)
Sort order:None(按圖例排列順序顯示),increaseing(值的從小到大遞增),Decreasing(值從大到小遞減)
Stacking&Null value :stack(多series是否堆疊顯示),percent(百分比),Null value:空值怎麼顯示(connected:null值被忽略,直線直接跳轉到下一個值,null:空值被保留爲空,這將在圖中留下空白區域,null as zero:空值被繪製爲零值)
二、series overrieds:多座標軸重寫,便可以在這裏設置y軸正負軸或z軸的正負軸,須要選擇對應的指標,並且因指標、指標別名的變化需從新設置,設置完成後對比效果更好
alias or regex:series圖例名稱
Y-axis:顯示在Y軸左右哪邊,
z-index(多series顯示先後位置),
stack:堆疊,可選擇,metric中A\B\C\D哪一個。
transform(negative-Y:將值顯示爲負數)
fill below to:(將二者值充滿顏色 ,由上往下從大值到小值,因此不能夠寫成min fill below tu max寫法如圖:)
填充
三、Thresholds:能夠寫多條臨界值在界面上顯示,大於400,和大於600兩個。如設置了alert,就不能設置這個。
臨界值
四、Time regions:時間區域容許你突出特定的時間區域圖的,更容易看到例如週末營業時間和/或工做時間。
(6)Alert(告警)
告警
Alert Config
Name & Evaluation interval:在這裏能夠指定警報規則的名稱,以及調度器應該多長時間對警報規則進行評估。
Conditions:目前惟一存在的條件類型是一個查詢條件,容許您指定查詢字母(metric裏查詢語句的字母,表明哪一個查詢語句)、時間範圍和聚合函數。
Notifications
在警告選項卡中,還能夠指定警報規則通知,以及關於警報規則的詳細信息。這個消息能夠包含任何信息,關於如何解決這個問題的信息,連接到runbook等。實際的通知被配置並在多個警報之間共享。
State History
警惕狀態的變化都被記錄在內部註釋Grafana的數據庫表。狀態更改可視爲警報規則的圖形面板中的註釋。
(7)Time range(時間範圍:https://www.cnblogs.com/michellexiaoqi/p/7274890.html)
時間範圍
您能夠覆蓋單個面板的相對時間範圍,使它們與右上方的儀表盤時間選擇器中選擇的時間不一樣。這容許metrics在不一樣的時間段顯示或同個時間。在面板編輯器模式的Time Range重寫時間設置。
Override relative time:覆蓋相對時間,該graph在屏幕上的顯示時間段(time range)
Add time shift:添加時移,將如今時間減去時間,如20m,那屏幕的顯示最新的時間段結束 爲now-20m
Hide time override info:隱藏時間覆蓋信息,即右上角的時間,當縮放或更改 Dashboard time到自定義絕對時間範圍時,全部面板重寫將被禁用。當儀表盤時間相對時,面板相對時間覆蓋只處於活動狀態。面板時間重寫老是活躍的,即便當儀表盤的時間是絕對的。
Hide time override info選項容許您隱藏在覆蓋時間範圍選項時顯示在面板右上方的覆蓋信息文本。
注意:您只能在相對時間範圍內覆蓋儀表盤時間。絕對時間範圍不可用。
3.特殊配置
3.1變量之interval
這裏的變量類型選擇的是interval,能夠設置隱藏狀態,主要是控制查詢時的採樣週期,添加自動Auto後,在展現界面會根據選擇的時間段自動選擇對應的採樣週期,這樣設置的好處是減輕查詢數據庫的壓力,同時展現界面的粒度會適配。變量配置完畢後,在儀表盤Metrics中對應位置配置$interval便可。
interval配置
interval變量展現
3.2變量之query
變量
Variable
name: 變量名,好比我這裏取名爲ip,到時候要使用這個變量名就用$ip來調用。
type: 變量類型,變量類型有多種,其中query表示這個變量是一個查詢語句,type也能夠是datasource,datasource就表示該變量表明一個數據源,若是是datasource你能夠用該變量修改整個DashBoard的數據源,變量類型還能夠是時間間隔Interval等等。這裏咱們選擇query。
label: 是對應下拉框的名稱,默認就是變量名,選擇默認便可。
hide: 有三個值,分別爲空,label,variable。選擇label,表示不顯示下拉框的名字。選擇variable表示隱藏該變量,該變量不會在DashBoard上方顯示出來。默認選擇爲空,這裏也選默認。
Query options
Data source: 數據源,不用多說。
Refresh: 什麼時候去更新變量的值,變量的值是經過查詢數據源獲取到的,可是數據源自己也會發生變化,因此要時不時的去更新變量的值,這樣數據源的改變纔會在變量對應的下拉框中顯示出來。Refresh有三個值能夠選擇,Never:永不更新。On Dashboard Load:在DashBoard加載時更新。On Time Range Change:在時間範圍變化時更新。此處,選擇On Dashboard Load,當數據源發生更新是,刷新一下當前DashBoard,變量的值也會跟着發生更新。
Query:查詢表達式,不一樣的數據源查詢表達式都不一樣(這些能夠到官網上查詢:http://docs.grafana.org/features/datasources/)。
Regex:正則表達式,用來對抓取到的數據進行過濾,這裏默認不過濾。
Sort:排序,對下拉框中的變量值作排序,排序的方式挺多的,默認是disable,表示查詢結果是怎樣下拉框就怎樣顯示。此處選disable。
Selection Options
Multi-value:啓用這個功能,變量的值就能夠選擇多個,具體表如今變量對應的下拉框中能夠選多個值的組合。
Include All option:啓用這個功能,變量下拉框中就多了一個all選項。
Custom all value:啓用Include All option這個功能,纔會出現Custom all value這個輸入框,表示給all這個選項自定義一個值,all這個選項默認是全部值的組合,你也能夠自定義,好比我自定義all爲cpu五分鐘平均負載,則選擇all就表明cpu五分鐘平均負載。
雖然選擇組合值能夠在一個panel裏面查看多種監控數據,可是因爲不一樣監控數據的數值大小格式均可能不同,在一個圖形裏面格式很難兼容,這樣就會出現問題,因此此處建議默認都不選。
Value groups/tags
組合標籤,能夠選擇多個值組合在一塊兒設置一個標籤,這個功能還沒弄明白,按照官網上的操做沒效果,暫且忽略吧,反正沒多大影響。
Preview of values (shows max 20)
前面都設置好以後,下方會顯示前二十。
點擊add,group這個variables就建立好了。在儀表盤中配置時須要在變量的名字以前添加$標誌。
注意:能夠配置多個變量,且變量之間能夠複用,即選定第一個變量以後,第二個變量可使用擇的第一個變量值再配置,以此類推
多變量示例
多變量展現效果
下面是具體的一個influxdb數據源的具體變量的配置及展現效果。
inflxdb數據源之變量query
最終的展現效果
4.儀表盤導出導入
儀表盤導入導出功能方便不一樣grafana之間儀表盤的複用。也能夠在grafana官網下載現有的模板使用,少量更改便可展現本身的數據。
導出
導