Sign inSign up

myshop/springboot-demo

By myshop

Updated about 4 years ago

Image
0

197

myshop/springboot-demo repository overview

springboot 示例项目,端口8080

版本说明

版本说明
latest/jar默认为最基本、最简单的示例
jmx/jmx-actuator-prometheusjmx metrics。提供两种集成方式,访问地址:http://localhost:9082 http://localhost:9081/actuator/prometheus

默认示例

Dockerfile

FROM myshop/openjdk
ADD springboot-jar-demo-0.0.1.jar /app/
CMD ["sh","-c","java $JAVA_OPTS -jar /app/springboot-jar-demo-0.0.1.jar"]

JMX使用说明

提供两种集成方式实现prometheus metrics暴露。

jmx_exporter agent

参考 https://github.com/prometheus/jmx_exporter

metrics见http://localhost:9082

Dockerfile

FROM myshop/openjdk

ADD jmx_prometheus_javaagent-0.17.0.jar /opt/jmx_exporter/

ADD config.yaml /opt/jmx_exporter/

ADD springboot-jar-demo-0.0.3.jar /app/

CMD ["sh","-c","java -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.17.0.jar=9082:/opt/jmx_exporter/config.yaml $JAVA_OPTS -jar /app/springboot-jar-demo-0.0.3.jar"]

或者

FROM myshop/jmx-exporter

ADD springboot-jar-demo-0.0.3.jar /app/

CMD ["sh","-c","java -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.17.0.jar=9082:/opt/jmx_exporter/config.yaml $JAVA_OPTS -jar /app/springboot-jar-demo-0.0.3.jar"]

如果不想改造应用的Dockerfile,可结合初始化容器使用,共享emptydir并copy agent到应用容器,JAVA_OPTS参数配置--agent(jdk一般支持参数 _JAVA_OPTIONS,没有开放变量的话可以使用)

springboot actuator + micrometer prometheus

metrics见http://localhost:9081/actuator/prometheus

pom.xml添加依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

配置文件添加:

management.endpoints.web.exposure.include=prometheus
management.endpoint.health.show-details=always
management.server.port=9081
management.server.ssl.enabled=false
management.server.servlet.context-path=/

spring.jmx.enabled=true
server.tomcat.mbeanregistry.enabled=true

附各种方案对比

JVM监控方案

社区为JVM监控提供了较多的方案,如Prometheus JVM Client、JMX exporter、Micrometer Prometheus Registry等。

Prometheus JVM Client

适用于Spring Boot/Spring Cloud框架,支持任何可以运行在JVM上的语言,如Java, Clojure, Scala, JRuby。 详情见https://github.com/prometheus/client_java

优点在于集成方便,只需要添加依赖和注解实现,也可根据业务需求添加埋点,深度定制Metrics指标,支持四种Metrics类型-Counter, Gauge, Summary和Histogram。

缺点在于对代码有侵入。

Micrometer Prometheus Registry

Micrometer是一款监控指标的度量类库,它提供的该工具适用于Spring Boot/Spring Cloud框架。Micrometer中, Meter 的具体类型包括: Timer , Counter , Gauge , DistributionSummary , LongTaskTimer , FunctionCounter , FunctionTimer 和 TimeGauge等。

该工具优点在于支持更多的Metrics类型,能覆盖更多的场景,可深度定制。

缺点在于概念理解和集成方式较抽象复杂,对代码有侵入。与actuator的结合更方便使用。

JMX Exporter

JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。 详见https://github.com/prometheus/jmx_exporter

JMX-Exporter 提供了两种用法:以独立的进程启动和以agent的方式启动,推荐后者。

该工具对代码无侵入,适用于java应用,支持java6及以上版本。

To run as a Java agent, download one of the JARs and run: java -javaagent:./jmx_prometheus_javaagent-0.16.1.jar=8080:config.yaml -jar yourJar.jar

Tag summary

Content type

Image

Digest

sha256:ff99bd00e

Size

85.7 MB

Last updated

about 4 years ago

docker pull myshop/springboot-demo