Prometheus + Grafana 監控

Prometheus + Grafana 監控

官網介紹:Prometheus 是一個開源系統 監控和警報工具包最初由 SoundCloud 構建。自 2012 年成立以來,許多 公司和組織已經采用了 Prometheus,并且該項目具有非常 活躍的開發人員和用戶社區。它現在是一個獨立的開源項目 并獨立于任何公司進行維護。為了強調這一點,并澄清 該項目的治理結構,Prometheus 于 2016 年加入云原生計算基金會 作為 Kubernetes 之后的第二個托管項目。

省流:Prometheus 就像小區物業的智能監控系統,能24小時盯著服務器/應用服務有沒有"生病",一有問題就自動打電話通知管理員。最初是某個音樂公司開發的,現在變成全世界程序員共同維護的明星項目

Docker 安裝 Prometheus

要想使用 Prometheus,首先就需要將其部署下來才行,這里選擇使用部署方式是 Docker 自動化部署(默認 Docker 為安裝并配置好狀態,若沒有配置好 Docker,請先參考文章安裝好 Docker:https://blog.csdn.net/qq_73574147/article/details/133574279)

創建配置文件

創建一個 prometheus 文件夾,在其中創建一個prometheus.yml文件,并寫入下面的內容

global:scrape_interval: 15s  # 每15秒采集一次數據scrape_configs:- job_name: "prometheus"  # 監控對象名稱static_configs:- targets: ["localhost:9090"]  # 監控 Prometheus 自己

拉取鏡像

選擇拉取官方的 prom/prometheus 鏡像

image-20250227171352859

在控制臺輸入下面的命令(默認拉取最新版)

docker pull prom/prometheus

拉取成功之后(如圖)

image-20250227171656498

執行下面的命令啟動容器(注意: /path/prometheus 需換成實際路徑)

docker run -d -p 9090:9090 --name prometheus -v /path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

顯示下面的界面即為創建成功

image-20250227173248199

然后用瀏覽器訪問 http://localhost:9090,如果看到下面的 Prometheus 的 Web 界面即為啟動成功

image-20250227173415855

然后點擊菜單欄的 Status,再點擊 Target health

image-20250227173624224

看到 Prometheus 的狀態為 UP,即為正常

image-20250227173710873

監控 Docker 自身(可選)

這里需要先拉取 Node Exporter 容器鏡像(采集物理機硬件數據)

docker pull prom/node-exporter

執行下面的命令啟動 Node Exporter 容器

docker run -d --name node-exporter -p 9100:9100 --net="host" prom/node-exporter

在之前的 prometheus.yml 文件中添加以下內容(IP地址記得換成自己機器的IP地址)

- job_name: "docker"static_configs:- targets: ["192.168.1.11:9100"]  # 新增的監控目標

使用 Docker 重啟 Prometheus 容器

docker restart prometheus

可以看到 Target Health 中 Docker 與 Prometheus 的狀態都為 UP,說明已經啟動成功

image-20250227210429879

如果要監聽其他服務器主機的狀態也是如此操作。

安裝 Grafana

首先拉取 Grafana 的鏡像

docker pull grafana/grafana

image-20250227211117980

啟動 Grafana 容器

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

啟動成功之后,訪問地址:http://localhost:3000,用戶名與密碼都為 admin

如果想要單獨設置密碼,則在上述命令中追加一個-e GF_SECURITY_ADMIN_PASSWORD:password,password 為設置的密碼

docker run -d -p 3000:3000 --name=grafana -e GF_SECURITY_ADMIN_PASSWORD=password grafana/grafana

image-20250227212115668

登錄進去之后,點擊 Connections->Data Source

image-20250227213603291

點擊 Add data source,在里面找到 Prometheus (一般是第一個)

image-20250227213718851

也可以直接搜索

image-20250227213800115

點擊 Prometheus,然后設置名稱與其IP地址

image-20250227213921651

其他的配置選配(默認就行),一直往下滑,然后點擊 Sava & test

image-20250227214156191

當出現下面的提示時表示已經配置完成了

image-20250227214320077

設置 Dashboard

點擊右上角+號,選擇Import dashboard

image-20250227221645660

關于監控面板 Dashboard 模板的素材,可以下載使用 Grafana 官方提供的,訪問地址:https://grafana.com/grafana/dashboards/,通過選擇對應的數據源來找到合適的面板

image-20250227221951712

因為這里使用的是 Prometheus,使用 DataSource 選擇 Prometheus

然后點擊 Download JSON 就會得到一個 json 文件

image-20250227223118883

然后將下載的 json 文件拖到 Import dashboard 頁面中的上傳框中即可

image-20250227223229585

然后選擇剛才配置好的 Prometheus

image-20250227223337909

點擊 import 即可

當然,如果覺得下載 JSON 文件太麻煩,并且已經注意到下載的 JSON 文件的名稱,就會發現這些 dashboard 都有一個類似于 id 的標識

image-20250227223540126

這時候只需要回到Import dashboard頁面,將這個“id”輸入進去,點擊Load就可以實現跟下載 JSON 文件一樣的效果

image-20250227223653648

這里推薦幾個不錯的 Dashboard 模板

  • MySQL: 7362、7371、14057
  • Redis: 763、14192、14432
  • Nginx:9614、2949
  • Linux(服務器監控): 8919、9276、1860、12633

導入模板成功后效果圖如下(8919):
image-20250227224027329

ID:9276

image-20250228205102887

監控 MySQL(可選)

首先執行下面的命令安裝 MySQL Exporter

拉取 MySQL Exporter 鏡像

docker pull prom/mysqld-exporter

創建 MySQL Exporter 容器

MySQL主機IP和MySQL賬號密碼需換成自己的

docker run -d -p 9104:9104 --name mysql-exporter prom/mysqld-exporter --mysqld.username=root:123456 --mysqld.address=192.168.1.11:3306

prometheus.yml 文件中添加以下內容(IP地址記得換成安裝 Prometheus 機器的IP地址)

- job_name: "mysql"static_configs:- targets: ["192.168.1.11:9104"]  # 新增 MySQL 監控目標

重啟 Prometheus

docker restart prometheus

打開網址 http://localhost:9090 查看 MySQL Exporter 狀態是否為 UP

image-20250228205643919

然后按照上述設置 Dashboard步驟,選擇設置一個 MySQL 的監控面板,如下圖(ID: 14057)

image-20250228220221606

監控 Redis(可選)

跟監控 MySQL 步驟類似,先拉取 Redis Exporter 鏡像

docker pull oliver006/redis_exporter

創建 Redis Exporter 容器(IP換成自己Redis主機的IP地址,密碼替換為實際的密碼,如果沒有設置密碼則把-e REDIS_PASSWORD="123456"刪除即可)

docker run -d --name redis-exporter -p 9121:9121 -e REDIS_ADDR="redis://192.168.1.2:6379" -e REDIS_PASSWORD="123456" oliver006/redis_exporter

prometheus.yml 文件中添加以下內容(IP地址記得換成安裝 Prometheus 機器的IP地址)

- job_name: "redis"static_configs:- targets: ["192.168.1.2:9121"]  # 新增 Redis 監控目標

重啟 Prometheus

docker restart prometheus

選擇設置一個 Redis 監控面板,如下圖(ID: 763)

image-20250228221645983

如上,就已經完成 Prometheus + Grafana 對 MySQL 、Redis、服務器主機(Linux) 的常規指標的簡單基礎監控,當然,也可以諸如此類進行**“熱插拔式”**的監控其他應用/服務(如Nginx等)

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

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

相關文章

【Python爬蟲(95)】Python爬蟲進階:構建大型垂直領域爬蟲系統

【Python爬蟲】專欄簡介:本專欄是 Python 爬蟲領域的集大成之作,共 100 章節。從 Python 基礎語法、爬蟲入門知識講起,深入探討反爬蟲、多線程、分布式等進階技術。以大量實例為支撐,覆蓋網頁、圖片、音頻等各類數據爬取,還涉及數據處理與分析。無論是新手小白還是進階開發…

Node.js定義以及性能優化

Node.js Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行時,廣泛用于構建高性能的網絡應用。以下是一些常見的 Node.js 面試題及其解答,幫助你準備面試: 1. 什么是 Node.js? Node.js 是一個基于 Chrome V8 引擎的 JavaSc…

開源|Documind協同文檔(接入deepseek-r1、支持實時聊天)

Documind 🚀 項目介紹 Documind 一個支持實時聊天和接入deepseek-r1模型AI助手的協同文檔編輯項目 前端:NextJS React TailwindCSS ShadcnUl Tiptap Zustand后端:NextJS Convex Liveblocks Clerk項目預覽:Documind 預覽…

JVM內存模型詳解:各個區域的作用與原理

引言 Java虛擬機(JVM)是Java程序運行的核心環境,它負責管理程序的內存、執行字節碼以及提供跨平臺的支持。理解JVM的內存模型對于編寫高效、穩定的Java程序至關重要。本文將詳細介紹JVM的內存模型,并深入探討各個內存區域的作用和…

機器學習之集成學習思維導圖

學習筆記—機器學習-集成學習思維導圖 20250227,以后復習看(周老師的集成學習) PS:圖片看不清,可以下載下來看。 往期思維導圖: 機器學習之集成學習Bagging(隨機深林、VR-樹、極端隨機樹&…

【http://noi.openjudge.cn/】4.3算法之圖論——1538:Gopher II

[【http://noi.openjudge.cn/】4.3算法之圖論——1538:Gopher II] 題目 查看提交統計提問 總時間限制: 2000ms 內存限制: 65536kB 描述 The gopher family, having averted the canine threat, must face a new predator. The are n gophers and m gopher holes, each at di…

Apache Spark中的依賴關系與任務調度機制解析

Apache Spark中的依賴關系與任務調度機制解析 在Spark的分布式計算框架中,RDD(彈性分布式數據集)的依賴關系是理解任務調度、性能優化及容錯機制的關鍵。寬依賴(Wide Dependency)與窄依賴(Narrow Dependency)作為兩種核心依賴類型,直接影響Stage劃分、Shuffle操作及容…

【計算機網絡】TCP協議相關總結,TCP可靠性的生動講解

TCP 可靠性 確保快遞不丟、不亂、不過載 機制作用(快遞類比)防止的問題檢驗和檢查包裹是否損壞,損壞就重新發數據出錯序列號給每個包裹編號,按順序整理亂序、重復確認應答每送到一件,就讓收件人簽收丟失滑動窗口控制…

Go基于協程池的延遲任務調度器

原理 通過用一個goroutine以及堆來存儲要待調度的延遲任務,當達到調度時間后,將其添加到協程池中去執行。 主要是使用了chan、Mutex、atomic及ants協程池來實現。 用途 主要是用于高并發及大量定時任務要處理的情況,如果使用Go協程來實現每…

杰發科技AC7801——滴答定時器獲取時間戳

1. 滴答定時器 杰發科技7801內部有一個滴答定時器,該定時器是M0核自帶的,因此可以直接用該定時器來獲取時間戳。 同樣,7803也可以使用該方式獲取時間戳。 2. 滴答定時器原理 SysTick是一個24位的遞減計數器,它從預設的重裝載值…

湖倉一體概述

湖倉一體之前,數據分析經歷了數據庫、數據倉庫和數據湖分析三個時代。 首先是數據庫,它是一個最基礎的概念,主要負責聯機事務處理,也提供基本的數據分析能力。 隨著數據量的增長,出現了數據倉庫,它存儲的是…

第十五屆藍橋杯單片機組4T模擬賽三(第二套)

本套試題在4T平臺中的名字為第15屆藍橋杯單片機組模擬考試三,不知道哪套是4T的模擬賽,所以兩套都敲一遍練練手感。 為了代碼呈現美觀,本文章前面的各個模塊在main函數中的處理函數均未添加退出處理,在最后給出的完整代碼中體現。 …

CT技術變遷史——CT是如何誕生的?

第一代CT(平移-旋轉) X線球管為固定陽極,發射X線為直線筆形束,一個探測器,采用直線和旋轉掃描相結合,即直線掃描后,旋轉1次,再行直線掃描,旋轉180完成一層面掃描,掃描時間3~6分鐘。矩陣象素256256或320320。僅用于顱腦檢查。 第二代CT (平移-旋轉) 與第一代無質…

Virtual Box虛擬機安裝蘋果Monterey和big sur版本實踐

虛擬機安裝蘋果實踐,在Windows10系統,安裝Virtual Box7.1.6,安裝虛擬蘋果Monterey版本Monterey (macOS 12) 。碰到的主要問題是安裝光盤不像Windows那么容易拿到,而且根據網上很多文章制作的光盤,在viritualBox里都無法…

dify基礎之prompts

摘要:在大型語言模型(LLM)應用中,Prompt(提示詞)是連接用戶意圖與模型輸出的核心工具。本文從概念、組成、設計原則到實踐案例,系統講解如何通過Prompt解鎖LLM的潛能,提升生成內容的…

【學寫LibreCAD】0 仿寫LibreCAD簡介

一、LibreCAD 核心模塊: 核心模塊(Core) 功能:處理 CAD 的核心邏輯,如幾何計算、圖形對象管理、坐標系轉換等。關鍵組件: 圖形對象:如直線、圓、圓弧、多段線等。數學工具:向量、矩…

HTML元素,標簽到底指的哪塊部分?單雙標簽何時使用?

1. 標簽&#xff08;Tag&#xff09; vs 元素&#xff08;Element&#xff09; 標簽&#xff08;Tag&#xff09; 標簽是 HTML 中用于定義元素的符號&#xff0c;用尖括號 < > 包裹。例如 <img> 是標簽。元素&#xff08;Element&#xff09; 元素是由 標簽 內容…

Android APK組成編譯打包流程詳解

Android APK&#xff08;Android Package&#xff09;是 Android 應用的安裝包文件&#xff0c;其組成和打包流程涉及多個步驟和文件結構。以下是詳細的說明&#xff1a; 一、APK 的組成 APK 是一個 ZIP 格式的壓縮包&#xff0c;包含應用運行所需的所有文件。解壓后主要包含以…

Token相關設計

文章目錄 1. 雙Token 機制概述1.1 訪問令牌&#xff08;Access Token&#xff09;1.2 刷新令牌&#xff08;Refresh Token&#xff09; 2. 雙Token 認證流程3. Spring Boot 具體實現3.1 生成 Token&#xff08;使用 JWT&#xff09;3.2 解析 Token3.3 登錄接口&#xff08;返回…

HTTP 請求時傳遞多部分表單數據

HTTP 請求時傳遞多部分表單數據&#xff08;multipart/form-data&#xff09; --data-raw $------demo11111\r\nContent-Disposition: form-data; name"Filedata"; filename"截屏2025-02-27 15.45.46.png"\r\nContent-Type: image/png\r\n\r\n\r\n------d…