Skip to content

Commit b4d0bfb

Browse files
authored
Merge pull request #75 from bnc-projects/upgrade-java-and-restricted-metrics
Upgrade java and restricted metrics
2 parents 5fdac98 + bc7c77b commit b4d0bfb

File tree

5 files changed

+73
-3
lines changed

5 files changed

+73
-3
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ env:
66
global:
77
- TF_IN_AUTOMATION=1
88
- SERVICE_NAME=spring-boot-java-base
9-
- VERSION=0.12.21
9+
- VERSION=0.12.24
1010
- DEPLOYMENT_ACCESS_KEY_ID=
1111
- DEPLOYMENT_SECRET_ACCESS_KEY=
1212
- AWS_DEFAULT_REGION=

service/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
FROM adoptopenjdk:11.0.7_10-jre-hotspot-bionic
1+
FROM adoptopenjdk:11.0.8_10-jre-hotspot-bionic
22

33
RUN groupadd -g 999 appuser && useradd -r -u 999 -g appuser appuser
44
USER appuser
55

66
EXPOSE 8080
77

8-
ENTRYPOINT exec java -XX:MaxRAMPercentage=80 -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS -jar app.jar
8+
ENTRYPOINT exec java -XX:+UseG1GC -XX:MaxRAMPercentage=70 -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS -jar app.jar
99

1010
HEALTHCHECK --start-period=300s \
1111
CMD curl --silent --fail --max-time 30 http://localhost:8080/actuator/health || exit 1

service/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ dependencies {
4242
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
4343
implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-sleuth', version: '2.2.2.RELEASE'
4444
implementation group: 'io.micrometer', name: 'micrometer-registry-new-relic'
45+
implementation group: 'com.github.spotbugs', name: 'spotbugs-annotations', version: '3.1.12'
4546

4647
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
4748
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.bnc.sbjb.metrics;
2+
3+
import static io.micrometer.core.instrument.config.MeterFilterReply.ACCEPT;
4+
import static io.micrometer.core.instrument.config.MeterFilterReply.DENY;
5+
import static io.micrometer.core.instrument.config.MeterFilterReply.NEUTRAL;
6+
7+
import io.micrometer.core.instrument.Meter;
8+
import io.micrometer.core.instrument.config.MeterFilter;
9+
import io.micrometer.core.instrument.config.MeterFilterReply;
10+
import java.util.List;
11+
import javax.annotation.Nonnull;
12+
import org.springframework.context.annotation.Bean;
13+
import org.springframework.context.annotation.Configuration;
14+
15+
@Configuration
16+
public class ActuatorConfiguration {
17+
18+
private static final List<String> DESIRED = List.of(
19+
"jvm.memory.max", "jvm.memory.used"
20+
);
21+
private static final List<String> JVM_MAX_TAGS = List.of(
22+
"G1 Old Gen", "Tenured Gen"
23+
);
24+
private static final List<String> JVM_TAGS = List.of(
25+
"G1 Old Gen", "G1 Eden Space", "Tenured Gen", "Eden Space"
26+
);
27+
28+
@Bean
29+
public MeterFilter meterFilter() {
30+
return new MeterFilter() {
31+
@Nonnull
32+
@Override
33+
public MeterFilterReply accept(@Nonnull Meter.Id id) {
34+
final String name = id.getName();
35+
36+
if ("jvm.memory.max".equals(name) && "heap".equals(id.getTag("area"))) {
37+
return JVM_MAX_TAGS.contains(id.getTag("id")) ? ACCEPT : DENY;
38+
}
39+
if ("jvm.threads.live".equals(name)) {
40+
return ACCEPT;
41+
}
42+
if ("process.cpu.usage".equals(name)) {
43+
return ACCEPT;
44+
}
45+
if (name.startsWith("jvm.")) {
46+
return DESIRED.contains(name) && "heap".equals(id.getTag("area")) && JVM_TAGS.contains(id.getTag("id")) ? ACCEPT
47+
: DENY;
48+
}
49+
if (name.startsWith("system.")) {
50+
return DENY;
51+
}
52+
return NEUTRAL;
53+
}
54+
};
55+
}
56+
}

service/src/main/resources/application.yml

+13
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,26 @@ management:
2525
health:
2626
show-details: ALWAYS
2727
metrics:
28+
enable:
29+
jvm: true
30+
http: false
31+
cache: false
32+
hikaricp: false
33+
system: false
34+
jdbc: false
35+
logback: false
36+
tomcat: false
37+
process:
38+
enabled: false
39+
cpu: true
2840
export:
2941
newrelic:
3042
enabled: false
3143
connect-timeout: 10s
3244
tags:
3345
application: ${spring.application.name}
3446
container: ${HOSTNAME:}${COMPUTERNAME:}
47+
3548
---
3649
spring:
3750
profiles: production

0 commit comments

Comments
 (0)