Demo cases for mictometer rproxy bug
This commit is contained in:
@@ -2,40 +2,49 @@
|
||||
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<!--
|
||||
spring-boot-starter-parent:2.1.13.RELEASE
|
||||
prometheus-rsocket-spring.version:0.9.0
|
||||
rsocket-transport-netty:1.0.0-RC5
|
||||
|
||||
spring-boot-starter-parent:2.3.2.RELEASE
|
||||
prometheus-rsocket-spring.version:0.9.0
|
||||
rsocket-transport-netty:1.0.0-RC5
|
||||
|
||||
-->
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.3.1.RELEASE</version> <!-- RS RC7 -->
|
||||
<version>2.3.2.RELEASE</version>
|
||||
<!-- <version>2.1.13.RELEASE</version>-->
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>com.example.task</groupId>
|
||||
<artifactId>task-demo-metrics-prometheus</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<version>0.0.3-SNAPSHOT</version>
|
||||
<name>task-demo-metrics-prometheus</name>
|
||||
<description>Demo project for Spring Boot</description>
|
||||
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
|
||||
<prometheus-rsocket-spring.version>0.11.0</prometheus-rsocket-spring.version>
|
||||
<prometheus-rsocket-spring.version>1.0.0</prometheus-rsocket-spring.version>
|
||||
<!-- <prometheus-rsocket-spring.version>0.9.0</prometheus-rsocket-spring.version>-->
|
||||
<spring-cloud-task-dependencies.version>2.3.0.BUILD-SNAPSHOT</spring-cloud-task-dependencies.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- jdbc dependencies for the task repository -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jdbc</artifactId>
|
||||
</dependency>
|
||||
<!-- Enable Spring Batch and Spring Cloud Task -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-batch</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-task</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Data Source Configurations -->
|
||||
<dependency>
|
||||
<groupId>org.mariadb.jdbc</groupId>
|
||||
<artifactId>mariadb-java-client</artifactId>
|
||||
@@ -47,18 +56,6 @@
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Enable Spring Cloud Task (and Batch) support -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-task</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- Enable Prometheus metrics collection (via Prometheus RSocket Proxy) -->
|
||||
<!-- Internally it imports the org.springframework.boot:spring-boot-actuator-autoconfigure dependency -->
|
||||
<dependency>
|
||||
@@ -66,27 +63,23 @@
|
||||
<artifactId>prometheus-rsocket-spring</artifactId>
|
||||
<version>${prometheus-rsocket-spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.micrometer.prometheus</groupId>
|
||||
<artifactId>prometheus-rsocket-client</artifactId>
|
||||
<version>${prometheus-rsocket-spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rsocket</groupId>
|
||||
<artifactId>rsocket-transport-netty</artifactId>
|
||||
<version>1.0.1</version>
|
||||
<!-- <version>1.0.0-RC5</version>-->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
@@ -94,25 +87,11 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-dependencies</artifactId>
|
||||
<version>${spring-cloud.version}</version>
|
||||
<artifactId>spring-cloud-task-dependencies</artifactId>
|
||||
<version>${spring-cloud-task-dependencies.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.micrometer</groupId>
|
||||
<artifactId>micrometer-bom</artifactId>
|
||||
<version>1.5.2</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.cloud</groupId>-->
|
||||
<!-- <artifactId>spring-cloud-task-dependencies</artifactId>-->
|
||||
<!-- <version>${spring-cloud-task.version}</version>-->
|
||||
<!-- <type>pom</type>-->
|
||||
<!-- <scope>import</scope>-->
|
||||
<!-- </dependency>-->
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ public class TaskDemoMetricsApplication {
|
||||
public Step step2() {
|
||||
return this.stepBuilderFactory.get("step2")
|
||||
.tasklet((contribution, context) -> {
|
||||
Thread.sleep(this.random.nextInt(10000));
|
||||
Thread.sleep(2 * 60 * 1000 + this.random.nextInt(10000));
|
||||
return RepeatStatus.FINISHED;
|
||||
}).build();
|
||||
}
|
||||
|
||||
@@ -3,3 +3,18 @@ info.app.name=@project.artifactId@
|
||||
info.app.description=@project.description@
|
||||
info.app.version=@project.version@
|
||||
management.endpoints.web.exposure.include=health,info,bindings
|
||||
|
||||
|
||||
spring.datasource.url=jdbc:mysql://localhost:3306/dataflow
|
||||
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=rootpw
|
||||
|
||||
management.metrics.export.prometheus.rsocket.host=localhost
|
||||
management.metrics.export.prometheus.rsocket.port=7001
|
||||
management.metrics.export.prometheus.enabled=true
|
||||
management.metrics.export.prometheus.rsocket.enabled=true
|
||||
|
||||
spring.cloud.task.name=task999
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.example.task.taskdemometrics;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import io.micrometer.core.instrument.LongTaskTimer;
|
||||
import io.micrometer.core.instrument.Metrics;
|
||||
import io.micrometer.core.instrument.Timer;
|
||||
import io.micrometer.prometheus.PrometheusConfig;
|
||||
import io.micrometer.prometheus.PrometheusMeterRegistry;
|
||||
import io.micrometer.prometheus.rsocket.PrometheusRSocketClient;
|
||||
import io.rsocket.transport.netty.client.TcpClientTransport;
|
||||
import io.rsocket.transport.netty.client.WebsocketClientTransport;
|
||||
import reactor.util.retry.Retry;
|
||||
|
||||
/**
|
||||
* @author Christian Tzolov
|
||||
*/
|
||||
public class Main {
|
||||
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
|
||||
PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
|
||||
|
||||
//PrometheusRSocketClient client = new PrometheusRSocketClient(meterRegistry,
|
||||
// TcpClientTransport.create("localhost", 7001),
|
||||
// c -> c.retryBackoff(Long.MAX_VALUE, Duration.ofSeconds(10), Duration.ofMinutes(10)));
|
||||
PrometheusRSocketClient client = PrometheusRSocketClient
|
||||
//.build(meterRegistry, WebsocketClientTransport.create("localhost", 8086))
|
||||
.build(meterRegistry, TcpClientTransport.create("localhost", 7001))
|
||||
.retry(Retry.backoff(Long.MAX_VALUE, Duration.ofSeconds(10)).maxBackoff(Duration.ofMinutes(10)))
|
||||
.connect();
|
||||
|
||||
LongTaskTimer longTaskTimer = LongTaskTimer
|
||||
.builder("tzolov.long")
|
||||
.description("Long task duration")
|
||||
.tag("task.my.tag", "0")
|
||||
.register(meterRegistry);
|
||||
|
||||
LongTaskTimer.Sample longTaskSample = longTaskTimer.start();
|
||||
|
||||
Timer.Sample taskSample = Timer.start(meterRegistry);
|
||||
//Timer.Sample taskSample = Timer.start();
|
||||
|
||||
//Thread.sleep(2 * 60 * 1000);
|
||||
Thread.sleep(10 * 1000);
|
||||
|
||||
longTaskSample.stop();
|
||||
|
||||
taskSample.stop(Timer.builder("tzolov.task")
|
||||
.description("Task duration")
|
||||
.tag("task.exit.code", "0")
|
||||
.tag("task.exception", "none")
|
||||
.tag("task.status", "success")
|
||||
.register(meterRegistry));
|
||||
|
||||
client.pushAndClose();
|
||||
|
||||
//Thread.sleep(10000);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
version: '3'
|
||||
|
||||
# Extends the default docker-compose.yml with Prometheus monitoring configuration
|
||||
# Usage: docker-compose -f ./docker-compose-prometheus.yml up
|
||||
services:
|
||||
|
||||
mysql:
|
||||
image: mysql:5.7.25
|
||||
container_name: test-mysql
|
||||
environment:
|
||||
MYSQL_DATABASE: dataflow
|
||||
MYSQL_USER: root
|
||||
MYSQL_ROOT_PASSWORD: rootpw
|
||||
expose:
|
||||
- 3306
|
||||
ports:
|
||||
- "3306:3306"
|
||||
|
||||
dataflow-server:
|
||||
image: springcloud/spring-cloud-dataflow-server:2.6.0
|
||||
container_name: dataflow-server
|
||||
ports:
|
||||
- "9393:9393"
|
||||
environment:
|
||||
- SPRING_CLOUD_DATAFLOW_FEATURES_STREAMS_ENABLED=false
|
||||
- SPRING_CLOUD_DATAFLOW_FEATURES_SCHEDULES_ENABLED=false
|
||||
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dataflow
|
||||
- SPRING_DATASOURCE_USERNAME=root
|
||||
- SPRING_DATASOURCE_PASSWORD=rootpw
|
||||
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
|
||||
entrypoint: "./wait-for-it.sh mysql:3306 -- java -jar /maven/spring-cloud-dataflow-server.jar"
|
||||
|
||||
prometheus-rsocket-proxy:
|
||||
image: micrometermetrics/prometheus-rsocket-proxy:1.0.0
|
||||
container_name: prometheus-rsocket-proxy
|
||||
expose:
|
||||
- '9096'
|
||||
- '7001'
|
||||
- '8086'
|
||||
ports:
|
||||
- '9096:9096'
|
||||
- '7001:7001'
|
||||
- '8086:8086'
|
||||
environment:
|
||||
- server.port=9096
|
||||
- micrometer.prometheus-proxy.websocket-port=8086
|
||||
- micrometer.prometheus-proxy.tcp-port=7001
|
||||
|
||||
prometheus:
|
||||
image: springcloud/spring-cloud-dataflow-prometheus-local:2.6.0
|
||||
container_name: prometheus
|
||||
ports:
|
||||
- '9090:9090'
|
||||
Reference in New Issue
Block a user