偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

圖解 | 監(jiān)控系統(tǒng) Prometheus 的原理

云計(jì)算 云原生
通過圖解的方式,分別介紹了 Prometheus 的優(yōu)勢(shì)和劣勢(shì)、指標(biāo)收集、采集方式、Exporter、PromQL、監(jiān)控告警,希望能給大家云原生的監(jiān)控之路上帶來一些啟發(fā)。

本篇將會(huì)以圖解的方式剖析 Prometheus 的原理。本文主要內(nèi)容如下:

圖片

一、Prometheus 是什么?

ELK Stack 日志收集和檢索平臺(tái)想必大家應(yīng)該比較熟悉,Elasticsearch + Filebeat + Logstash + Kibana。

圖片

ELK 架構(gòu)

而 Prometheus 就相當(dāng)于一整個(gè) ELK,但是它其實(shí)并不是適合存儲(chǔ)大量日志,也不適合長(zhǎng)期存儲(chǔ)(默認(rèn)存儲(chǔ) 15 天)。它的優(yōu)勢(shì)是查看最近的趨勢(shì)數(shù)據(jù),以及告警機(jī)制。下圖是 Prometheus 架構(gòu)圖:

圖片

Prometheus architecture,來自官網(wǎng)

Prometheus 它是從應(yīng)用程序中實(shí)時(shí)獲取時(shí)間序列數(shù)據(jù),然后通過功能強(qiáng)大的規(guī)則引擎,幫助你識(shí)別監(jiān)控環(huán)境所需的信息。

Prometheus作為一個(gè)基于度量的系統(tǒng),不適合存儲(chǔ)事件或者日志等,它更多地展示的是趨勢(shì)性的監(jiān)控。如果用戶需要數(shù)據(jù)的精準(zhǔn)性,可以考慮ELK或其他日志架構(gòu)。

Prometheus 特點(diǎn)

  • 一款開源監(jiān)控工具。
  • 基于時(shí)間序列數(shù)據(jù)庫TSDB存儲(chǔ),golang 實(shí)現(xiàn)
  • Soundcloud 公司研發(fā),源于谷歌borgmon
  • 多維度(標(biāo)簽)
  • 使用拉模式(Pull-based) 獲取數(shù)據(jù)
  • 白盒&黑盒的監(jiān)控都支持,DevOps友好
  • Metrics & Alert模式,不是 loggging/tracing
  • 社區(qū)生態(tài)豐富(多語言,各種exporters)
  • 單機(jī)性能

消費(fèi)百萬級(jí)時(shí)間序列

支持上千個(gè) targets

Prometheus 的不足

Prometheus 主要針對(duì)性能和可用性監(jiān)控,不適用于針對(duì)日志(Log)、事件(Event)、調(diào)用鏈(Tracing)等的監(jiān)控。

關(guān)注的是近期的數(shù)據(jù),默認(rèn)存儲(chǔ) 15 天的監(jiān)控?cái)?shù)據(jù)。

二、Prometheus 指標(biāo)收集

下圖是 Prometheus WebUI 界面,里面展示了 Targets 和 Endpoint,說明了當(dāng)前哪些目標(biāo)服務(wù)是可以被 Prometheus 抓取的。

圖片

  • Endpoint:端點(diǎn),可以抓取的指標(biāo)來源。
  • Target:目標(biāo),包含了端點(diǎn)地址,端口的狀態(tài)等信息。

下面是 Prometheus 抓取目標(biāo)的配置:

  - job_name: mysqld
static_configs:
- targets: ['192.168.0.100:9104']
labels:
instance: mysql-exporter

Job:代表了一組相同角色或功能的目標(biāo)。

Instance:在當(dāng)前主機(jī)上運(yùn)行的 exporter 監(jiān)控程序被稱為一個(gè)實(shí)例。

抓取到目標(biāo)的指標(biāo)數(shù)據(jù)后,會(huì)生成時(shí)間序列數(shù)據(jù),然后存儲(chǔ)在 Prometheus 服務(wù)器本地,也可以設(shè)置從服務(wù)器發(fā)送數(shù)據(jù)到外部存儲(chǔ)器或其他時(shí)間序列數(shù)據(jù)庫。

三、Prometheus 采集方式

Prometheus 抓取數(shù)據(jù)可以通過直接采集和間接采集兩種。

圖片

直接采集和簡(jiǎn)介采集

直接采集就是埋點(diǎn)式的,比如你自己的應(yīng)用程序用 Prometheus 客戶端的代碼自己去埋點(diǎn)。比如 etcd、kubenetes、docker 這種就是直接采集,它已經(jīng)將埋點(diǎn)埋好了,把 metrics 斷點(diǎn)暴露出來了。這些就是對(duì) Prometheus 友好的,已經(jīng)埋好點(diǎn)了,直接用 Prometheus 抓取就好了。

但是對(duì)于一些黑盒系統(tǒng),比如操作系統(tǒng)、Redis、MySQL 這種,它們是成熟的產(chǎn)品,我們一般不會(huì)拿過來改,這種時(shí)候我們一般采用間接采集的方式。

四、Exporter 監(jiān)控程序

當(dāng) Prometheus 使用間接采集的方式時(shí),需要用到 Exporter,中文翻譯過來就是出口商,我們可以理解為將數(shù)據(jù)從內(nèi)部導(dǎo)出來。

Exporter 是 Prometheus 中的一個(gè)概念,類似一個(gè)邊車或者 Agent,如下圖所示。

圖片

間接采集方式中的 exporter

Exporter 它用來對(duì)黑盒系統(tǒng)進(jìn)行采集,它會(huì)從黑盒中抓取數(shù)據(jù),然后將 metrics 端點(diǎn)暴露出來供 Prometheus 抓取。Prometheus 就可以間接的通過 Exporter 抓取這些 target 上的數(shù)據(jù)。

Exporter本質(zhì)上是將收集的數(shù)據(jù)轉(zhuǎn)化為對(duì)應(yīng)的文本格式,并提供 HTTP 接口,供 Prometheus 定期采集數(shù)據(jù)。

Exporter 有很多,比如針對(duì)操作系統(tǒng)的 Node-Exporter,對(duì)于 MySQL 的 mysql-exporter 等等

Linux 服務(wù)器內(nèi)部部署了一個(gè) node-exporter 服務(wù),來收集 Linux 服務(wù)器上的磁盤、內(nèi)存等數(shù)據(jù)。然后暴露了一個(gè)端口,Prometheus 通過這個(gè)端口來抓取數(shù)據(jù)。

而 MySQL 服務(wù)器上的 mysql-exporter 也是類似,mysql-exporter 其實(shí)不必部署到要監(jiān)控的 MySQL 服務(wù)器上,可以獨(dú)立部署到不同機(jī)器上。

從 Prometheus 的客戶端界面上也可以看到正在抓取哪些 Targets,而這些 targets 都是通過 exporter 暴露端口的。

圖片

從這個(gè)官網(wǎng)鏈接中看到很多 Exporter

https://prometheus.io/docs/instrumenting/exporters/

五、PromQL

PromQL 看名字很 SQL 很像,它其實(shí)是另外一種查詢語言。

Prometheus提供了一種功能強(qiáng)大的表達(dá)式語言 PromQL(Prometheus Query Language)。PromQL允許用戶實(shí)時(shí)選擇和匯聚時(shí)間序列數(shù)據(jù),是 Prometheus 自己開發(fā)的數(shù)據(jù)查詢 DSL(領(lǐng)域特定語言),使用這個(gè)查詢語言能夠進(jìn)行各種聚合、分析和計(jì)算,使管理員能夠根據(jù)指標(biāo)更好地了解系統(tǒng)性能。

如下圖所示,PromQL 內(nèi)置在 Prometheus 中。通過 Prometheus WebUI、Grafana 和 API Clients 來進(jìn)行查詢。

圖片

下面是 Prometheus WebUI 界面:

圖片

下面是 Grafana 的界面,通常我們會(huì)配合 Grafana 一起來監(jiān)控。

圖片

六、監(jiān)控告警

發(fā)送告警

Prometheus 告警規(guī)則觸發(fā)后,告警規(guī)則被觸發(fā)后,才會(huì)將信息發(fā)送給獨(dú)立組件 Alertmanager 上,經(jīng)過對(duì)告警的處理后,最終通過接收器(如Email)通知用戶。(告警規(guī)則是在 Prometheus server 端定義的)

圖片

告警的原理圖

在 Prometheus 監(jiān)控體系中,指標(biāo)的采集存儲(chǔ)與告警是分開的。

我們使用 Prometheus server 采集各類監(jiān)控指標(biāo),然后基于PromQL對(duì)這些指標(biāo)定義閾值告警規(guī)則(Rules)。

Prometheus server對(duì)告警規(guī)則周期性地進(jìn)行計(jì)算,如果滿足告警觸發(fā)條件,便生成一條告警信息,并將其推送到Alertmanager組件。

收到告警信息后,Alertmanager會(huì)處理告警,進(jìn)行分組(grouping)并將它們路由(routing)到正確的接收器(receiver),如Email、釘釘?shù)龋罱K把異常事件的通知發(fā)送給接收者。

七、總結(jié)

通過圖解的方式,分別介紹了 Prometheus 的優(yōu)勢(shì)和劣勢(shì)、指標(biāo)收集、采集方式、Exporter、PromQL、監(jiān)控告警,希望能給大家云原生的監(jiān)控之路上帶來一些啟發(fā)~

責(zé)任編輯:武曉燕 來源: 悟空聊架構(gòu)
相關(guān)推薦

2020-12-30 08:09:46

運(yùn)維Prometheus 監(jiān)控

2025-07-14 05:00:00

監(jiān)控系統(tǒng)工具

2020-12-29 10:45:22

運(yùn)維Prometheus-監(jiān)控

2025-03-11 00:25:00

Springmetrics數(shù)據(jù)

2023-11-06 01:39:02

Go語言開發(fā)

2020-12-28 10:13:32

運(yùn)維Prometheus監(jiān)控

2022-07-29 21:23:54

Grafana微服務(wù)

2025-03-28 13:00:00

監(jiān)控系統(tǒng)PrometheusZabbix

2021-02-05 15:01:41

GitLinux命令

2023-12-27 08:47:41

PrometheusLinux架構(gòu)

2022-05-18 08:32:05

服務(wù)監(jiān)控Prometheus開源

2021-07-07 05:46:46

運(yùn)維監(jiān)控Prometheus

2021-09-18 15:05:58

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

2024-08-07 09:22:57

2023-01-04 13:43:24

讀寫鎖AQS共享模式

2023-09-19 08:12:18

2020-05-18 12:04:17

PrometheusMySQL監(jiān)控

2022-03-06 09:51:04

PrometheusKubernete監(jiān)控

2020-12-17 09:25:46

運(yùn)維Prometheus監(jiān)控

2020-09-07 11:14:02

Vue異步更新
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)