掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
特點:

可視化。Grafana 擁有快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標(biāo)和日志,官方庫中具有豐富的儀表盤插件,比如熱圖、折線圖、圖表等多種展示方式,讓我們復(fù)雜的數(shù)據(jù)展示的美觀而優(yōu)雅。
報警和通知??梢暬貫樽钪匾闹笜?biāo)定義警報規(guī)則。Grafana 將持續(xù)評估它們,并發(fā)送通知。
動態(tài)儀表盤:使用模板變量創(chuàng)建動態(tài)和可重用的儀表板,這些模板變量作為下拉菜單出現(xiàn)在儀表板頂部。
混合數(shù)據(jù)源:在同一個圖中混合不同的數(shù)據(jù)源!可以根據(jù)每個查詢指定數(shù)據(jù)源。這甚至適用于自定義數(shù)據(jù)源。
注釋:注釋來自不同數(shù)據(jù)源圖表。將鼠標(biāo)懸停在事件上可以顯示完整的事件元數(shù)據(jù)和標(biāo)記。
過濾器:Grafana 使用 Ad-hoc 過濾器允許動態(tài)創(chuàng)建新的鍵/值過濾器,這些過濾器會自動應(yīng)用于使用該數(shù)據(jù)源的所有查詢。
Mac 下需要首先安裝 brew 這個包管理工具,再安裝 Grafana 就方便多了:
brew update
brew install grafana
啟停命令。通過下面命令可以后臺啟動/停止 Grafana,默認(rèn)端口 3000。
// start
brew services start grafana
// stop
brew services stop grafana
查看 Grafana 版本:
grafana-server -v
瀏覽器登錄:http://127.0.0.1:3000/。
默認(rèn)的用戶名和密碼是:admin/admin。
mac 環(huán)境如下:
curl -O https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.6.darwin-amd64.tar.gz
tar -zxvf grafana-enterprise-8.4.6.darwin-amd64.tar.gz
Organization(組織) 是一個很大的概念,每個用戶可以擁有多個 Organization,Grafana 有一個默認(rèn)的組織。用戶登錄后可以在不同的 Organization 之間切換,前提是該用戶擁有多個 Organization。不同的 Organization 之間完全不一樣,包括 datasource,dashboard 等都不一樣。創(chuàng)建一個 Organization 就相當(dāng)于開了一個全新的視圖,所有的 datasource,dashboard 等都要再重新開始創(chuàng)建。
User(用戶),這個概念應(yīng)該很簡單,不用多說。Grafana 里面用戶有三種角色 admin,editor,viewer。在2.1版本及之后新增了一種角色read only editor(只讀編輯模式),這種模式允許用戶修改 DashBoard,但是不允許保存。每個 user 可以擁有多個 Organization。
前文說過,Grafana 支持多種數(shù)據(jù)源。
可以執(zhí)行多種簡單或復(fù)雜 Elasticsearch 查詢,以可視化存儲在 Elasticsearch 中的日志。
右側(cè)設(shè)置 -- 數(shù)據(jù)源 -- Add data source -- ElasticSearch。
其中 Index name 是為時間字段指定默認(rèn)值,并指定 Elasticsearch 索引的名稱。您可以使用索引名稱或通配符的時間模式。
這里對 Access 進(jìn)行解釋一下,它設(shè)置了如何處理對數(shù)據(jù)源的請求。如果沒有其他說明,服務(wù)器應(yīng)該是首選的方式。
所有請求都將從瀏覽器發(fā)出到 Grafana 后端/服務(wù)器,后者再將請求轉(zhuǎn)發(fā)到數(shù)據(jù)源,從而避免可能的跨源資源共享(CORS)要求。如果選擇此訪問方式,則需要可以從 Grafana 后端/服務(wù)器訪問該 URL。
所有請求都將從瀏覽器直接向數(shù)據(jù)源發(fā)出,并且可能要遵守跨域資源共享(CORS)的要求。如果選擇此訪問方式,則需要可以從瀏覽器訪問URL。
如果選擇瀏覽器訪問,則必須更新您的 Elasticsearch 配置,以允許其他域從瀏覽器訪問 Elasticsearch。您可以通過在 elasticsearch.yml 配置文件中為選項指定這些來實現(xiàn)。
這個版本會在未來的版本中廢除,假如選中這個模式會有如下提示:
Browser access mode in the Elasticsearch datasource is deprecated and will be removed in a future release.
http.cors.enabled: true
http.cors.allow-origin: "*"
我們接下來介紹一下 Grafana 中的重要 UI 界面——儀表盤。
指標(biāo)查詢編輯器。ElasticSearch 的 Metric Query editor 支持選擇多種指標(biāo)(Metrics)和分組(Group By)。可以通過添加或者刪除的圖標(biāo)進(jìn)行。
使用 lucene 查詢語句。lucene 語法可以參看傳送門[1],語法中也可以使用變量。
我大概梳理了一下,常見的語法有以下:
Metrics。指標(biāo)配置,每種數(shù)據(jù)源提供不同的選項,我這里用的是Elasticsearch。
根據(jù)自己的需求選擇,比如 Unique Count(根據(jù)某個字段去重,計算 UV 的時候)。比如我們需要計算百分位,就選擇 Percentiles。
集成了 ElasticSearch 中很多聚合的方法,比如 Min/Max/Count 等。
聚合分組方式,每個指標(biāo)屬性不同。
Date Histogram,根據(jù)時間聚合。
Terms 根據(jù)某個字段進(jìn)行聚合,一般用于生成表格。
可以通過 Expression 計算出相應(yīng)的結(jié)果。
較低版本不支持 Expression。可以通過 Transform 進(jìn)行處理。在傳遞查詢的結(jié)果集以進(jìn)行可視化之前,對結(jié)果進(jìn)行一層轉(zhuǎn)換。可以支持命名過濾字段、跨查詢進(jìn)行計算等等。
可以用固定值,也可以使用分組變量:
在指標(biāo)查詢除了硬編碼的方式,Grafana 支持變量注入的方式。變量顯示為儀表板頂部的下拉選擇框。這些下拉框可以方便地更改儀表板中顯示的數(shù)據(jù)。
在 Dashboard 的設(shè)置中,我們找到 Variables 的設(shè)置,點擊 New,進(jìn)入設(shè)置頁面,其中 Type 類型包含多種,我們常見的就是 Query??梢酝ㄟ^ JSON 字符串來自定義,它的語法如下:
默認(rèn)大小限制為 500。你可以通過 size 進(jìn)行設(shè)置。
你可以在 Query 中使用其他變量,當(dāng)其他變量變化時,查詢的結(jié)果也會隨之變化。
{"find": "terms", "field": "@hostname", "query": "@source:$source"}adhoc Filter 是提供給用戶可以自定義條件。官網(wǎng)提供的 demo[2]
變量是值的占位符。您可以在指標(biāo)查詢和面板標(biāo)題中使用變量。因此,當(dāng)您使用儀表板頂部的下拉菜單更改值時,面板的指標(biāo)查詢將更改以反映新值。
可以使用以下兩種語法:
以上是官網(wǎng)的使用,個人發(fā)現(xiàn),類似 ES 中模板字符串的寫法也是可以的。
name: ${name} AND env: test AND NOT a: ""本文結(jié)合 ElasticSearch 大致介紹了 Grafana 的基礎(chǔ)概念以及最佳實踐。Grafana 作為一個監(jiān)控儀表盤系統(tǒng),它的出現(xiàn),不需要我們針對數(shù)據(jù)應(yīng)用分析進(jìn)行額外的開發(fā),只需要通過配置就能得到我們想要的圖表。
Grafana 的功能是強(qiáng)大而且靈活的,本文只是一個入門的介紹,更多的大家用到的時候還是得去看官網(wǎng)文檔[3]。
[1]傳送門: https://segmentfault.com/a/1190000002972420
[2]demo: https://play.grafana.org/d/CknOEXDMk/elasticsearch-templated?orgId=1d
[3]官網(wǎng)文檔: https://grafana.com/docs/grafana/latest/
[4]Using Elasticsearch in Grafana: https://grafana.com/docs/grafana/latest/datasources/elasticsearch/#logs
[5]入門系列文章: https://juejin.cn/column/7023032795333132302
[6]ES官方文檔: https://www.elastic.co/guide/en/kibana/current/lucene-query.html
[7]lucene 語法: https://www.elastic.co/guide/en/elasticsearch/reference/7.15/query-dsl-query-string-query.html#query-string-syntax

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流