Skip to content

Commit 6106004

Browse files
authored
add option to skip the shaded protobuf and otel libraries (#1293)
Signed-off-by: Gregor Zeitlinger <[email protected]>
1 parent 43c4c39 commit 6106004

File tree

11 files changed

+361
-183
lines changed

11 files changed

+361
-183
lines changed

.github/workflows/acceptance-tests.yml

-6
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,3 @@ jobs:
1515
- uses: jdx/mise-action@v2
1616
- name: Run acceptance tests
1717
run: mise run acceptance-test
18-
- name: upload log file
19-
uses: actions/upload-artifact@v4
20-
if: failure()
21-
with:
22-
name: OATs logs
23-
path: build/**/*.log

docs/content/exporters/formats.md

+70-10
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,74 @@ You can exclude the protobuf exposition format by including the
3232
For example, in Maven:
3333

3434
```xml
35-
<dependency>
36-
<groupId>io.prometheus</groupId>
37-
<artifactId>prometheus-metrics-exporter-httpserver</artifactId>
38-
<exclusions>
39-
<exclusion>
40-
<groupId>io.prometheus</groupId>
41-
<artifactId>prometheus-metrics-exposition-formats</artifactId>
42-
</exclusion>
43-
</exclusions>
44-
</dependency>
35+
<dependencies>
36+
<dependency>
37+
<groupId>io.prometheus</groupId>
38+
<artifactId>prometheus-metrics-exporter-httpserver</artifactId>
39+
<exclusions>
40+
<exclusion>
41+
<groupId>io.prometheus</groupId>
42+
<artifactId>prometheus-metrics-exposition-formats</artifactId>
43+
</exclusion>
44+
</exclusions>
45+
</dependency>
46+
<dependency>
47+
<groupId>io.prometheus</groupId>
48+
<artifactId>prometheus-metrics-exposition-textformats</artifactId>
49+
</dependency>
50+
</dependencies>
51+
```
52+
53+
## Exclude the shaded protobuf classes
54+
55+
You can exclude the shaded protobuf classes including the
56+
`prometheus-metrics-exposition-formats-no-protobuf` module and excluding the
57+
`prometheus-metrics-exposition-formats` module in your build file.
58+
59+
For example, in Maven:
60+
61+
```xml
62+
<dependencies>
63+
<dependency>
64+
<groupId>io.prometheus</groupId>
65+
<artifactId>prometheus-metrics-exporter-httpserver</artifactId>
66+
<exclusions>
67+
<exclusion>
68+
<groupId>io.prometheus</groupId>
69+
<artifactId>prometheus-metrics-exposition-formats</artifactId>
70+
</exclusion>
71+
</exclusions>
72+
</dependency>
73+
<dependency>
74+
<groupId>io.prometheus</groupId>
75+
<artifactId>prometheus-metrics-exposition-formats-no-protobuf</artifactId>
76+
</dependency>
77+
</dependencies>
78+
```
79+
80+
## Exclude the shaded otel classes
81+
82+
You can exclude the shaded otel classes including the
83+
`prometheus-metrics-exporter-opentelemetry-no-otel` module and excluding the
84+
`prometheus-metrics-exporter-opentelemetry` module in your build file.
85+
86+
For example, in Maven:
87+
88+
```xml
89+
<dependencies>
90+
<dependency>
91+
<groupId>io.prometheus</groupId>
92+
<artifactId>prometheus-metrics-exporter-opentelemetry</artifactId>
93+
<exclusions>
94+
<exclusion>
95+
<groupId>io.prometheus</groupId>
96+
<artifactId>prometheus-metrics-exporter-opentelemetry</artifactId>
97+
</exclusion>
98+
</exclusions>
99+
</dependency>
100+
<dependency>
101+
<groupId>io.prometheus</groupId>
102+
<artifactId>prometheus-metrics-exporter-opentelemetry-no-otel</artifactId>
103+
</dependency>
104+
</dependencies>
45105
```

integration-tests/it-spring-boot-smoke-test/pom.xml

+25-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
34
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
45

56
<modelVersion>4.0.0</modelVersion>
@@ -21,10 +22,18 @@
2122
</description>
2223
<properties>
2324
<java.version>17</java.version>
25+
<junit-jupiter.version>5.12.0</junit-jupiter.version>
2426
</properties>
2527

2628
<dependencyManagement>
2729
<dependencies>
30+
<dependency>
31+
<groupId>org.junit</groupId>
32+
<artifactId>junit-bom</artifactId>
33+
<version>${junit-jupiter.version}</version>
34+
<type>pom</type>
35+
<scope>import</scope>
36+
</dependency>
2837
<dependency>
2938
<groupId>io.prometheus</groupId>
3039
<artifactId>prometheus-metrics-bom</artifactId>
@@ -49,12 +58,26 @@
4958
<artifactId>micrometer-registry-prometheus</artifactId>
5059
<scope>runtime</scope>
5160
</dependency>
52-
5361
<dependency>
5462
<groupId>org.springframework.boot</groupId>
5563
<artifactId>spring-boot-starter-test</artifactId>
5664
<scope>test</scope>
5765
</dependency>
66+
<dependency>
67+
<groupId>org.junit.jupiter</groupId>
68+
<artifactId>junit-jupiter-engine</artifactId>
69+
<scope>test</scope>
70+
</dependency>
71+
<dependency>
72+
<groupId>org.junit.jupiter</groupId>
73+
<artifactId>junit-jupiter-api</artifactId>
74+
<scope>test</scope>
75+
</dependency>
76+
<dependency>
77+
<groupId>org.junit.platform</groupId>
78+
<artifactId>junit-platform-launcher</artifactId>
79+
<scope>test</scope>
80+
</dependency>
5881
<dependency>
5982
<groupId>io.prometheus</groupId>
6083
<artifactId>it-common</artifactId>

mise.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tools."go:github.com/grafana/oats"]
2-
version = "0.2.0"
2+
version = "0.3.0"
33
backend = "go:github.com/grafana/oats"
44

55
[tools.java]

mise.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
PROTO_GENERATION = "true"
33

44
[tools]
5-
"go:github.com/grafana/oats" = "0.2.0"
5+
"go:github.com/grafana/oats" = "latest"
66
java = "temurin-17.0.13+11"
77
protoc = "latest"
88

pom.xml

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<properties>
1919
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2020
<automatic.module.name>--module-name-need-to-be-overriden--</automatic.module.name>
21+
<protobuf-java.version>4.30.2</protobuf-java.version>
2122
<guava.version>33.4.7-jre</guava.version>
2223
<junit-jupiter.version>5.12.2</junit-jupiter.version>
2324
<otel.instrumentation.version>2.15.0-alpha</otel.instrumentation.version>
@@ -68,12 +69,14 @@
6869
<module>prometheus-metrics-model</module>
6970
<module>prometheus-metrics-tracer</module>
7071
<module>prometheus-metrics-exposition-formats</module>
72+
<module>prometheus-metrics-exposition-formats-shaded</module>
7173
<module>prometheus-metrics-exposition-textformats</module>
7274
<module>prometheus-metrics-exporter-common</module>
7375
<module>prometheus-metrics-exporter-servlet-jakarta</module>
7476
<module>prometheus-metrics-exporter-servlet-javax</module>
7577
<module>prometheus-metrics-exporter-httpserver</module>
7678
<module>prometheus-metrics-exporter-opentelemetry</module>
79+
<module>prometheus-metrics-exporter-opentelemetry-shaded</module>
7780
<module>prometheus-metrics-exporter-opentelemetry-otel-agent-resources</module>
7881
<module>prometheus-metrics-exporter-pushgateway</module>
7982
<module>prometheus-metrics-instrumentation-caffeine</module>

prometheus-metrics-bom/pom.xml

+10
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@
4747
<artifactId>prometheus-metrics-exporter-opentelemetry</artifactId>
4848
<version>${project.version}</version>
4949
</dependency>
50+
<dependency>
51+
<groupId>io.prometheus</groupId>
52+
<artifactId>prometheus-metrics-exporter-opentelemetry-no-otel</artifactId>
53+
<version>${project.version}</version>
54+
</dependency>
5055
<dependency>
5156
<groupId>io.prometheus</groupId>
5257
<artifactId>prometheus-metrics-exporter-pushgateway</artifactId>
@@ -62,6 +67,11 @@
6267
<artifactId>prometheus-metrics-exporter-servlet-javax</artifactId>
6368
<version>${project.version}</version>
6469
</dependency>
70+
<dependency>
71+
<groupId>io.prometheus</groupId>
72+
<artifactId>prometheus-metrics-exposition-formats-no-protobuf</artifactId>
73+
<version>${project.version}</version>
74+
</dependency>
6575
<dependency>
6676
<groupId>io.prometheus</groupId>
6777
<artifactId>prometheus-metrics-exposition-formats</artifactId>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<parent>
7+
<groupId>io.prometheus</groupId>
8+
<artifactId>client_java</artifactId>
9+
<version>10.0.0-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>prometheus-metrics-exporter-opentelemetry</artifactId>
13+
<packaging>bundle</packaging>
14+
15+
<name>Prometheus Metrics to OpenTelemetry Exporter</name>
16+
<description>
17+
Converts Prometheus metrics to OpenTelemetry format and pushes them to an OTLP endpoint
18+
</description>
19+
20+
<properties>
21+
<automatic.module.name>io.prometheus.metrics.exporter.opentelemetry</automatic.module.name>
22+
</properties>
23+
24+
<dependencies>
25+
<dependency>
26+
<groupId>io.prometheus</groupId>
27+
<artifactId>prometheus-metrics-exporter-opentelemetry-no-otel</artifactId>
28+
<version>${project.version}</version>
29+
</dependency>
30+
</dependencies>
31+
32+
<build>
33+
<plugins>
34+
<plugin>
35+
<groupId>org.codehaus.mojo</groupId>
36+
<artifactId>build-helper-maven-plugin</artifactId>
37+
<executions>
38+
<execution>
39+
<id>regex-property</id>
40+
<goals>
41+
<goal>regex-property</goal>
42+
</goals>
43+
<configuration>
44+
<name>otel.instrumentation.string-version</name>
45+
<value>${otel.instrumentation.version}</value>
46+
<regex>[\.-]</regex>
47+
<replacement>_</replacement>
48+
<failIfNoMatch>true</failIfNoMatch>
49+
</configuration>
50+
</execution>
51+
</executions>
52+
</plugin>
53+
<plugin>
54+
<groupId>org.apache.maven.plugins</groupId>
55+
<artifactId>maven-shade-plugin</artifactId>
56+
<executions>
57+
<execution>
58+
<phase>package</phase>
59+
<goals>
60+
<goal>shade</goal>
61+
</goals>
62+
<configuration>
63+
<artifactSet>
64+
<includes>
65+
<include>io.opentelemetry:*</include>
66+
<include>io.opentelemetry.semconv:*</include>
67+
<include>io.opentelemetry.instrumentation:*</include>
68+
<include>com.squareup.*:*</include>
69+
<include>org.jetbrains:*</include>
70+
<include>org.jetbrains.*:*</include>
71+
</includes>
72+
</artifactSet>
73+
<relocations>
74+
<relocation>
75+
<pattern>io.opentelemetry</pattern>
76+
<shadedPattern>
77+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}
78+
</shadedPattern>
79+
</relocation>
80+
<relocation>
81+
<pattern>io.opentelemetry.instrumentation</pattern>
82+
<shadedPattern>
83+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}.instrumentation
84+
</shadedPattern>
85+
</relocation>
86+
<relocation>
87+
<pattern>io.opentelemetry.semconv</pattern>
88+
<shadedPattern>
89+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}.semconv
90+
</shadedPattern>
91+
</relocation>
92+
<relocation>
93+
<pattern>okhttp3</pattern>
94+
<shadedPattern>
95+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}.okhttp3
96+
</shadedPattern>
97+
</relocation>
98+
<relocation>
99+
<pattern>kotlin</pattern>
100+
<shadedPattern>
101+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}.kotlin
102+
</shadedPattern>
103+
</relocation>
104+
<relocation>
105+
<pattern>org.intellij</pattern>
106+
<shadedPattern>
107+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}.org.intellij
108+
</shadedPattern>
109+
</relocation>
110+
<relocation>
111+
<pattern>org.jetbrains</pattern>
112+
<shadedPattern>
113+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}.org.jetbrains
114+
</shadedPattern>
115+
</relocation>
116+
<relocation>
117+
<pattern>okio</pattern>
118+
<shadedPattern>
119+
io.prometheus.metrics.shaded.io_opentelemetry_${otel.instrumentation.string-version}.okio
120+
</shadedPattern>
121+
</relocation>
122+
</relocations>
123+
<transformers>
124+
<transformer
125+
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
126+
</transformers>
127+
<filters>
128+
<filter>
129+
<artifact>*:*</artifact>
130+
<excludes>
131+
<exclude>lib/opentelemetry-*</exclude>
132+
<exclude>META-INF/maven/org.jctools/**</exclude>
133+
<exclude>META-INF/maven/org.jetbrains/**</exclude>
134+
<exclude>META-INF/versions/**</exclude>
135+
<exclude>META-INF/native-image/**</exclude>
136+
<exclude>META-INF/proguard/**</exclude>
137+
<exclude>META-INF/*.kotlin_module</exclude>
138+
<exclude>META-INF/MANIFEST.MF</exclude>
139+
</excludes>
140+
</filter>
141+
</filters>
142+
</configuration>
143+
</execution>
144+
</executions>
145+
</plugin>
146+
</plugins>
147+
</build>
148+
</project>

0 commit comments

Comments
 (0)