詳解 Prometheus-愛可生

以下文章來源於愛可生開源社區 ,作者鄧歡

詳解 Prometheus-愛可生

一、產品簡介

Prometheus 最開始是由 SoundCloud 開發的開源監控告警系統,是 Google BorgMon 監控系統的開源版本。

在 2016 年,Prometheus 加入 CNCF,成為繼 Kubernetes 之後第二個被 CNCF 託管的項目。隨著 Kubernetes 在容器編排領頭羊地位的確立,Prometheus 也成為 Kubernetes 容器監控的標配。

本文接下來將會對 Prometheus 做一個介紹。


二、設計架構

監控系統的總體架構大多是類似的,都有數據採集、數據處理存儲、告警動作觸發和告警,以及對監控數據的展示。

下面是 Prometheus 的架構:

詳解 Prometheus-愛可生

Prometheus Server 負責定時從 Prometheus 採集端 Pull(拉) 監控數據。Prometheus 採集端可以是實現了 /metrics 接口的服務,可以是從第三方服務導出監控數據的 exporter,也可以是存放短生命週期服務監控數據的 Pushgateway。相比大多數採用 Push(推) 監控數據的方式,Pull 使得 Promethues Server 與被採集端的耦合度更低,Prometheus Server 更容易實現水平拓展。

對於採集的監控數據,Prometheus Server 使用內置時序數據庫 TSDB 進行存儲。同時也會使用這些監控數據進行告警規則的計算,產生的告警將會通過 Prometheus 另一個獨立的組件 Alertmanager 進行發送。Alertmanager 提供了十分靈活的告警方式,並且支持高可用部署。

對於採集到的監控數據,可以通過 Prometheus 自身提供的 Web UI 進行查詢,也可以使用 Grafana 進行展示。


三、快速部署

3.1 下載 Prometheus 安裝包,並解壓

<code>wget https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.darwin-amd64.tar.gztar xvzf prometheus-2.16.0.darwin-amd64.tar.gzcd prometheus-2.16.0.darwin-amd64/<code>

3.2 配置 Prometheus

Prometheus 的配置是 YAML 格式的,下面使用的配置文件主要包括了三部分:global,rule_files,scrape_configs。

  • global定義 Prometheus 拉取監控數據的週期 scrape_interval 和 告警規則的計算週期 evaluation_interval。
  • rule_files指定了告警規則的定義文件。
  • scrape_configs定義 Prometheus 採集端,這裡的採集端可以靜態指定,也可以配置服務發現功能自動發現採集端。

由於 Prometheus 自身也實現了 /metrics 接口,所有我們在這裡配置它自己作為採集端。

配置示例:

<code>global: scrape_interval:     15s evaluation_interval: 15srule_files: # - "first.rules" # - "second.rules"scrape_configs: - job_name: prometheus   static_configs:     - targets: ['localhost:9090']/<code>

3.3 啟動 Prometheus

<code>./prometheus --config.file=prometheus.yml/<code>

當 Prometheus 啟動之後,可以在瀏覽器輸入 http://localhost:9090 打開 Prometheus Web UI。

3.4 使用 Prometheus Web UI

Prometheus Web UI 一般有三個用途:查詢某個 metric,查看當前有哪些告警觸發,查看當前的狀態(使用的配置、告警規則、數據採集端)。

下面是查詢 prometheus_http_request_total 的結果,當前觸發的告警和當前的狀態可以在 Alerts 和 Status 中查看。

詳解 Prometheus-愛可生


四、優點

  • 多維度的數據模型:時序數據由指標(metric)名稱和標籤對標識
  • 提供靈活的數據查詢語言 --PromQL
  • 同時支持監控數據的本地存儲和遠程存儲
  • 同時支持靜態文件配置和動態發現監控對象
  • 易於和結合 Grafana 等 GUI 組件展示數據
  • 與 Kubernetes 相融合


五、缺點

任何工具都沒有銀彈,Prometheus 也不例外,它有自身的侷限性:

  • 它只能採集某個 metric 的數值,所以它能監控某個調用的執行時間,但是不能還原整個調用鏈。
  • Prometheus 本地存儲的設計初衷是存儲短期的數據(通常是一個月),所以對於需要存儲大量的歷史數據的場景需要使用如 OpenTSDB 這樣的遠端存儲。
  • Prometheus 的監控數據沒有對單位進行定義,通常需要使用約定好的默認單位或者在 metric 的命名中加上單位。


六、總結

市面上還有一些其他的監控系統,比如 Zabbix、Open-Falcon 等。這裡為什麼要去關注 Prometheus?

不僅僅是因為 Prometheus 本身有著不錯的性能和拓展性,社區活躍度高,更重要的是它對雲原生支持得最好。一個項目的成功要靠自我奮鬥,當然也要考慮歷史的進程,Prometheus 就是這樣一個順應雲原生趨勢的項目。

本文介紹了它的架構、使用例子及其優缺點,後面將會從架構圖中各個方面進行更為詳細的介紹。


相關內容方面的知識,大家還有什麼疑問或者想知道的嗎?趕緊留言告訴小編吧!


關於愛可生

愛可生成立於2003年,依託於融合、開放、創新的數據處理技術和服務能力,為大型行業用戶的特定場景提供深度挖掘數據價值的解決方案。

公司持續積累的核心關鍵技術,覆蓋到分佈式數據庫集群、雲數據平臺、數據庫大體量運管平臺、海量數據集成於存儲、清洗與治理、人工智能分析挖掘、可視化展現、安全與隱私保護等多個領域。

公司已與多個行業內的專業公司建立了長期夥伴關係,不斷促進新技術與行業知識相結合,為用戶尋求新的數據驅動的價值增長點。公司已在金融、能源電力、廣電、政府等行業取得了眾多大型用戶典型成功案例,獲得了市場的認可和業務的持續增長。

詳解 Prometheus-愛可生


分享到:


相關文章: