日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Prometheus 初探

發(fā)布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Prometheus 初探 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先-什么是 TSDB (Time Series Database):


我們可以簡單的理解為.一個優(yōu)化后用來處理時間序列數(shù)據(jù)的軟件,并且數(shù)據(jù)中的數(shù)組是由時間進行索引的.

時間序列數(shù)據(jù)庫的特點:

  • 大部分時間都是寫入操作
  • 寫入操作幾乎是順序添加;大多數(shù)時候數(shù)據(jù)到達后都以時間排序.
  • 寫操作很少寫入很久之前的數(shù)據(jù),也很少更新數(shù)據(jù).大多數(shù)情況在數(shù)據(jù)被采集到數(shù)秒或者數(shù)分鐘后就會被寫入數(shù)據(jù)庫.
  • 刪除操作一般為區(qū)塊刪除,選定開始的歷史時間并指定后續(xù)的區(qū)塊.很少單獨刪除某個時間或者分開的隨機時間的數(shù)據(jù).
  • 數(shù)據(jù)一般遠遠超過內(nèi)存大小,所以緩存基本無用.系統(tǒng)一般是 IO 密集型
  • 讀操作是十分典型的升序或者降序的順序讀,
  • 高并發(fā)的讀操作十分常見.

常見的時間序列數(shù)據(jù)庫:

部分常見 TSDB 官網(wǎng)如下:

TSDB官網(wǎng)
influxDBhttps://influxdata.com/
RRDtoolhttp://oss.oetiker.ch/rrdtool/
Graphitehttp://graphite.readthedocs.org/en/latest/
OpenTSDBhttp://opentsdb.net/
Kdb+http://kx.com/
Druidhttp://druid.io/
KairosDBhttp://kairosdb.github.io/
Prometheushttps://prometheus.io/

?

關(guān)于 Prometheus


Prometheus是什么?

Prometheus?是由 SoundCloud 開發(fā)的開源監(jiān)控報警系統(tǒng)和時序列數(shù)據(jù)庫(TSDB).自2012年起,許多公司及組織已經(jīng)采用 Prometheus,并且該項目有著非常活躍的開發(fā)者和用戶社區(qū).現(xiàn)在已經(jīng)成為一個獨立的開源項目核,并且保持獨立于任何公司,Prometheus 在2016加入 CNCF (?Cloud Native Computing Foundation?), 作為在 kubernetes 之后的第二個由基金會主持的項目.

prometheus 的特點

和其他監(jiān)控系統(tǒng)相比,Prometheus的特點包括:

  • 多維數(shù)據(jù)模型(時序列數(shù)據(jù)由metric名和一組key/value組成)
  • 在多維度上靈活的查詢語言(PromQl)
  • 不依賴分布式存儲,單主節(jié)點工作.
  • 通過基于HTTP的pull方式采集時序數(shù)據(jù)
  • 可以通過中間網(wǎng)關(guān)進行時序列數(shù)據(jù)推送(pushing)
  • 目標(biāo)服務(wù)器可以通過發(fā)現(xiàn)服務(wù)或者靜態(tài)配置實現(xiàn)
  • 多種可視化和儀表盤支持

prometheus 相關(guān)組件

Prometheus生態(tài)系統(tǒng)由多個組件組成,其中許多是可選的:

  • Prometheus 主服務(wù),用來抓取和存儲時序數(shù)據(jù)
  • client library 用來構(gòu)造應(yīng)用或 exporter 代碼 (go,java,python,ruby)
  • push 網(wǎng)關(guān)可用來支持短連接任務(wù)
  • 可視化的dashboard (兩種選擇,promdash 和 grafana.目前主流選擇是 grafana.)
  • 一些特殊需求的數(shù)據(jù)出口(用于HAProxy, StatsD, Graphite等服務(wù))
  • 實驗性的報警管理端(alartmanager,單獨進行報警匯總,分發(fā),屏蔽等 )

promethues 的各個組件基本都是用 golang 編寫,對編譯和部署十分友好.并且沒有特殊依賴.基本都是獨立工作.

prometheus 的架構(gòu)

部署及配置


promethues 官方給出了多重部署方案,包括但不限于 docker 容器,ansible,chef,saltstack 等.

其實官方已經(jīng)給了預(yù)編譯的二進制文件.如果沒有修改代碼的特殊需求,直接拿到二進制文件進行部署也是可以的.

下載地址:?https://prometheus.io/download/

部署方式十分簡單

tar xvfz prometheus-*.tar.gz cd prometheus-*

在 prometheus 目錄下有一個名為 prometheus.yml 的主配置文件.其中包含大多數(shù)標(biāo)準配置及 prometheus 的自檢控配置,配置文件如下.

global:scrape_interval: 15s # 默認抓取間隔, 15秒向目標(biāo)抓取一次數(shù)據(jù)# 和外部系統(tǒng)交互時每一條從本機獲取的數(shù)據(jù)都會打上如下標(biāo)簽external_labels:monitor: 'codelab-monitor'# 這里是抓去 promethues 自身的配置 scrape_configs:# job name 會以標(biāo)簽`job=<job_name>`添加到每一條由該配置抓去到的時序數(shù)據(jù)- job_name: 'prometheus'# 覆蓋默認抓取間隔scrape_interval: 5sstatic_configs:- targets: ['localhost:9090']# 添加兩個線上抓取實例- job_name: 'ceph'scrape_interval: 5sstatic_configs:- targets: ['k0140v:9128']labels:group: 'shbt' # 會對該配置生成的時序數(shù)據(jù)添加一條 `group=<group_name>`的標(biāo)簽- targets: ['ceph01:9128']labels:group: 'bjyt'- job_name: 'openstack'scrape_interval: 30sstatic_configs:#target 可以使用 "," 分割,添加多個目標(biāo)- targets: ['openstack185:9128', 'openstack194:9128']labels:group: "bjyt"

然后我們通過該配置文件啟動 promethues

./prometheus -config.file=prometheus.yml

prometheus 本身是自帶 exporter 的,我們通過請求?http://localhost:9090/metrics?可以查看從 exporter 中能具體抓到哪些數(shù)據(jù)

監(jiān)控數(shù)據(jù)


數(shù)據(jù)樣本

和大多數(shù) TSDB 類似,promethus 支持的數(shù)據(jù)樣本非常簡單:

  • 一個 float64 的值
  • 一個毫秒精度的時間戳

標(biāo)識

標(biāo)識監(jiān)控數(shù)據(jù)的方式十分簡單,給一個監(jiān)控項名稱和一些標(biāo)簽,時序數(shù)據(jù)經(jīng)常使用這種標(biāo)識方法

<metric name>{<label name>=<label value>, ...}

舉例來說, 一個時間序列的監(jiān)控名稱為?api_http_requests_total?標(biāo)簽為?method="POST"?和?handler="/message"?,那么監(jiān)控數(shù)據(jù)的標(biāo)識如下:

api_http_requests_total{method="POST", handler="/messages"}

這種標(biāo)識方式與?OpenTSDB?相同.

監(jiān)控結(jié)果

我們實際收集到的數(shù)據(jù)大多如下:

ceph_osd_avail_bytes{osd="osd.0"} 3.205084244e+12 ceph_osd_avail_bytes{osd="osd.1"} 2.892447332e+12 ceph_osd_avail_bytes{osd="osd.10"} 3.21853432e+12 ceph_osd_avail_bytes{osd="osd.100"} 3.062200424e+12 ceph_osd_avail_bytes{osd="osd.101"} 3.126474844e+12 ceph_osd_avail_bytes{osd="osd.102"} 3.079620512e+12 ceph_pool_available_bytes{pool="backups"} 1.30342001987587e+14 ceph_pool_available_bytes{pool="images"} 1.30342001987587e+14 ceph_pool_available_bytes{pool="rbd"} 1.30342001987587e+14 ceph_pool_available_bytes{pool="rgw-test"} 1.30342001987587e+14 ceph_pool_available_bytes{pool="test_crush"} 1.30342001987587e+14 ceph_pool_available_bytes{pool="vms"} 1.30342001987587e+14 ceph_pool_available_bytes{pool="vmscache"} 2.301547932444e+12

監(jiān)控數(shù)據(jù)類型

  • Counter:計數(shù)器是一個累加的度量類型,記錄單調(diào)遞增的數(shù)據(jù).一般用于記錄服務(wù)的請求數(shù),任務(wù)完成數(shù),錯誤發(fā)生數(shù).
  • Gauge:量表用于記錄可任意變大變小的數(shù)值,如cpu idle,內(nèi)存使用率,磁盤IO等。
  • Historgram:直方圖用于度量數(shù)據(jù)中值的分布情況,如請求時間或響應(yīng)大小。
  • Summary: 用于度量數(shù)據(jù)累價值或總數(shù).

自帶 dashboard及查詢語句


prometheus 自帶一個比較簡單的dashboard 可以查看表達式搜索結(jié)果,報警配置,prometheus 配置,exporter 狀態(tài)等

我們以一些真實數(shù)據(jù)為例看一下表達式及查詢結(jié)果.

1. 我們可直接查詢監(jiān)控項ceph_pool_read_total并繪圖如下

2. 我們也可以在查詢語句中通過添加一組標(biāo)簽,并用?{}?闊起來,來細化查詢.

例如我們只想查看 bjyt 這個 group 各個 pool 全局讀取的數(shù)據(jù).

ceph_pool_read_total{group="bjyt"}

另外,也可以也可以將標(biāo)簽值反向匹配,或者對正則表達式匹配標(biāo)簽值:

  • =:選擇相等的字符串標(biāo)簽
  • !=:選擇不相等的字符串標(biāo)簽
  • =~:選擇匹配正則表達式的字符串標(biāo)簽(或子標(biāo)簽)
  • !=:選擇不匹配正則表達式的字符串標(biāo)簽(或子標(biāo)簽)

例如

ceph_pool_read_total{pool=~"vms.*"}

會如上圖但只查詢出 pool 名為 vms 及 vmscahe 的數(shù)據(jù).

3. 如果我們以時間窗口來作為篩選緯度計算各個 pool 讀IO的真實速率,可以用以下語句查詢

irate(ceph_pool_read_total{pool=~"vms"}[1m])

這里的 irate() 為 promethues 的查詢函數(shù).與之對應(yīng)的是rate().

這兩個函數(shù)在 promethues 中經(jīng)常用來計算增量或者速率,在使用時需要指定時間范圍如[1m]

  • irate(): 計算的是給定時間窗口內(nèi)的每秒瞬時增加速率.
  • rate(): 計算的是給定時間窗口內(nèi)的每秒的平均值.

如果還是以前面的監(jiān)控項進行查詢但是以 rate() 計算速率的話,繪制的結(jié)果如下:

rate(ceph_pool_read_total{pool=~"vms"}[1m])

promethues 支持的函數(shù)還有很多,具體的函數(shù)說明可詳見官方文檔?Functions

如果在線上使用的話,可以將 Prometheus 和 grafana 相結(jié)合.可以進行十分豐富的監(jiān)控結(jié)果展示.

比如 ceph 單機房集群的監(jiān)控可以是這樣的:

先簡單介紹這么多.

后面會通過幾篇文章詳細介紹一些常用的查詢方法, exporter的編寫及使用方法,以及 promethues 如何結(jié)合 grafana使用和promethues 是如何進行報警的.

參考文獻 :

  • http://liubin.org/blog/2016/02/18/tsdb-intro/
  • https://www.xaprb.com/blog/2014/06/08/time-series-database-requirements/
  • https://www.xaprb.com/blog/2014/03/02/time-series-databases-influxdb/
  • https://zhuanlan.zhihu.com/p/24811652

總結(jié)

以上是生活随笔為你收集整理的Prometheus 初探的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 狠狠操狠狠操狠狠操 | 亚洲av无码潮喷在线观看 | 欧美视频三区 | 在线播放无码后入内射少妇 | 国模福利视频 | 国产人妻777人伦精品hd | 欧美亚洲日本一区 | 欧美黑人精品一区二区不卡 | 3d动漫精品啪啪一区二区三区免费 | 久久久精品日韩 | xxx毛片 | 综合久久综合久久 | 亚洲高清视频在线观看 | 国产日韩在线视频 | 精品无码av一区二区三区不卡 | 免费草逼视频 | 亚洲婷婷久久综合 | 欧美在线一级 | 黄色网址链接 | 亚洲国语| 狠狠躁夜夜躁人爽 | 先锋影音av资源在线 | 99精品久久久久久 | 国产黄色片网站 | 天堂av资源 | 精品日韩 | 欧美一区二区三区免费视频 | 91精品人妻一区二区 | 青青操青青 | 婷婷五综合| 国产精品久久婷婷六月丁香 | 成人在线91 | 国产伦精品一区二区三区视频1 | 五级 黄 色 片 | 国产精品久久99 | 亚洲精品一区二三区 | 综合久久99 | 国产青青草在线 | 成人精品国产 | 欧美成人一区二区在线 | 亚洲精品视频在线免费 | 可乐操亚洲| 黄色福利在线观看 | 超碰997 | 国产精品系列在线观看 | 国产精品久久久一区 | 亚洲综合色自拍一区 | 色哟哟av | 一本大道一区二区 | 黑丝国产在线 | 欧美黄在线观看 | 国产小视频自拍 | 五号特工组之偷天换月 | 茄子av在线| 极品少妇av | 梦梦电影免费高清在线观看 | 日本加勒比中文字幕 | 麻豆视频在线 | 中国一级特黄录像播放 | 黄色动漫在线观看 | 四虎在线观看 | 好吊操视频这里只有精品 | 97超碰超碰 | 又粗又大又硬毛片免费看 | 原神淫辱系列同人h | 亚洲精选中文字幕 | 亚洲午夜av在线 | 亚洲精品性 | 777色婷婷 | 国产成人一区二区在线 | 日日摸天天爽天天爽视频 | 亚洲综合婷婷久久 | 巨茎大战刘亦菲 | 自拍偷拍20p| 色综合999| 日韩精品中文字幕在线播放 | 西川结衣在线观看 | av在线电影网 | 午夜色播| 精国产品一区二区三区a片 国产精品第一 | 国产18禁黄网站免费观看 | 日韩综合在线 | 亚洲一区二区美女 | 国产精品无码久久久久成人app | 日本小视频网站 | 国产精品一区二区6 | 秋葵视频污 | 涩涩成人 | 亚洲第一色 | 日韩一级欧美一级 | 后进极品美女圆润翘臀 | 中文字幕无码精品亚洲 | 51福利视频| 枫可怜av| 超碰99在线 | 色四月婷婷| 日本妇乱大交xxxxx | 男人天堂成人 | 中文无码一区二区三区在线观看 |