You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@hertzbeat.apache.org by zh...@apache.org on 2025/05/07 09:27:29 UTC
(hertzbeat) 03/03: feat(otel): integrate OpenTelemetry for GreptimeDB logs and traces- Rename hertzbeat-log to hertzbeat-otel - Update dependencies to use OpenTelemetry instrumentation - Refactor OpenTelemetry configuration for GreptimeDB integration - Add OpenTelemetryLogbackAppenderInstaller for Logback integration - Update Maven pom files to reflect new dependencies and structure
This is an automated email from the ASF dual-hosted git repository.
zhaoqingran pushed a commit to branch traces
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
commit 59781ad673316f89637d2484b70ea2bb29843763
Author: Logic <zq...@dromara.org>
AuthorDate: Wed May 7 17:26:19 2025 +0800
feat(otel): integrate OpenTelemetry for GreptimeDB logs and traces- Rename hertzbeat-log to hertzbeat-otel
- Update dependencies to use OpenTelemetry instrumentation
- Refactor OpenTelemetry configuration for GreptimeDB integration
- Add OpenTelemetryLogbackAppenderInstaller for Logback integration
- Update Maven pom files to reflect new dependencies and structure
---
.../hertzbeat/log/config/OpenTelemetryConfig.java | 117 ----------------
hertzbeat-manager/pom.xml | 2 +-
.../hertzbeat/manager/config/JacksonConfig.java | 2 +-
{hertzbeat-log => hertzbeat-otel}/pom.xml | 21 +--
.../otel}/config/LogAutoConfiguration.java | 2 +-
.../hertzbeat/otel/config/OpenTelemetryConfig.java | 154 +++++++++++++++++++++
.../OpenTelemetryLogbackAppenderInstaller.java | 58 ++++++++
.../src/main/resources/META-INF/spring.factories | 2 +-
material/licenses/LICENSE | 5 +-
pom.xml | 35 ++---
10 files changed, 232 insertions(+), 166 deletions(-)
diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/OpenTelemetryConfig.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/OpenTelemetryConfig.java
deleted file mode 100644
index adb71b7fd0..0000000000
--- a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/OpenTelemetryConfig.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.hertzbeat.log.config;
-
-import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_NAME;
-import io.opentelemetry.api.OpenTelemetry;
-import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
-import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender;
-import io.opentelemetry.sdk.OpenTelemetrySdk;
-import io.opentelemetry.sdk.logs.SdkLoggerProvider;
-import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor;
-import io.opentelemetry.sdk.resources.Resource;
-
-import jakarta.annotation.PostConstruct;
-import java.util.Base64;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.hertzbeat.warehouse.store.history.greptime.GreptimeProperties;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * OpenTelemetryConfig is responsible for initializing OpenTelemetry with the specified service name and GrepTimeDB endpoint.
- * It ensures that the initialization is done in a thread-safe manner and includes authentication for GrepTimeDB.
- */
-@Configuration
-@Slf4j
-public class OpenTelemetryConfig {
-
- @Autowired
- private GreptimeProperties greptimeProperties;
-
- /**
- * Initializes OpenTelemetry with the given service name and GrepTimeDB endpoint.
- * Includes authentication if configured in GreptimeProperties.
- */
- @PostConstruct
- public void initializeOpenTelemetry() {
- if (greptimeProperties == null || !greptimeProperties.enabled()) {
- log.info("GrepTimeDB logging is disabled, skipping OpenTelemetry configuration.");
- return;
- }
-
- try {
- Resource resource = Resource.getDefault()
- .merge(Resource.builder()
- .put(SERVICE_NAME, "HertzBeat")
- .build());
-
- Map<String, String> headers = new HashMap<>();
-
- headers.put("X-Greptime-DB-Name", "public");
- headers.put("X-Greptime-Log-Table-Name", "hzb_log");
-
- addAuthenticationHeaders(headers);
-
- OtlpHttpLogRecordExporter logExporter = OtlpHttpLogRecordExporter.builder()
- .setEndpoint(greptimeProperties.httpEndpoint() + "/v1/otlp/v1/logs")
- .setHeaders(()-> headers)
- .setTimeout(10, TimeUnit.SECONDS)
- .build();
-
- SdkLoggerProvider loggerProvider = SdkLoggerProvider.builder()
- .setResource(resource)
- .addLogRecordProcessor(
- BatchLogRecordProcessor.builder(logExporter)
- .setScheduleDelay(1000, TimeUnit.MILLISECONDS)
- .setMaxExportBatchSize(512)
- .build())
- .build();
-
- OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
- .setLoggerProvider(loggerProvider)
- .build();
-
- OpenTelemetryAppender.install(openTelemetry);
- log.info("OpenTelemetry successfully configured with GrepTimeDB exporter.");
- } catch (Exception e) {
- log.error("Failed to initialize OpenTelemetry with GrepTimeDB", e);
- }
- }
-
- /**
- * Adds authentication headers to the provided map if username and password are configured.
- *
- * @param headers the map to which authentication headers will be added
- */
- private void addAuthenticationHeaders(Map<String, String> headers) {
- if (StringUtils.isNotBlank(greptimeProperties.username())
- && StringUtils.isNotBlank(greptimeProperties.password())) {
- String credentials = greptimeProperties.username() + ":" + greptimeProperties.password();
- String encodedCredentials = Base64.getEncoder().encodeToString(credentials.getBytes());
- headers.put("Authorization", "Basic " + encodedCredentials);
- }
-
- }
-}
\ No newline at end of file
diff --git a/hertzbeat-manager/pom.xml b/hertzbeat-manager/pom.xml
index d5351ad9cf..022fbeb610 100644
--- a/hertzbeat-manager/pom.xml
+++ b/hertzbeat-manager/pom.xml
@@ -92,7 +92,7 @@
<!-- log -->
<dependency>
<groupId>org.apache.hertzbeat</groupId>
- <artifactId>hertzbeat-log</artifactId>
+ <artifactId>hertzbeat-otel</artifactId>
</dependency>
<!-- spring -->
<dependency>
diff --git a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/JacksonConfig.java b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/JacksonConfig.java
index cf437b0978..3c22dcf536 100644
--- a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/JacksonConfig.java
+++ b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/JacksonConfig.java
@@ -35,7 +35,7 @@ import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
public class JacksonConfig {
@Bean
- public Jackson2ObjectMapperBuilderCustomizer customizer() {
+ public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
return builder -> {
JavaTimeModule javaTimeModule = new JavaTimeModule();
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
diff --git a/hertzbeat-log/pom.xml b/hertzbeat-otel/pom.xml
similarity index 78%
rename from hertzbeat-log/pom.xml
rename to hertzbeat-otel/pom.xml
index b76d5311b2..43d1004bf2 100644
--- a/hertzbeat-log/pom.xml
+++ b/hertzbeat-otel/pom.xml
@@ -24,7 +24,7 @@
<version>2.0-SNAPSHOT</version>
</parent>
- <artifactId>hertzbeat-log</artifactId>
+ <artifactId>hertzbeat-otel</artifactId>
<name>${project.artifactId}</name>
<properties>
<maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
@@ -44,24 +44,13 @@
</dependency>
<!-- OpenTelemetry -->
<dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-api</artifactId>
- </dependency>
- <dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-sdk</artifactId>
- </dependency>
- <dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-sdk-logs</artifactId>
- </dependency>
- <dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-exporter-otlp</artifactId>
+ <groupId>io.opentelemetry.instrumentation</groupId>
+ <artifactId>opentelemetry-logback-appender-1.0</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
- <artifactId>opentelemetry-logback-appender-1.0</artifactId>
+ <artifactId>opentelemetry-spring-boot-starter</artifactId>
</dependency>
+
</dependencies>
</project>
diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/LogAutoConfiguration.java b/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/LogAutoConfiguration.java
similarity index 97%
rename from hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/LogAutoConfiguration.java
rename to hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/LogAutoConfiguration.java
index 0d2daa7909..fbf517d427 100644
--- a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/LogAutoConfiguration.java
+++ b/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/LogAutoConfiguration.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.hertzbeat.log.config;
+package org.apache.hertzbeat.otel.config;
import org.apache.hertzbeat.common.constants.ConfigConstants;
import org.apache.hertzbeat.common.constants.SignConstants;
diff --git a/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryConfig.java b/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryConfig.java
new file mode 100644
index 0000000000..44110c6d18
--- /dev/null
+++ b/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryConfig.java
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.hertzbeat.otel.config;
+
+import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_NAME;
+import static org.apache.http.HttpHeaders.CONTENT_TYPE;
+
+import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
+import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter;
+import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder;
+import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
+import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor;
+import io.opentelemetry.sdk.resources.Resource;
+
+import java.util.Base64;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hertzbeat.warehouse.store.history.greptime.GreptimeProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * OpenTelemetryConfig provides customizations for the auto-configured OpenTelemetry SDK,
+ * specifically for integrating with GrepTimeDB for logs and traces.
+ */
+@Configuration
+@Slf4j
+public class OpenTelemetryConfig {
+
+ private static final String HERTZBEAT_SERVICE_NAME = "HertzBeat";
+ private static final String DEFAULT_GREPTIME_DB_NAME = "public";
+ private static final String DEFAULT_LOGS_TABLE_NAME = "hzb_logs";
+ private static final String DEFAULT_TRACES_TABLE_NAME = "hzb_traces";
+ private static final String GREPTIME_DB_NAME_HEADER = "X-Greptime-DB-Name";
+ private static final String GREPTIME_LOG_TABLE_NAME_HEADER = "X-Greptime-Log-Table-Name";
+ private static final String GREPTIME_TRACE_TABLE_NAME_HEADER = "X-Greptime-Trace-Table-Name";
+ private static final String GREPTIME_PIPELINE_NAME_HEADER = "X-Greptime-Pipeline-Name";
+
+ /**
+ * Adds authentication headers if credentials are provided.
+ */
+ private void addAuthenticationHeaders(Map<String, String> headers, GreptimeProperties greptimeProps) {
+ if (greptimeProps != null && StringUtils.isNotBlank(greptimeProps.username())
+ && StringUtils.isNotBlank(greptimeProps.password())) {
+ String credentials = greptimeProps.username() + ":" + greptimeProps.password();
+ String encodedCredentials = Base64.getEncoder().encodeToString(credentials.getBytes());
+ headers.put("Authorization", "Basic " + encodedCredentials);
+ log.debug("Added Basic Authentication header for GreptimeDB.");
+ } else {
+ log.debug("GreptimeDB username/password not configured, skipping Authentication header.");
+ }
+ }
+
+ /**
+ * Builds HTTP Log headers for OTLP communication with GreptimeDB.
+ */
+ private Map<String, String> buildGreptimeOtlpLogHeaders(GreptimeProperties greptimeProps) {
+ Map<String, String> headers = new HashMap<>();
+ headers.put(GREPTIME_DB_NAME_HEADER, DEFAULT_GREPTIME_DB_NAME);
+ headers.put(GREPTIME_LOG_TABLE_NAME_HEADER, DEFAULT_LOGS_TABLE_NAME );
+ addAuthenticationHeaders(headers, greptimeProps);
+ return Collections.unmodifiableMap(headers);
+ }
+
+ /**
+ * Builds HTTP Trace headers for OTLP communication with GreptimeDB.
+ */
+ private Map<String, String> buildGreptimeOtlpTraceHeaders(GreptimeProperties greptimeProps) {
+ Map<String, String> headers = new HashMap<>();
+ headers.put(GREPTIME_DB_NAME_HEADER, DEFAULT_GREPTIME_DB_NAME);
+ headers.put(GREPTIME_TRACE_TABLE_NAME_HEADER, DEFAULT_TRACES_TABLE_NAME);
+ headers.put(CONTENT_TYPE, "application/x-protobuf");
+ headers.put(GREPTIME_PIPELINE_NAME_HEADER, "greptime_trace_v1");
+ addAuthenticationHeaders(headers, greptimeProps);
+ return Collections.unmodifiableMap(headers);
+ }
+
+ /**
+ * Provides an AutoConfigurationCustomizerProvider to tailor the auto-configured OpenTelemetry SDK.
+ * This includes setting up GrepTimeDB exporters for logs and traces, and customizing the resource.
+ * Active only if 'greptime.enabled' is true.
+ *
+ * @param greptimeProperties Configuration for GrepTimeDB.
+ * @return AutoConfigurationCustomizerProvider instance.
+ */
+ @Bean
+ @ConditionalOnProperty(name = "warehouse.store.greptime.enabled", havingValue = "true")
+ public AutoConfigurationCustomizerProvider greptimeOtelCustomizer(GreptimeProperties greptimeProperties) {
+ log.info("GreptimeDB is enabled. Applying OpenTelemetry SDK customizations.");
+
+ return providerCustomizer -> providerCustomizer
+ .addPropertiesCustomizer(sdkConfigProperties -> {
+ Map<String, String> newProperties = new HashMap<>();
+ newProperties.put("otel.metrics.exporter", "none");
+ newProperties.put("otel.traces.exporter", "otlp");
+ newProperties.put("otel.logs.exporter", "none");
+ return newProperties;
+ })
+ .addResourceCustomizer((resource, configProperties) -> {
+ log.info("Customizing auto-configured OpenTelemetry Resource with service name: {}.", HERTZBEAT_SERVICE_NAME);
+ return resource.merge(Resource.builder().put(SERVICE_NAME, HERTZBEAT_SERVICE_NAME).build());
+ })
+ .addSpanExporterCustomizer((originalSpanExporter, configProperties) -> {
+ String traceEndpoint = greptimeProperties.httpEndpoint() + "/v1/otlp/v1/traces";
+ log.info("Programmatically configuring OtlpHttpSpanExporter for GreptimeDB traces. Endpoint: {}", traceEndpoint);
+ Map<String, String> traceHeaders = buildGreptimeOtlpTraceHeaders(greptimeProperties);
+ log.info("Trace Headers for GreptimeDB (programmatic HTTP config): {}", traceHeaders);
+
+ OtlpHttpSpanExporterBuilder httpExporterBuilder = OtlpHttpSpanExporter.builder()
+ .setEndpoint(traceEndpoint)
+ .setHeaders(() -> traceHeaders)
+ .setTimeout(10000, TimeUnit.MILLISECONDS);
+ return httpExporterBuilder.build();
+ })
+ .addLoggerProviderCustomizer((sdkLoggerProviderBuilder, configProperties) -> {
+ log.info("Customizing auto-configured SdkLoggerProviderBuilder for GrepTimeDB logs.");
+
+ OtlpHttpLogRecordExporter logExporter = OtlpHttpLogRecordExporter.builder()
+ .setEndpoint(greptimeProperties.httpEndpoint() + "/v1/otlp/v1/logs")
+ .setHeaders(() -> buildGreptimeOtlpLogHeaders(greptimeProperties))
+ .setTimeout(10000, TimeUnit.MILLISECONDS)
+ .build();
+
+ BatchLogRecordProcessor batchLogProcessor = BatchLogRecordProcessor.builder(logExporter)
+ .setScheduleDelay(1000, TimeUnit.MILLISECONDS)
+ .setMaxExportBatchSize(512)
+ .build();
+
+ return sdkLoggerProviderBuilder.addLogRecordProcessor(batchLogProcessor);
+ });
+ }
+}
\ No newline at end of file
diff --git a/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryLogbackAppenderInstaller.java b/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryLogbackAppenderInstaller.java
new file mode 100644
index 0000000000..12320b9a9d
--- /dev/null
+++ b/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryLogbackAppenderInstaller.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.hertzbeat.otel.config;
+
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * Installs the OpenTelemetryAppender for Logback once the auto-configured
+ * OpenTelemetry SDK is available and GrepTimeDB integration is enabled.
+ */
+@Component
+@ConditionalOnProperty(name = "warehouse.store.greptime.enabled", havingValue = "true")
+@Slf4j
+public class OpenTelemetryLogbackAppenderInstaller implements InitializingBean {
+
+ private final OpenTelemetry openTelemetry;
+
+ @Autowired
+ public OpenTelemetryLogbackAppenderInstaller(OpenTelemetry openTelemetry) {
+ this.openTelemetry = openTelemetry;
+ }
+
+ @Override
+ public void afterPropertiesSet() {
+ if (this.openTelemetry instanceof OpenTelemetrySdk) {
+ log.info("Auto-configured OpenTelemetry SDK detected. Installing OpenTelemetryAppender for Logback.");
+ OpenTelemetryAppender.install(this.openTelemetry);
+ } else {
+ log.warn("OpenTelemetry SDK is not an instance of OpenTelemetrySdk (type: {}). " +
+ "OpenTelemetryAppender for Logback will not be installed. " +
+ "Ensure OpenTelemetry auto-configuration is active and correctly providing an SDK.",
+ this.openTelemetry != null ? this.openTelemetry.getClass().getName() : "null");
+ }
+ }
+}
\ No newline at end of file
diff --git a/hertzbeat-log/src/main/resources/META-INF/spring.factories b/hertzbeat-otel/src/main/resources/META-INF/spring.factories
similarity index 94%
rename from hertzbeat-log/src/main/resources/META-INF/spring.factories
rename to hertzbeat-otel/src/main/resources/META-INF/spring.factories
index 07b683cf39..cb9d601c41 100644
--- a/hertzbeat-log/src/main/resources/META-INF/spring.factories
+++ b/hertzbeat-otel/src/main/resources/META-INF/spring.factories
@@ -14,4 +14,4 @@
# limitations under the License.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-org.apache.hertzbeat.log.config.LogAutoConfiguration
\ No newline at end of file
+org.apache.hertzbeat.otel.config.LogAutoConfiguration
\ No newline at end of file
diff --git a/material/licenses/LICENSE b/material/licenses/LICENSE
index ed76a87333..13f11ae633 100644
--- a/material/licenses/LICENSE
+++ b/material/licenses/LICENSE
@@ -434,10 +434,7 @@ The text of each license is the standard Apache 2.0 license.
https://mvnrepository.com/artifact/org.webjars/swagger-ui/5.10.3 Apache-2.0
https://mvnrepository.com/artifact/com.google.flatbuffers/flatbuffers-java/1.12.0 Apache-2.0
https://mvnrepository.com/artifact/com.vesoft/client/3.6.0 Apache-2.0
- https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-api/1.49.0 Apache-2.0
- https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-sdk/1.49.0 Apache-2.0
- https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-sdk-logs/1.49.0 Apache-2.0
- https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-exporter-otlp/1.49.0 Apache-2.0
+ https://mvnrepository.com/artifact/io.opentelemetry.instrumentation/opentelemetry-spring-boot-starter-2.15.0 Apache-2.0
https://mvnrepository.com/artifact/io.opentelemetry.instrumentation/opentelemetry-logback-appender-1.0 Apache-2.0
========================================================================
diff --git a/pom.xml b/pom.xml
index 929eeebe05..449f4675de 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@
<module>hertzbeat-push</module>
<module>hertzbeat-plugin</module>
<module>hertzbeat-grafana</module>
- <module>hertzbeat-log</module>
+ <module>hertzbeat-otel</module>
<module>hertzbeat-e2e</module>
<module>hertzbeat-base</module>
<module>hertzbeat-mcp</module>
@@ -175,7 +175,7 @@
<arrow.version>18.1.0</arrow.version>
<snappy-java.version>1.1.10.7</snappy-java.version>
<sshd-sftp.version>2.13.1</sshd-sftp.version>
- <opentelemetry-api.version>1.43.0</opentelemetry-api.version>
+ <opentelemetry-starter.version>2.15.0</opentelemetry-starter.version>
<opentelemetry-logback.version>2.14.0-alpha</opentelemetry-logback.version>
</properties>
@@ -238,7 +238,7 @@
<!-- log -->
<dependency>
<groupId>org.apache.hertzbeat</groupId>
- <artifactId>hertzbeat-log</artifactId>
+ <artifactId>hertzbeat-otel</artifactId>
<version>${hertzbeat.version}</version>
</dependency>
<!-- collector-basic -->
@@ -477,33 +477,18 @@
<version>${sshd-sftp.version}</version>
</dependency>
<!-- OpenTelemetry -->
- <dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-api</artifactId>
- <version>${opentelemetry-api.version}</version>
- </dependency>
-
- <dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-sdk</artifactId>
- <version>${opentelemetry-api.version}</version>
- </dependency>
-
- <dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-sdk-logs</artifactId>
- <version>${opentelemetry-api.version}</version>
- </dependency>
- <dependency>
- <groupId>io.opentelemetry</groupId>
- <artifactId>opentelemetry-exporter-otlp</artifactId>
- <version>${opentelemetry-api.version}</version>
- </dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-logback-appender-1.0</artifactId>
<version>${opentelemetry-logback.version}</version>
</dependency>
+ <dependency>
+ <groupId>io.opentelemetry.instrumentation</groupId>
+ <artifactId>opentelemetry-instrumentation-bom</artifactId>
+ <version>${opentelemetry-starter.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
</dependencies>
</dependencyManagement>
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@hertzbeat.apache.org
For additional commands, e-mail: notifications-help@hertzbeat.apache.org