Skip to content

Commit 42ae61e

Browse files
committed
feat: open telemetry metrics
Signed-off-by: Attila Mészáros <[email protected]>
1 parent c711d59 commit 42ae61e

File tree

3 files changed

+140
-0
lines changed

3 files changed

+140
-0
lines changed

open-telemetry-support/pom.xml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<parent>
5+
<groupId>io.javaoperatorsdk</groupId>
6+
<artifactId>java-operator-sdk</artifactId>
7+
<version>5.1.2-SNAPSHOT</version>
8+
</parent>
9+
10+
<artifactId>open-telemetry-support</artifactId>
11+
<name>Operator SDK - Open Telemetry Metrics Support</name>
12+
13+
<dependencyManagement>
14+
<dependencies>
15+
<dependency>
16+
<groupId>io.opentelemetry</groupId>
17+
<artifactId>opentelemetry-bom</artifactId>
18+
<version>${opentelemetry.version}</version>
19+
<type>pom</type>
20+
<scope>import</scope>
21+
</dependency>
22+
</dependencies>
23+
</dependencyManagement>
24+
25+
<dependencies>
26+
<dependency>
27+
<groupId>io.opentelemetry</groupId>
28+
<artifactId>opentelemetry-api</artifactId>
29+
</dependency>
30+
<dependency>
31+
<groupId>io.opentelemetry</groupId>
32+
<artifactId>opentelemetry-sdk</artifactId>
33+
</dependency>
34+
<dependency>
35+
<groupId>io.opentelemetry</groupId>
36+
<artifactId>opentelemetry-exporter-otlp</artifactId>
37+
</dependency>
38+
<dependency>
39+
<groupId>io.javaoperatorsdk</groupId>
40+
<artifactId>operator-framework-core</artifactId>
41+
</dependency>
42+
<dependency>
43+
<groupId>org.junit.jupiter</groupId>
44+
<artifactId>junit-jupiter-api</artifactId>
45+
<scope>test</scope>
46+
</dependency>
47+
<dependency>
48+
<groupId>org.junit.jupiter</groupId>
49+
<artifactId>junit-jupiter-engine</artifactId>
50+
<scope>test</scope>
51+
</dependency>
52+
<dependency>
53+
<groupId>org.assertj</groupId>
54+
<artifactId>assertj-core</artifactId>
55+
<scope>test</scope>
56+
</dependency>
57+
<dependency>
58+
<groupId>org.awaitility</groupId>
59+
<artifactId>awaitility</artifactId>
60+
<scope>test</scope>
61+
</dependency>
62+
<dependency>
63+
<groupId>io.javaoperatorsdk</groupId>
64+
<artifactId>operator-framework-junit-5</artifactId>
65+
<version>${project.version}</version>
66+
<scope>test</scope>
67+
</dependency>
68+
<dependency>
69+
<groupId>io.fabric8</groupId>
70+
<artifactId>kubernetes-httpclient-vertx</artifactId>
71+
<scope>test</scope>
72+
</dependency>
73+
</dependencies>
74+
75+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package io.javaoperatorsdk.operator.monitoring.opentelemetry;
2+
3+
import io.fabric8.kubernetes.api.model.HasMetadata;
4+
import io.javaoperatorsdk.operator.api.monitoring.Metrics;
5+
import io.javaoperatorsdk.operator.api.reconciler.RetryInfo;
6+
import io.javaoperatorsdk.operator.processing.Controller;
7+
import io.javaoperatorsdk.operator.processing.event.Event;
8+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
9+
10+
import java.util.Map;
11+
12+
public class OpenTelemetryMetrics implements Metrics {
13+
14+
@Override
15+
public void controllerRegistered(Controller<? extends HasMetadata> controller) {
16+
Metrics.super.controllerRegistered(controller);
17+
}
18+
19+
@Override
20+
public void receivedEvent(Event event, Map<String, Object> metadata) {
21+
Metrics.super.receivedEvent(event, metadata);
22+
}
23+
24+
@Override
25+
public void reconcileCustomResource(HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
26+
Metrics.super.reconcileCustomResource(resource, retryInfo, metadata);
27+
}
28+
29+
@Override
30+
public void failedReconciliation(HasMetadata resource, Exception exception, Map<String, Object> metadata) {
31+
Metrics.super.failedReconciliation(resource, exception, metadata);
32+
}
33+
34+
@Override
35+
public void reconciliationExecutionStarted(HasMetadata resource, Map<String, Object> metadata) {
36+
Metrics.super.reconciliationExecutionStarted(resource, metadata);
37+
}
38+
39+
@Override
40+
public void reconciliationExecutionFinished(HasMetadata resource, Map<String, Object> metadata) {
41+
Metrics.super.reconciliationExecutionFinished(resource, metadata);
42+
}
43+
44+
@Override
45+
public void cleanupDoneFor(ResourceID resourceID, Map<String, Object> metadata) {
46+
Metrics.super.cleanupDoneFor(resourceID, metadata);
47+
}
48+
49+
@Override
50+
public void finishedReconciliation(HasMetadata resource, Map<String, Object> metadata) {
51+
Metrics.super.finishedReconciliation(resource, metadata);
52+
}
53+
54+
@Override
55+
public <T> T timeControllerExecution(ControllerExecution<T> execution) throws Exception {
56+
return Metrics.super.timeControllerExecution(execution);
57+
}
58+
59+
@Override
60+
public <T extends Map<?, ?>> T monitorSizeOf(T map, String name) {
61+
return Metrics.super.monitorSizeOf(map, name);
62+
}
63+
}

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<module>operator-framework-junit5</module>
3434
<module>operator-framework</module>
3535
<module>micrometer-support</module>
36+
<module>open-telemetry-support</module>
3637
<module>sample-operators</module>
3738
<module>caffeine-bounded-cache-support</module>
3839
<module>bootstrapper-maven-plugin</module>
@@ -68,6 +69,7 @@
6869
<mustache.version>0.9.14</mustache.version>
6970
<commons.io.version>2.20.0</commons.io.version>
7071
<java.diff.version>4.16</java.diff.version>
72+
<opentelemetry.version>1.52.0</opentelemetry.version>
7173

7274
<fmt-maven-plugin.version>2.11</fmt-maven-plugin.version>
7375
<maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>

0 commit comments

Comments
 (0)