您好,登錄后才能下訂單哦!
小編給大家分享一下springboot中Prometheus的簡介及用法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
Prometheus 是一套開源的系統監控報警框架。它由工作在 SoundCloud 的 員工創建,并在 2015 年正式發布的開源項目。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,非常的受歡迎。
簡介
Prometheus 具有以下特點:
Prometheus 組成及架構
聲明:該小節參考了文章[Prometheus 入門與實踐]
Prometheus 生態圈中包含了多個組件,其中許多組件是可選的:
一些其他的工具。
其大概的工作流程是:
1.Prometheus server 定期從配置好的 jobs 或者 exporters 中拉 metrics,或者接收來自 Pushgateway 發過來的 metrics,或者從其他的 Prometheus server 中拉 metrics。
2.Prometheus server 在本地存儲收集到的 metrics,并運行已定義好的 alert.rules,記錄新的時間序列或者向 Alertmanager 推送警報。
3.Alertmanager 根據配置文件,對接收到的警報進行處理,發出告警。
4.在圖形界面中,可視化采集數據。
springboot 集成prometheus
在spring boot工程中引入actuator的起步依賴,以及micrometer-registry-prometheus的依賴。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>
暴露prometheus的接口;暴露metrics.tags,和spring.application.name一致。
server: port: 8081 spring: application: name: my-prometheus management: endpoints: web: exposure: include: 'prometheus' metrics: tags: application: ${spring.application.name}
寫一個API接口,用作測試。代碼如下:
@RestController public class TestController { Logger logger = LoggerFactory.getLogger(TestController.class); @GetMapping("/test") public String test() { logger.info("test"); return "ok"; } @GetMapping("") public String home() { logger.info("home"); return "ok"; } }
在瀏覽器上訪問http://localhost:8081/actuator/prometheus,展示的信息如下,這些信息都是actuator的一些監控信息。
# HELP jvm_gc_max_data_size_bytes Max size of old generation memory pool # TYPE jvm_gc_max_data_size_bytes gauge jvm_gc_max_data_size_bytes{application="my-prometheus",} 2.863661056E9 # HELP http_server_requests_seconds # TYPE http_server_requests_seconds summary http_server_requests_seconds_count{application="my-prometheus",exception="None",method="GET",outcome="CLIENT_ERROR",status="404",uri="/**",} 1.0 http_server_requests_seconds_sum{application="my-prometheus",exception="None",method="GET",outcome="CLIENT_ERROR",status="404",uri="/**",} 0.018082327 # HELP http_server_requests_seconds_max # TYPE http_server_requests_seconds_max gauge http_server_requests_seconds_max{application="my-prometheus",exception="None",method="GET",outcome="CLIENT_ERROR",status="404",uri="/**",} 0.018082327 # HELP jvm_threads_states_threads The current number of threads having NEW state # TYPE jvm_threads_states_threads gauge jvm_threads_states_threads{application="my-prometheus",state="waiting",} 12.0 jvm_threads_states_threads{application="my-prometheus",state="runnable",} 8.0 jvm_threads_states_threads{application="my-prometheus",state="timed-waiting",} 2.0 jvm_threads_states_threads{application="my-prometheus",state="terminated",} 0.0 jvm_threads_states_threads{application="my-prometheus",state="blocked",} 0.0 jvm_threads_states_threads{application="my-prometheus",state="new",} 0.0 # HELP process_files_open_files The open file descriptor count # TYPE process_files_open_files gauge ...省略更多
安裝Prometheus
安裝Prometheus很簡單,在linux系統上安裝,執行以下的安裝命令。其他的操作系統,比如windows、mac等在官網上(https://prometheus.io/download/)下載并安裝。
wget https://github.com/prometheus/prometheus/releases/download/v2.19.2/prometheus-2.19.2.darwin-amd64.tar.gz tar xvfz prometheus-*.tar.gz cd prometheus-*
修改Prometheus的配置文件prometheus.yml,代碼如下:
global: scrape_interval: 15s # By default, scrape targets every 15 seconds. # Attach these labels to any time series or alerts when communicating with # external systems (federation, remote storage, Alertmanager). external_labels: monitor: 'codelab-monitor' # 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: 'prometheus' # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s static_configs: - targets: ['localhost:9090'] - job_name: 'springboot_prometheus' scrape_interval: 5s metrics_path: '/actuator/prometheus' static_configs: - targets: ['127.0.0.1:8081']
使用以下的命令啟動prometheus,并通過–config.file指定配置文件
./prometheus --config.file=prometheus.yml
多次請求springboot項目的接口http://localhost:8081/test , 并訪問prometheus的控制臺http://localhost:9090/,展示的界面如下:
prometheus提供了一些可視化圖,比如使用柱狀圖來展示每秒請求數:
安裝grafana
grafana 是一款采用 go 語言編寫的開源應用,主要用于大規模指標數據的可視化展現,是網絡架構和應用分析中最流行的時序數據展示工具,目前已經支持絕大部分常用的時序數據庫。使用grafana去展示prometheus上的數據。先安裝,安裝命令如下:
wget https://dl.grafana.com/oss/release/grafana-7.0.4.darwin-amd64.tar.gz tar -zxvf grafana-7.0.4.darwin-amd64.tar.gz ./grafana-server
訪問http://localhost:3000/,初始密碼:admin/admin。
配置數據源,如圖:
配置prometheus的地址:http://localhost:9090 ,如圖所示:
在dashboard界面新建panel,展示的metrics為http_server_request_seconds_count,即展示了以時間為橫軸,請求數為縱軸的請求曲線,如圖所示:
看完了這篇文章,相信你對springboot中Prometheus的簡介及用法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。