Spring Cloud 之 Prometheus+Grafana實現監控微服務(二十一)


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是什么

Grafana是開源的、炫酷的可視化監控、分析利器,無論您的數據在哪里,或者它所處的數據庫是什么類型,您都可以將它與Grafana精美地結合在一起。它還有豐富的套件供您選擇,目前,它已擁有54個數據源,50個面板,17個應用程序和1732個儀表盤。如此強大的服務我們如何利用呢,下面我們一步一步帶你們走近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。

 

 

到此。所有配置已完成。

PS:源碼已上傳Github, 歡迎指教。https://github.com/shileishmily/spring-cloud-x.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM