1. 程式人生 > >Grafana+Prometheus打造springboot監控平臺

Grafana+Prometheus打造springboot監控平臺

1. 環境

springboot 1.5.4

Grafana 5.2.3

Prometheus 2.3.2

jdk 1.8

2.為springboot新增endpoint

在專案pom.xml中新增如下依賴

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
      <version>1.5.4.RELEASE</version>
    </dependency>
    <!--<dependency>
      <groupId>io.prometheus</groupId>
      <artifactId>simpleclient_spring_boot</artifactId>
      <version>0.5.0</version>
    </dependency>-->
    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
      <version>1.0.3</version>
    </dependency>
    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-spring-legacy</artifactId>
      <version>1.0.3</version>
    </dependency>

在 application.yml中新增如下配置(因為是測試,所以我把所有端點都暴露了,生產環境自行選擇開啟端點)

management:
  endpoints:
    web:
      exposure:
        include: '*'
    jmx:
      exposure:
        include: '*'
    shutdown:
      enabled: true
  metrics:
    distribution:
      percentiles-histogram[http.server.requests]: true
  security:
    enabled: false

專案中新建一個配置類如下 

import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.spring.autoconfigure.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MicrometerConfiguration {

    @Bean
    MeterRegistryCustomizer meterRegistryCustomizer(MeterRegistry meterRegistry) {
        return meterRegistry1 -> {
          meterRegistry.config()
          .commonTags("application", "micrometer-youtube-example");
        };
    }

}

啟動專案,在idea中可以看到介面 /prometheus 如下圖

3.安裝prometheus

在某目錄建立 prometheus.yml檔案內容如下

global:
  scrape_interval: 10s
  scrape_timeout: 10s
  evaluation_interval: 10m
scrape_configs:
  - job_name: simple
    scrape_interval: 5s
    scrape_timeout: 5s
    metrics_path: /prometheus 
    scheme: http
    basic_auth:
      username: user
      password: user
    static_configs:
      - targets:
        - 10.0.116.13:8080  #此處填寫 Spring Boot 應用的 IP + 埠號

 在當前目錄輸入如下命令,啟動docker ,也可以先用docker pull prom/prometheus先下載映象

docker run -d --name prometheus -p 9090:9090 -m 500M -v /opt/soft/prometheus/prometheus.yml:/prometheus.yml -v /opt/soft/prometheus/data:/data prom/prometheus --config.file=/prometheus.yml --log.level=info

訪問 http://ip:9090 如下圖

Status->Targets頁面下,我們可以看到我們配置的Target,它們的State為UP ,如下圖

4.安裝Grafana

docker run --name grafana -d -p 3000:3000 -v /opt/soft/grafana:/var/lib/grafana -e "GF_SMTP_ENABLED=true" grafana/grafana
注意: 一定要將/opt/soft/grafana 這個目錄授權為777 否則會報沒有許可權錯誤,這個目錄是為了儲存相關配置資訊,防止映象刪除後,配置資訊也丟失

我們可通過http://ip:3000訪問Grafana網頁介面(預設的帳號/密碼為admin/admin)

使ç¨Dockerå®è£Prometheus

5.grafana新增資料來源,配置如下

 6.建立看板

grafana支援很多種看板,你可以根據不同的指標生成圖表,

因為圖表的配置比較複雜,這裡沒有深入的研究,而是選用了大神 們做好的模板,對接資料來源進行展示

選擇一個你想要的點選去,然後複製id

開啟下圖頁面,並將id貼上進去,游標離開輸入框,會自動載入模板配置

然後選取資料來源,點選import按鈕,完成模板新增

可以看到如下圖

完成。