Prometheus是什么
Prometheus是一套開源的系統監控和報警框架,靈感源自Google的Borgmon監控系統。2012年,SoundCloud的Google前員工創造了Prometheus,並作為社區開源項目進行開發。2015年,該項目正式發布。2016年,Prometheus加入雲原生計算基金會,成為受歡迎度僅次於Kubernetes的項目。
Prometheus具有以下特性:
- 多維的數據模型(基於時間序列的Key、Value鍵值對)
- 靈活的查詢和聚合語言PromQL
- 提供本地存儲和分布式存儲
- 通過基於HTTP的Pull模型采集時間序列數據
- 可利用Pushgateway(Prometheus的可選中間件)實現Push模式
- 可通過動態服務發現或靜態配置發現目標機器
- 支持多種圖表和數據大盤
Prometheus官網:https://prometheus.io/
Grafana是什么
下載及安裝
1、prometheus下載地址:https://prometheus.io/download,我下載的是windows版本
2、grafana下載地址:https://grafana.com/grafana/download,同樣下載windows版本
3、prometheus安裝
prometheus下載后解壓,進入解壓目錄運行prometheus.exe啟動
4、prometheus驗證
啟動后,在瀏覽器中訪問http://localhost:9090/classic/targets,可以正常訪問如下頁面說明啟動成功
5、grafana安裝
grafana下載后解壓,進入解壓目錄運行grafana-server.exe啟動
6、grafana驗證
啟動后在瀏覽器中訪問:http://localhost:3000/,用戶名密碼默認都是admin。如下圖
7、grafana datasouce配置
7.1 點擊左側設置-->Data Sources
7.2 進入到Data Sources配置頁面
7.3 點擊add data souce按鈕,進入添加監控數據源配置頁面,數據源類型選擇Prometheus(因為grafana UI的數據來源於Prometheus)
7.4 如下圖,URL填寫Prometheus地址:http://localhost:9090/
7.5 填寫URL后,點擊頁面最下方的save & Test按鈕。
7.6 點擊左側import按鈕
7.7 在輸入框中填寫12856,然后點擊load。12856是Grafana模板ID,更多模板請參考:https://grafana.com/grafana/dashboards
7.8 進入DashBoard,就可以查看JVM監控大盤了。當然我們還需對SpringBoot做一些改造才能看到這些監控數據,請繼續往下看......
8、SpringBoot應用改造
若要看到上面的監控大盤,我們還需要對prometheus.yml和x-demo-springcloud-order-service應用做一些改造。
8.1 修改x-demo-springcloud-order-service的build.gradle文件
增加micrometer-registry-prometheus依賴
dependencies { compile("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client") compile("org.springframework.cloud:spring-cloud-starter-zipkin") compile("org.springframework.cloud:spring-cloud-starter-netflix-ribbon") compile("org.springframework.cloud:spring-cloud-stream-binder-rabbit") compile("io.micrometer:micrometer-registry-prometheus") }
8.2 修改bootstrap.yml配置文件,增加metrics配置
這里 management.endpoints.web.exposure.include=* 配置為開啟 Actuator 服務,因為Spring Boot Actuator 會自動配置一個 URL 為 /actuator/Prometheus 的 HTTP 服務來供 Prometheus 抓取數據,不過默認該服務是關閉的,該配置將打開所有的 Actuator 服務。management.metrics.tags.application 配置會將該工程應用名稱添加到Grafana UI,方便后邊根據應用名稱來區分不同的服務。
management: endpoints: web: exposure: include: '*' endpoint: health: show-details: ALWAYS metrics: tags: application: ${spring.application.name}
8.3 修改啟動類
/** * @author Leo */ @SpringBootApplication @EnableEurekaClient @RestController public class OrderServerApplication { public static void main(String[] args) { SpringApplication.run(OrderServerApplication.class, args); } @Bean MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) { return registry -> registry.config().commonTags("application", applicationName); } @RequestMapping(value = "makeOrder", method = RequestMethod.GET) public String makeOrder() { return "下單成功"; } }
8.4 修改prometheus.yml配置文件
原有的配置不用修改,增加x-demo-springcloud-order-service應用配置,然后重啟prometheus和x-demo-springcloud-order-service,就OK。
到此。所有配置已完成。