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