自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

圖片

一、Prometheus 是什么?

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

圖片

ELK 架構(gòu)

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

圖片

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

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

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

Prometheus 特點

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

消費百萬級時間序列

支持上千個 targets

Prometheus 的不足

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

關(guān)注的是近期的數(shù)據(jù),默認存儲 15 天的監(jiān)控數(shù)據(jù)。

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

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

圖片

  • Endpoint:端點,可以抓取的指標(biāo)來源。
  • Target:目標(biāo),包含了端點地址,端口的狀態(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)前主機上運行的 exporter 監(jiān)控程序被稱為一個實例。

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

三、Prometheus 采集方式

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

圖片

直接采集和簡介采集

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

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

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

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

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

圖片

間接采集方式中的 exporter

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

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

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

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

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

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

圖片

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

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

五、PromQL

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

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

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

圖片

下面是 Prometheus WebUI 界面:

圖片

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

圖片

六、監(jiān)控告警

發(fā)送告警

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

圖片

告警的原理圖

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

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

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

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

七、總結(jié)

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

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

2020-12-30 08:09:46

運維Prometheus 監(jiān)控

2020-12-29 10:45:22

運維Prometheus-監(jiān)控

2025-03-11 00:25:00

Springmetrics數(shù)據(jù)

2020-12-28 10:13:32

運維Prometheus監(jiān)控

2023-11-06 01:39:02

Go語言開發(fā)

2025-03-28 13:00:00

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

2022-07-29 21:23:54

Grafana微服務(wù)

2022-05-18 08:32:05

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

2021-07-07 05:46:46

運維監(jiān)控Prometheus

2021-02-05 15:01:41

GitLinux命令

2023-12-27 08:47:41

PrometheusLinux架構(gòu)

2021-09-18 15:05:58

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

2022-03-06 09:51:04

PrometheusKubernete監(jiān)控

2024-08-07 09:22:57

2023-09-06 08:46:47

2020-05-18 12:04:17

PrometheusMySQL監(jiān)控

2020-11-20 08:15:40

Grafana + P

2022-12-13 08:01:06

監(jiān)控黑盒集成

2020-12-17 09:25:46

運維Prometheus監(jiān)控

2023-01-04 13:43:24

讀寫鎖AQS共享模式
點贊
收藏

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