1. 程式人生 > 其它 >micrometer + grafana + prometheus搭建JVM監控

micrometer + grafana + prometheus搭建JVM監控

micrometer

在spring2.x中,spring-boot-actuator集成了micrometer, 可以直接匯入

https://micrometer.io/docs/registry/prometheus

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#actuator.metrics

  1. pom.xml匯入包

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-actuator</artifactId>
    	<version>${spring.boot.version}</version>
    </dependency>
    <dependency>
    	<groupId>io.micrometer</groupId>
    	<artifactId>micrometer-registry-prometheus</artifactId>
    	<version>${micrometer.prometheus.version}</version>
    </dependency>
    
  2. Application啟動類中新增micrometer監控輸出

    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}")String applicationName) {
    	return registry -> registry.config().commonTags("application", applicationName);
    }
    
  3. 新增配置

    1. 配置中將 /actuator/prometheus 訪問開發出來, 設定標籤名

      management.endpoints.web.exposure.include = prometheus
      management.metrics.tags.application = ${spring.application.name}
      
    2. actuator包下的actuate.jdbc.DataSourceHealthIndicator會在啟動時進行一次jdbc配置的健康檢查,對於某些系統可能會產生warning級別的報警。因此需要在配置中禁用

      management.health.db.enabled=false
      
  4. 啟動專案, 開啟本地介面 localhost:8090/actuator/prometheus 檢視輸出

prometheus

  1. 建立docker配置

    1. 建立docker目錄prometheus-docker

    2. 在目錄下建立 docker-compose.yml

      version: "3"
      services:
        prometheus_server:
          image: prom/prometheus
          ports:
            - "9090:9090"
          volumes:
            - ./prometheus.yml:/etc/prometheus/prometheus.yml
      
    3. 在目錄下建立 prometheus.yml

      https://prometheus.io/docs/prometheus/latest/getting_started/

      需要注意修改job的targets

      global:
        scrape_interval:     15s
        external_labels:
          monitor: 'codelab-monitor'
      scrape_configs:
        - job_name: 'prometheus'
          scrape_interval: 5s
          static_configs:
            - targets: ['localhost:9090']
      	- job_name: 'spring'
          scrape_interval: 5s
          metrics_path: '/actuator/prometheus'
          static_configs:
            - targets: ['192.168.180.17:8090'] #改成自己的內網/外網IP和埠, 如果設定為localhost那隻會訪問容器自身
      
  2. 建立完畢docker配置後, 在目錄下執行命令

    docker-compose up -d
    
  3. 開啟 localhost:9090 , 點選status→target檢查job執行情況

grafana搭建

  1. 在docker上搭建grafana, 執行命令安裝部署

    # 預設使用最新版本, 繫結3000埠
    docker run -d --name=grafana -p 3000:3000 grafana/grafana
    
  2. 部署完畢後登入localhost:3000, 預設賬號密碼為admin, admin

  3. 配置Prometheus資料來源

    1. 點選Configuration→Prometheus進入,配置URL為本機IP,Access使用預設Server,配置HTTP為POST

    2. 配置完畢後點擊 Save & test 進行檢查

  4. 配置儀表盤,可以自行進行設定或匯入其他人的模板,這裡我們進行匯入

    1. 開啟https://grafana.com/grafana/dashboards, 可以從官網中選擇其他人上傳的模板, 可以選擇ID進行聯網匯入或是下載json離線匯入。本文中使用的模板是https://grafana.com/grafana/dashboards/4701

    2. 匯入完畢後選擇Prometheus資料來源

  5. 資料來源和儀表盤配置完畢後,開啟儀表盤進行檢視

以上JVM監控搭建完畢。