prometheus监控springboot

1、获取spring demo

yum install git wget lrzsz -y
mkdir /data
cd /data
git clone https://github.com/wqqing77/demo.git

2、安装jdk11

#下载jdk11,需要注删oracle的帐号,下载方法此处略
https://www.oracle.com/cn/java/technologies/javase-jdk11-downloads.html

mkdir -p /opt/jdk
cd /opt/jdk
tar zxvf jdk-11.0.12_linux-x64_bin.tar.gz  --strip-components 1

#添加jdk11环境变量
cat >> /etc/profile << 'EOF'
#jdk11
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile

#验证安装
java -version

3、安装maven3

mkdir -p /opt/maven
cd /opt/maven
wget https://mirror-hk.koddos.net/apache/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gz
tar zxvf apache-maven-3.8.2-bin.tar.gz  --strip-components 1

#添加mavem环境变量
cat >> /etc/profile << 'EOF'
#maven3
export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH
EOF

source /etc/profile

mvn -version

4、promethes监控springboot

  • pom.xml
vi /data/demo/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>first-spring-boot-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>first-spring-boot-project</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 以下两个 prometheus 依赖 -->
        <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 依赖 -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
  • application.yml ,添加配置文件
cat > /data/demo/src/main/resources/application.yml << 'EOF'
management:
  security:
    enabled: false
      #prometheus+grafana+springboot2监控集成配置
  metrics:
    export:
      prometheus:
        enabled: true
      jmx:
        enabled: true
  endpoints:
    web:
      exposure:
        include: '*'
      base-path: /metrics
EOF
  • 主启动类加入配置
    vi /data/demo/src/main/java/com/example/firstspringbootproject/FirstSpringBootProjectApplication.java
package com.example.firstspringbootproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// 添加以下三行
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;


@RestController
@SpringBootApplication
public class FirstSpringBootProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(FirstSpringBootProjectApplication.class, args);
    }

    @RequestMapping
    public String hello() {
        return "hello spring boot!";
    }
    //添加以下几行@Bean
    @Bean
    MeterRegistryCustomizer meterRegistryCustomizer(MeterRegistry meterRegistry) {
        return meterRegistry1 -> {
            meterRegistry.config()
                    .commonTags("application", "Tenantapp");
        };
    }

}

5、使用mvn编译打包

cd /data/demo/
mvn package -DskipTests

6、运行jar包,并测试metrics

#编译打包无问题后,运行jar包
cd /data/demo/target
java -jar first-spring-boot-project-0.0.1-SNAPSHOT.jar &

curl 127.0.0.1:8080/metrics/prometheus

7、配置prometheus


cat >> /data/prometheus/conf/prometheus.yml << 'EOF'
#springboot自动发现
  - job_name: 'srpingboot'
    metrics_path: '/metrics/prometheus'
    file_sd_configs:
      - files:
        - /etc/prometheus/sd_config/springboot.yaml
        refresh_interval: 5s
    relabel_configs:
      - source_labels: [__address__]
        regex: (.*)
        target_label: instance
        replacement: $1
      - source_labels: [__address__]
        regex: (.*):(.*)
        target_label: __address__
        replacement: $1:8080
EOF

cat > /data/prometheus/conf/sd_config/springboot.yaml << 'EOF'
#sprintboot自动发现
- labels:
    project: 民生springboot
  targets:
  - 192.168.11.192:8080
  - 192.168.11.193:8080
  - 192.168.11.194:8080
EOF

8、grafana: 4701
在这里插入图片描述

9、jvm 告警规则

cat > /data/prometheus/conf/rules/jvm.rules << 'EOF'
groups:
- name: JVM-监控告警
  rules:
  - alert: JvmMemoryFillingUp
    expr: (sum by (instance)(jvm_memory_used_bytes{area="heap"}) / sum by (instance)(jvm_memory_max_bytes{area="heap"})) * 100 > 80
    for: 2m
    labels:
      severity: 一般警告
    annotations:
      summary: "{{ $labels.instance }}JVM 堆空间占用快满!"
      description: "堆空间占用超过80%\n  当前值 = {{ printf \"%.2f\" $value }}"
EOF
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值