Prometheus-3--Prometheus是怎么抓取Java應用,Redis中間件,服務器環境的指標的?

1、Prometheus抓取Java應用的指標

1、數據來源:Java應用自身暴露的指標

Java應用的指標數據來源于應用代碼中定義的指標對象(如Counter、Gauge、Histogram等),通過Prometheus客戶端庫(如io.prometheus:client_java)將這些指標注冊到默認的CollectorRegistry,并通過HTTP服務器暴露/metrics端點。

簡單來說:
在你的java應用程序中引入Prometheus相關的jar包(即Prometheus的客戶端),在進行適當的配置即可。Prometheus server端會主動從你的服務中獲取java應用的相關指標。

2、實現步驟

1、Java端示例

(1)、引入依賴
在pom.xml中添加Prometheus客戶端庫依賴。
pom.xml示例:

<dependency><groupId>io.prometheus</groupId><artifactId>simpleclient</artifactId><version>0.16.0</version>
</dependency>
<dependency><groupId>io.prometheus</groupId><artifactId>simpleclient_httpserver</artifactId><version>0.16.0</version>
</dependency>

(2)、定義和注冊指標
在Java代碼中定義你需要監控的指標(如Counter計算器、Gauge儀表盤等),并注冊到CollectorRegistry收集器中。

java示例:

import io.prometheus.client.Counter;
import io.prometheus.client.Gauge;
import io.prometheus.client.exporter.HTTPServer;
import java.io.IOException;public class MyApplication {// 定義一個Counter指標:記錄HTTP請求次數static final Counter requests = Counter.build().name("http_requests_total").help("Total number of HTTP requests.").labelNames("method", "status").register();// 定義一個Gauge指標:記錄當前在線用戶數static final Gauge onlineUsers = Gauge.build().name("online_users").help("Current number of online users.").register();public static void main(String[] args) throws IOException {// 啟動HTTP服務器,暴露/metrics端點(默認端口8080)HTTPServer server = new HTTPServer(8080);// 模擬業務邏輯:增加Counter和Gauge的值requests.labels("GET", "200").inc();onlineUsers.inc(); // 用戶上線onlineUsers.dec(); // 用戶下線}
}

(3)、驗證指標暴露
啟動應用后,訪問http://localhost:8080/metrics,會看到類似以下輸出。

輸出示例:

# HELP http_requests_total Total number of HTTP requests.
# TYPE http_requests_total counter
http_requests_total{method="GET",status="200"} 1# HELP online_users Current number of online users.
# TYPE online_users gauge
online_users 0
2、Prometheus Server端示例

(1)、Prometheus server配置抓取java客戶端指標
在prometheus.yml中配置Prometheus Server抓取該指標。

yaml示例:

scrape_configs:- job_name: "java-app"static_configs:- targets: ["localhost:8080"]

2、Redis中間件的指標獲取

1、數據來源:Redis本身暴露的指標

Redis本身不直接支持Prometheus格式的指標,因此需要通過Redis Exporter來采集Redis的指標(如內存使用、連接數、命中率等),并轉換為Prometheus格式。

簡單來說:
采集中間件相關的指標數據需要借助特定的Exporter組件。如Mysql有Mysql Exporter;Redis有Redis Exporter等。

  • 以Redis為例,我們部署Redis Exporter,并指定監測的Redis服務。
  • Redis Exporter會檢測和獲取到相關Redis實例的指標,如:調用Redis的Info命令。
  • Prometheus Server會調用Redis Exporter的接口間接獲取到Redis實例的指標數據。

常見的Exporter:

  • 對Redis:使用redis_exporter
  • 對MySQL:使用mysqld_exporter
  • 對服務器環境:使用node_exporter

Exporter的作用:

  • 連接目標系統(如連接Redis實例)
  • 獲取原始指標數據(如 Redis 的 INFO命令輸出)
  • 將這些數據格式化為 Prometheus 能識別的格式
  • 暴露一個/metrics接口供Prometheus抓取

2、實現步驟

1、Redis Exporter部分示例

(1)、部署Redis Exporter
可以通過Docker或二進制方式部署Redis Exporter。

bash示例:

# 使用Docker部署
docker run -d \--name redis-exporter \-p 9121:9121 \-e REDIS_ADDR=redis-host:6379 \quay.io/prometheuscommunity/redis-exporter

(2)、驗證指標暴露
訪問http://localhost:9121/metrics,會看到Redis的指標數據。

輸出示例:

# HELP redis_connected_clients Number of client connections (excluding connections from slaves).
# TYPE redis_connected_clients gauge
redis_connected_clients 10# HELP redis_memory_used_bytes Total number of bytes allocated by Redis using its allocator.
# TYPE redis_memory_used_bytes gauge
redis_memory_used_bytes 1048576
2、Prometheus Server端示例

(1)、Prometheus配置抓取
在prometheus.yml中配置抓取Redis Exporter的指標。

yaml示例:

scrape_configs:- job_name: "redis"static_configs:- targets: ["localhost:9121"]

附:常見Redis指標

  • redis_connected_clients:當前連接的客戶端數量。
  • redis_memory_used_bytes:Redis使用的內存字節數。
  • redis_keyspace_hits:緩存命中次數。
  • redis_keyspace_misses:緩存未命中次數。

3、服務器運行環境的指標獲取

1、數據來源:服務器操作系統指標

服務器環境指標(如CPU、內存、磁盤I/O)需要通過Node Exporter來采集,它會讀取/proc文件系統或調用系統命令獲取數據。

簡單來說:
在需要檢測指標的服務器上部署Node Exporter組件。該組件會通過相關Linux命令獲取到機器的指標。之后Prometheus Serve調用Node Exporter的接口,間接獲取到了服務器的相關指標數據。

2、實現步驟

(1)、安裝Node Exporter
下載并啟動 Node Exporter。

bash示例:

# 下載
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz
# 解壓
tar xvfz node_exporter-*.linux-amd64.tar.gz
# 進入指定目錄
cd node_exporter-*.linux-amd64
# 啟動(默認端口9100./node_exporter

(2)、驗證指標暴露
訪問http://localhost:9100/metrics,會看到服務器的指標數據。

輸出示例:

# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{mode="idle",device="cpu0"} 12345.67# HELP node_memory_MemFree_bytes Free memory in bytes.
# TYPE node_memory_MemFree_bytes gauge
node_memory_MemFree_bytes 1073741824

(3)、Prometheus配置抓取
在prometheus.yml中配置抓取Node Exporter的指標。

yaml示例:

scrape_configs:- job_name: "node"static_configs:- targets: ["localhost:9100"]

附:常見服務器指標

  • node_cpu_seconds_total:CPU使用時間(按模式分組)。
  • node_memory_MemFree_bytes:空閑內存大小。
  • node_disk_io_time_seconds_total:磁盤I/O時間。
  • node_network_receive_bytes_total:網絡接收字節數。

4、總結:三類指標的獲取流程

在這里插入圖片描述

5、驗證和調試

1、檢查指標是否暴露

  • 使用curl或瀏覽器訪問/metrics端點。

bash示例:

curl http://localhost:8080/metrics

2、Prometheus界面驗證

  • 登錄Prometheus Web UI(默認http://localhost:9090)。
  • 輸入指標名稱(如http_requests_total)進行查詢。

3、Grafana可視化

  • 安裝Grafana,配置Prometheus數據源。
  • 導入預定義的Dashboard(如Node Exporter Full、Redis Exporter)。

通過以上步驟,你可以將Java應用、Redis中間件和服務器環境的指標集成到Prometheus監控體系中,并通過Grafana可視化展示。

向陽前行,Dare To Be!!!

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

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

相關文章

42.安卓逆向2-補環境-unidbg安裝和簡單使用

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

數據結構與算法:哈希函數的應用及一些工程算法

前言這篇里的東西可以說了解了解就行了。一、哈希函數均勻性展示原本讓deepseek轉了一下老師的java代碼&#xff0c;但發現復刻起來太麻煩了。又因為這個理解就好&#xff0c;競賽不會有&#xff0c;所以就直接貼老師的java代碼了……import java.security.MessageDigest; impo…

交叉編譯ARM環境

ARM交叉編譯 可以采用交叉編譯工具鏈&#xff1a; sudo apt-get install aarch64-linux-gnu-gcc sudo apt-get install aarch64-linux-gnu-g sudo apt-get install gcc-arm-linux-gnueabi sudo apt-get install g-arm-linux-gnueabi 上面兩個是64位&#xff0c;下面兩個是…

算法思想 之 拓撲排序問題

歡迎拜訪&#xff1a;霧里看山-CSDN博客 本篇主題&#xff1a;算法思想 之 拓撲排序問題 發布時間&#xff1a;2025.8.4 隸屬專欄&#xff1a;算法 目錄算法介紹核心原理適用場景實現步驟(Kahn 算法)例題課程表題目鏈接題目描述算法思路代碼實現課程表 II題目鏈接題目描述算法思…

機器學習 入門——決策樹分類

決策樹是一種直觀且強大的機器學習算法&#xff0c;適用于分類和回歸任務。本文將全面介紹決策樹分類的原理、實現、調優和實際應用。一、什么是決策樹分類1.概念決策樹分類是一種樹形結構的分類模型&#xff0c;它通過遞歸地將數據集分割成更小的子集來構建決策規則。就像我們…

虛擬機中查看和修改文件權限

在虛擬機中管理文件權限是系統管理的重要部分&#xff0c;無論是在Linux還是Windows虛擬機中。下面我將詳細介紹兩種主要系統的權限管理方法。Linux虛擬機中的文件權限管理查看文件權限使用ls命令&#xff1a;ls -l 文件名輸出示例&#xff1a;-rwxr-xr-- 1 user group 1024 Ju…

圖像處理拉普拉斯算子

AI對話記錄&#xff0c;還沒有來得及仔細驗證和推導&#xff0c;目前只是記錄 當然可以&#xff01;我們來一步步推導拉普拉斯算子在旋轉變換下保持不變的數學過程。這里以二維情況為例&#xff0c;最直觀也最常見。&#x1f9ee; 拉普拉斯算子旋轉不變性的推導&#xff08;二維…

React ahooks——副作用類hooks之useThrottleEffect

useThrottleEffect 是 ahooks 提供的節流版 useEffect&#xff0c;它在依賴項變化時執行副作用函數&#xff0c;但會限制執行頻率。一、基本語法useThrottleEffect(effect: React.EffectCallback,deps?: React.DependencyList,options?: Options )二、參數詳解2.1. effect (必…

【建模與仿真】融合畫像約束和潛在特征的深度推薦算法

導讀&#xff1a; 基于深度學習的推薦算法已成為推薦系統領域的研究趨勢。然而&#xff0c;大多數現有工作僅考慮單一的用戶與物品交互數據&#xff0c;限制了算法的預測性能。本文提出一種畫像約束的編碼方式&#xff0c;并融合隱因子模型中的潛在特征&#xff0c;豐富了推薦…

華為網路設備學習-26(BGP協議 二)路徑屬性

一、屬性分類二、屬性含義①公認必遵&#xff1a;所有BGP對等體 必須識別 且 在Update報文中攜帶1.Origin2.AS-Path3.Next hop②公認自決&#xff1a;所有BGP對等體 必須識別但可以不在Update報文中攜帶 1.Local-Preference2.ATOMIC_Aggregate③可選傳遞&#xff1a;所有BGP對…

從0搭建YOLO目標檢測系統:實戰項目+完整流程+界面開發(附源碼)

文章目錄一、前言二、專欄介紹三、已有系統介紹3.0 基于yolo通用目標檢測系統&#xff08;手把手教你修改成為自己的檢測系統&#xff09;3.1 基于yolov8柑橘檢測系統3.2 基于yolov8艦船檢測系統3.3 基于yolo11人臉檢測系統3.4 基于yolov8無人機影像光伏板缺陷檢測系統一、前言…

【測試】自動化測試工具基礎知識及基本應用

下面詳細介紹一些常用的自動化測試工具及其基本概念&#xff0c;并提供具體的示例代碼&#xff0c;幫助你更好地理解和應用這些工具。1. 自動化測試的基本概念自動化測試是通過軟件程序自動執行測試用例的過程。與手動測試相比&#xff0c;自動化測試能夠提高測試效率、減少人為…

ArcGIS的字段計算器生成隨機數

在ArcGIS的字段計算器中使用Python腳本生成0-100的隨機數&#xff0c;可以按照以下步驟操作&#xff1a; 打開屬性表&#xff0c;選擇要計算的字段打開字段計算器選擇"Python"解析器勾選"顯示代碼塊"在"預邏輯腳本代碼"中輸入以下代碼在下方表達…

【前端:Html】--1.1.基礎語法

目錄 1.HTML--簡介 2.HTML--編譯器 步驟一:啟動記事本 步驟二:用記事本來編輯 HTML 步驟三:保存 HTML 步驟四:在瀏覽器中運行 HTML 3.HTML--基礎 3.1.HTML聲明--!DOCTYPE 3.2.HTML 標題--h1 3.3.HTML 段落--p 3.3.1. 水平線--hr 3.3.2.換行符--br 3.3.3.固定格式…

FreeSWITCH 簡單圖形化界面46 - 收集打包的一些ASR服務

FreeSWITCH 簡單圖形化界面46 - 收集打包的一些ASR服務 0、一個fs的web配置界面預覽1、docker地址2、使用2.1 下載2.2 運行 3、例子3.1 下載3.2 啟動3.3 編譯mod_audio_fork或者mod_audio_stream模塊使用3.4 編寫呼叫路由和呼叫腳本呼叫路由呼叫腳本 3.5 esl捕獲識別結果3.6 其…

20250805問答課題-實現TextRank + 問題分類

textRank的工具包實現其他可能的實現方法&#xff0c;對比結果查找分類的相關算法 目錄 1. 關鍵詞提取TF-IDF TextRank 1.1. TF-IDF算法 1.2. TextRank算法 1.3. 雙算法提取關鍵詞 2. 問題分類 2.1. 預處理 2.2. 獲取BERT向量 2.3. 一級標簽預測 2.4. 二級標簽預測 3…

Memcached緩存與Redis緩存的區別、優缺點和適用場景

一、核心差異概述特性MemcachedRedis?數據結構?簡單鍵值存儲豐富數據結構&#xff08;String/Hash/List/Set等&#xff09;?持久化?不支持支持RDB和AOF兩種方式?線程模型?多線程單線程&#xff08;6.0支持多線程I/O&#xff09;?內存管理?Slab分配LRU淘汰多種淘汰策略&…

Git簡易教程

Git教程 VCS Version Control System版本控制系統 配置用戶名郵箱 配置用戶名和郵箱 git config --global user.name mihu git config --global user.email aaabbb.com初始化倉庫 從項目倉庫拉 git clone [項目地址]新建文件夾之后 git init提交操作 提交到倉庫 git add . #把…

關于Web前端安全之XSS攻擊防御增強方法

僅依賴前端驗證是無法完全防止 XSS的&#xff0c;還需要增強后端驗證&#xff0c;使用DOMPurify凈化 HTML 時&#xff0c;還需要平衡安全性與業務需求。一、僅依賴前端驗證無法完全防止 XSS 的原因及后端驗證的重要性1. 前端驗證的局限性前端驗證&#xff08;如 JavaScript 輸入…

消息系統技術文檔

消息系統技術文檔 概述 本文檔詳細說明了如何在現有的LHD通信系統中添加自己的消息類型&#xff0c;包括消息的發送、接收、解析和處理的完整流程。 系統架構 消息流程架構圖 #mermaid-svg-My7ThVxSl6aftvWK {font-family:"trebuchet ms",verdana,arial,sans-serif;f…