国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【監(jiān)控儀表系統(tǒng)】Grafana 中文入門教程 | 構(gòu)建你的第一個儀表盤

這篇具有很好參考價值的文章主要介紹了【監(jiān)控儀表系統(tǒng)】Grafana 中文入門教程 | 構(gòu)建你的第一個儀表盤。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Grafana 讀音:/gr??fɑ?n?ɑ?/

grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

在大廠工作久了,時常對一些工具的存在覺得理所當(dāng)然。

比如說,需要計算資源的時候,一個配置文件就可以要來兩百臺虛擬化好的機(jī)子。需要試下緩存?點(diǎn)下鼠標(biāo)就可以要到幾十個配置好的 Redis 結(jié)點(diǎn)。

最省心的是,這些工具都已經(jīng)根據(jù)工作流配置好了:鑒權(quán)、優(yōu)化、網(wǎng)絡(luò)連接等等通通不用你操心。

但一切要自己擼起袖子干的時候,開始發(fā)現(xiàn)各種踩坑。拿 Grafana 和服務(wù)監(jiān)控來說:

  1. 服務(wù)監(jiān)控到底咋配置?怎樣保證數(shù)據(jù)安全?
  2. 保證健康的服務(wù)到底應(yīng)該監(jiān)控些什么?
  3. 配置好后的儀表盤為啥消失了?
  4. 查詢 Query 又該咋寫?

1. Grafana 是什么

開始前首先要問一個問題,Grafana 到底是什么。

Grafana 讀音:/gr??fɑ?n?ɑ?/, 是一個監(jiān)控儀表系統(tǒng),它是由 Grafana Labs 公司開源的的一個系統(tǒng)監(jiān)測 (System Monitoring) 工具。它可以大大幫助你簡化監(jiān)控的復(fù)雜度,你只需要提供你需要監(jiān)控的數(shù)據(jù),它就可以幫你生成各種可視化儀表。同時它還有報警功能,可以在系統(tǒng)出現(xiàn)問題時通知你。

Grafana 不對數(shù)據(jù)源作假設(shè),它支持以下各種數(shù)據(jù),也就是說如果你的數(shù)據(jù)源是以下任意一種,它都可以幫助生成儀表。同時在市面上,如果 Grafana 稱第二,那么應(yīng)該沒有敢稱第一的儀表可視化工具了。因此,如果你搞定了 Grafana,它幾乎是一個會陪伴你到各個公司的一件稱心應(yīng)手的兵器。

Grafana 支持的數(shù)據(jù)源

  • Prometheus 本文中的例子,你沒聽過也沒關(guān)系不影響閱讀,把它想象成帶時間戳的 MySQL 就好
  • Graphite
  • OpenTSDB
  • InfluxDB
  • MySQL/PostgreSQL
  • Microsoft SQL Server
  • 等等

2. 什么情況下會用到 Grafana 或者監(jiān)控儀表盤

通常來說,對于一個運(yùn)行時的復(fù)雜系統(tǒng),你是不太可能在運(yùn)行時一邊檢查代碼一邊調(diào)試的。因此,你需要在各種關(guān)鍵點(diǎn)加上監(jiān)控。

用開車作為例子:車子本身是一個極其復(fù)雜的系統(tǒng),而當(dāng)你的車在高速上以 120 公里的速度狂奔時出現(xiàn)了噪音,你是不可能這時候邊開車邊打開發(fā)動機(jī)蓋子來查原因的。通常來說,好一點(diǎn)的車會有內(nèi)置電腦,在車子出問題時,告訴你左邊輪胎胎壓有問題,或是發(fā)動機(jī)缺水了之類。而這些檢測,就是系統(tǒng)監(jiān)控的一個例子。

對于駕駛員來說,他們開車時只關(guān)心幾個指標(biāo):

  • 我的位置是哪里,在路中間么(當(dāng)然這個無法通過監(jiān)控系統(tǒng)實(shí)現(xiàn),得看路)
  • 我的速度是多少 - 速度儀表盤
  • 我的油、發(fā)動機(jī)水溫等等關(guān)鍵指標(biāo)是多少 - 其它儀表盤

通過儀表盤,你不一定能清楚地了解車子出問題的具體原因,但至少可以給你一個大概的方向。比如- 說,如果水溫很高時出現(xiàn)了問題,你大概率可以嘗試加點(diǎn)水降溫來嘗試是否解決問題。

把上面的車換成計算機(jī)系統(tǒng)或者一個軟件系統(tǒng)也是一樣:儀表盤就是你的速度表和水溫表,通過這些表盤你可以實(shí)時了解你的系統(tǒng)運(yùn)行情況。

儀表盤應(yīng)用極廣,我能想到的一些例子:

  • 阿里在雙十一控制室用了監(jiān)控儀表盤,因此所有雙十一的新聞基本上都可以看到這個儀表盤
  • 各酷炫公司大廳里常常放一個儀表盤來展示實(shí)力(用戶數(shù)啦、營收啦之類)
  • 你的 PC 上的資源管理器、Mac 上的 Activity Monitor 都是某種意義上的儀表盤

用一個卡拉搜索的實(shí)踐作例子:

我們希望卡拉搜索能提供游戲級的搜索性能,比 Elastic Search 還快十倍。那么這就要求我們 99% 的搜索結(jié)果在 5-10 毫秒內(nèi)要完成。因此,我們就需要添加這么一個儀表盤,能實(shí)時知道用戶搜索的延遲,并且當(dāng)搜索延遲超過 10 毫秒時通知到我們。

綜上,在任何需要監(jiān)控系統(tǒng)運(yùn)行狀況的地方就大概率會用到儀表盤,而用到儀表盤的時候就可以用 Grafana (不管你用什么語言)

3. 安裝和配置 Grafana

為了簡化各種系統(tǒng)不一致的亂七八糟問題,我們用 Docker 來安裝 Grafana。(如果還沒有安裝 Docker 可以參考我們的教程 [如何安裝 Docker](/tutorials/how-to-install-and-use-docker-on-ubuntu)。

Docker 的配置文件如下,就算你從來沒用過 docker 也不用操心,我會在下文里一行一行講明白。請不要復(fù)制粘貼代碼,直接到本文的 GitHub 頁 clone 代碼即可,我會保證 GitHub 上的代碼處理最新狀態(tài):https://github.com/Kalasearch/grafana-tutorial[5]

version: '3.4'
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    hostname: prometheus
    ports:
      - 9090:9090
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
  prometheus-exporter:
    image: prom/node-exporter
    container_name: prometheus-exporter
    hostname: prometheus-exporter
    ports:
      - 9100:9100
  grafana:
    image: grafana/grafana
    container_name: grafana
    hostname: grafana
    ports:
      - 3000:3000
    volumes:
      - ./grafana.ini:/etc/grafana/grafana.ini

在這里我們啟動了三個服務(wù)

  • Prometheus 普羅米修斯時序數(shù)據(jù)庫,用來存儲和查詢你的監(jiān)控數(shù)據(jù)
  • Promethues-exporter 一個模擬數(shù)據(jù)源,用來監(jiān)控你本機(jī)的狀態(tài),比如有幾個 CPU,CPU 的負(fù)載之類
  • Grafana 本尊
    在 clone 了代碼之后,在你的本地運(yùn)行 docker-compose up,應(yīng)該會看到類似:
    grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

那么就說明服務(wù)已經(jīng)跑起來了。注意,在之后的所有步驟中,你的 docker 應(yīng)該處于運(yùn)行狀態(tài)。

在跑起來服務(wù)之后,到你的瀏覽器中,復(fù)制 http://localhost:3000 應(yīng)該就可以看到 Grafana 跑起來的初始登錄界面。初始的用戶名是 admin,密碼也是 admin。輸入之后,會要求你改密碼

grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

然后就可以進(jìn)入 Grafana 的主界面了:
grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

到這里,你的 Grafana 就已經(jīng)搭起來了。注意到 Docker 的配置文件中我們創(chuàng)建了三個服務(wù),這三個服務(wù)之間分別有什么關(guān)系呢?

或者說,Grafana 和時序數(shù)據(jù)庫,數(shù)據(jù)源之間有什么關(guān)系呢?請看下文 Grafana 工作原理

4. Grfana 工作原理

上面說到,Grafana 是一個儀表盤,而儀表盤必然是用來顯示數(shù)據(jù)的。

Grafana 本身并不負(fù)責(zé)數(shù)據(jù)層,它只提供了通用的接口,讓底層的數(shù)據(jù)庫可以把數(shù)據(jù)給它。而我們起的另一個服務(wù),叫 Prometheus (中文名普羅米修斯數(shù)據(jù)庫)則是負(fù)責(zé)存儲和查詢數(shù)據(jù)的。

也就是說,Grafana 每次要展現(xiàn)一個儀表盤的時候,會向 Prometheus 發(fā)送一個查詢請求。

那么配置里的另一個服務(wù) Prometheus-exporter 又是什么呢?

這個就是你真正監(jiān)測的數(shù)據(jù)來源了,Prometheus-exporter 這個服務(wù),會查詢你的本地電腦的信息,比如內(nèi)存還有多少、CPU 負(fù)載之類,然后將數(shù)據(jù)導(dǎo)出至普羅米修斯數(shù)據(jù)庫。

在真實(shí)世界中,你的目的是監(jiān)控你自己的服務(wù),比如你的 Web 服務(wù)器,你的數(shù)據(jù)庫之類。

那么你就需要在你自己的服務(wù)器中把數(shù)據(jù)發(fā)送給普羅米修斯數(shù)據(jù)庫。當(dāng)然,你完全可以把數(shù)據(jù)發(fā)送給 MySQL (Grafana 也支持),但普羅米修斯幾乎是標(biāo)配的時序數(shù)據(jù)庫,強(qiáng)烈建議你用。

用一張圖[6]來說明它們之間的關(guān)系:
grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

這里,最左邊的 Docker 服務(wù)會將服務(wù)的數(shù)據(jù)發(fā)送給中間的普羅米修斯(對應(yīng)上文的 Prometheus-exporter),而最右邊的 Grafana 會查詢中間的普羅米修斯,來展示儀表盤。

關(guān)于普羅米修斯本身也可以寫一篇很長的教程了,這里我們先暫時略去不表。

5. 搭建你的第一個儀表盤

現(xiàn)在我們來搭建你的第一個儀表盤。

第 1 步 - 設(shè)置數(shù)據(jù)源

進(jìn)入 Grafana 后,在左側(cè)你會發(fā)現(xiàn)有一個 Data Source 即數(shù)據(jù)源選項(xiàng)
grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

點(diǎn)擊后進(jìn)入,點(diǎn) Add Data Source 即添加數(shù)據(jù)源,選擇 Prometheus
grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

之后設(shè)置數(shù)據(jù)源 URL。請注意,Promethues 的工作原理(下一個教程中會講)是通過輪詢一個 HTTP 請求來獲取數(shù)據(jù)的,而 Grafana 在獲取數(shù)據(jù)源的時候也是通過一個 HTTP 請求,因此這個地方你需要告訴 Grafana 你的 Prometheus 的數(shù)據(jù)端點(diǎn)是什么。

這里我們填入 http://prometheus:9090 就可以了。

你可能會問,為什么不是 localhost:9090 呢?原因是,我們用了 docker-compose 起的三個服務(wù),可以把它們想象成三臺獨(dú)立的服務(wù)器,因此需要用一個域名來互相通信。我們在 docker-compose.yml 中設(shè)置的普羅米修斯服務(wù)器的名字就叫 prometheus,因此這里需要用前者。

grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

點(diǎn)確認(rèn)時一定要確認(rèn)出現(xiàn) Data source is working 這個檢測,這時表明你的 Grafana 已經(jīng)跟普羅米修斯說上話了

第 2 步 - 導(dǎo)入 Dashboard

在 Grafana 里,儀表盤的配置可以通過圖形化界面進(jìn)行,但配置好的儀表盤是以 JSON 存儲的。這也就是說,如果你把你的 JSON 數(shù)據(jù)分享出去,別人導(dǎo)入就可以直接導(dǎo)入同樣的儀表盤(前提是你們的監(jiān)測數(shù)據(jù)一樣)。

對于我們的例子來說,回憶一下,因?yàn)槲覀冇昧?prometheus-exporter 也就是本機(jī)的系統(tǒng)信息監(jiān)控,那么我們可以先找一個同樣用了這個數(shù)據(jù)源的儀表盤。在 Grafana 網(wǎng)站上,你其實(shí)可以找到很多別人已經(jīng)做好的儀表,可以用來監(jiān)測非常多標(biāo)準(zhǔn)化的服務(wù)。

Grafana 的儀表盤市場:https://grafana.com/grafana/dashboards[8]

比如說針對以下一些服務(wù)的標(biāo)準(zhǔn)儀表盤就可以在這里找到

  • JVM
  • Spring Boot
  • MySQL 監(jiān)控
  • Laravel 監(jiān)控

那么,這里我們就用一個標(biāo)準(zhǔn)的儀表盤:https://grafana.com/grafana/dashboards/1860[9]

在左側(cè)的加號里,點(diǎn) Import 即導(dǎo)入,在出現(xiàn)的界面中填入 1860 即我們要導(dǎo)入的儀表盤編號即可。
grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

然后填入你需要的信息,比如儀表盤名字等

grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

確認(rèn)之后 Grafana 就會根據(jù)你的本機(jī)信息,生成類似 CPU 負(fù)載,內(nèi)存和 I/O 之類的信息。我的磁盤狀況如圖:
grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

要注意的是,這里的信息真正監(jiān)控的是你的 Docker 中的系統(tǒng)信息。如果你只給你的 Docker 分配 1 個核和 2G 內(nèi)存,那么這里應(yīng)該看到的就是 1 個核和 2G 內(nèi)存

第 3 步 - 生成和創(chuàng)建新的儀表盤

最后,在上面導(dǎo)入信息的基礎(chǔ)上,你就可以開始創(chuàng)建和你的服務(wù)、業(yè)務(wù)相關(guān)的儀表盤了。

但在這步之前,你需要先在你的服務(wù)中開始記錄一些數(shù)據(jù)。

如何在各種語言中記錄你關(guān)注的數(shù)據(jù)?
拿卡拉搜索舉例子,我們關(guān)注用卡拉搜索的 APP 的搜索響應(yīng)速度,所以自然我們需要在所有搜索請求處記錄延遲。

對于你的服務(wù),你需要根據(jù)自己的業(yè)務(wù)確認(rèn)哪些數(shù)據(jù)是重要的,關(guān)于如何記錄數(shù)據(jù),如何思考運(yùn)維等,我會在之后的博客中繼續(xù)深入討論。如果你想更深入地了解這個領(lǐng)域,推薦閱讀 Google 運(yùn)維手冊這本書,英文名叫《Google SRE Book》,免費(fèi)的書。

包括如何用 Prometheus 查詢數(shù)據(jù)
普羅米修斯本身也是個非常大的話題,我們會在之后的博客中繼續(xù)討論。普羅米修斯包括所有其它時序數(shù)據(jù)庫通常都會定義一個查詢語言,比如說 PromQL,如果需要熟練地構(gòu)建儀表盤的話,需要對這個查詢語言有一定了解。

如何手動生成一個儀表盤
假設(shè)你已經(jīng)按上面的步驟生成了一個基本的儀表盤,那么現(xiàn)在可以開始手動添加儀表盤了。同樣是點(diǎn)左側(cè)的加號,點(diǎn) Dashboard 就可以進(jìn)入添加儀表盤的界面。

這里我們選擇一個數(shù)據(jù)叫 scrape_duration_seconds,先不用管它的含義是什么,就當(dāng)它是雙 11 的銷售額好了:

grafana讀音,DevOps,▼ JavaCore,grafana,java,開發(fā)語言

添加好后點(diǎn)右上角的 Apply 或 Save 你的儀表盤就被保存了。這時候,用一個大屏幕展示一下,慶祝一下雙十一又過了千億吧

6. 總結(jié)

這篇文章里我們從頭到尾介紹了如何用 Grafana 生成儀表盤,如何配置和連接數(shù)據(jù)源,以及如何導(dǎo)入和創(chuàng)建一個儀表盤。

如果你的 App 或小程序需要搜索功能,也可以到卡拉搜索首頁[10]了解一下我們的托管搜索服務(wù)?;?5 分鐘接入,我們就可以幫你為你的用戶提供比 ElasticSearch 還快 10 倍的搜索體驗(yàn),提高轉(zhuǎn)化率和用戶留存。

本文參考了以下文章:文章來源地址http://www.zghlxwxcb.cn/news/detail-784219.html

  • How to explore prometheus with easy hello world projects[11]
  • Node Exporter Guide[12]
  • Grafana Tutorials[13]
  • Grafana Simple Synthetic Monitoring[14]
  • Grafana 快速入門[15]

到了這里,關(guān)于【監(jiān)控儀表系統(tǒng)】Grafana 中文入門教程 | 構(gòu)建你的第一個儀表盤的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包