Skip to content

Commit 0696f14

Browse files
Remove calls to the OTel events logger api that is removed in OTel 1.47.0 (#1070)
* Bump to OTel SDK 1.46 * Remove calls to the deprecated OTel Events Logger API * Remove calls to the deprecated OTel Events Logger API
1 parent 5d7ed90 commit 0696f14

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

src/main/java/io/jenkins/plugins/opentelemetry/JenkinsControllerOpenTelemetry.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ public Meter getDefaultMeter() {
8181
return defaultMeter;
8282
}
8383

84+
/**
85+
* Will be removed in <a
86+
* href="https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.47.0">opentelemetry-api:1.47.0</a>
87+
* @deprecated use {@link OpenTelemetry#getLogsBridge()}
88+
*/
89+
@Deprecated
8490
@NonNull
8591
public EventLogger getDefaultEventLogger() {
8692
return defaultEventLogger;

src/main/java/io/jenkins/plugins/opentelemetry/security/AuditingSecurityListener.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
import io.jenkins.plugins.opentelemetry.api.OpenTelemetryLifecycleListener;
1313
import io.jenkins.plugins.opentelemetry.semconv.ExtendedJenkinsAttributes;
1414
import io.jenkins.plugins.opentelemetry.semconv.JenkinsMetrics;
15+
import io.opentelemetry.api.GlobalOpenTelemetry;
1516
import io.opentelemetry.api.common.Attributes;
1617
import io.opentelemetry.api.common.AttributesBuilder;
17-
import io.opentelemetry.api.incubator.events.EventLogger;
1818
import io.opentelemetry.api.logs.Severity;
1919
import io.opentelemetry.api.metrics.LongCounter;
2020
import io.opentelemetry.api.metrics.Meter;
2121
import io.opentelemetry.semconv.ClientAttributes;
2222
import io.opentelemetry.semconv.incubating.EnduserIncubatingAttributes;
23+
import io.opentelemetry.semconv.incubating.EventIncubatingAttributes;
24+
import io.opentelemetry.semconv.incubating.UserIncubatingAttributes;
2325
import jenkins.YesNoMaybe;
2426
import jenkins.security.SecurityListener;
2527
import org.springframework.security.core.Authentication;
@@ -48,15 +50,16 @@ public class AuditingSecurityListener extends SecurityListener implements OpenTe
4850
private LongCounter loginFailureCounter;
4951
private LongCounter loginCounter;
5052

51-
private EventLogger eventLogger;
53+
private io.opentelemetry.api.logs.Logger otelLogger;
5254

5355
private JenkinsControllerOpenTelemetry jenkinsControllerOpenTelemetry;
5456

5557
@PostConstruct
5658
public void postConstruct() {
5759
LOGGER.log(Level.FINE, () -> "Start monitoring Jenkins controller authentication events...");
5860

59-
this.eventLogger = jenkinsControllerOpenTelemetry.getDefaultEventLogger();
61+
otelLogger = GlobalOpenTelemetry.get().getLogsBridge().get(ExtendedJenkinsAttributes.INSTRUMENTATION_NAME);
62+
6063
Meter meter = jenkinsControllerOpenTelemetry.getDefaultMeter();
6164

6265
loginSuccessCounter =
@@ -96,28 +99,29 @@ protected void loggedIn(@NonNull String username) {
9699
AttributesBuilder attributesBuilder = Attributes.builder();
97100
Optional<User> user = Optional.ofNullable(User.current());
98101
attributesBuilder
102+
.put(EventIncubatingAttributes.EVENT_NAME, ExtendedJenkinsAttributes.EVENT_NAME_USER_LOGIN)
99103
.put(ExtendedJenkinsAttributes.EVENT_CATEGORY, ExtendedJenkinsAttributes.EventCategoryValues.AUTHENTICATION)
100104
.put(ExtendedJenkinsAttributes.EVENT_OUTCOME, ExtendedJenkinsAttributes.EventOutcomeValues.SUCCESS)
101105
.put(EnduserIncubatingAttributes.ENDUSER_ID, user.map(User::getId).orElse(username))
106+
.put(UserIncubatingAttributes.USER_ID, user.map(User::getId).orElse(username))
102107
;
103108

104109
// Stapler.getCurrentRequest() returns null, it's not yet initialized
105110
SecurityContext securityContext = SecurityContextHolder.getContext();
106111
if (securityContext != null) {
107112
Authentication authentication = securityContext.getAuthentication();
108113
Object details = authentication.getDetails();
109-
if (details instanceof WebAuthenticationDetails) {
110-
WebAuthenticationDetails webAuthenticationDetails = (WebAuthenticationDetails) details;
114+
if (details instanceof WebAuthenticationDetails webAuthenticationDetails) {
111115
attributesBuilder
112116
.put(ClientAttributes.CLIENT_ADDRESS, webAuthenticationDetails.getRemoteAddress());
113117
message += " from " + webAuthenticationDetails.getRemoteAddress();
114118
}
115119
}
116-
attributesBuilder.put("message", message);
117120

118-
eventLogger.builder("user_login")
119-
.setAttributes(attributesBuilder.build())
121+
otelLogger.logRecordBuilder()
122+
.setAllAttributes(attributesBuilder.build())
120123
.setSeverity(Severity.INFO)
124+
.setBody(message)
121125
.emit();
122126
}
123127

@@ -130,18 +134,19 @@ protected void failedToLogIn(@NonNull String username) {
130134
String message = "Failed login of user '" + username + "'";
131135
AttributesBuilder attributesBuilder = Attributes.builder();
132136
attributesBuilder
137+
.put(EventIncubatingAttributes.EVENT_NAME, ExtendedJenkinsAttributes.EVENT_NAME_USER_LOGIN)
133138
.put(ExtendedJenkinsAttributes.EVENT_CATEGORY, ExtendedJenkinsAttributes.EventCategoryValues.AUTHENTICATION)
134139
.put(ExtendedJenkinsAttributes.EVENT_OUTCOME, ExtendedJenkinsAttributes.EventOutcomeValues.FAILURE)
135140
.put(EnduserIncubatingAttributes.ENDUSER_ID, username)
141+
.put(UserIncubatingAttributes.USER_ID, username)
136142
;
137143

138144
// TODO find a solution to retrieve the remoteIpAddress
139145

140-
attributesBuilder.put("message", message);
141-
142-
eventLogger.builder("user_login")
143-
.setAttributes(attributesBuilder.build())
146+
otelLogger.logRecordBuilder()
147+
.setAllAttributes(attributesBuilder.build())
144148
.setSeverity(Severity.WARN)
149+
.setBody(message)
145150
.emit();
146151
}
147152

src/main/java/io/jenkins/plugins/opentelemetry/semconv/ExtendedJenkinsAttributes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ public final class ExtendedJenkinsAttributes extends JenkinsAttributes {
145145
*/
146146
public static final AttributeKey<String> EVENT_CATEGORY = AttributeKey.stringKey("event.category");
147147
public final static String INSTRUMENTATION_NAME = "io.jenkins.opentelemetry";
148+
public static final String EVENT_NAME_USER_LOGIN = "user_login";
148149

149150
/**
150151
* See https://www.elastic.co/guide/en/ecs/current/ecs-allowed-values-event-category.html

0 commit comments

Comments
 (0)