日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

监控系统简介:使用 Prometheus 与 Grafana

發(fā)布時(shí)間:2023/12/4 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 监控系统简介:使用 Prometheus 与 Grafana 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注:本文雖以 Docker 進(jìn)行演示,但 Docker 并不是必須的,相關(guān)軟件也可以直接安裝到計(jì)算機(jī)上

背景

如果我們是Web應(yīng)用的開發(fā)者,會(huì)對(duì)響應(yīng)時(shí)間、接口的穩(wěn)定性等比較敏感,在站點(diǎn)尚未部署到生產(chǎn)環(huán)境時(shí),我們有充足的時(shí)間來進(jìn)行調(diào)試、分析哪些接口需要優(yōu)化。但當(dāng)應(yīng)用發(fā)布后,想要繼續(xù)跟蹤,可能需要通過日志記錄請(qǐng)求和響應(yīng)時(shí)間、記錄響應(yīng)狀態(tài)碼等,然后通過其它工具進(jìn)行分析外,或是與其它一些分析工具進(jìn)行集成。

另外現(xiàn)在十分流行的大屏:比如最近曝光的12306監(jiān)控中心,大屏上顯示出的當(dāng)日售出車票數(shù)量、移動(dòng)端和Web端訂票比例、線路熱度等信息;還有每年雙十一,各大電商的大屏顯示出交易總金額、熱賣榜等等。

可以發(fā)現(xiàn),上面列出的各點(diǎn)皆為指標(biāo):響應(yīng)時(shí)間、成功率等我們可以理解為技術(shù)指標(biāo),當(dāng)日售出車票數(shù)量、交易總金額等則是業(yè)務(wù)指標(biāo)。當(dāng)我們定義好指標(biāo)后,需要有收集這些指標(biāo)的方式,我們采用監(jiān)控的方式來采集數(shù)據(jù)。當(dāng)然,若是某些值超出了閾值,還需要及時(shí)發(fā)出警報(bào),但這不在本文的討論范圍內(nèi)了。最后再將監(jiān)控到的內(nèi)容進(jìn)行展示(可視化),就需要用到本文的兩個(gè)主角 —— Prometheus 和 Grafana。

Prometheus

Prometheus is an open-source systems monitoring and alerting toolkit

--?Prometheus Overview


Prometheus 是一款開源的監(jiān)控和警報(bào)工具包

—— 譯自?Prometheus Overview

為什么選擇 Prometheus

Prometheus 的幾大特點(diǎn):

  • 多維數(shù)據(jù)模型,時(shí)間序列數(shù)據(jù)由指標(biāo)名稱和鍵/值對(duì)標(biāo)識(shí)

  • 提供能在多維度上靈活查詢的 PromQL 語言

  • 不依賴分布式存儲(chǔ),單服務(wù)器節(jié)點(diǎn)自治(single server nodes are autonomous)

  • 基于 HTTP PULL(拉取)的方式采集時(shí)序數(shù)據(jù)

  • 可通過中間網(wǎng)關(guān)推送時(shí)序數(shù)據(jù)

  • 可通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置要采集的目標(biāo)服務(wù)器

  • 支持多種圖表和儀表盤

相比 InfluxDB 等時(shí)序數(shù)據(jù)庫(kù),Prometheus 內(nèi)置了時(shí)序、監(jiān)控和通知等功能。

安裝Exporter和Prometheus

首先安裝 Exporter,Exporter 將監(jiān)控的各種指標(biāo)以 HTTP 的方式暴露出來。這里通過 Docker 來安裝和運(yùn)行

docker run -d -p 9100:9100 prom/node-exporter

然后就能通過 http://localhost:9100 來訪問它,點(diǎn)擊下方的?Metrics?鏈接,頁(yè)面上就會(huì)將相關(guān)指標(biāo)以文本的形式展示出來。

安裝 Prometheus 前需要先將配置文件準(zhǔn)備好,新建一個(gè)?prometheus.yml?文件

global:scrape_interval: 15sscrape_configs:- job_name: prometheusstatic_configs:- targets: ['localhost:9090']labels:instance: prometheus- job_name: node_exporterstatic_configs:- targets: ['10.0.0.150:9100']labels:instance: node_exporter

scrape_interval?為抓取間隔時(shí)間,下面配置了兩個(gè) job,并以?static_configs?的方式配置了兩個(gè)目標(biāo):?localhost:9090?(后面要安裝的 Prometheus,意思是監(jiān)控自己)和?10.0.0.150:9100(監(jiān)控 node_exporter。注意,這里的 10.0.0.150 是計(jì)算機(jī)的內(nèi)網(wǎng) IP,請(qǐng)根據(jù)實(shí)際情況修改)

接下來安裝 Prometheus,因?yàn)?prometheus.yml?配置文件需要映射到 Docker 容器中,記得把硬盤設(shè)置為共享

docker run -d -p 9090:9090 -v "D:\docker\prometheus\prometheus.yml:/etc/prometheus/prometheus.yml" --name prometheus prom/prometheus

通過瀏覽器訪問 http://localhost:9090 就能訪問 Prometheus 了,我們先看一下監(jiān)控的目標(biāo)是否已經(jīng)上線,訪問 http://localhost:9090/targets 應(yīng)該能看到 node_exporter 和 prometheus 兩個(gè)目標(biāo)。State 是?Up?表示已經(jīng)上線,如果是?Unknown?可以稍等一會(huì)兒再刷新。Labels 部分顯示了配置文件中配置的 job 以及 instance,后面查詢的時(shí)候會(huì)用到。

當(dāng)?shù)搅俗ト〉臅r(shí)間,Prometheus 就會(huì)去訪問目標(biāo)的 /metrics 頁(yè)面將相關(guān)指標(biāo)采集并儲(chǔ)存。

指標(biāo)類型

Prometheus 提供了四種指標(biāo)類型

  • Counter?計(jì)數(shù)器,只增不減,重啟后清零??捎糜谟涗浾?qǐng)求數(shù)量、已完成任務(wù)的數(shù)量、錯(cuò)誤數(shù)量等。

  • Gauge?儀表盤,可增可減??捎糜谟涗洰?dāng)前溫度、當(dāng)前內(nèi)存占用值等。

  • Histogram?直方圖

  • Summary?摘要

關(guān)于直方圖和摘要,都用于統(tǒng)計(jì)和分析樣本的分布情況,這里引用?prometheus-book?中關(guān)于它們的介紹:

在大多數(shù)情況下人們都傾向于使用某些量化指標(biāo)的平均值,例如CPU的平均使用率、頁(yè)面的平均響應(yīng)時(shí)間。這種方式的問題很明顯,以系統(tǒng)API調(diào)用的平均響應(yīng)時(shí)間為例:如果大多數(shù)API請(qǐng)求都維持在100ms的響應(yīng)時(shí)間范圍內(nèi),而個(gè)別請(qǐng)求的響應(yīng)時(shí)間需要5s,那么就會(huì)導(dǎo)致某些WEB頁(yè)面的響應(yīng)時(shí)間落到中位數(shù)的情況,而這種現(xiàn)象被稱為長(zhǎng)尾問題。


為了區(qū)分是平均的慢還是長(zhǎng)尾的慢,最簡(jiǎn)單的方式就是按照請(qǐng)求延遲的范圍進(jìn)行分組。例如,統(tǒng)計(jì)延遲在0~10ms之間的請(qǐng)求數(shù)有多少而10~20ms之間的請(qǐng)求數(shù)又有多少。通過這種方式可以快速分析系統(tǒng)慢的原因。Histogram和Summary都是為了能夠解決這樣問題的存在,通過Histogram和Summary類型的監(jiān)控指標(biāo),我們可以快速了解監(jiān)控樣本的分布情況。


——?prometheus-book?使用Histogram和Summary分析數(shù)據(jù)分布情況

之前我們?cè)L問過 http://localhost:9100/metrics 指標(biāo)頁(yè)面,節(jié)選如下:

# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code. # TYPE promhttp_metric_handler_requests_total counter promhttp_metric_handler_requests_total{code="200"} 162 promhttp_metric_handler_requests_total{code="500"} 0 promhttp_metric_handler_requests_total{code="503"} 0

# TYPE?一行末尾體現(xiàn)了指標(biāo)類型,非?#?開頭的行內(nèi)容為:指標(biāo)名稱、標(biāo)簽(花括號(hào)內(nèi)的部分)和樣本值。Prometheus 以時(shí)間序列的方式儲(chǔ)存數(shù)據(jù),即每個(gè)樣本是按照時(shí)間順序儲(chǔ)存的,在 Prometheus 儲(chǔ)存的這些樣本內(nèi)容中包含了:指標(biāo),時(shí)間戳及樣本值。

PromQL

PromQL 是 Prometheus 的查詢語言,我們?cè)L問 http://localhost:9090 時(shí)能看到查詢頁(yè)面。在?Expression?中輸入

promhttp_metric_handler_requests_total

并按下回車,可以看到這樣的結(jié)果,這段 PromQL 將該指標(biāo)的指標(biāo)和樣本值進(jìn)行了返回

因?yàn)?node_exporter?和?prometheus?都提供了名為?promhttp_metric_handler_requests_total?的指標(biāo),若想只看?node_exporter?的該指標(biāo),則在 PromQL 中加上花括號(hào)來過濾 Labels 即可:

promhttp_metric_handler_requests_total{instance="node_exporter"}

當(dāng)然,PromQL 的內(nèi)容遠(yuǎn)不止這些,待日后再記錄。

Grafana

Grafana 是一款數(shù)據(jù)可視化工具,先來直觀的感受一下吧,也可以訪問 Grafana Live Demo 體驗(yàn)。

好了,先來安裝 Grafana,這里映射了一個(gè)本地文件夾到容器中

docker run -d -p 3000:3000 -v "D:\docker\grafana:/var/lib/grafana" --name grafana grafana/grafana

然后通過 http://localhost:3000 訪問 Grafana,默認(rèn)用戶名密碼均為 admin。

首先進(jìn)入 Home 頁(yè)面,選擇 Add data source 添加我們的 Prometheus 作為 Grafana 的數(shù)據(jù)源。需要注意的是,如果和我一樣使用 Docker,那么 Prometheus 的 URL 不能寫 localhost,需要填寫計(jì)算機(jī)的內(nèi)網(wǎng) IP 。

我們已經(jīng)通過 Prometheus 采集了一批數(shù)據(jù)樣本,現(xiàn)在只需要添加一個(gè)新報(bào)表來呈現(xiàn)。在左側(cè)欄中依次選擇 Create - Dashboard,然后選擇 Add Query(如果顯示的是 Panel,把鼠標(biāo)移動(dòng)到 Panel Title 上,會(huì)出現(xiàn)菜單,選擇 Edit 來編輯它)。

將數(shù)據(jù)源(Query)修改為剛剛添加的 Prometheus 后,Metrics 中輸入和剛剛在 Prometheus 里一樣的 PromQL 語句?promhttp_metric_handler_requests_total{instance="node_exporter"}?然后按下回車,可視化的數(shù)據(jù)就生成了。

本文到此就結(jié)束了,簡(jiǎn)單的介紹了 Prometheus 和 Grafana。后面還會(huì)介紹往 ASP.NET 中添加指標(biāo),并讓 Prometheus 來抓取,以及 PromQL 等的詳細(xì)內(nèi)容。

總結(jié)

以上是生活随笔為你收集整理的监控系统简介:使用 Prometheus 与 Grafana的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。