Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.

Commit d3304ad

Browse files
committed
Prometheus and Grafana integration for Tasks Apps
- Add rsocker-proxy docker-compose extension. - Add task-batch dashboard. - Update the prometheus-local to include rsocket proxy as target - Add test task with prometheus-rsocket - Remove the test docker-compose metrics files - Modularize docker-compose - the docker-compose.yml contains only SCDF/Skipper configuration without any metrics - To enable the prometheus (rsocket) metrics configuration run docker-compose -f ./docker-compose.yml -f ./docker-compose-prometheus-rsocket.yml up - To enable the Influx metric configuration run docker-compose -f ./docker-compose.yml -f ./docker-compose-influxdb.yml up - remove the custom service-discovery definition. - Update prometheus image to v2.12.0 - Add docker-compose-postgres.yml to allow overriding mysql - Add docker-compose-rabbbitmq.yml to allow overriding kafka - Add STREM_APPS_URI and TASK_APPS_URI variables to allow overriding the registered apps and task uris Resolves #3452
1 parent 4caa3d5 commit d3304ad

File tree

11 files changed

+1112
-190
lines changed

11 files changed

+1112
-190
lines changed
Lines changed: 20 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,27 @@
11
version: '3'
22

3+
# Extends the default docker-compose.yml with Influx/Grafana monitoring configuration
4+
# Usage: docker-compose -f ./docker-compose.yml -f ./docker-compose-influxdb.yml up
35
services:
4-
mysql:
5-
image: mysql:5.7.26
6-
container_name: dataflow-mysql
7-
environment:
8-
MYSQL_DATABASE: dataflow
9-
MYSQL_USER: root
10-
MYSQL_ROOT_PASSWORD: rootpw
11-
expose:
12-
- 3306
13-
14-
kafka:
15-
image: confluentinc/cp-kafka:5.2.1
16-
container_name: dataflow-kafka
17-
expose:
18-
- "9092"
19-
environment:
20-
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
21-
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
22-
- KAFKA_ADVERTISED_HOST_NAME=kafka
23-
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
24-
depends_on:
25-
- zookeeper
26-
27-
zookeeper:
28-
image: confluentinc/cp-zookeeper:5.2.1
29-
container_name: dataflow-kafka-zookeeper
30-
expose:
31-
- "2181"
32-
environment:
33-
- ZOOKEEPER_CLIENT_PORT=2181
34-
356
dataflow-server:
36-
image: springcloud/spring-cloud-dataflow-server:${DATAFLOW_VERSION:?DATAFLOW_VERSION is not set!}
37-
container_name: dataflow-server
38-
ports:
39-
- "9393:9393"
40-
environment:
41-
- spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.brokers=PLAINTEXT://kafka:9092
42-
- spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.zkNodes=zookeeper:2181
43-
- spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.streams.binder.brokers=PLAINTEXT://kafka:9092
44-
- spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.streams.binder.zkNodes=zookeeper:2181
45-
- spring.cloud.skipper.client.serverUri=http://skipper-server:7577/api
46-
- spring.cloud.dataflow.applicationProperties.stream.management.metrics.export.influx.enabled=true
47-
- spring.cloud.dataflow.applicationProperties.stream.management.metrics.export.influx.db=myinfluxdb
48-
- spring.cloud.dataflow.applicationProperties.stream.management.metrics.export.influx.uri=http://influxdb:8086
49-
- spring.cloud.dataflow.applicationProperties.task.management.metrics.export.influx.enabled=true
50-
- spring.cloud.dataflow.applicationProperties.task.management.metrics.export.influx.db=myinfluxdb
51-
- spring.cloud.dataflow.applicationProperties.task.management.metrics.export.influx.uri=http://influxdb:8086
52-
- spring.cloud.dataflow.grafana-info.url=http://localhost:3000
53-
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dataflow
54-
- SPRING_DATASOURCE_USERNAME=root
55-
- SPRING_DATASOURCE_PASSWORD=rootpw
56-
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
57-
depends_on:
58-
- kafka
59-
entrypoint: "./wait-for-it.sh -t 120 mysql:3306 -- java -jar /maven/spring-cloud-dataflow-server.jar"
60-
61-
app-import:
62-
image: springcloud/openjdk:2.0.0.RELEASE
63-
container_name: dataflow-app-import
64-
depends_on:
65-
- dataflow-server
66-
command: >
67-
/bin/sh -c "
68-
./wait-for-it.sh -t 180 dataflow-server:9393;
69-
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=https://dataflow.spring.io/kafka-maven-latest&force=true';
70-
echo 'Stream apps imported'
71-
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=https://dataflow.spring.io/task-maven-latest&force=true';
72-
echo 'Task apps imported'"
73-
74-
skipper-server:
75-
image: springcloud/spring-cloud-skipper-server:${SKIPPER_VERSION:?SKIPPER_VERSION is not set!}
76-
container_name: skipper
77-
ports:
78-
- "7577:7577"
79-
- "9000-9010:9000-9010"
80-
- "20000-20105:20000-20105"
817
environment:
82-
- SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_LOCAL_ACCOUNTS_DEFAULT_PORTRANGE_LOW=20000
83-
- SPRING_CLOUD_SKIPPER_SERVER_PLATFORM_LOCAL_ACCOUNTS_DEFAULT_PORTRANGE_HIGH=20100
84-
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dataflow
85-
- SPRING_DATASOURCE_USERNAME=root
86-
- SPRING_DATASOURCE_PASSWORD=rootpw
87-
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
88-
entrypoint: "./wait-for-it.sh -t 120 mysql:3306 -- java -Djava.security.egd=file:/dev/./urandom -jar /spring-cloud-skipper-server.jar"
8+
- |
9+
SPRING_APPLICATION_JSON=
10+
{
11+
"spring.cloud.dataflow.applicationProperties":{
12+
"task.management.metrics.export.influx":{
13+
"enabled":true,
14+
"db":"myinfluxdb",
15+
"uri":"http://influxdb:8086"
16+
},
17+
"stream.management.metrics.export.influx":{
18+
"enabled":true,
19+
"db":"myinfluxdb",
20+
"uri":"http://influxdb:8086"
21+
}
22+
},
23+
"spring.cloud.dataflow.grafana-info.url":"http://localhost:3000"
24+
}
8925
9026
influxdb:
9127
image: influxdb:1.7.7
@@ -98,5 +34,4 @@ services:
9834
container_name: grafana
9935
ports:
10036
- '3000:3000'
101-
volumes:
102-
scdf-targets:
37+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
version: '3'
2+
3+
# Reconfigures the default docker-compose.yml to replace MySQL by Postgres
4+
# Usage: docker-compose -f ./docker-compose.yml -f ./docker-compose-postgres.yml up
5+
services:
6+
7+
mysql:
8+
entrypoint: ["echo", "MySQL service is disabled"]
9+
10+
postgres:
11+
image: postgres:10
12+
container_name: dataflow-postgres
13+
restart: always
14+
environment:
15+
POSTGRES_DB: dataflow
16+
POSTGRES_USER: root
17+
POSTGRES_PASSWORD: rootpw
18+
expose:
19+
- 5432
20+
ports:
21+
- 5432:5432
22+
23+
dataflow-server:
24+
environment:
25+
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/dataflow
26+
- SPRING_DATASOURCE_USERNAME=root
27+
- SPRING_DATASOURCE_PASSWORD=rootpw
28+
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
29+
entrypoint: "./wait-for-it.sh -t 240 postgres:5432 -- java -jar /maven/spring-cloud-dataflow-server.jar"
30+
31+
skipper-server:
32+
environment:
33+
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/dataflow
34+
- SPRING_DATASOURCE_USERNAME=root
35+
- SPRING_DATASOURCE_PASSWORD=rootpw
36+
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
37+
entrypoint: "./wait-for-it.sh -t 240 postgres:5432 -- java -Djava.security.egd=file:/dev/./urandom -jar /spring-cloud-skipper-server.jar"
38+
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
version: '3'
2+
3+
# Extends the default docker-compose.yml with Prometheus/Grafana monitoring configuration
4+
# Usage: docker-compose -f ./docker-compose.yml -f ./docker-compose-prometheus.yml up
5+
services:
6+
7+
dataflow-server:
8+
environment:
9+
- |
10+
SPRING_APPLICATION_JSON=
11+
{
12+
"spring.cloud.dataflow.applicationProperties":{
13+
"task.management.metrics.export.prometheus":{
14+
"enabled":true,
15+
"rsocket.enabled":true,
16+
"rsocket.host":"prometheus-rsocket-proxy",
17+
"rsocket.port":7001
18+
},
19+
"stream.management.metrics.export.prometheus":{
20+
"enabled":true,
21+
"rsocket.enabled":true,
22+
"rsocket.host":"prometheus-rsocket-proxy",
23+
"rsocket.port":7001
24+
}
25+
},
26+
"spring.cloud.dataflow.grafana-info.url":"http://localhost:3000"
27+
}
28+
29+
prometheus-rsocket-proxy:
30+
image: micrometermetrics/prometheus-rsocket-proxy:0.8.0-SNAPSHOT
31+
container_name: prometheus-rsocket-proxy
32+
expose:
33+
- '9096'
34+
- '7001'
35+
- '8081'
36+
ports:
37+
- '9096:9096'
38+
- '7001:7001'
39+
- '8081:8081'
40+
environment:
41+
- server.port=9096
42+
43+
grafana:
44+
image: springcloud/spring-cloud-dataflow-grafana-prometheus:${DATAFLOW_VERSION:?DATAFLOW_VERSION is not set! Use 'export DATAFLOW_VERSION=local-server-image-tag'}
45+
container_name: grafana
46+
ports:
47+
- '3000:3000'
48+
49+
prometheus:
50+
image: springcloud/spring-cloud-dataflow-prometheus-local:${DATAFLOW_VERSION:?DATAFLOW_VERSION is not set! Use 'export DATAFLOW_VERSION=local-server-image-tag'}
51+
container_name: prometheus
52+
ports:
53+
- '9090:9090'
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
version: '3'
2+
3+
# Reconfigures the default docker-compose.yml to replace Kafka/Zookeeper by RabbitMQ
4+
# Usage: docker-compose -f ./docker-compose.yml -f ./docker-compose-postgres.yml up
5+
services:
6+
7+
kafka:
8+
entrypoint: ["echo", "kafka service is disabled"]
9+
10+
zookeeper:
11+
entrypoint: ["echo", "zookeeper service is disabled"]
12+
13+
rabbitmq:
14+
image: rabbitmq:3.7
15+
container_name: dataflow-rabbitmq
16+
expose:
17+
- '5672'
18+
19+
dataflow-server:
20+
environment:
21+
- spring.cloud.dataflow.applicationProperties.stream.spring.rabbitmq.host=rabbitmq
22+
23+
app-import:
24+
command: >
25+
/bin/sh -c "
26+
./wait-for-it.sh -t 180 dataflow-server:9393;
27+
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${STREAM_APPS_URI:-https://dataflow.spring.io/rabbitmq-maven-latest&force=true}';
28+
echo 'Stream apps imported'
29+
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${TASK_APPS_URI:-https://dataflow.spring.io/task-maven-latest&force=true}';
30+
echo 'Task apps imported'"
31+

spring-cloud-dataflow-server/docker-compose.yml

Lines changed: 2 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ services:
4343
- spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.zkNodes=zookeeper:2181
4444
- spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.streams.binder.zkNodes=zookeeper:2181
4545
- spring.cloud.skipper.client.serverUri=http://skipper-server:7577/api
46-
- spring.cloud.dataflow.applicationProperties.stream.management.metrics.export.prometheus.enabled=true
47-
- spring.cloud.dataflow.applicationProperties.stream.spring.cloud.streamapp.security.enabled=false
48-
- spring.cloud.dataflow.applicationProperties.stream.management.endpoints.web.exposure.include=prometheus,info,health
49-
- spring.cloud.dataflow.grafana-info.url=http://localhost:3000
5046
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dataflow
5147
- SPRING_DATASOURCE_USERNAME=root
5248
- SPRING_DATASOURCE_PASSWORD=rootpw
@@ -63,9 +59,9 @@ services:
6359
command: >
6460
/bin/sh -c "
6561
./wait-for-it.sh -t 180 dataflow-server:9393;
66-
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=https://dataflow.spring.io/kafka-maven-latest&force=true';
62+
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${STREAM_APPS_URI:-https://dataflow.spring.io/kafka-maven-latest&force=true}';
6763
echo 'Stream apps imported'
68-
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=https://dataflow.spring.io/task-maven-latest&force=true';
64+
wget -qO- 'http://dataflow-server:9393/apps' --post-data='uri=${TASK_APPS_URI:-https://dataflow.spring.io/task-maven-latest&force=true}';
6965
echo 'Task apps imported'"
7066
7167
skipper-server:
@@ -83,45 +79,3 @@ services:
8379
- SPRING_DATASOURCE_PASSWORD=rootpw
8480
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
8581
entrypoint: "./wait-for-it.sh mysql:3306 -- java -Djava.security.egd=file:/dev/./urandom -jar /spring-cloud-skipper-server.jar"
86-
87-
# Grafana is configured with the Prometheus datasource.
88-
# Use `docker exec -it prometheus /bin/sh` to logging in the container
89-
prometheus:
90-
image: springcloud/spring-cloud-dataflow-prometheus-local:${DATAFLOW_VERSION:?DATAFLOW_VERSION is not set! Use 'export DATAFLOW_VERSION=local-server-image-tag'}
91-
container_name: prometheus
92-
volumes:
93-
- 'scdf-targets:/etc/prometheus/'
94-
ports:
95-
- '9090:9090'
96-
depends_on:
97-
- service-discovery
98-
99-
# The service-discovery container. Required for Prometheus setup only
100-
# Use `docker exec -it service-discovery /bin/sh` to logging the container
101-
service-discovery:
102-
image: springcloud/spring-cloud-dataflow-prometheus-service-discovery:0.0.4.RELEASE
103-
container_name: service-discovery
104-
volumes:
105-
- 'scdf-targets:/tmp/scdf-targets/'
106-
expose:
107-
- '8181'
108-
ports:
109-
- '8181:8181'
110-
environment:
111-
- metrics.prometheus.target.cron=0/20 * * * * *
112-
- metrics.prometheus.target.filePath=/tmp/scdf-targets/targets.json
113-
- metrics.prometheus.target.discoveryUrl=http://dataflow-server:9393/runtime/apps
114-
- metrics.prometheus.target.overrideIp=skipper-server
115-
- server.port=8181
116-
depends_on:
117-
- dataflow-server
118-
119-
# Grafana SCDF Prometheus pre-built image:
120-
grafana:
121-
image: springcloud/spring-cloud-dataflow-grafana-prometheus:${DATAFLOW_VERSION:?DATAFLOW_VERSION is not set! Use 'export DATAFLOW_VERSION=local-server-image-tag'}
122-
container_name: grafana
123-
ports:
124-
- '3000:3000'
125-
126-
volumes:
127-
scdf-targets:

src/grafana/influxdb/docker/docker-compose.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/grafana/prometheus/docker/docker-compose.yml

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/grafana/prometheus/docker/grafana/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM grafana/grafana:6.2.5
1+
FROM grafana/grafana:6.3.3
22
ADD ./provisioning /etc/grafana/provisioning
33
ADD ./config.ini /etc/grafana/config.ini
44
ADD ./dashboards /var/lib/grafana/dashboards

0 commit comments

Comments
 (0)