【云原生監控】Prometheus 普羅米修斯從搭建到使用詳解

目錄

一、前言

二、服務監控概述

2.1 什么是微服務監控

2.2 微服務監控指標

2.3 微服務監控工具

三、Prometheus概述

3.1 Prometheus是什么

3.2 Prometheus 特點

3.3 Prometheus 架構圖

3.3.1 Prometheus核心組件

3.3.2 Prometheus 工作流程

3.4 Prometheus 應用場景

3.5 Prometheus 優勢

四、Prometheus 部署

4.1 基于二進制包安裝Prometheus

4.1.1 獲取安裝包

4.1.2 解壓安裝包

4.1.3 檢查與修改配置文件

4.1.4 prometheus.yml 配置文件補充說明

4.1.5 啟動prometheus

4.1.6 訪問prometheus的ui界面

4.2 基于Docker方式安裝

4.2.1 創建數據卷

4.2.2 拷貝上述安裝包下的prometheus.yml

4.2.3 啟動docker容器

五、exporter介紹與實踐

5.1 什么是Prometheus Exporter

5.2 Prometheus Exporter作用

5.3 Prometheus 常用的Exporter

5.3.1 node_exporter

5.3.2 mysqld_exporter

5.4 node_exporter部署與使用

5.4.2 解壓node_exporter

5.4.3 啟動node_exporter

5.4.4 訪問界面

5.4.5 Prometheus接入node_exporter

5.5 mysqld_exporter部署與使用

5.5.1 前置準備

5.5.2 下載安裝包

5.5.3 創建mysql賬戶

5.5.4 創建mysql配置連接文件

5.5.5 啟動mysqld_exporter服務

5.5.6 界面訪問metrics

5.5.7 Prometheus接入mysqld_exporter

六、Prometheus對接Grafana

6.1 Grafana是什么

6.2 Grafana作用

6.3 Grafana部署

6.3.1 啟動Grafana容器

6.3.2 訪問Grafana控制臺

6.4 Prometheus接入Grafana

6.4.1 添加數據源

6.4.2 配置Prometheus連接信息

6.4.3 添加一個dashboard模板

6.4.4 grafana配置dashboard模板

七、寫在文末


一、前言

為了更好的對線上運行的項目做到全方位掌控,比如網絡、數據庫、服務器、JVM等參數進行監控,通常需要部署一些運維監控工具,從而監測線上環境的各類指標,確保線上服務的穩定運行。隨著技術的發展,可用于生產環境下的各類運維監控工具也越來越多,根據場景的不同,需要監控的服務不同,中間件的不同等因素,選擇的工具也有區別,比如數據庫運維監控工具zabbix,微服務全鏈路監控工具skywaling等。

二、服務監控概述

2.1 什么是微服務監控

微服務監控是指通過系統化地收集、分析和報告服務運行時的各種數據和指標,以確保服務的穩定性、性能和安全性。這些監控數據通常涵蓋服務的運行狀態、資源消耗、性能指標、安全事件等,幫助運維團隊及時發現問題并進行有效的響應和管理。服務監控不僅限于單一服務,還包括復雜的微服務架構和相關的中間件,以支持現代應用在高可用性和效率方面的要求。

  • 這包括實時收集、分析和報告微服務的各種關鍵數據和指標,以確保系統的穩定性、性能優化和安全性。

  • 監控內容涵蓋微服務的健康狀態、性能指標、資源消耗、安全事件等,旨在及時發現問題、實施有效響應和管理措施,以支持整個微服務系統的可靠運行和持續優化。

2.2 微服務監控指標

微服務監控涵蓋多種關鍵指標,用于確保系統的穩定性、性能和安全性。常見的微服務監控指標包括:

  • 健康狀態指標
    • 服務可用性:衡量服務能夠正常處理請求的時間比例;
    • 服務響應時間:即服務對請求的處理速度;
    • 錯誤率:記錄服務處理請求時發生錯誤的比例;
  • 性能指標:
    • 資源消耗:監控服務使用的CPU、內存、磁盤等資源;
    • 請求處理速率:測量服務每秒處理的請求數量;
    • 服務間通信延遲:評估微服務之間通信的延遲和吞吐量;
  • 安全性指標
    • 異常訪問檢測:識別可能的安全攻擊或異常訪問行為,從而提前進行預警;
    • 數據安全性:監控數據傳輸和存儲過程中的安全性問題;
  • 擴展性指標
    • 負載均衡情況:評估服務是否平衡地處理負載;
    • 自動擴展響應時間:衡量系統對負載變化的自動響應速度;
  • 日志和跟蹤指標
    • 日志分析:分析服務生成的日志,以便進行故障排查和行為追蹤;
    • 分布式跟蹤:追蹤服務間請求的路徑和性能,幫助理解整體系統的運行情況;

2.3 微服務監控工具

想必在日常的項目開發和運維過程中多少接觸過一些與微服務運維監控相關的工具,下面列舉一些常用的微服務指標監控的工具:

  • Prometheus:開源的監控系統和時間序列數據庫,專門用于收集和查詢性能數據。

  • Grafana:開源的分析和監控平臺,能夠與多種數據源集成,提供實時監控和可視化功能,一般搭配Prometheus一起使用。

  • Jaeger:開源工具,用于分布式上下文追蹤,幫助識別和解決微服務架構中的性能問題。

  • Elastic Stack (ELK Stack): 包括Elasticsearch、Logstash和Kibana,用于日志收集、搜索和可視化,對于監控和故障排查非常有用。

  • Zipkin:另一個分布式跟蹤系統,用于監控和故障排查微服務架構中的請求路徑和性能問題。

  • New Relic: 提供全棧性能監控的商業解決方案,支持實時性能監控和分析。

  • SkyWalking:是一個開源的應用性能監控系統,特別適用于微服務、云原生架構和分布式系統。它提供了端到端的分布式追蹤、性能指標分析以及可視化等功能,幫助開發團隊更好地監控和管理復雜的微服務環境。

三、Prometheus概述

3.1 Prometheus是什么

Prometheus(普羅米修斯)是一個最初在SoundCloud上構建的監控系統。自2012年成為社區開源項目, 擁有非常活躍的開發人員和用戶社區。為強調開源及獨立維護,Prometheus于2016年加入云原生云計算 基金會(CNCF),成為繼Kubernetes之后的第二個托管項目。

官網:https://prometheus.io

git地址:Prometheus · GitHub

3.2 Prometheus 特點

Prometheus 是一個開源的監控系統和時間序列數據庫,專門設計用于收集和查詢性能數據。它的主要特點包括:

  • 多維數據模型:Prometheus 支持多維度的數據模型,可以有效地存儲和查詢由服務生成的時間序列數據,如性能指標和運行狀態;

  • 靈活的查詢語言: 通過 PromQL 查詢語言,一種靈活的查詢語言,可以利用多維數據完成復雜的查詢,用戶可以靈活地分析和匯總數據,生成圖表和報告;

  • 自動發現服務: Prometheus 支持自動發現新的服務實例和目標,使得系統配置和擴展更加簡單和自動化;

  • 警報和通知: 支持實時的警報功能,可以根據預定義的條件發送通知,幫助團隊快速響應潛在問題;

  • 易于集成: Prometheus 可以與多種數據源和可視化工具集成,如Grafana,為用戶提供強大的監控和可視化能力;

更詳細的介紹可以參閱文檔:概覽 |普羅 米修斯 (prometheus.io)

3.3 Prometheus 架構圖

下面是一張關于Prometheus的架構圖;

3.3.1 Prometheus核心組件

結合上面的架構圖,下面列舉關于Prometheus的一些核心組件,從而更全面的了解Prometheus;

Prometheus Server:

  • Prometheus 的核心組件,負責收集和存儲時間序列數據,如指標和性能數據。

  • 使用自定義的數據模型存儲收集的數據,并支持多維度的數據查詢。

Client Library:

  • 客戶端庫,為需要監控的服務生成相應的 metrics 并暴露給 Prometheus server。當 Prometheus server 來 pull 時,直接返回實時狀態的 metrics。

push gateway:

  • 主要用于短期的 jobs。由于這類 jobs 存在時間較短,可能在 Prometheus 來 pull 之前就消失了。為此,這次 jobs 可以直接向 Prometheus server 端推送它們的 metrics。這種方式主要用于服務層面的 metrics,對于機器層面的 metrices,需要使用 node exporter。

PromQL:

  • Prometheus 的查詢語言,用于靈活地分析和匯總存儲的數據。

  • 允許用戶執行范圍廣泛的查詢,生成圖表和報告,以監視系統的運行狀態和性能指標。

Exporters:

  • 用于從其他系統和服務收集指標數據的客戶端應用程序。

  • Prometheus Exporters 將各種系統(如數據庫、消息隊列、操作系統等)的指標暴露為 Prometheus 可以抓取的端點。

Alertmanager:

  • 負責處理 Prometheus 生成的警報通知。

  • 允許定義和管理警報規則,并根據規則發送通知,支持電子郵件、Slack 等多種通知方式。

Grafana

  • 雖然不是 Prometheus 的核心組件,但通常與 Prometheus 結合使用,用于數據的可視化和監控儀表板的創建。

Web UI

  • 簡單的Web控制臺,用于查看常規的指標信息。

3.3.2 Prometheus 工作流程

Prometheus 是一個開源的監控系統,主要用于收集和存儲時間序列數據,以監視系統的運行狀態和性能指標。其工作流程主要包括以下幾個核心組件和步驟:

  • 數據采集:

    • Prometheus Server 負責定期從配置的目標服務(例如應用程序、數據庫、操作系統等)獲取指標數據。這些目標通過 HTTP 或其他協議提供指標數據的接口。

  • 指標存儲:

    • Prometheus 使用自己的時間序列數據庫存儲從目標收集的指標數據。這些數據包括系統的各種性能指標,如請求處理時間、CPU 使用率、內存消耗等。

  • 查詢和分析:

    • 使用 PromQL(Prometheus 查詢語言),用戶可以執行靈活的查詢和聚合操作,以分析存儲的指標數據。這些查詢可以生成圖表和報告,幫助用戶理解系統的運行狀況和趨勢。

  • 告警和通知:

    • Alertmanager 是 Prometheus 的一部分,負責管理警報規則和發送通知。根據預定義的警報規則,Alertmanager 可以將警報發送到多種通知渠道,如電子郵件、Slack 等,幫助團隊快速響應問題。

  • 數據可視化展現:

    • 雖然 Grafana 不是 Prometheus 的核心組件,但它通常與 Prometheus 配合使用,提供高度可定制的數據可視化和監控儀表板。

    • Grafana 可以直接查詢 Prometheus 存儲的數據,并將其可視化為圖表、儀表板等形式,方便用戶實時監控系統的狀態和性能指標。

通過以上工作流程,Prometheus 能夠幫助開發和運維團隊實時監控和分析微服務架構的健康狀態和性能指標,確保系統的高可用性和穩定性。

3.4 Prometheus 應用場景

Prometheus 是一個功能強大的開源監控系統,適用于多種場景,特別是在微服務架構下,以下列舉了Prometheus的常用的使用場景:

  • 微服務監控:

    • Prometheus 可以實時收集、存儲和分析微服務架構中的各種性能指標,如請求處理時間、錯誤率、資源消耗等。通過這些指標,團隊可以快速發現潛在的問題并采取相應措施,確保系統的高可用性和穩定性。

  • 多維度數據分析:

    • 基于 PromQL 查詢語言的靈活性,Prometheus 支持多維度的數據分析,能夠幫助團隊理解系統的運行趨勢、瓶頸和優化機會,支持系統的持續優化和演進。

  • 容器化環境監控:

    • 在容器化部署中,如Kubernetes集群,Prometheus 可以與容器編排系統集成,監控每個容器的運行狀態、資源使用情況以及服務間的通信延遲,幫助優化資源分配和性能調優。

  • 實時警報和通知:

    • Prometheus 的 Alertmanager 可以根據預定義的警報規則實時監測系統狀態,并在發現異常或達到預警條件時發送通知,如電子郵件、Slack 消息等,幫助團隊快速響應問題和降低系統故障的影響。

  • 可視化和儀表板:

    • 配合Grafana ,與 Prometheus 一起使用,能夠通過直觀的圖表和儀表板實時展示系統的各項指標和性能數據,為團隊提供直觀的監控視圖和操作洞察。

3.5 Prometheus 優勢

Prometheus 在微服務監控和性能管理領域具有顯著優勢,主要體現在以下幾個方面:

  1. 多維度數據模型: Prometheus 提供了靈活的多維度數據模型,能夠有效地存儲和查詢各種服務生成的時間序列數據。這使得用戶可以深入分析和理解系統的性能指標和運行狀態。

  2. 強大的查詢語言 (PromQL): 通過 PromQL 查詢語言,用戶可以執行復雜的數據分析和聚合操作。這種靈活性使得團隊能夠快速生成圖表、報告和儀表板,以便實時監控系統的健康狀態。

  3. 自動發現: Prometheus 支持自動發現新的服務實例和目標,使得系統配置和擴展更加簡單和自動化。這種特性特別適用于動態環境中的微服務部署。

  4. 實時警報和通知: 借助 Alertmanager,Prometheus 能夠根據預定義的規則實時監測系統狀態,并發送通知,如電子郵件或Slack消息。這有助于團隊快速響應問題并采取必要的措施。

  5. 豐富的集成生態系統: Prometheus 可以與多種數據源和工具集成,如Grafana、Elasticsearch等,為用戶提供全面的監控和可視化能力。這種集成性使得用戶能夠根據需要擴展和定制監控解決方案。

四、Prometheus 部署

Prometheus 提供了多種安裝方式,主要有3種:

  • 基于二進制包安裝,即常規的下載tar.gz安裝包進行安裝;

    • 官方安裝手冊:開始使用 |普羅 米修斯 (prometheus.io)

  • 基于docker命令安裝;

    • 安裝手冊參考:安裝 |普羅 米修斯 (prometheus.io)

  • 基于docker-compose安裝;

4.1 基于二進制包安裝Prometheus

4.1.1 獲取安裝包

安裝包下載鏈接:下載 |普羅 米修斯 (prometheus.io),這里我選擇下載最新的linux安裝包

也可以在服務器中使用wget下載

wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz

4.1.2 解壓安裝包

如下,將下載好的安裝包上傳到服務器的指定目錄

執行下面命令解壓

tar -zxvf prometheus-2.53.0.linux-amd64.tar.gz

4.1.3 檢查與修改配置文件

進入解壓后的文件目錄,找到prometheus.yml這個配置文件

基本上來說,后續與prometheus配置相關的信息都是在這個配置文件中編寫,默認情況下,僅僅是啟動服務的話,不需要做任何的修改即可,其中我們注意到配置文件中的下面這行,表示監控的是本機;

4.1.4 prometheus.yml 配置文件補充說明

Prometheus的配置文件prometheus.yml定義了Prometheus服務的行為,包括它應該抓取的指標數據來源(targets),如何拉取指標數據,以及如何在本地存儲這些數據。

global:# 全局配置,影響所有作業scrape_interval: 15s # 默認抓取間隔evaluation_interval: 15s # 規則評估間隔rule_files:# 告警規則配置,可以是相對或絕對路徑# - "first_rules.yml"# - "second_rules.yml"scrape_configs:# 抓取配置,定義了Prometheus應該抓取哪些指標- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']labels:instance: 'prometheus'# 可以定義更多job,每個job可以定義多個targets,每個target是一個需要抓取指標的實例- job_name: 'node-exporter'static_configs:- targets: ['192.168.1.1:9100']labels:instance: 'node-exporter-1'- targets: ['192.168.1.2:9100']labels:instance: 'node-exporter-2'

4.1.5 啟動prometheus

進入prometheus安裝包主目錄,最簡單的啟動方式,只需執行下面的命令即可

./prometheus

也可以通過指定prometheus.yml配置文件的方式啟動

./prometheus --config.file=prometheus.yml

啟動時還可以指定更多的啟動參數,具體可以指定哪些參數項,可以在當前目錄下通過命令查看,可以看到有很多選項的參數可以指定

./prometheus --help

4.1.6 訪問prometheus的ui界面

啟動之后,通過9090端口訪問web-ui界面,效果如下,這個即是prometheus自帶的一個簡易的控制臺

4.2 基于Docker方式安裝

相對于二進制的安裝方式,docker安裝更簡單,只需要一條命令即可搞定,參考下面的步驟操作,也可以按照上面提供的官網文檔操作。

4.2.1 創建數據卷

創建一個名為prom/prometheus的數據卷

docker volume create prom/prometheus

4.2.2 拷貝上述安裝包下的prometheus.yml

docker啟動時需要指定prometheus配置文件,直接使用上述的prometheus.yml即可

cp  prometheus.yml /usr/local/soft/pro

4.2.3 啟動docker容器

執行下面的命令啟動容器

docker run \-p 9090:9090 \-v /usr/local/soft/pro/prometheus.yml:/etc/prometheus/prometheus.yml \prom/prometheus

容器正常起來之后,可以訪問下ui控制臺,仍然可以正常訪問

五、exporter介紹與實踐

5.1 什么是Prometheus Exporter

Prometheus Exporter是一個用于將應用程序指標導出為Prometheus格式的工具。Prometheus是一個開源的監控系統,它使用拉模型來收集和存儲時間序列數據。Prometheus Exporter允許你將你的應用程序的指標暴露給Prometheus,以便進行監控和分析。

  • 在 Prometheus 核心組件中,Exporter 是重要的組成部分,在實際中監控樣本數據的收集都是由 Exporter 完成的,Prometheus 服務器只需要定時從這些 Exporter 提供的 HTTP 服務獲取監控數據即可。
  • Exporter 本質上是將收集的數據轉化為對應的文本格式,并提供 HTTP 接口,供 Prometheus 定期采集數據。

5.2 Prometheus Exporter作用

通過使用Prometheus Exporter,可以將你的應用程序的各種指標(如請求次數、響應時間、錯誤率等)導出為Prometheus可以理解的格式。這些指標可以幫助你了解應用程序的性能和健康狀況,并且可以用于生成儀表盤、警報和報告。

Prometheus Exporter提供了各種語言和框架的客戶端庫,使你能夠輕松地將指標集成到你的應用程序中。它還支持各種導出方式,包括HTTP接口、Pushgateway和文件輸出等。

5.3 Prometheus 常用的Exporter

Download | Prometheus,在Prometheus 官方的下載鏈接中提供了多種Exporter可供日常監控使用,如下:

只要我們在相應的服務器上部署對應的Exporter,然后再在Prometheus 中集成進去,就可以完成使用Prometheus 對應相關服務,中間件等監控工作。參考這個文檔,里面列舉了常用的各種Exporter:Exporters and integrations | Prometheus

5.3.1 node_exporter

在Prometheus的架構設計中,Prometheus Server并不直接對某個服務進行監控,其主要任務是負責收集數據,存儲數據并對外提供數據查詢的支持,因此為了能夠監控到某些特定的指標,比如主機的CPU使用率,網絡,負載等參數指標時,需要使用到Exporter,Prometheus 周期性的從Exporter暴露的http地址中拉取監控的樣本數據。如下圖所示:

從上圖不難看出,Exporter負責從目標目標源端收集數據,并把收集到的數據轉換為Prometheus支持的時序數據格式。 和傳統的指標數據收集組件不同的是,它只負責收集,并不向Server端發送數據,而是等待Prometheus Server 主動抓取,node-exporter 默認的抓取url地址:http://ip:9100/metrics

  • node-exporter用于采集node的運行指標,包括node的cpu、load、filesystem、meminfo、network等基礎監控指標,類似于zabbix監控系統的的zabbix-agent;

  • node-export由Prometheus官方提供、維護,屬于監控指標收集類UNIX內核操作系統的必備的exporter。

  • 常見的 Node Exporter 收集的信息包括 CPU 使用率、內存使用情況、磁盤使用率、網絡統計以及系統負載等。通過這些指標,管理員可以更好地了解服務器的運行情況,并及時采取措施以保證系統的穩定性和可靠性。

5.3.2 mysqld_exporter

mysqld_exporter 是一個用于提取 MySQL 數據庫信息的 Prometheus exporter。類似于 Node Exporter,它也可以作為一個獨立的二進制文件運行,并將 MySQL 數據庫的各種指標暴露為 Prometheus 格式,供 Prometheus Server 使用。

  • mysqld_exporter 是針對 MySQL 數據庫的監控工具,可以收集諸如連接數、查詢性能、復制狀態等重要指標。這些指標對于數據庫管理員來說非常有價值,能夠幫助他們實時監控數據庫的運行情況、識別潛在問題,并進行性能調優和故障排查。

  • 與 Node Exporter 類似,mysqld_exporter 也是構建現代化監控和報警系統的關鍵組成部分,通過定期收集和展示數據庫性能數據,幫助管理員保證數據庫的穩定性和可靠性。

mysqld_exporter 作用:

mysqld_exporter 是一個專門用于從 MySQL 數據庫中提取監控數據的工具,主要有以下幾個作用:

  • 性能監控

    • mysqld_exporter 收集有關 MySQL 數據庫的各種性能指標,如查詢延遲、吞吐量、鎖等待等。這些數據可以幫助管理員分析數據庫的性能瓶頸,進行性能優化。

  • 健康檢查

    • 通過監控 MySQL 實例的狀態指標,如連接數、慢查詢數、復制狀態等,mysqld_exporter 能夠幫助識別數據庫可能存在的問題,從而提前進行預防和維護。

  • 趨勢分析

    • 將 MySQL 性能數據暴露給 Prometheus 后,管理員可以使用 Prometheus 提供的查詢語言(PromQL)來生成圖表,分析性能趨勢,制定長期的維護計劃。

  • 報警系統

    • 配合 Prometheus 的報警功能,mysqld_exporter 收集的數據可以用來設置報警規則,及時通知管理員數據庫異常情況,從而迅速進行處理。

  • 提供可視化監控

    • 通過將 mysqld_exporter 收集的指標數據發送到 Prometheus,管理員可以在 Grafana 等工具中創建儀表盤,實現數據庫性能的可視化監控。

mysqld_exporter 主要監控指標

mysqld_exporter 可以暴露以下幾類主要指標:

  • 連接數

    • mysql_global_status_connections:總連接數

    • mysql_global_status_threads_connected:當前連接數

  • 查詢性能參數

    • mysql_global_status_queries:總查詢數

    • mysql_global_status_slow_queries:慢查詢數

  • 復制狀態

    • mysql_slave_status_seconds_behind_master:從庫延遲主庫的時間

  • 緩存與緩沖區

    • mysql_global_status_innodb_buffer_pool_reads:InnoDB 緩沖池讀取次數

    • mysql_global_status_innodb_buffer_pool_hit_rate:InnoDB 緩沖池命中率

  • 鎖等待

    • mysql_global_status_innodb_row_lock_waits:InnoDB 行鎖等待次數

通過這些指標,mysqld_exporter 支持全面的 MySQL 數據庫監控,幫助維護數據庫的健康和性能。

5.4 node_exporter部署與使用

node_exporter官網安裝包下載地址:https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gzicon-default.png?t=N7T8https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz登錄服務器之后可以使用下面的命令下載:

wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz

5.4.2 解壓node_exporter

解壓到當前目錄

tar -zxvf node_exporter-1.8.1.linux-amd64

5.4.3 啟動node_exporter

進入主目錄,找到下面的啟動腳本

在當前目錄下直接使用: ./node_exporter 即可啟動,暴露的metrics 端口為9100;

5.4.4 訪問界面

node_exporter 正常啟動后,可以在瀏覽器通過: ip:9100訪問metrics 的端點,如下:

點擊 Metrics,可以看到里面展示了更加詳細的各類監控指標信息,這里主要監控的是本機的

通過node_exporter 暴露了這么多的主機信息之后,稍后就可以納管到Prometheus里面進行界面的可視化展現,或者后續集成到grafana中進行更完美的呈現。

5.4.5 Prometheus接入node_exporter

進入Prometheus主目錄,找到prometheus.yml配置文件,然后在配置文件最后,再增加一個job_name的配置,如下:

配置并保存之后,重啟Prometheus,重啟之后再次進入Prometheus的控制臺

通過Status菜單找到Targets,可以看到,此時上一步啟動的node_expoter服務就被納管進來了,也可以基于node_expoter中收集的指標,在Graph中進行搜索;

5.5 mysqld_exporter部署與使用

使用mysqld_exporter可以監控指定的mysql服務信息,從而上報到Prometheus控制臺進行展現,下面介紹下mysqld_exporter的部署與使用。

5.5.1 前置準備

找一臺服務器提前部署mysql服務,可以是docker部署的,也可以是主機安裝的,均可,我這里使用docker提前開啟了一個mysql8的容器

5.5.2 下載安裝包

在官網找到如下的下載地址,在服務器目錄使用下面的命令下載安裝包并解壓

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz

5.5.3 創建mysql賬戶

創建一個特定的賬戶,暴露給mysqld_exporter使用,建議不要使用root賬戶,自己創建一個,參考下面的命令:

GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'mysql_monitor'@'%' IDENTIFIED BY 'exporter_mysql';
FLUSH PRIVILEGES;

5.5.4 創建mysql配置連接文件

創建一個配置文件,配置連接的賬戶,密碼等信息,如下在mysqld_exporter解壓后的文件中:

在config.my.cnf文件中配置如下信息:

[client]
user=連接mysql的賬戶名
password=連接mysql的密碼
host=IP地址
port=端口(默認是3306的話可以不用配置)

5.5.5 啟動mysqld_exporter服務

在當前的目錄下,使用下面的命令進行啟動

./mysqld_exporter --config.my-cnf=./config.my.cnf

5.5.6 界面訪問metrics

默認情況下,mysqld_exporter服務暴露的是9104端口,瀏覽器可以通過: ip:9104進行訪問,如下:

點擊Metrics,進去之后可以看到里面詳細的各類關于mysql的監控指標信息

5.5.7 Prometheus接入mysqld_exporter

參照上一步配置node_exporter的方式,配置mysqld_exporter,編輯prometheus.yml文件,在配置文件底部配置一個新的關于mysql 的job,如下:

然后重啟Prometheus服務,進入Prometheus的控制臺,可以看到一個mysql的exporter就接入進來了

六、Prometheus對接Grafana

在上文,我們使用node_exporter以及mysqld_exporter接入到Prometheus之后發現,盡管可以在Prometheus簡陋的控制臺界面上看到被監控的服務指標信息,但是用起來還是不夠便捷的,有沒有一種方式,讓接入進來的被監控的服務指標以更直觀的方式呈現呢?這就是接下來要介紹的Grafana這個組件。

官網地址:Grafana: The open observability platform | Grafana Labs

6.1 Grafana是什么

Grafana 是一個開源的數據可視化和監控平臺,廣泛用于實時監控和數據分析。它支持從多種數據源中獲取數據,并通過靈活的查詢和圖表展示功能,幫助用戶實現高度定制化的監控和分析需求。Grafana 可以與 Prometheus、MySQL 等數據源集成,提供直觀的儀表盤和圖表,用于展示系統、應用程序或服務的性能數據和健康狀態,從而幫助用戶快速識別問題并做出響應。

Grafana 是一個可視化面板,有著非常美觀的圖表和布局展示,功能齊全的度量儀表盤和各類圖形編輯器,支持Graphite,zabbix,influxdb,Prometheus,es等作為輸入的數據源,比Prometheus自帶的圖表展示功能強大太多,使用更加靈活,插件更加豐富,功能也更加強大。

6.2 Grafana作用

Grafana 是一個功能強大的開源數據可視化和監控平臺,主要作用包括:

  • 數據可視化

    • Grafana 提供靈活的圖表和儀表盤功能,可以從各種數據源中獲取數據,并以直觀的方式展示系統、應用程序或服務的性能數據和健康狀態。管理員可以定制化地配置圖表以滿足特定的監控需求。

  • 多數據源集成

    • 支持與多種數據源(如 Prometheus、MySQL 等)集成,能夠統一展示不同數據源的監控數據,幫助管理員在同一個平臺上查看和分析多個系統的性能。

  • 報警和通知

    • Grafana 具有強大的報警功能,可以基于設定的監控指標和閾值觸發報警,及時通知管理員系統或服務出現異常情況,支持多種通知渠道,如電子郵件、Slack 等。

  • 可視化分析

    • 提供高級的數據分析功能,管理員可以利用 Grafana 的查詢語言和聚合功能(如PromQL),對歷史數據進行趨勢分析和性能優化,幫助制定長期的系統維護計劃。

  • 用戶界面和配置管理

    • Grafana 提供直觀的用戶界面,簡化了儀表盤和數據源的配置管理過程,使管理員能夠快速部署和調整監控和數據可視化環境。

  • 社區支持

    • Grafana 是一個開源項目,擁有活躍的社區,用戶可以獲得免費的支持、文檔和社區插件。

總的來說,Grafana 是一個強大的工具,用于監控和分析各種數據源的性能和健康狀況,幫助管理員及時發現和解決系統或服務中的問題,保證其穩定性和可靠性。

6.3 Grafana部署

Grafana可以基于linux的二進制包安裝,也可以基于docker的方式安裝,官網安裝包下載地址:Download Grafana | Grafana Labs ,可以根據自己的需要選擇合適的包安裝;

6.3.1 啟動Grafana容器

使用下面docker命令啟動Grafana容器

docker run -d -p 3000:3000 grafana/grafana

6.3.2 訪問Grafana控制臺

瀏覽器訪問: ip:3000,初次加載可能有點慢,最后將會看到如下的登錄頁面,默認登錄賬戶密碼:admin/admin

登錄成功后,來到Grafana主頁,效果如下,還是比較炫酷的;

6.4 Prometheus接入Grafana

基于上面搭建完成的Grafana服務,直接在Grafana控制臺上進行配置即可,參照如下的操作步驟:

6.4.1 添加數據源

如下,選擇添加你的第一個數據源

來到下面的頁面后,可以看到這里提供了很多種數據源可供選擇接入到Grafana,這里我們選擇Prometheus

6.4.2 配置Prometheus連接信息

在下面的頁面中,填寫你要接入的Prometheus地址,表單中其他地方不清楚的話可以保持默認即可;

點擊保存和測試,確保能夠連接上prometheus服務

6.4.3 添加一個dashboard模板

如何讓接入Prometheus的exporter監控指標信息通過grafana展示出來了,在grafana需要配置一個dashboard來展示,所以在上一步完成之后,首先需要添加一個dashboard的模板進來,比如用這個dashboard模板展示上文中的node_exporter監控的主機指標信息;

grafana的dashboards模板地址:Grafana dashboards | Grafana Labs,可以看到官方提供了非常多的面板,可以根據自己的需求選擇合適的使用,也可以在這里輸入你想要的dashboard模板;

比如我在這里搜索linux,找到下面的一個面板模板給下面配置使用;

6.4.4 grafana配置dashboard模板

在grafana的控制臺上找到配置dashboard的地方,如下點擊創建模板

點擊導入一個dashboard

在這里提供了多種配置dashboard的方式,可以選擇導入json文件,也可以使用拷貝模板ID的方式

這里我們直接使用拷貝官網模板ID的方式,

拷貝上面的ID粘貼到這里并點擊load,之后看到下面的效果

最后選擇Prometheus,并點擊import,就跳轉到下面的界面,在該界面中,詳細的展示了監控的關于本機的詳細的指標信息,通過這個信息展示,就能更加全面的對機器做監控了。

七、寫在文末

本文詳細介紹了Prometheus 從部署安裝的過程,并通過實際案例分享了如何集成常用的Exporter,最后并通過整合Grafana演示了如何將監控的Metrics信息展示到Grafana的dashboard上,Prometheus在實際生產中可以構建出完整而龐大的監控體系,具有優秀的綜合表現,在很多企業的系統或項目中都有使用,值得深入研究,本篇到此結束,感謝觀看。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39880.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39880.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何使用C++進行高效的數據處理和數據挖掘?

如何使用C進行高效的數據處理和數據挖掘? 數據處理和數據挖掘在如今信息爆炸的時代變得越來越重要。為了快速、高效地處理和分析大量的數據,選擇合適的編程語言非常重要。C作為一種高性能的編程語言,在數據處理和數據挖掘領域也有廣泛的應用…

open3d基礎使用-簡單易懂

Open3D是一個開源庫,主要用于快速開發處理3D數據的軟件。它提供了豐富的數據結構和算法,支持點云、網格和RGB-D圖像等多種3D數據的處理。以下是對Open3D基礎使用的詳細歸納和說明: 一、安裝Open3D Open3D可以通過Python的包管理器pip進行安…

8624 多項式系數累加和

這個問題可以通過使用數學的導數規則來解決。對于一個多項式,它的導數可以通過將每一項的系數乘以它的指數,然后降低該項的指數來得到。這個過程可以重復M次來得到多項式的M階導數。然后,我們可以簡單地將所有項的系數相加來得到結果。 以下…

3D Gaussian Splatting代碼中的train和render兩個文件代碼解讀

現在來聊一聊訓練和渲染是如何進行的 training train.py line 31 def training(dataset, opt, pipe, testing_iterations, saving_iterations, checkpoint_iterations, checkpoint, debug_from):# 初始化第一次迭代的索引為0first_iter 0# 準備輸出和日志記錄器tb_writer p…

Go語言中的閉包函數:強大而靈活的編程工具

Go語言中的閉包函數:強大而靈活的編程工具 閉包是Go語言中一個非常強大和有趣的特性。它不僅能夠幫助我們寫出更簡潔、更優雅的代碼,還能解決一些特定的編程問題。本文將深入探討Go語言中閉包的概念、使用方法和應用場景。 什么是閉包? 閉包是一個函數值,它引用了其外部…

【mybatis】mybatis-plus_CRUD具體操作

1、環境準備 1. 環境準備 1. 引入依賴 在Spring Boot項目的pom.xml文件中引入MyBatis-Plus及其數據庫驅動的依賴。這里以MySQL為例&#xff1a; <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> …

wordpress企業主題和wordpress免費主題

農業畜牧養殖wordpress主題 簡潔大氣的農業畜牧養殖wordpress主題&#xff0c;農業農村現代化&#xff0c;離不開新農人、新技術。 https://www.jianzhanpress.com/?p3051 SEO優化wordpress主題 簡潔的SEO優化wordpress主題&#xff0c;效果好不好&#xff0c;結果會告訴你…

JS中的上下文

一.執行上下文的概念&#xff1a; 執行上下文簡稱上下文。變量或者函數的上下文決定了它們可以訪問哪些數據&#xff0c;以及它們的行為。每一個上下文都具有一個關聯的變量對象&#xff0c;而這個上下文中定義的所有變量和函數都存在于這個對象上。 二.JS中上下文的執行機制&a…

第一后裔The First Descendant延遲、卡頓、無法聯機?

The First Descendant第一后裔游戲中還設計了多種輔助攻擊手段&#xff0c;它們如同角色手中的魔法&#xff0c;為戰斗增添了無數可能性。這些輔助攻擊手段或能造成范圍傷害&#xff0c;或能減速敵人&#xff0c;甚至能召喚出強大的支援力量。最近有玩家反映&#xff0c;遇到了…

Windows條件競爭提權漏洞復現(CVE-2024-300889)

漏洞原理 當內核將當前令牌對象的 _AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION 復制到用戶模式時&#xff0c;錯誤位于函數 AuthzBasepCopyoutInternalSecurityAttributes 內部&#xff0c;該模式的結構如下&#xff1a; //0x30 bytes (sizeof) struct _AUTHZBASEP_SECURIT…

科研工具|從圖片中提取曲線數據

最近水哥在做一個項目時需要用到一篇論文中的數據&#xff0c;而這數據是作者的實驗數據&#xff0c;且年代較為久遠&#xff0c;聯系原作者要一份數據也不太現實&#xff0c;因而只能從論文的圖片中提取數據了。 目前市面上有很多小軟件可以實現這方面的功能&#xff0c;比如…

DVT:華為提出動態級聯Vision Transformer,性能杠杠的 | NeurIPS 2021

論文主要處理Vision Transformer中的性能問題&#xff0c;采用推理速度不同的級聯模型進行速度優化&#xff0c;搭配層級間的特征復用和自注意力關系復用來提升準確率。從實驗結果來看&#xff0c;性能提升不錯 來源&#xff1a;曉飛的算法工程筆記 公眾號 論文: Not All Image…

應用進程、SurfaceFlinger進程、HWC進程 之間的關系

應用進程、SurfaceFlinger進程、HWC&#xff08;Hardware Composer&#xff09;進程在Android系統中扮演著重要的角色&#xff0c;它們之間的關系和通信流程是Android圖形顯示系統的核心部分。以下是這三者之間關系和通信流程的詳細分析&#xff1a; 一、三者之間的關系 應用進…

AI 寫作:隨著互聯網的普及、人工智能的應用,越來越多的問題能很快得到答案。那么,我們的問題是否會越來越少?以上材料引發了你怎樣的聯想和思考?

隨著互聯網的迅速發展和人工智能技術的進步&#xff0c;信息獲取的速度和廣度都達到了前所未有的程度。人們只需輕點幾下鼠標或對著智能設備說出一句指令&#xff0c;海量的知識和解決方案就在眼前。這種便捷無疑極大地提高了我們的工作效率和生活質量&#xff0c;使我們在面對…

智慧應急管理平臺:數字孿生,讓防汛救災更科學高效

近期全國各地暴雨頻發&#xff0c;城市排水系統面臨著前所未有的挑戰&#xff0c;應急防澇已成為城市管理中不可或缺的一環。在這個信息化、智能化的時代&#xff0c;數字孿生技術以其獨特的優勢&#xff0c;為應急領域帶來了革命性的變革。數字孿生&#xff0c;作為現實世界在…

揭秘:學校教室采用數碼管同步時鐘的原因-訊鵬電子鐘

在學校的教室里&#xff0c;我們常常會看到數碼管同步時鐘的身影。究竟是什么原因讓它成為學校教室的寵兒呢&#xff1f;讓我們一同來探究其中的奧秘。 數碼管同步時鐘具有極高的準確性。對于學校這樣一個對時間管理要求嚴格的場所&#xff0c;準確的時間是保障教學秩序的基石。…

SwinIR: Image Restoration Using Swin Transformer(ICCV 2021)含代碼復現

目錄 一、Introduction 1 Motivation 2 Contribution 二、原理分析 1 Network Architecture 1&#xff09;Shallow feature extraction 2) deep feature extraction 3) image reconsruction modules 4) loss function 2 Residual Swin Transformer Block 三、實驗結果…

沒有調用memcpy卻報了undefined reference to memcpy錯誤

現象 在第5行出現了&#xff0c;undefined reference to memcpy’ 1 static void printf_x(unsigned int val) 2{ 3 char buffer[32]; 4 const char lut[]{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}; 5 char *p buffer; 6 while (val || p buffer) { 7 *(p) …

基于循環神經網絡的一維信號降噪方法(簡單版本,Python)

代碼非常簡單。 import torch import torch.nn as nn from torch.autograd import Variable from scipy.io.wavfile import write #need install pydub module #pip install pydub import numpy as np import pydub from scipy import signal import IPython import matplot…

C語言學習記錄(十二)——指針與數組及字符串

文章目錄 前言一、指針和數組二、指針和二維數組**行指針(數組指針)** 三、 字符指針和字符串四、指針數組 前言 一個學習嵌入式的小白~ 有問題評論區或私信指出~ 提示&#xff1a;以下是本篇文章正文內容&#xff0c;下面案例可供參考 一、指針和數組 在C語言中 &#xff0…