SpringBoot集成Prometheus實現(xiàn)監(jiān)控的過程
一.SpringBoot配置Prometheus
- pom.xml 引入監(jiān)控以及prometheus依賴
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>- 自定義指標
引入上面兩個依賴之后,SpringBoot的/actuator/prometheus路徑會默認暴露一些指標。

prometheus通過Http協(xié)議拉取的指標數(shù)據(jù)格式為
指標名 {標簽} 值
如 jvm_memory_max_bytes{application=“blog”,area=“heap”,id=“Eden Space”,} 7.1630848E7
這個指標的指標名是jvm_memory_max_bytes,標簽是 {application=“blog”,area=“heap”,id=“Eden Space”,},而指標值是 7.1630848E7,將來使用PromQL查詢時,標簽可以起到篩選條件的作用。
除了引入依賴所提供的指標外,還可以自定義指標。
@SuppressWarnings("all")
@Component
public class MetricsCounter {
private static Counter loginCounter = null;
private static Counter registerCounter = null;
private static AtomicInteger atomicInteger;
public MetricsCounter(MeterRegistry registry) {
loginCounter = registry.counter("login_nums");
registerCounter = registry.counter("register_nums");
atomicInteger = registry.gauge("ssl_expire_days", new AtomicInteger(10));
}
/**
* 此方法可能會被多線程執(zhí)行,需要考慮線程安全問題
*/
public synchronized static void incrLogin() {
loginCounter.increment();
}
public synchronized static void incrRegister() {
registerCounter.increment();
}
public static void updateSslExpireDays(){
atomicInteger.set(new Random().nextInt(100));
}
}通過拿到MeterRegistry 自定義指標,這里定義了兩種類型的指標,一種是Counter 計數(shù)器,值只增不減,一種是gauge,gauge類型可以隨意修改。
2.編寫一個接口,改變指標
@RestController
public class TestRest {
@GetMapping("t1")
public String t1(){
MetricsCounter.incrLogin();
MetricsCounter.incrRegister();
MetricsCounter.updateSslExpireDays();
return "t1";
}
}3.訪問路徑

可以看到最新的指標值。
二 、 Prometheus 端配置
SpringBoot將指標暴露出去后,還需要配置Prometheus 的配置文件,讓Prometheus 定時去訪問路徑拉取到指標。
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "nodeExporter"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.240.130:9100"] #監(jiān)控自己主機上的端口
- job_name: "springboot"
scrape_interval: 3s # 多久采集一次數(shù)據(jù)
scrape_timeout: 3s # 采集時的超時時間
metrics_path: '/actuator/prometheus' # 采集的路徑
static_configs: # 采集服務的地址,設置成Springboot應用所在服務器的具體地址
- targets: ["192.168.1.103:8188"]alerting : 配置告警管理器地址
rule_files : 配置告警 規(guī)則
scrape_configs : 配置指標抓取規(guī)則,在這個配置項下配置SpringBoot的指標路徑。
- 啟動promteus
nohup ./prometheus --config.file=./prometheus.yml &
啟動后的端口默認是 9090

可以在上述的input輸入框中輸入PromQL進行對指標的查詢。
具體的算術運算符、關系運算符以及內(nèi)置函數(shù)等 可參考 Prometheus官網(wǎng)。
到此SpringBoot已完成與Prometheus的整合。
到此這篇關于SpringBoot集成Prometheus實現(xiàn)監(jiān)控的文章就介紹到這了,更多相關SpringBoot Prometheus實現(xiàn)監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 使用Prometheus+Grafana的方法監(jiān)控Springboot應用教程詳解
- SpringBoot+Prometheus+Grafana實現(xiàn)應用監(jiān)控和報警的詳細步驟
- springboot2.X整合prometheus監(jiān)控的實例講解
- SpringBoot使用prometheus監(jiān)控的示例代碼
- Prometheus監(jiān)控Springboot程序的實現(xiàn)方法
- SpringBoot使用Prometheus實現(xiàn)監(jiān)控
- 使用SpringBoot+Prometheus+Grafana實現(xiàn)可視化監(jiān)控
- SpringBoot使用Prometheus采集自定義指標數(shù)據(jù)的方法詳解
- SpringBoot集成 Prometheus進行高效監(jiān)控的實現(xiàn)
相關文章
Spring MVC Controller返回值及異常的統(tǒng)一處理方法
這篇文章主要給大家介紹了關于Spring MVC Controller返回值及異常的統(tǒng)一處理方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Spring MVC具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-11-11
SpringBoot使用log4j2將日志記錄到文件及自定義數(shù)據(jù)庫的配置方法
這篇文章主要介紹了SpringBoot使用log4j2將日志記錄到文件及自定義數(shù)據(jù)庫的配置方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-03-03
SpringCloud使用Feign實現(xiàn)服務調(diào)用
這篇文章主要為大家詳細介紹了SpringCloud使用Feign實現(xiàn)服務調(diào)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
使用JAVA8 filter對List多條件篩選的實現(xiàn)
這篇文章主要介紹了使用JAVA8 filter對List多條件篩選的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
springboot使用com.github.binarywang包實現(xiàn)微信網(wǎng)頁上的支付和退款
最近做項目需要實現(xiàn)在pc端需要實現(xiàn)微信的支付,本文主要介紹了springboot使用com.github.binarywang包實現(xiàn)微信網(wǎng)頁上的支付和退款,具有一定的參考價值,感興趣的可以了解一下2024-05-05
MyBatis通用Mapper中的通用example(排序)詳解
這篇文章主要介紹了MyBatis通用Mapper中的通用example(排序)詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12

