From 1c03f830e59f9d86605b663e20342751328aadce Mon Sep 17 00:00:00 2001 From: Logic Date: Sat, 11 Jul 2026 16:23:08 +0800 Subject: [PATCH 01/12] feat(observability): add entity-free OTLP signal APIs --- .../common/constants/NetworkConstants.java | 16 +- .../dto/observability/LogQueryFilter.java | 24 + .../entity/dto/observability/MetricPoint.java | 17 + .../dto/observability/MetricSeries.java | 20 + .../dto/observability/OtlpMetricsConsole.java | 22 + .../observability/OtlpMetricsInventory.java | 18 + .../entity/dto/observability/SignalPage.java | 22 + .../entity/dto/observability/TraceDetail.java | 14 + .../dto/observability/TraceListItem.java | 16 + .../dto/observability/TraceOverview.java | 13 + .../dto/observability/TraceSpanEvent.java | 14 + .../dto/observability/TraceSpanNode.java | 18 + .../security/OtlpAccessTokenValidator.java | 28 + .../StorageUnavailableException.java | 26 + .../src/test/resources/sureness.yml | 4 + hertzbeat-log/pom.xml | 19 +- .../log/config/GreptimeSignalInitializer.java | 102 ++++ .../log/config/OtlpGrpcServerConfig.java | 201 +++++++ .../log/controller/LogQueryController.java | 147 +++-- .../log/controller/OtlpSignalController.java | 78 +++ .../SignalWorkloadExceptionHandler.java | 64 +++ .../ThreeSignalQueryController.java | 134 +++++ .../log/service/OtlpSignalForwarder.java | 29 + .../service/SignalQueryRejectedException.java | 26 + .../log/service/SignalWorkloadGuard.java | 90 +++ .../log/service/ThreeSignalQueryService.java | 47 ++ .../impl/GreptimeOtlpSignalForwarder.java | 219 ++++++++ .../impl/GreptimeThreeSignalQueryService.java | 523 ++++++++++++++++++ .../pipelines/hertzbeat_otlp_log_v1.yaml | 56 ++ .../resources/greptime/tables/hzb_traces.sql | 23 + .../controller/LogQueryControllerTest.java | 123 ++-- .../manager/config/RestTemplateConfig.java | 59 +- .../impl/ManagerOtlpAccessTokenValidator.java | 65 +++ .../src/test/resources/sureness.yml | 4 + .../src/main/resources/sureness.yml | 7 + .../constants/WarehouseConstants.java | 6 + .../db/GreptimePromqlQueryExecutor.java | 6 +- .../db/GreptimeSqlQueryExecutor.java | 9 +- .../store/history/tsdb/HistoryDataReader.java | 25 +- .../tsdb/greptime/GreptimeDbDataStorage.java | 168 +++++- .../greptime/ResourceFilterExpression.java | 129 +++++ .../tsdb/influxdb/InfluxdbDataStorage.java | 10 +- .../tsdb/questdb/QuestdbDataStorage.java | 12 +- .../conf/sureness.yml | 7 + script/sureness.yml | 7 + 45 files changed, 2478 insertions(+), 189 deletions(-) create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/LogQueryFilter.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/security/OtlpAccessTokenValidator.java create mode 100644 hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/support/exception/StorageUnavailableException.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializer.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfig.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandler.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/OtlpSignalForwarder.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalQueryRejectedException.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalWorkloadGuard.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/ThreeSignalQueryService.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarder.java create mode 100644 hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryService.java create mode 100644 hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml create mode 100644 hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql create mode 100644 hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidator.java create mode 100644 hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpression.java diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/constants/NetworkConstants.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/constants/NetworkConstants.java index 7c6d15e93bb..7f1f3647855 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/constants/NetworkConstants.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/constants/NetworkConstants.java @@ -17,6 +17,8 @@ package org.apache.hertzbeat.common.constants; +import java.time.Duration; + /** * Http Constants. */ @@ -56,11 +58,17 @@ public interface NetworkConstants { */ interface HttpClientConstants { - int READ_TIME_OUT = 6 * 1000; - int WRITE_TIME_OUT = 6 * 1000; - int CONNECT_TIME_OUT = 6 * 1000; + Duration READ_TIMEOUT = Duration.ofSeconds(6); + Duration WRITE_TIMEOUT = Duration.ofSeconds(6); + Duration CONNECT_TIMEOUT = Duration.ofSeconds(6); + Duration GREPTIME_QUERY_READ_TIMEOUT = Duration.ofSeconds(5); + Duration GREPTIME_QUERY_CONNECT_TIMEOUT = Duration.ofSeconds(2); + Duration GREPTIME_WRITE_READ_TIMEOUT = Duration.ofSeconds(3); + Duration GREPTIME_WRITE_CONNECT_TIMEOUT = Duration.ofSeconds(2); + Duration GREPTIME_INIT_READ_TIMEOUT = Duration.ofSeconds(10); + Duration GREPTIME_INIT_CONNECT_TIMEOUT = Duration.ofSeconds(3); int MAX_IDLE_CONNECTIONS = 20; - int KEEP_ALIVE_TIMEOUT = 30 * 1000; + Duration KEEP_ALIVE_TIMEOUT = Duration.ofSeconds(30); } } diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/LogQueryFilter.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/LogQueryFilter.java new file mode 100644 index 00000000000..ae36f3e7ae6 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/LogQueryFilter.java @@ -0,0 +1,24 @@ +/* + * 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.common.entity.dto.observability; + +/** Entity-free OpenTelemetry log query context. */ +public record LogQueryFilter(Long start, Long end, String traceId, String spanId, Integer severityNumber, + String severityText, String search, String serviceName, String serviceNamespace, + String environment, String resourceFilter) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java new file mode 100644 index 00000000000..bb6f676c55e --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java @@ -0,0 +1,17 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +/** + * One OTLP metric sample. + * + * @param timestamp epoch milliseconds + * @param value numeric sample value + */ +public record MetricPoint(long timestamp, double value) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java new file mode 100644 index 00000000000..3e7e39266f6 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java @@ -0,0 +1,20 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.List; +import java.util.Map; + +/** + * OTLP metric time series. + * + * @param labels series labels + * @param points ordered samples + */ +public record MetricSeries(Map labels, List points) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java new file mode 100644 index 00000000000..01303cd7be6 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java @@ -0,0 +1,22 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.List; + +/** + * OTLP metrics query result. + * + * @param query effective PromQL expression + * @param start query start in epoch milliseconds + * @param end query end in epoch milliseconds + * @param stepSeconds query resolution + * @param series returned time series + */ +public record OtlpMetricsConsole(String query, long start, long end, int stepSeconds, List series) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java new file mode 100644 index 00000000000..7885775f741 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java @@ -0,0 +1,18 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.List; + +/** + * Discoverable OTLP metric names. + * + * @param metricNames sorted metric names + */ +public record OtlpMetricsInventory(List metricNames) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java new file mode 100644 index 00000000000..c3255ad1f29 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java @@ -0,0 +1,22 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.List; + +/** + * Stable pagination payload shared by the three signal workbenches. + * + * @param content current page content + * @param pageIndex zero-based page index + * @param pageSize requested page size + * @param totalElements total matching records + * @param row type + */ +public record SignalPage(List content, int pageIndex, int pageSize, long totalElements) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java new file mode 100644 index 00000000000..e7c3ab1c508 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java @@ -0,0 +1,14 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.List; + +/** Complete trace detail. */ +public record TraceDetail(TraceListItem summary, List spans) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java new file mode 100644 index 00000000000..617df000b25 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java @@ -0,0 +1,16 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.Map; + +/** Trace summary row. */ +public record TraceListItem(String traceId, String rootSpanId, String serviceName, String serviceNamespace, + String rootSpanName, long durationNanos, String status, long startTime, + int errorSpanCount, Map resourceAttributes) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java new file mode 100644 index 00000000000..f817edc7ec9 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java @@ -0,0 +1,13 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +/** Trace aggregate statistics. */ +public record TraceOverview(long totalCount, long errorCount, double errorRate, double averageDurationMillis, + double p95DurationMillis) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java new file mode 100644 index 00000000000..267b79ab14c --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java @@ -0,0 +1,14 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.Map; + +/** Event emitted while a trace span is active. */ +public record TraceSpanEvent(String name, String time, Map attributes) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java new file mode 100644 index 00000000000..4b9645990c9 --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java @@ -0,0 +1,18 @@ +/* + * 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. + */ + +package org.apache.hertzbeat.common.entity.dto.observability; + +import java.util.List; +import java.util.Map; + +/** Trace span used by the Angular waterfall. */ +public record TraceSpanNode(String traceId, String spanId, String parentSpanId, String spanName, + String serviceName, String status, String spanKind, String statusMessage, + long durationNanos, long startTime, Map resourceAttributes, + Map spanAttributes, List spanEvents) { +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/security/OtlpAccessTokenValidator.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/security/OtlpAccessTokenValidator.java new file mode 100644 index 00000000000..fbc4900204d --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/security/OtlpAccessTokenValidator.java @@ -0,0 +1,28 @@ +/* + * 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.common.security; + +/** Validates an API token for OTLP ingestion without coupling the signal module to manager. */ +public interface OtlpAccessTokenValidator { + + /** + * @param token raw bearer token + * @return null when accepted, otherwise a safe rejection reason + */ + String validate(String token); +} diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/support/exception/StorageUnavailableException.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/support/exception/StorageUnavailableException.java new file mode 100644 index 00000000000..8435410456b --- /dev/null +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/support/exception/StorageUnavailableException.java @@ -0,0 +1,26 @@ +/* + * 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.common.support.exception; + +/** Signals that a required backing store cannot currently serve a request. */ +public class StorageUnavailableException extends RuntimeException { + + public StorageUnavailableException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/resources/sureness.yml b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/resources/sureness.yml index f04c5a2f7d3..64228f740de 100644 --- a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/resources/sureness.yml +++ b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/resources/sureness.yml @@ -71,6 +71,10 @@ resourceRole: - /api/chat/**===get===[admin,user] - /api/chat/**===post===[admin,user] - /api/logs/ingest/**===post===[admin,user] + - /api/otlp/**===post===[admin,user] + - /api/ingestion/otlp/**===get===[admin,user,guest] + - /api/logs/**===get===[admin,user,guest] + - /api/traces/**===get===[admin,user,guest] # config the resource restful api that need bypass auth protection # rule: api===method diff --git a/hertzbeat-log/pom.xml b/hertzbeat-log/pom.xml index 7bc9c65fe3c..e3cd19dc102 100644 --- a/hertzbeat-log/pom.xml +++ b/hertzbeat-log/pom.xml @@ -30,6 +30,7 @@ 4.2.0 + 1.56.1 @@ -71,6 +72,22 @@ com.google.protobuf protobuf-java-util + + + io.grpc + grpc-netty-shaded + ${grpc.version} + + + io.grpc + grpc-protobuf + ${grpc.version} + + + io.grpc + grpc-stub + ${grpc.version} + org.awaitility @@ -80,4 +97,4 @@ - \ No newline at end of file + diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializer.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializer.java new file mode 100644 index 00000000000..d6b2bc24225 --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializer.java @@ -0,0 +1,102 @@ +/* + * 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 java.nio.charset.StandardCharsets; +import org.apache.hertzbeat.warehouse.constants.WarehouseConstants; +import org.apache.hertzbeat.warehouse.db.GreptimeSqlQueryExecutor; +import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.ContentDisposition; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; +import org.springframework.web.client.RestTemplate; + +/** Fails startup clearly when the required Greptime signal schema cannot be prepared. */ +@Component +@ConditionalOnProperty(prefix = "warehouse.store.greptime", name = "enabled", havingValue = "true") +public class GreptimeSignalInitializer { + + private static final String TRACE_SCHEMA = "greptime/tables/hzb_traces.sql"; + private static final String LOG_PIPELINE = "greptime/pipelines/hertzbeat_otlp_log_v1.yaml"; + private final GreptimeProperties greptimeProperties; + private final GreptimeSqlQueryExecutor sqlQueryExecutor; + private final RestTemplate restTemplate; + + public GreptimeSignalInitializer(GreptimeProperties greptimeProperties, + GreptimeSqlQueryExecutor sqlQueryExecutor, + @Qualifier(WarehouseConstants.GREPTIME_INIT_REST_TEMPLATE) + RestTemplate restTemplate) { + this.greptimeProperties = greptimeProperties; + this.sqlQueryExecutor = sqlQueryExecutor; + this.restTemplate = restTemplate; + } + + @EventListener(ApplicationReadyEvent.class) + public void initialize() { + try { + String traceSchema = new ClassPathResource(TRACE_SCHEMA) + .getContentAsString(StandardCharsets.UTF_8).strip(); + sqlQueryExecutor.execute(StringUtils.trimTrailingCharacter(traceSchema, ';')); + sqlQueryExecutor.execute("ALTER TABLE hzb_traces ADD COLUMN IF NOT EXISTS " + + "\"resource_attributes.service.namespace\" STRING NULL"); + sqlQueryExecutor.execute("ALTER TABLE hzb_traces ADD COLUMN IF NOT EXISTS " + + "\"resource_attributes.deployment.environment.name\" STRING NULL"); + uploadLogPipeline(new ClassPathResource(LOG_PIPELINE) + .getContentAsString(StandardCharsets.UTF_8)); + if (sqlQueryExecutor.execute("SELECT 1 AS ready").isEmpty()) { + throw new IllegalStateException("GreptimeDB readiness query returned no data"); + } + } catch (Exception exception) { + throw new IllegalStateException("GreptimeDB is required for the three-signal release but initialization failed", + exception); + } + } + + private void uploadLogPipeline(String pipeline) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + if (StringUtils.hasText(greptimeProperties.username()) && StringUtils.hasText(greptimeProperties.password())) { + headers.setBasicAuth(greptimeProperties.username(), greptimeProperties.password(), StandardCharsets.UTF_8); + } + HttpHeaders partHeaders = new HttpHeaders(); + partHeaders.setContentType(MediaType.parseMediaType("application/x-yaml")); + partHeaders.setContentDisposition(ContentDisposition.formData().name("file") + .filename("hertzbeat_otlp_log_v1.yaml").build()); + MultiValueMap body = new LinkedMultiValueMap<>(); + body.add("file", new HttpEntity<>(pipeline, partHeaders)); + String endpoint = StringUtils.trimTrailingCharacter(greptimeProperties.httpEndpoint(), '/') + + "/v1/pipelines/hertzbeat_otlp_log_v1"; + ResponseEntity response = restTemplate.exchange(endpoint, HttpMethod.POST, + new HttpEntity<>(body, headers), String.class); + if (!response.getStatusCode().is2xxSuccessful()) { + throw new IllegalStateException("GreptimeDB log pipeline upload failed: " + response.getStatusCode()); + } + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfig.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfig.java new file mode 100644 index 00000000000..9e6d3bc067c --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfig.java @@ -0,0 +1,201 @@ +/* + * 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 io.grpc.ForwardingServerCallListener; +import io.grpc.Metadata; +import io.grpc.Server; +import io.grpc.ServerCall; +import io.grpc.ServerCallHandler; +import io.grpc.ServerInterceptor; +import io.grpc.ServerInterceptors; +import io.grpc.Status; +import io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder; +import io.grpc.stub.StreamObserver; +import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest; +import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse; +import io.opentelemetry.proto.collector.logs.v1.LogsServiceGrpc; +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest; +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse; +import io.opentelemetry.proto.collector.metrics.v1.MetricsServiceGrpc; +import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest; +import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse; +import io.opentelemetry.proto.collector.trace.v1.TraceServiceGrpc; +import java.io.IOException; +import java.net.InetSocketAddress; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.hertzbeat.common.security.OtlpAccessTokenValidator; +import org.apache.hertzbeat.log.service.OtlpSignalForwarder; +import org.apache.hertzbeat.log.service.SignalQueryRejectedException; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Workload; +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.StringUtils; + +/** OTLP/gRPC listener for metrics, logs, and traces. */ +@Configuration +@ConditionalOnProperty(prefix = "warehouse.store.greptime", name = "enabled", havingValue = "true") +public class OtlpGrpcServerConfig { + + @Bean(initMethod = "start", destroyMethod = "stop") + @ConditionalOnProperty(prefix = "hertzbeat.otlp.grpc", name = "enabled", havingValue = "true", + matchIfMissing = true) + public OtlpGrpcServerRunner otlpGrpcServerRunner( + @Value("${hertzbeat.otlp.grpc.host:0.0.0.0}") String host, + @Value("${hertzbeat.otlp.grpc.port:4317}") int port, + OtlpSignalForwarder signalForwarder, + SignalWorkloadGuard workloadGuard, + ObjectProvider tokenValidatorProvider) { + OtlpAccessTokenValidator validator = tokenValidatorProvider.getIfAvailable( + () -> token -> "OTLP token validation is unavailable"); + ServerInterceptor interceptor = new BearerTokenInterceptor(validator); + return new OtlpGrpcServerRunner(host, port, signalForwarder, workloadGuard, interceptor); + } + + @Slf4j + @RequiredArgsConstructor + static final class OtlpGrpcServerRunner { + private final String host; + private final int port; + private final OtlpSignalForwarder signalForwarder; + private final SignalWorkloadGuard workloadGuard; + private final ServerInterceptor authInterceptor; + private Server server; + + public void start() throws IOException { + server = NettyServerBuilder.forAddress(new InetSocketAddress(host, port)) + .addService(ServerInterceptors.intercept(new MetricsService(signalForwarder, workloadGuard), + authInterceptor)) + .addService(ServerInterceptors.intercept(new LogsService(signalForwarder, workloadGuard), + authInterceptor)) + .addService(ServerInterceptors.intercept(new TracesService(signalForwarder, workloadGuard), + authInterceptor)) + .build().start(); + log.info("OTLP gRPC listener started on {}:{}", host, port); + } + + public void stop() { + if (server != null) { + server.shutdownNow(); + } + } + } + + @RequiredArgsConstructor + static final class MetricsService extends MetricsServiceGrpc.MetricsServiceImplBase { + private final OtlpSignalForwarder signalForwarder; + private final SignalWorkloadGuard workloadGuard; + + @Override + public void export(ExportMetricsServiceRequest request, + StreamObserver observer) { + try { + byte[] response = workloadGuard.execute(Workload.OTLP_WRITE, + () -> signalForwarder.forwardProtobuf("metrics", request.toByteArray())); + observer.onNext(response.length == 0 ? ExportMetricsServiceResponse.getDefaultInstance() + : ExportMetricsServiceResponse.parseFrom(response)); + observer.onCompleted(); + } catch (Exception exception) { + onError(observer, exception); + } + } + } + + @RequiredArgsConstructor + static final class LogsService extends LogsServiceGrpc.LogsServiceImplBase { + private final OtlpSignalForwarder signalForwarder; + private final SignalWorkloadGuard workloadGuard; + + @Override + public void export(ExportLogsServiceRequest request, StreamObserver observer) { + try { + byte[] response = workloadGuard.execute(Workload.OTLP_WRITE, + () -> signalForwarder.forwardProtobuf("logs", request.toByteArray())); + observer.onNext(response.length == 0 ? ExportLogsServiceResponse.getDefaultInstance() + : ExportLogsServiceResponse.parseFrom(response)); + observer.onCompleted(); + } catch (Exception exception) { + onError(observer, exception); + } + } + } + + @RequiredArgsConstructor + static final class TracesService extends TraceServiceGrpc.TraceServiceImplBase { + private final OtlpSignalForwarder signalForwarder; + private final SignalWorkloadGuard workloadGuard; + + @Override + public void export(ExportTraceServiceRequest request, StreamObserver observer) { + try { + byte[] response = workloadGuard.execute(Workload.OTLP_WRITE, + () -> signalForwarder.forwardProtobuf("traces", request.toByteArray())); + observer.onNext(response.length == 0 ? ExportTraceServiceResponse.getDefaultInstance() + : ExportTraceServiceResponse.parseFrom(response)); + observer.onCompleted(); + } catch (Exception exception) { + onError(observer, exception); + } + } + } + + private static void onError(StreamObserver observer, Exception exception) { + observer.onError(toGrpcStatus(exception).withDescription(exception.getMessage()).withCause(exception) + .asRuntimeException()); + } + + static Status toGrpcStatus(Exception exception) { + if (exception instanceof IllegalArgumentException) { + return Status.INVALID_ARGUMENT; + } + if (exception instanceof SignalQueryRejectedException) { + return Status.RESOURCE_EXHAUSTED; + } + return Status.UNAVAILABLE; + } + + @RequiredArgsConstructor + static final class BearerTokenInterceptor implements ServerInterceptor { + private static final Metadata.Key AUTHORIZATION = + Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER); + private final OtlpAccessTokenValidator tokenValidator; + + @Override + public ServerCall.Listener interceptCall( + ServerCall call, Metadata headers, + ServerCallHandler next) { + String authorization = headers.get(AUTHORIZATION); + if (!StringUtils.hasText(authorization) || !authorization.regionMatches(true, 0, "Bearer ", 0, 7)) { + call.close(Status.UNAUTHENTICATED.withDescription("Missing OTLP access token"), new Metadata()); + return new ServerCall.Listener<>() { }; + } + String rejectReason = tokenValidator.validate(authorization.substring(7).trim()); + if (rejectReason != null) { + call.close(Status.UNAUTHENTICATED.withDescription(rejectReason), new Metadata()); + return new ServerCall.Listener<>() { }; + } + ServerCall.Listener listener = next.startCall(call, headers); + return new ForwardingServerCallListener.SimpleForwardingServerCallListener<>(listener) { }; + } + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/LogQueryController.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/LogQueryController.java index 5d0bed1f458..07fb225d105 100644 --- a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/LogQueryController.java +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/LogQueryController.java @@ -21,14 +21,9 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import org.apache.hertzbeat.warehouse.store.history.tsdb.HistoryDataReader; import org.springframework.data.domain.Page; @@ -38,7 +33,10 @@ import lombok.extern.slf4j.Slf4j; import org.apache.hertzbeat.common.entity.dto.Message; +import org.apache.hertzbeat.common.entity.dto.observability.LogQueryFilter; import org.apache.hertzbeat.common.entity.log.LogEntry; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Workload; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -54,10 +52,14 @@ @Slf4j public class LogQueryController { + private static final int MAX_PAGE_SIZE = 200; + private final HistoryDataReader historyDataReader; + private final SignalWorkloadGuard workloadGuard; - public LogQueryController(HistoryDataReader historyDataReader) { + public LogQueryController(HistoryDataReader historyDataReader, SignalWorkloadGuard workloadGuard) { this.historyDataReader = historyDataReader; + this.workloadGuard = workloadGuard; } @GetMapping("/list") @@ -78,12 +80,20 @@ public ResponseEntity>> list( @RequestParam(value = "severityText", required = false) String severityText, @Parameter(description = "Log content search keyword", example = "error") @RequestParam(value = "search", required = false) String search, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "resource", required = false) String resource, @Parameter(description = "Page index starting from 0", example = "0") @RequestParam(value = "pageIndex", required = false, defaultValue = "0") Integer pageIndex, @Parameter(description = "Number of items per page", example = "20") @RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize) { - Page result = getPagedLogs(start, end, traceId, spanId, severityNumber, severityText, search, pageIndex, pageSize); - return ResponseEntity.ok(Message.success(result)); + return workloadGuard.execute(Workload.LOG_LIST, () -> { + LogQueryFilter filter = filter(start, end, traceId, spanId, severityNumber, severityText, search, + serviceName, serviceNamespace, environment, resource); + Page result = getPagedLogs(filter, pageIndex, pageSize); + return ResponseEntity.ok(Message.success(result)); + }); } @GetMapping("/stats/overview") @@ -103,29 +113,18 @@ public ResponseEntity>> overviewStats( @Parameter(description = "Log severity text (TRACE, DEBUG, INFO, WARN, ERROR, FATAL)", example = "INFO") @RequestParam(value = "severityText", required = false) String severityText, @Parameter(description = "Log content search keyword", example = "error") - @RequestParam(value = "search", required = false) String search) { - List logs = getFilteredLogs(start, end, traceId, spanId, severityNumber, severityText, search); - - Map overview = new HashMap<>(); - overview.put("totalCount", logs.size()); - - // Count by severity levels according to OpenTelemetry standard - // TRACE: 1-4, DEBUG: 5-8, INFO: 9-12, WARN: 13-16, ERROR: 17-20, FATAL: 21-24 - long fatalCount = logs.stream().filter(log -> log.getSeverityNumber() != null && log.getSeverityNumber() >= 21 && log.getSeverityNumber() <= 24).count(); - long errorCount = logs.stream().filter(log -> log.getSeverityNumber() != null && log.getSeverityNumber() >= 17 && log.getSeverityNumber() <= 20).count(); - long warnCount = logs.stream().filter(log -> log.getSeverityNumber() != null && log.getSeverityNumber() >= 13 && log.getSeverityNumber() <= 16).count(); - long infoCount = logs.stream().filter(log -> log.getSeverityNumber() != null && log.getSeverityNumber() >= 9 && log.getSeverityNumber() <= 12).count(); - long debugCount = logs.stream().filter(log -> log.getSeverityNumber() != null && log.getSeverityNumber() >= 5 && log.getSeverityNumber() <= 8).count(); - long traceCount = logs.stream().filter(log -> log.getSeverityNumber() != null && log.getSeverityNumber() >= 1 && log.getSeverityNumber() <= 4).count(); - - overview.put("fatalCount", fatalCount); - overview.put("errorCount", errorCount); - overview.put("warnCount", warnCount); - overview.put("infoCount", infoCount); - overview.put("debugCount", debugCount); - overview.put("traceCount", traceCount); - - return ResponseEntity.ok(Message.success(overview)); + @RequestParam(value = "search", required = false) String search, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "resource", required = false) String resource) { + return workloadGuard.execute(Workload.LOG_AGGREGATE, + () -> doOverviewStats(filter(start, end, traceId, spanId, severityNumber, severityText, search, + serviceName, serviceNamespace, environment, resource))); + } + + private ResponseEntity>> doOverviewStats(LogQueryFilter filter) { + return ResponseEntity.ok(Message.success(historyDataReader.queryLogOverviewAggregate(filter))); } @GetMapping("/stats/trace-coverage") @@ -145,26 +144,19 @@ public ResponseEntity>> traceCoverageStats( @Parameter(description = "Log severity text (TRACE, DEBUG, INFO, WARN, ERROR, FATAL)", example = "INFO") @RequestParam(value = "severityText", required = false) String severityText, @Parameter(description = "Log content search keyword", example = "error") - @RequestParam(value = "search", required = false) String search) { - List logs = getFilteredLogs(start, end, traceId, spanId, severityNumber, severityText, search); + @RequestParam(value = "search", required = false) String search, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "resource", required = false) String resource) { + return workloadGuard.execute(Workload.LOG_AGGREGATE, + () -> doTraceCoverageStats(filter(start, end, traceId, spanId, severityNumber, severityText, search, + serviceName, serviceNamespace, environment, resource))); + } + private ResponseEntity>> doTraceCoverageStats(LogQueryFilter filter) { Map result = new HashMap<>(); - - // Trace coverage statistics - long withTraceId = logs.stream().filter(log -> log.getTraceId() != null && !log.getTraceId().isEmpty()).count(); - long withSpanId = logs.stream().filter(log -> log.getSpanId() != null && !log.getSpanId().isEmpty()).count(); - long withBothTraceAndSpan = logs.stream().filter(log -> - log.getTraceId() != null && !log.getTraceId().isEmpty() - && log.getSpanId() != null && !log.getSpanId().isEmpty()).count(); - long withoutTrace = logs.size() - withTraceId; - - Map traceCoverage = new HashMap<>(); - traceCoverage.put("withTrace", withTraceId); - traceCoverage.put("withoutTrace", withoutTrace); - traceCoverage.put("withSpan", withSpanId); - traceCoverage.put("withBothTraceAndSpan", withBothTraceAndSpan); - - result.put("traceCoverage", traceCoverage); + result.put("traceCoverage", historyDataReader.queryLogOverviewAggregate(filter).get("traceCoverage")); return ResponseEntity.ok(Message.success(result)); } @@ -185,49 +177,40 @@ public ResponseEntity>> trendStats( @Parameter(description = "Log severity text (TRACE, DEBUG, INFO, WARN, ERROR, FATAL)", example = "INFO") @RequestParam(value = "severityText", required = false) String severityText, @Parameter(description = "Log content search keyword", example = "error") - @RequestParam(value = "search", required = false) String search) { - List logs = getFilteredLogs(start, end, traceId, spanId, severityNumber, severityText, search); - - // Group by hour - Map hourlyStats = logs.stream() - .filter(log -> log.getTimeUnixNano() != null) - .collect(Collectors.groupingBy( - log -> { - long timestampMs = log.getTimeUnixNano() / 1_000_000L; - LocalDateTime dateTime = LocalDateTime.ofInstant( - Instant.ofEpochMilli(timestampMs), - ZoneId.systemDefault()); - return dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:00")); - }, - Collectors.counting())); + @RequestParam(value = "search", required = false) String search, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "resource", required = false) String resource) { + return workloadGuard.execute(Workload.LOG_AGGREGATE, + () -> doTrendStats(filter(start, end, traceId, spanId, severityNumber, severityText, search, + serviceName, serviceNamespace, environment, resource))); + } + private ResponseEntity>> doTrendStats(LogQueryFilter filter) { Map result = new HashMap<>(); - result.put("hourlyStats", hourlyStats); + result.put("hourlyStats", historyDataReader.queryLogTrendAggregate(filter)); return ResponseEntity.ok(Message.success(result)); } - private List getFilteredLogs(Long start, Long end, String traceId, String spanId, - Integer severityNumber, String severityText, String search) { - // Use the new multi-condition query method - return historyDataReader.queryLogsByMultipleConditions(start, end, traceId, spanId, severityNumber, severityText, search); + private LogQueryFilter filter(Long start, Long end, String traceId, String spanId, Integer severityNumber, + String severityText, String search, String serviceName, String serviceNamespace, + String environment, String resource) { + return new LogQueryFilter(start, end, traceId, spanId, severityNumber, severityText, search, serviceName, + serviceNamespace, environment, resource); } - private Page getPagedLogs(Long start, Long end, String traceId, String spanId, - Integer severityNumber, String severityText, String search, - Integer pageIndex, Integer pageSize) { - // Calculate pagination parameters - int offset = pageIndex * pageSize; + private Page getPagedLogs(LogQueryFilter filter, Integer pageIndex, Integer pageSize) { + int effectivePage = Math.max(pageIndex == null ? 0 : pageIndex, 0); + int effectiveSize = Math.max(1, Math.min(pageSize == null ? 20 : pageSize, MAX_PAGE_SIZE)); + int offset = effectivePage * effectiveSize; - // Get total count and paginated data - long totalElements = historyDataReader.countLogsByMultipleConditions(start, end, traceId, spanId, severityNumber, severityText, search); - List pagedLogs = historyDataReader.queryLogsByMultipleConditionsWithPagination( - start, end, traceId, spanId, severityNumber, severityText, search, offset, pageSize); + long totalElements = historyDataReader.countObservabilityLogs(filter); + List pagedLogs = historyDataReader.queryObservabilityLogs(filter, offset, effectiveSize); - // Create PageRequest (sorted by timestamp descending) Sort sort = Sort.by(Sort.Direction.DESC, "timeUnixNano"); - PageRequest pageRequest = PageRequest.of(pageIndex, pageSize, sort); + PageRequest pageRequest = PageRequest.of(effectivePage, effectiveSize, sort); - // Return Spring Data Page object return new PageImpl<>(pagedLogs, pageRequest, totalElements); } -} \ No newline at end of file +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java new file mode 100644 index 00000000000..1551d4e44eb --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java @@ -0,0 +1,78 @@ +/* + * 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.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import java.nio.charset.StandardCharsets; +import org.apache.hertzbeat.log.service.OtlpSignalForwarder; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Workload; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** Standard OTLP/HTTP gateway for all three signals. */ +@RestController +@RequestMapping("/api/otlp/v1") +@Tag(name = "OTLP Signal Controller") +public class OtlpSignalController { + + private final OtlpSignalForwarder signalForwarder; + private final SignalWorkloadGuard workloadGuard; + + public OtlpSignalController(OtlpSignalForwarder signalForwarder, SignalWorkloadGuard workloadGuard) { + this.signalForwarder = signalForwarder; + this.workloadGuard = workloadGuard; + } + + @PostMapping("/metrics") + @Operation(summary = "Ingest OTLP metrics") + public ResponseEntity metrics(@RequestBody byte[] content, @RequestHeader HttpHeaders headers) { + return forward("metrics", content, headers); + } + + @PostMapping("/logs") + @Operation(summary = "Ingest OTLP logs") + public ResponseEntity logs(@RequestBody byte[] content, @RequestHeader HttpHeaders headers) { + return forward("logs", content, headers); + } + + @PostMapping("/traces") + @Operation(summary = "Ingest OTLP traces") + public ResponseEntity traces(@RequestBody byte[] content, @RequestHeader HttpHeaders headers) { + return forward("traces", content, headers); + } + + private ResponseEntity forward(String signal, byte[] content, HttpHeaders headers) { + return workloadGuard.execute(Workload.OTLP_WRITE, + () -> signalForwarder.forwardHttp(signal, content, headers)); + } + + @ExceptionHandler(IllegalArgumentException.class) + public ResponseEntity invalidPayload(IllegalArgumentException exception) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST) + .body(exception.getMessage().getBytes(StandardCharsets.UTF_8)); + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandler.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandler.java new file mode 100644 index 00000000000..3cac628fc8a --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandler.java @@ -0,0 +1,64 @@ +/* + * 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.controller; + +import static org.apache.hertzbeat.common.constants.CommonConstants.FAIL_CODE; + +import org.apache.hertzbeat.common.entity.dto.Message; +import org.apache.hertzbeat.common.support.exception.StorageUnavailableException; +import org.apache.hertzbeat.log.service.SignalQueryRejectedException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.client.RestClientException; + +/** Maps bounded signal workload rejection to a retryable HTTP response. */ +@RestControllerAdvice(basePackages = "org.apache.hertzbeat.log.controller") +@Order(Ordered.HIGHEST_PRECEDENCE) +public class SignalWorkloadExceptionHandler { + + @ExceptionHandler(IllegalArgumentException.class) + public ResponseEntity> handleInvalidQuery(IllegalArgumentException exception) { + return ResponseEntity.badRequest().body(Message.fail(FAIL_CODE, exception.getMessage())); + } + + @ExceptionHandler(SignalQueryRejectedException.class) + public ResponseEntity> handleRejected(SignalQueryRejectedException exception) { + return ResponseEntity.status(HttpStatus.TOO_MANY_REQUESTS) + .header(HttpHeaders.RETRY_AFTER, "1") + .body(Message.fail(FAIL_CODE, exception.getMessage())); + } + + @ExceptionHandler(StorageUnavailableException.class) + public ResponseEntity> handleStorageUnavailable(StorageUnavailableException exception) { + return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE) + .header(HttpHeaders.RETRY_AFTER, "1") + .body(Message.fail(FAIL_CODE, exception.getMessage())); + } + + @ExceptionHandler(RestClientException.class) + public ResponseEntity> handleStorageClientFailure(RestClientException exception) { + return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE) + .header(HttpHeaders.RETRY_AFTER, "1") + .body(Message.fail(FAIL_CODE, "GreptimeDB storage is unavailable")); + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java new file mode 100644 index 00000000000..25fb38f8dee --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java @@ -0,0 +1,134 @@ +/* + * 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.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.hertzbeat.common.entity.dto.Message; +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsConsole; +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsInventory; +import org.apache.hertzbeat.common.entity.dto.observability.SignalPage; +import org.apache.hertzbeat.common.entity.dto.observability.TraceDetail; +import org.apache.hertzbeat.common.entity.dto.observability.TraceListItem; +import org.apache.hertzbeat.common.entity.dto.observability.TraceOverview; +import org.apache.hertzbeat.log.service.ThreeSignalQueryService; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Workload; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** Public entity-free query APIs for OTLP metrics and traces. */ +@RestController +@Tag(name = "Three Signal Query Controller") +public class ThreeSignalQueryController { + + private final ThreeSignalQueryService queryService; + private final SignalWorkloadGuard workloadGuard; + + public ThreeSignalQueryController(ThreeSignalQueryService queryService, SignalWorkloadGuard workloadGuard) { + this.queryService = queryService; + this.workloadGuard = workloadGuard; + } + + @GetMapping(path = "/api/ingestion/otlp/metrics/console", produces = "application/json") + @Operation(summary = "Query OTLP metrics") + public ResponseEntity> metrics( + @RequestParam(value = "query", required = false) String query, + @RequestParam(value = "start", required = false) Long start, + @RequestParam(value = "end", required = false) Long end, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "filter", required = false) String filter, + @RequestParam(value = "groupBy", required = false) String groupBy, + @RequestParam(value = "aggregation", required = false) String aggregation, + @RequestParam(value = "step", required = false) Integer step, + @RequestParam(value = "operationName", required = false) String operationName) { + return workloadGuard.execute(Workload.METRICS, () -> ResponseEntity.ok(Message.success( + queryService.queryMetrics(query, start, end, serviceName, serviceNamespace, environment, + filter, groupBy, aggregation, step, operationName)))); + } + + @GetMapping(path = "/api/ingestion/otlp/metrics/inventory", produces = "application/json") + @Operation(summary = "List OTLP metric names") + public ResponseEntity> metricInventory( + @RequestParam(value = "start", required = false) Long start, + @RequestParam(value = "end", required = false) Long end, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "limit", defaultValue = "100") Integer limit) { + return workloadGuard.execute(Workload.METRICS, () -> ResponseEntity.ok(Message.success( + queryService.metricInventory(start, end, serviceName, serviceNamespace, environment, limit)))); + } + + @GetMapping(path = "/api/traces/list", produces = "application/json") + @Operation(summary = "Query traces") + public ResponseEntity>> traces( + @RequestParam(value = "start", required = false) Long start, + @RequestParam(value = "end", required = false) Long end, + @RequestParam(value = "traceId", required = false) String traceId, + @RequestParam(value = "errorOnly", required = false) Boolean errorOnly, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "operationName", required = false) String operationName, + @RequestParam(value = "minDurationMs", required = false) Long minDurationMs, + @RequestParam(value = "maxDurationMs", required = false) Long maxDurationMs, + @RequestParam(value = "pageIndex", defaultValue = "0") Integer pageIndex, + @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { + return workloadGuard.execute(Workload.TRACES, () -> ResponseEntity.ok(Message.success( + queryService.queryTraces(start, end, traceId, errorOnly, serviceName, serviceNamespace, + environment, operationName, minDurationMs, maxDurationMs, pageIndex, pageSize)))); + } + + @GetMapping(path = "/api/traces/stats/overview", produces = "application/json") + @Operation(summary = "Get trace overview") + public ResponseEntity> traceOverview( + @RequestParam(value = "start", required = false) Long start, + @RequestParam(value = "end", required = false) Long end, + @RequestParam(value = "traceId", required = false) String traceId, + @RequestParam(value = "errorOnly", required = false) Boolean errorOnly, + @RequestParam(value = "serviceName", required = false) String serviceName, + @RequestParam(value = "serviceNamespace", required = false) String serviceNamespace, + @RequestParam(value = "environment", required = false) String environment, + @RequestParam(value = "operationName", required = false) String operationName, + @RequestParam(value = "minDurationMs", required = false) Long minDurationMs, + @RequestParam(value = "maxDurationMs", required = false) Long maxDurationMs) { + return workloadGuard.execute(Workload.TRACES, () -> ResponseEntity.ok(Message.success( + queryService.traceOverview(start, end, traceId, errorOnly, serviceName, serviceNamespace, + environment, operationName, minDurationMs, maxDurationMs)))); + } + + @GetMapping(path = "/api/traces/{traceId}", produces = "application/json") + @Operation(summary = "Get trace detail") + public ResponseEntity> traceDetail(@PathVariable("traceId") String traceId) { + return workloadGuard.execute(Workload.TRACES, + () -> ResponseEntity.ok(Message.success(queryService.traceDetail(traceId)))); + } + + @GetMapping(path = "/api/traces/{traceId}/spans", produces = "application/json") + @Operation(summary = "Get trace spans") + public ResponseEntity> traceSpans(@PathVariable("traceId") String traceId) { + return workloadGuard.execute(Workload.TRACES, + () -> ResponseEntity.ok(Message.success(queryService.traceDetail(traceId).spans()))); + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/OtlpSignalForwarder.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/OtlpSignalForwarder.java new file mode 100644 index 00000000000..b2305fafc3d --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/OtlpSignalForwarder.java @@ -0,0 +1,29 @@ +/* + * 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.service; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; + +/** Forwards validated OTLP payloads to the configured GreptimeDB instance. */ +public interface OtlpSignalForwarder { + + ResponseEntity forwardHttp(String signal, byte[] content, HttpHeaders requestHeaders); + + byte[] forwardProtobuf(String signal, byte[] content); +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalQueryRejectedException.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalQueryRejectedException.java new file mode 100644 index 00000000000..40f43b1cbb3 --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalQueryRejectedException.java @@ -0,0 +1,26 @@ +/* + * 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.service; + +/** Raised when a signal workload exceeds its isolated concurrency budget. */ +public class SignalQueryRejectedException extends RuntimeException { + + public SignalQueryRejectedException(String workload) { + super("Signal workload is overloaded: " + workload); + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalWorkloadGuard.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalWorkloadGuard.java new file mode 100644 index 00000000000..f60677ad151 --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/SignalWorkloadGuard.java @@ -0,0 +1,90 @@ +/* + * 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.service; + +import java.time.Duration; +import java.util.EnumMap; +import java.util.Map; +import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; +import org.springframework.stereotype.Component; + +/** Isolates signal reads and writes with bounded concurrency and a short bounded queue. */ +@Component +public class SignalWorkloadGuard { + + private static final Duration QUEUE_WAIT = Duration.ofMillis(50); + private final Map slots = new EnumMap<>(Workload.class); + + public SignalWorkloadGuard() { + this(Map.of( + Workload.METRICS, new Limits(8, 16), + Workload.LOG_LIST, new Limits(8, 16), + Workload.LOG_AGGREGATE, new Limits(4, 8), + Workload.TRACES, new Limits(6, 12), + Workload.OTLP_WRITE, new Limits(16, 32))); + } + + SignalWorkloadGuard(Map limits) { + limits.forEach((workload, value) -> slots.put(workload, new Slot(value))); + } + + public T execute(Workload workload, Supplier operation) { + Slot slot = slots.get(workload); + if (slot == null || !slot.queue().tryAcquire()) { + throw new SignalQueryRejectedException(workload.name()); + } + boolean acquired = false; + try { + acquired = slot.active().tryAcquire(QUEUE_WAIT.toMillis(), TimeUnit.MILLISECONDS); + if (!acquired) { + throw new SignalQueryRejectedException(workload.name()); + } + return operation.get(); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + throw new SignalQueryRejectedException(workload.name()); + } finally { + slot.queue().release(); + if (acquired) { + slot.active().release(); + } + } + } + + /** Independently limited signal workload families. */ + public enum Workload { + METRICS, + LOG_LIST, + LOG_AGGREGATE, + TRACES, + OTLP_WRITE + } + + /** Active and waiting request limits for a workload family. */ + record Limits(int concurrency, int queueSize) { + } + + private record Slot(Semaphore active, Semaphore queue) { + + private Slot(Limits limits) { + this(new Semaphore(limits.concurrency(), true), new Semaphore(limits.queueSize(), true)); + } + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/ThreeSignalQueryService.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/ThreeSignalQueryService.java new file mode 100644 index 00000000000..5b5409f252e --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/ThreeSignalQueryService.java @@ -0,0 +1,47 @@ +/* + * 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.service; + +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsConsole; +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsInventory; +import org.apache.hertzbeat.common.entity.dto.observability.SignalPage; +import org.apache.hertzbeat.common.entity.dto.observability.TraceDetail; +import org.apache.hertzbeat.common.entity.dto.observability.TraceListItem; +import org.apache.hertzbeat.common.entity.dto.observability.TraceOverview; + +/** Entity-free query boundary for OTLP metrics and traces. */ +public interface ThreeSignalQueryService { + + OtlpMetricsConsole queryMetrics(String query, Long start, Long end, String serviceName, + String serviceNamespace, String environment, String filter, String groupBy, + String aggregation, Integer step, String operationName); + + OtlpMetricsInventory metricInventory(Long start, Long end, String serviceName, String serviceNamespace, + String environment, Integer limit); + + SignalPage queryTraces(Long start, Long end, String traceId, Boolean errorOnly, + String serviceName, String serviceNamespace, String environment, + String operationName, Long minDurationMs, Long maxDurationMs, + Integer pageIndex, Integer pageSize); + + TraceOverview traceOverview(Long start, Long end, String traceId, Boolean errorOnly, String serviceName, + String serviceNamespace, String environment, String operationName, + Long minDurationMs, Long maxDurationMs); + + TraceDetail traceDetail(String traceId); +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarder.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarder.java new file mode 100644 index 00000000000..766c58f1eca --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarder.java @@ -0,0 +1,219 @@ +/* + * 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.service.impl; + +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.Message; +import com.google.protobuf.util.JsonFormat; +import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest; +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest; +import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.HexFormat; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.zip.GZIPInputStream; +import org.apache.hertzbeat.log.service.OtlpSignalForwarder; +import org.apache.hertzbeat.common.util.JsonUtil; +import org.apache.hertzbeat.warehouse.constants.WarehouseConstants; +import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.client.RestTemplate; + +/** Greptime native OTLP forwarder for metrics, logs, and traces. */ +@Service +@ConditionalOnProperty(prefix = "warehouse.store.greptime", name = "enabled", havingValue = "true") +public class GreptimeOtlpSignalForwarder implements OtlpSignalForwarder { + + private static final String PROTOBUF = "application/x-protobuf"; + private static final String GREPTIME_DATABASE_HEADER = "X-Greptime-DB-Name"; + private static final String GREPTIME_TRACE_TABLE_HEADER = "X-Greptime-Trace-Table-Name"; + private static final String GREPTIME_PIPELINE_HEADER = "X-Greptime-Pipeline-Name"; + private static final String GREPTIME_LOG_TABLE_HEADER = "X-Greptime-Log-Table-Name"; + private static final String GREPTIME_LOG_PIPELINE_HEADER = "X-Greptime-Log-Pipeline-Name"; + private static final String GREPTIME_PROMOTE_RESOURCE_HEADER = + "X-Greptime-OTLP-Metric-Promote-Resource-Attrs"; + private static final String PROMOTED_RESOURCE_ATTRIBUTES = String.join(";", List.of( + "service.name", "service.namespace", "service.version", "deployment.environment.name", + "host.name", "k8s.namespace.name", "k8s.pod.name")); + private static final Set SIGNALS = Set.of("metrics", "logs", "traces"); + private final GreptimeProperties greptimeProperties; + private final RestTemplate restTemplate; + + public GreptimeOtlpSignalForwarder(GreptimeProperties greptimeProperties, + @Qualifier(WarehouseConstants.GREPTIME_WRITE_REST_TEMPLATE) + RestTemplate restTemplate) { + this.greptimeProperties = greptimeProperties; + this.restTemplate = restTemplate; + } + + @Override + public ResponseEntity forwardHttp(String signal, byte[] content, HttpHeaders requestHeaders) { + HttpHeaders safeHeaders = requestHeaders == null ? new HttpHeaders() : requestHeaders; + byte[] normalized = maybeDecompress(content, safeHeaders); + MediaType contentType = safeHeaders.getContentType(); + byte[] protobuf = contentType != null && MediaType.APPLICATION_JSON.includes(contentType) + ? jsonToProtobuf(signal, normalized) : validateProtobuf(signal, normalized); + byte[] response = forwardProtobuf(signal, protobuf); + if (contentType != null && MediaType.APPLICATION_JSON.includes(contentType)) { + return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON) + .body("{}".getBytes(StandardCharsets.UTF_8)); + } + return ResponseEntity.ok().contentType(MediaType.parseMediaType(PROTOBUF)).body(response); + } + + @Override + public byte[] forwardProtobuf(String signal, byte[] content) { + String normalizedSignal = normalizeSignal(signal); + byte[] validContent = validateProtobuf(normalizedSignal, content); + HttpHeaders headers = greptimeHeaders(normalizedSignal); + ResponseEntity response = restTemplate.exchange( + endpoint(greptimeProperties.httpEndpoint(), "/v1/otlp/v1/" + normalizedSignal), + HttpMethod.POST, + new HttpEntity<>(validContent, headers), + byte[].class); + if (!response.getStatusCode().is2xxSuccessful()) { + throw new IllegalStateException("GreptimeDB rejected OTLP " + normalizedSignal); + } + return response.getBody() == null ? new byte[0] : response.getBody(); + } + + private HttpHeaders greptimeHeaders(String signal) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.parseMediaType(PROTOBUF)); + headers.setAccept(List.of(MediaType.parseMediaType(PROTOBUF))); + headers.set(GREPTIME_DATABASE_HEADER, StringUtils.hasText(greptimeProperties.database()) + ? greptimeProperties.database() : "public"); + if ("metrics".equals(signal)) { + headers.set(GREPTIME_PROMOTE_RESOURCE_HEADER, PROMOTED_RESOURCE_ATTRIBUTES); + } else if ("traces".equals(signal)) { + headers.set(GREPTIME_TRACE_TABLE_HEADER, "hzb_traces"); + headers.set(GREPTIME_PIPELINE_HEADER, "greptime_trace_v1"); + } else { + headers.set(GREPTIME_LOG_TABLE_HEADER, WarehouseConstants.LOG_TABLE_NAME); + headers.set(GREPTIME_LOG_PIPELINE_HEADER, "hertzbeat_otlp_log_v1"); + } + if (StringUtils.hasText(greptimeProperties.username()) && StringUtils.hasText(greptimeProperties.password())) { + String credentials = greptimeProperties.username() + ":" + greptimeProperties.password(); + headers.setBasicAuth(Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8))); + } + return headers; + } + + private byte[] jsonToProtobuf(String signal, byte[] content) { + Message.Builder builder = switch (normalizeSignal(signal)) { + case "metrics" -> ExportMetricsServiceRequest.newBuilder(); + case "logs" -> ExportLogsServiceRequest.newBuilder(); + case "traces" -> ExportTraceServiceRequest.newBuilder(); + default -> throw new IllegalArgumentException("Unsupported OTLP signal"); + }; + try { + JsonFormat.parser().ignoringUnknownFields().merge(normalizeOtlpJson(content), builder); + return builder.build().toByteArray(); + } catch (InvalidProtocolBufferException exception) { + throw new IllegalArgumentException("Malformed OTLP " + signal + " JSON payload", exception); + } + } + + private String normalizeOtlpJson(byte[] content) { + String jsonText = new String(content, StandardCharsets.UTF_8); + if (!JsonUtil.isJsonStr(jsonText)) { + throw new IllegalArgumentException("Malformed OTLP JSON payload"); + } + Object json = JsonUtil.fromJson(jsonText, Object.class); + if (json == null) { + throw new IllegalArgumentException("Malformed OTLP JSON payload"); + } + normalizeIdBytes(json); + return JsonUtil.toJson(json); + } + + @SuppressWarnings("unchecked") + private void normalizeIdBytes(Object value) { + if (value instanceof Map rawMap) { + Map map = (Map) rawMap; + for (Map.Entry entry : map.entrySet()) { + Object child = entry.getValue(); + if (("traceId".equals(entry.getKey()) || "spanId".equals(entry.getKey()) + || "parentSpanId".equals(entry.getKey())) + && child instanceof String id && id.matches("[0-9a-fA-F]+") && id.length() % 2 == 0) { + entry.setValue(Base64.getEncoder().encodeToString(HexFormat.of().parseHex(id))); + } else { + normalizeIdBytes(child); + } + } + } else if (value instanceof List list) { + list.forEach(this::normalizeIdBytes); + } + } + + private byte[] validateProtobuf(String signal, byte[] content) { + byte[] safeContent = content == null ? new byte[0] : content; + try { + switch (normalizeSignal(signal)) { + case "metrics" -> ExportMetricsServiceRequest.parseFrom(safeContent); + case "logs" -> ExportLogsServiceRequest.parseFrom(safeContent); + case "traces" -> ExportTraceServiceRequest.parseFrom(safeContent); + default -> throw new IllegalArgumentException("Unsupported OTLP signal"); + } + return safeContent; + } catch (InvalidProtocolBufferException exception) { + throw new IllegalArgumentException("Malformed OTLP " + signal + " protobuf payload", exception); + } + } + + private byte[] maybeDecompress(byte[] content, HttpHeaders headers) { + byte[] safeContent = content == null ? new byte[0] : content; + if (!"gzip".equalsIgnoreCase(headers.getFirst(HttpHeaders.CONTENT_ENCODING))) { + return safeContent; + } + try (GZIPInputStream input = new GZIPInputStream(new ByteArrayInputStream(safeContent)); + ByteArrayOutputStream output = new ByteArrayOutputStream()) { + input.transferTo(output); + return output.toByteArray(); + } catch (IOException exception) { + throw new IllegalArgumentException("Malformed gzip OTLP payload", exception); + } + } + + private String normalizeSignal(String signal) { + String normalized = StringUtils.hasText(signal) ? signal.toLowerCase(Locale.ROOT) : ""; + if (!SIGNALS.contains(normalized)) { + throw new IllegalArgumentException("Unsupported OTLP signal"); + } + return normalized; + } + + private String endpoint(String base, String path) { + return StringUtils.trimTrailingCharacter(base, '/') + path; + } +} diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryService.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryService.java new file mode 100644 index 00000000000..dd85d7d2c57 --- /dev/null +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryService.java @@ -0,0 +1,523 @@ +/* + * 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.service.impl; + +import java.net.URI; +import java.time.Instant; +import java.time.format.DateTimeParseException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.regex.Pattern; +import org.apache.hertzbeat.common.entity.dto.observability.MetricPoint; +import org.apache.hertzbeat.common.entity.dto.observability.MetricSeries; +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsConsole; +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsInventory; +import org.apache.hertzbeat.common.entity.dto.observability.SignalPage; +import org.apache.hertzbeat.common.entity.dto.observability.TraceDetail; +import org.apache.hertzbeat.common.entity.dto.observability.TraceListItem; +import org.apache.hertzbeat.common.entity.dto.observability.TraceOverview; +import org.apache.hertzbeat.common.entity.dto.observability.TraceSpanEvent; +import org.apache.hertzbeat.common.entity.dto.observability.TraceSpanNode; +import org.apache.hertzbeat.common.util.JsonUtil; +import org.apache.hertzbeat.common.support.exception.StorageUnavailableException; +import org.apache.hertzbeat.log.service.ThreeSignalQueryService; +import org.apache.hertzbeat.warehouse.db.GreptimeSqlQueryExecutor; +import org.apache.hertzbeat.warehouse.constants.WarehouseConstants; +import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.util.StringUtils; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestClientException; +import org.springframework.web.util.UriComponentsBuilder; +import tools.jackson.core.type.TypeReference; + +/** GreptimeDB implementation of the entity-free three-signal query contract. */ +@Service +@ConditionalOnProperty(prefix = "warehouse.store.greptime", name = "enabled", havingValue = "true") +public class GreptimeThreeSignalQueryService implements ThreeSignalQueryService { + + private static final String TRACE_TABLE = "hzb_traces"; + private static final Pattern SAFE_IDENTIFIER = Pattern.compile("[A-Za-z_:][A-Za-z0-9_:.-]*"); + private static final Pattern SAFE_LABEL = Pattern.compile("[A-Za-z_][A-Za-z0-9_]*"); + private static final Set AGGREGATIONS = Set.of("sum", "avg", "min", "max", "count"); + private static final long DEFAULT_WINDOW_MILLIS = 30 * 60 * 1000L; + private static final int DEFAULT_STEP_SECONDS = 30; + private static final int MAX_PAGE_SIZE = 200; + private final GreptimeProperties greptimeProperties; + private final GreptimeSqlQueryExecutor sqlQueryExecutor; + private final RestTemplate restTemplate; + + public GreptimeThreeSignalQueryService(GreptimeProperties greptimeProperties, + GreptimeSqlQueryExecutor sqlQueryExecutor, + @Qualifier(WarehouseConstants.GREPTIME_QUERY_REST_TEMPLATE) + RestTemplate restTemplate) { + this.greptimeProperties = greptimeProperties; + this.sqlQueryExecutor = sqlQueryExecutor; + this.restTemplate = restTemplate; + } + + @Override + public OtlpMetricsConsole queryMetrics(String query, Long start, Long end, String serviceName, + String serviceNamespace, String environment, String filter, + String groupBy, String aggregation, Integer step, String operationName) { + validateTimeRange(start, end); + long effectiveEnd = end == null ? Instant.now().toEpochMilli() : end; + long effectiveStart = start == null ? effectiveEnd - DEFAULT_WINDOW_MILLIS : start; + int effectiveStep = step == null ? DEFAULT_STEP_SECONDS : Math.max(1, Math.min(step, 3600)); + String effectiveQuery = buildPromql(query, serviceName, serviceNamespace, environment, filter, + groupBy, aggregation, operationName); + URI uri = UriComponentsBuilder.fromUriString(greptimeProperties.httpEndpoint()) + .path("/v1/prometheus/api/v1/query_range") + .queryParam("db", greptimeProperties.database()) + .queryParam("query", effectiveQuery) + .queryParam("start", effectiveStart / 1000.0) + .queryParam("end", effectiveEnd / 1000.0) + .queryParam("step", effectiveStep) + .build().encode().toUri(); + Map response = getPrometheus(uri); + return new OtlpMetricsConsole(effectiveQuery, effectiveStart, effectiveEnd, effectiveStep, + readMetricSeries(response)); + } + + @Override + public OtlpMetricsInventory metricInventory(Long start, Long end, String serviceName, String serviceNamespace, + String environment, Integer limit) { + int effectiveLimit = Math.max(1, Math.min(limit == null ? 100 : limit, 500)); + URI uri = UriComponentsBuilder.fromUriString(greptimeProperties.httpEndpoint()) + .path("/v1/prometheus/api/v1/label/__name__/values") + .queryParam("db", greptimeProperties.database()) + .build().encode().toUri(); + Map response = getPrometheus(uri); + Object rawData = response == null ? null : response.get("data"); + if (!(rawData instanceof List values)) { + return new OtlpMetricsInventory(List.of()); + } + List names = values.stream().map(String::valueOf).filter(StringUtils::hasText) + .sorted().limit(effectiveLimit).toList(); + return new OtlpMetricsInventory(names); + } + + private Map getPrometheus(URI uri) { + HttpHeaders headers = new HttpHeaders(); + if (StringUtils.hasText(greptimeProperties.username()) + && StringUtils.hasText(greptimeProperties.password())) { + headers.setBasicAuth(greptimeProperties.username(), greptimeProperties.password()); + } + try { + ResponseEntity response = restTemplate.exchange(uri, HttpMethod.GET, + new HttpEntity<>(headers), Map.class); + Map body = response.getBody() == null ? Map.of() : response.getBody(); + if ("error".equals(body.get("status"))) { + throw new IllegalArgumentException("Invalid PromQL query"); + } + return body; + } catch (IllegalArgumentException exception) { + throw exception; + } catch (HttpClientErrorException.BadRequest exception) { + throw new IllegalArgumentException("Invalid PromQL query", exception); + } catch (RestClientException exception) { + throw new StorageUnavailableException("GreptimeDB metrics storage is unavailable", exception); + } + } + + @Override + public SignalPage queryTraces(Long start, Long end, String traceId, Boolean errorOnly, + String serviceName, String serviceNamespace, String environment, + String operationName, Long minDurationMs, Long maxDurationMs, + Integer pageIndex, Integer pageSize) { + validateTraceRange(start, end, minDurationMs, maxDurationMs); + int effectivePage = Math.max(pageIndex == null ? 0 : pageIndex, 0); + int effectiveSize = Math.max(1, Math.min(pageSize == null ? 20 : pageSize, MAX_PAGE_SIZE)); + String filters = traceFilters(start, end, traceId, serviceName, serviceNamespace, environment, + operationName, minDurationMs, maxDurationMs); + String errorExpression = "SUM(CASE WHEN span_status_code IN ('STATUS_CODE_ERROR', 'ERROR') " + + "THEN 1 ELSE 0 END)"; + String rootSpan = "parent_span_id IS NULL OR parent_span_id = ''"; + StringBuilder grouped = new StringBuilder("SELECT trace_id, ") + .append(rootValue("span_id", "root_span_id", rootSpan)) + .append(", ").append(rootValue("service_name", "service_name", rootSpan)) + .append(", ").append(rootValue("\"resource_attributes.service.namespace\"", "service_namespace", rootSpan)) + .append(", ").append(rootValue("\"resource_attributes.deployment.environment.name\"", "environment", rootSpan)) + .append(", ").append(rootValue("span_name", "root_span_name", rootSpan)) + .append(", ").append(rootValue("duration_nano", "duration_nano", rootSpan)).append(", ") + .append("MIN(timestamp) AS start_time, ").append(errorExpression).append(" AS error_span_count, ") + .append("MAX(span_id) AS sampled_span_id FROM ").append(TRACE_TABLE); + if (StringUtils.hasText(filters)) { + grouped.append(" WHERE ").append(filters); + } + grouped.append(" GROUP BY trace_id"); + if (Boolean.TRUE.equals(errorOnly)) { + grouped.append(" HAVING ").append(errorExpression).append(" > 0"); + } + String sql = "SELECT *, COUNT(*) OVER () AS total_count FROM (" + grouped + + ") trace_page ORDER BY start_time DESC LIMIT " + effectiveSize + + " OFFSET " + effectivePage * effectiveSize; + List> rows = sqlQueryExecutor.execute(sql); + long total = rows.isEmpty() ? 0 : asLong(rows.getFirst().get("total_count")); + return new SignalPage<>(rows.stream().map(this::toTraceListItem).toList(), effectivePage, effectiveSize, total); + } + + @Override + public TraceOverview traceOverview(Long start, Long end, String traceId, Boolean errorOnly, String serviceName, + String serviceNamespace, String environment, String operationName, + Long minDurationMs, Long maxDurationMs) { + validateTraceRange(start, end, minDurationMs, maxDurationMs); + String filters = traceFilters(start, end, traceId, serviceName, serviceNamespace, environment, + operationName, minDurationMs, maxDurationMs); + String errorExpression = "SUM(CASE WHEN span_status_code IN ('STATUS_CODE_ERROR', 'ERROR') " + + "THEN 1 ELSE 0 END)"; + StringBuilder grouped = new StringBuilder("SELECT trace_id, MAX(duration_nano) AS duration_nano, ") + .append(errorExpression).append(" AS error_span_count FROM ").append(TRACE_TABLE); + if (StringUtils.hasText(filters)) { + grouped.append(" WHERE ").append(filters); + } + grouped.append(" GROUP BY trace_id"); + if (Boolean.TRUE.equals(errorOnly)) { + grouped.append(" HAVING ").append(errorExpression).append(" > 0"); + } + String sql = "SELECT COUNT(*) AS total_count, " + + "SUM(CASE WHEN error_span_count > 0 THEN 1 ELSE 0 END) AS error_count, " + + "AVG(duration_nano) AS average_duration, approx_percentile_cont(duration_nano, 0.95) AS p95_duration " + + "FROM (" + grouped + ") trace_overview"; + List> rows = sqlQueryExecutor.execute(sql); + if (rows.isEmpty()) { + return new TraceOverview(0, 0, 0, 0, 0); + } + Map row = rows.getFirst(); + long total = asLong(row.get("total_count")); + long errors = asLong(row.get("error_count")); + return new TraceOverview(total, errors, total == 0 ? 0 : (double) errors / total, + asDouble(row.get("average_duration")) / 1_000_000.0, + asDouble(row.get("p95_duration")) / 1_000_000.0); + } + + @Override + public TraceDetail traceDetail(String traceId) { + if (!StringUtils.hasText(traceId)) { + throw new IllegalArgumentException("traceId is required"); + } + String sql = "SELECT * FROM " + TRACE_TABLE + " WHERE trace_id = '" + escapeSql(traceId) + + "' ORDER BY timestamp ASC LIMIT 5000"; + List spans = sqlQueryExecutor.execute(sql).stream().map(this::toSpan).toList(); + if (spans.isEmpty()) { + return new TraceDetail(null, List.of()); + } + TraceSpanNode root = spans.stream().filter(span -> !StringUtils.hasText(span.parentSpanId())) + .findFirst().orElse(spans.getFirst()); + long start = spans.stream().mapToLong(TraceSpanNode::startTime).min().orElse(root.startTime()); + long end = spans.stream().mapToLong(span -> span.startTime() + span.durationNanos() / 1_000_000L) + .max().orElse(start + root.durationNanos() / 1_000_000L); + long duration = Math.max(root.durationNanos(), Math.max(0, end - start) * 1_000_000L); + int errors = (int) spans.stream().filter(span -> isError(span.status())).count(); + String namespace = root.resourceAttributes().getOrDefault("service.namespace", ""); + TraceListItem summary = new TraceListItem(traceId, root.spanId(), root.serviceName(), namespace, + root.spanName(), duration, errors > 0 ? "ERROR" : "OK", start, errors, + root.resourceAttributes()); + return new TraceDetail(summary, spans); + } + + private String buildPromql(String query, String serviceName, String serviceNamespace, String environment, + String filter, String groupBy, String aggregation, String operationName) { + String metric = StringUtils.hasText(query) ? query.trim() : "up"; + if (!SAFE_IDENTIFIER.matcher(metric).matches()) { + return metric; + } + Map labels = new LinkedHashMap<>(); + putIfText(labels, "service_name", serviceName); + putIfText(labels, "service_namespace", serviceNamespace); + putIfText(labels, "deployment_environment_name", environment); + putIfText(labels, "http_route", operationName); + parseFriendlyFilter(filter, labels); + String selector = metric + labels.entrySet().stream() + .map(entry -> entry.getKey() + "=\"" + escapePromql(entry.getValue()) + "\"") + .collect(java.util.stream.Collectors.joining(",", "{", "}")); + if (labels.isEmpty()) { + selector = metric; + } + String normalizedAggregation = StringUtils.hasText(aggregation) + ? aggregation.toLowerCase(Locale.ROOT) : null; + if (normalizedAggregation == null || !AGGREGATIONS.contains(normalizedAggregation)) { + return selector; + } + if (StringUtils.hasText(groupBy) && SAFE_LABEL.matcher(groupBy).matches()) { + return normalizedAggregation + " by (" + groupBy + ") (" + selector + ")"; + } + return normalizedAggregation + "(" + selector + ")"; + } + + private String rootValue(String column, String alias, String rootSpan) { + return "COALESCE(MAX(CASE WHEN " + rootSpan + " THEN " + column + " END), MAX(" + column + ")) AS " + alias; + } + + private void parseFriendlyFilter(String filter, Map labels) { + if (!StringUtils.hasText(filter)) { + return; + } + for (String clause : filter.split(",")) { + String[] pair = clause.split("=", 2); + if (pair.length != 2) { + continue; + } + String key = pair[0].trim().replace('.', '_'); + String value = pair[1].trim().replaceAll("^\"|\"$", ""); + if (SAFE_LABEL.matcher(key).matches() && StringUtils.hasText(value)) { + labels.put(key, value); + } + } + } + + private List readMetricSeries(Map response) { + if (response == null || !(response.get("data") instanceof Map data) + || !(data.get("result") instanceof List results)) { + return List.of(); + } + List series = new ArrayList<>(); + for (Object result : results) { + if (!(result instanceof Map item)) { + continue; + } + Map labels = new LinkedHashMap<>(); + if (item.get("metric") instanceof Map metricLabels) { + metricLabels.forEach((key, value) -> labels.put(String.valueOf(key), String.valueOf(value))); + } + List points = new ArrayList<>(); + if (item.get("values") instanceof List values) { + for (Object rawPoint : values) { + if (rawPoint instanceof List point && point.size() >= 2) { + points.add(new MetricPoint((long) (asDouble(point.get(0)) * 1000), asDouble(point.get(1)))); + } + } + } + series.add(new MetricSeries(labels, points)); + } + return series; + } + + private String traceFilters(Long start, Long end, String traceId, String serviceName, String serviceNamespace, + String environment, String operationName, Long minDurationMs, Long maxDurationMs) { + List filters = new ArrayList<>(); + if (start != null) { + filters.add("timestamp >= to_timestamp_millis(" + start + ")"); + } + if (end != null) { + filters.add("timestamp <= to_timestamp_millis(" + end + ")"); + } + addTextFilter(filters, "trace_id", traceId); + addTextFilter(filters, "service_name", serviceName); + addTextFilter(filters, "span_name", operationName); + addFlattenedResourceFilter(filters, "resource_attributes.service.namespace", serviceNamespace); + addFlattenedResourceFilter(filters, "resource_attributes.deployment.environment.name", environment); + if (minDurationMs != null) { + filters.add("duration_nano >= " + Math.max(0, minDurationMs) * 1_000_000L); + } + if (maxDurationMs != null) { + filters.add("duration_nano <= " + Math.max(0, maxDurationMs) * 1_000_000L); + } + return String.join(" AND ", filters); + } + + private void addTextFilter(List filters, String column, String value) { + if (StringUtils.hasText(value)) { + filters.add(column + " = '" + escapeSql(value) + "'"); + } + } + + private void addFlattenedResourceFilter(List filters, String column, String value) { + if (StringUtils.hasText(value) && !"all".equalsIgnoreCase(value)) { + filters.add("\"" + column + "\" = '" + escapeSql(value) + "'"); + } + } + + private TraceListItem toTraceListItem(Map row) { + int errors = (int) asLong(row.get("error_span_count")); + return new TraceListItem(asString(row.get("trace_id")), asString(row.get("root_span_id")), + asString(row.get("service_name")), asString(row.get("service_namespace")), + asString(row.get("root_span_name")), asLong(row.get("duration_nano")), + errors > 0 ? "ERROR" : "OK", asEpochMillis(row.get("start_time")), errors, + traceResourceAttributes(row)); + } + + private TraceSpanNode toSpan(Map row) { + return new TraceSpanNode(asString(row.get("trace_id")), asString(row.get("span_id")), + asString(row.get("parent_span_id")), asString(row.get("span_name")), + asString(row.get("service_name")), asString(row.get("span_status_code")), + asString(row.get("span_kind")), asString(row.get("span_status_message")), + asLong(row.get("duration_nano")), asEpochMillis(row.get("timestamp")), + traceResourceAttributes(row), traceSpanAttributes(row), + asSpanEvents(row.get("span_events"))); + } + + private Map traceResourceAttributes(Map row) { + Map attributes = new LinkedHashMap<>(asStringMap(row.get("resource_attributes"))); + row.forEach((key, value) -> putFlattenedAttribute(attributes, key, value, "resource_attributes.")); + putIfText(attributes, "service.namespace", asString(row.get("service_namespace"))); + putIfText(attributes, "deployment.environment.name", asString(row.get("environment"))); + return attributes; + } + + private Map traceSpanAttributes(Map row) { + Map attributes = new LinkedHashMap<>(asStringMap(row.get("span_attributes"))); + row.forEach((key, value) -> putFlattenedAttribute(attributes, key, value, "span_attributes.")); + return attributes; + } + + private void putFlattenedAttribute(Map target, String key, Object value, String prefix) { + if (key.startsWith(prefix) && value != null) { + putIfText(target, key.substring(prefix.length()), asString(value)); + } + } + + private List asSpanEvents(Object value) { + if (!StringUtils.hasText(asString(value)) && !(value instanceof List)) { + return List.of(); + } + List> events; + if (value instanceof List list) { + events = list.stream() + .filter(Map.class::isInstance) + .map(Map.class::cast) + .map(this::toStringKeyMap) + .toList(); + } else { + events = JsonUtil.fromJson(asString(value), new TypeReference<>() { }); + } + if (events == null) { + return List.of(); + } + return events.stream().map(event -> new TraceSpanEvent( + asString(event.get("name")), + asString(event.getOrDefault("time", event.get("timeUnixNano"))), + asObjectMap(event.get("attributes")))).toList(); + } + + private Map toStringKeyMap(Map source) { + Map result = new LinkedHashMap<>(); + source.forEach((key, item) -> result.put(String.valueOf(key), item)); + return result; + } + + private Map asObjectMap(Object value) { + if (value instanceof Map map) { + return toStringKeyMap(map); + } + return Collections.emptyMap(); + } + + private Map asStringMap(Object value) { + if (value instanceof Map map) { + Map result = new LinkedHashMap<>(); + map.forEach((key, item) -> result.put(String.valueOf(key), String.valueOf(item))); + return result; + } + if (!StringUtils.hasText(asString(value))) { + return Collections.emptyMap(); + } + Map parsed = JsonUtil.fromJson(asString(value), new TypeReference<>() { }); + if (parsed == null) { + return Collections.emptyMap(); + } + Map result = new LinkedHashMap<>(); + parsed.forEach((key, item) -> result.put(key, String.valueOf(item))); + return result; + } + + private long asEpochMillis(Object value) { + if (value instanceof Number number) { + long timestamp = number.longValue(); + return timestamp > 10_000_000_000_000L ? timestamp / 1_000_000L : timestamp; + } + String text = asString(value); + try { + return Instant.parse(text).toEpochMilli(); + } catch (DateTimeParseException ignored) { + return asLong(value); + } + } + + private long asLong(Object value) { + if (value instanceof Number number) { + return number.longValue(); + } + try { + return (long) Double.parseDouble(asString(value)); + } catch (NumberFormatException ignored) { + return 0; + } + } + + private double asDouble(Object value) { + if (value instanceof Number number) { + return number.doubleValue(); + } + try { + return Double.parseDouble(asString(value)); + } catch (NumberFormatException ignored) { + return 0; + } + } + + private String asString(Object value) { + return value == null ? "" : String.valueOf(value); + } + + private boolean isError(String status) { + return "ERROR".equalsIgnoreCase(status) || "STATUS_CODE_ERROR".equalsIgnoreCase(status); + } + + private void putIfText(Map target, String key, String value) { + if (StringUtils.hasText(value) && !"all".equalsIgnoreCase(value)) { + target.put(key, value.trim()); + } + } + + private String escapeSql(String value) { + return value.replace("'", "''"); + } + + private String escapePromql(String value) { + return value.replace("\\", "\\\\").replace("\"", "\\\""); + } + + private void validateTraceRange(Long start, Long end, Long minDurationMs, Long maxDurationMs) { + validateTimeRange(start, end); + if ((minDurationMs != null && minDurationMs < 0) || (maxDurationMs != null && maxDurationMs < 0)) { + throw new IllegalArgumentException("Trace duration must not be negative"); + } + if (minDurationMs != null && maxDurationMs != null && minDurationMs > maxDurationMs) { + throw new IllegalArgumentException("Minimum trace duration must not exceed maximum duration"); + } + } + + private void validateTimeRange(Long start, Long end) { + if (start != null && end != null && start > end) { + throw new IllegalArgumentException("Query start time must not exceed end time"); + } + } +} diff --git a/hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml b/hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml new file mode 100644 index 00000000000..135dc5979bf --- /dev/null +++ b/hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml @@ -0,0 +1,56 @@ +version: 2 +processors: + - vrl: + source: | + .time_unix_nano = .Timestamp + .observed_time_unix_nano = .ObservedTimestamp + .trace_id = .TraceId + .span_id = .SpanId + .trace_flags = .TraceFlags + .severity_text = .SeverityText + .severity_number = .SeverityNumber + .body = .Body + .attributes = .LogAttributes + .resource = .ResourceAttributes + .instrumentation_scope = .InstrumentationScope + .dropped_attributes_count = .DroppedAttributesCount + . + - select: + fields: + - time_unix_nano + - observed_time_unix_nano + - trace_id + - span_id + - trace_flags + - severity_text + - severity_number + - body + - attributes + - resource + - instrumentation_scope + - dropped_attributes_count +transform: + - field: time_unix_nano + type: epoch, ns + index: timestamp + - field: observed_time_unix_nano + type: epoch, ns + - fields: + - trace_id + - span_id + type: string + index: skipping + - fields: + - attributes + - resource + - instrumentation_scope + type: json + - field: body + type: string + - field: severity_text + type: string + - fields: + - severity_number + - trace_flags + - dropped_attributes_count + type: int32 diff --git a/hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql b/hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql new file mode 100644 index 00000000000..c83bbecec45 --- /dev/null +++ b/hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql @@ -0,0 +1,23 @@ +CREATE TABLE IF NOT EXISTS hzb_traces ( + "timestamp" TIMESTAMP(9) TIME INDEX, + "timestamp_end" TIMESTAMP(9) NULL, + "duration_nano" BIGINT UNSIGNED NULL, + "trace_id" STRING NULL SKIPPING INDEX WITH(granularity = '10240', type = 'BLOOM'), + "span_id" STRING NULL SKIPPING INDEX WITH(granularity = '10240', type = 'BLOOM'), + "parent_span_id" STRING NULL SKIPPING INDEX WITH(granularity = '10240', type = 'BLOOM'), + "span_kind" STRING NULL, + "span_name" STRING NULL, + "span_status_code" STRING NULL, + "span_status_message" STRING NULL, + "trace_state" STRING NULL, + "scope_name" STRING NULL, + "scope_version" STRING NULL, + "service_name" STRING NULL SKIPPING INDEX WITH(granularity = '10240', type = 'BLOOM'), + "resource_attributes.service.namespace" STRING NULL, + "resource_attributes.deployment.environment.name" STRING NULL, + "resource_attributes" JSON NULL, + "span_attributes" JSON NULL, + "span_events" JSON NULL, + "span_links" JSON NULL, + PRIMARY KEY("service_name") +) WITH (append_mode = true, table_data_model = 'greptime_trace_v1'); diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/LogQueryControllerTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/LogQueryControllerTest.java index 8e3da88e409..6aba088ddff 100644 --- a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/LogQueryControllerTest.java +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/LogQueryControllerTest.java @@ -18,20 +18,20 @@ package org.apache.hertzbeat.log.controller; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.hertzbeat.common.constants.CommonConstants; import org.apache.hertzbeat.common.entity.log.LogEntry; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; import org.apache.hertzbeat.warehouse.store.history.tsdb.HistoryDataReader; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -57,8 +57,10 @@ class LogQueryControllerTest { @BeforeEach void setUp() { - this.logQueryController = new LogQueryController(historyDataReader); - this.mockMvc = MockMvcBuilders.standaloneSetup(logQueryController).build(); + this.logQueryController = new LogQueryController(historyDataReader, new SignalWorkloadGuard()); + this.mockMvc = MockMvcBuilders.standaloneSetup(logQueryController) + .setControllerAdvice(new SignalWorkloadExceptionHandler()) + .build(); } @Test @@ -86,11 +88,8 @@ void testListLogsWithAllFilters() throws Exception { List mockLogs = Arrays.asList(logEntry1, logEntry2); - when(historyDataReader.countLogsByMultipleConditions(anyLong(), anyLong(), any(), - any(), any(), any(), any())).thenReturn(2L); - when(historyDataReader.queryLogsByMultipleConditionsWithPagination(anyLong(), anyLong(), - any(), any(), any(), any(), any(), anyInt(), anyInt())) - .thenReturn(mockLogs); + when(historyDataReader.countObservabilityLogs(any())).thenReturn(2L); + when(historyDataReader.queryObservabilityLogs(any(), any(), any())).thenReturn(mockLogs); mockMvc.perform( MockMvcRequestBuilders @@ -104,7 +103,6 @@ void testListLogsWithAllFilters() throws Exception { .param("pageIndex", "0") .param("pageSize", "20") ) - .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$.code").value((int) CommonConstants.SUCCESS_CODE)) .andExpect(jsonPath("$.data.content").isArray()) @@ -126,11 +124,8 @@ void testListLogsWithoutFilters() throws Exception { .build() ); - when(historyDataReader.countLogsByMultipleConditions(any(), any(), any(), - any(), any(), any(), any())).thenReturn(1L); - when(historyDataReader.queryLogsByMultipleConditionsWithPagination(any(), any(), - any(), any(), any(), any(), any(), eq(0), eq(20))) - .thenReturn(mockLogs); + when(historyDataReader.countObservabilityLogs(any())).thenReturn(1L); + when(historyDataReader.queryObservabilityLogs(any(), any(), any())).thenReturn(mockLogs); mockMvc.perform( MockMvcRequestBuilders @@ -143,27 +138,36 @@ void testListLogsWithoutFilters() throws Exception { } @Test - void testOverviewStatsWithMixedSeverityLogs() throws Exception { - // Create logs with different severity levels according to OpenTelemetry standard - List mockLogs = Arrays.asList( - // TRACE (1-4) - LogEntry.builder().severityNumber(2).build(), - // DEBUG (5-8) - LogEntry.builder().severityNumber(6).build(), - // INFO (9-12) - LogEntry.builder().severityNumber(9).build(), - LogEntry.builder().severityNumber(10).build(), - // WARN (13-16) - LogEntry.builder().severityNumber(14).build(), - // ERROR (17-20) - LogEntry.builder().severityNumber(17).build(), - LogEntry.builder().severityNumber(18).build(), - // FATAL (21-24) - LogEntry.builder().severityNumber(21).build() - ); + void shouldBoundLogPaginationBeforeReadingStorage() throws Exception { + when(historyDataReader.countObservabilityLogs(any())).thenReturn(0L); + when(historyDataReader.queryObservabilityLogs(any(), any(), any())).thenReturn(List.of()); - when(historyDataReader.queryLogsByMultipleConditions(any(), any(), any(), - any(), any(), any(), any())).thenReturn(mockLogs); + mockMvc.perform(MockMvcRequestBuilders.get("/api/logs/list") + .param("pageIndex", "-1") + .param("pageSize", "1000")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.number").value(0)) + .andExpect(jsonPath("$.data.size").value(200)); + + verify(historyDataReader).queryObservabilityLogs(any(), eq(0), eq(200)); + } + + @Test + void shouldReturnBadRequestForInvalidResourceExpression() throws Exception { + when(historyDataReader.countObservabilityLogs(any())) + .thenThrow(new IllegalArgumentException("Invalid resource filter expression")); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/logs/list") + .param("resource", "bad-expression")) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.code").value((int) CommonConstants.FAIL_CODE)); + } + + @Test + void testOverviewStatsWithMixedSeverityLogs() throws Exception { + when(historyDataReader.queryLogOverviewAggregate(any())).thenReturn(Map.of( + "totalCount", 8L, "traceCount", 1L, "debugCount", 1L, "infoCount", 2L, + "warnCount", 1L, "errorCount", 2L, "fatalCount", 1L)); mockMvc.perform( MockMvcRequestBuilders @@ -182,13 +186,7 @@ void testOverviewStatsWithMixedSeverityLogs() throws Exception { @Test void testOverviewStatsWithTimeRange() throws Exception { - List mockLogs = Arrays.asList( - LogEntry.builder().severityNumber(9).build(), - LogEntry.builder().severityNumber(17).build() - ); - - when(historyDataReader.queryLogsByMultipleConditions(eq(1734005477000L), eq(1734005478000L), - any(), any(), any(), any(), any())).thenReturn(mockLogs); + when(historyDataReader.queryLogOverviewAggregate(any())).thenReturn(Map.of("totalCount", 2L)); mockMvc.perform( MockMvcRequestBuilders @@ -203,21 +201,8 @@ void testOverviewStatsWithTimeRange() throws Exception { @Test void testTraceCoverageStats() throws Exception { - List mockLogs = Arrays.asList( - // With both trace and span - LogEntry.builder().traceId("trace1").spanId("span1").build(), - LogEntry.builder().traceId("trace2").spanId("span2").build(), - // With trace only - LogEntry.builder().traceId("trace3").spanId("").build(), - // With span only - LogEntry.builder().traceId("").spanId("span4").build(), - // Without trace info - LogEntry.builder().traceId("").spanId("").build(), - LogEntry.builder().build() // null values - ); - - when(historyDataReader.queryLogsByMultipleConditions(any(), any(), any(), - any(), any(), any(), any())).thenReturn(mockLogs); + when(historyDataReader.queryLogOverviewAggregate(any())).thenReturn(Map.of("traceCoverage", Map.of( + "withTrace", 3L, "withoutTrace", 3L, "withSpan", 3L, "withBothTraceAndSpan", 2L))); mockMvc.perform( MockMvcRequestBuilders @@ -233,18 +218,8 @@ void testTraceCoverageStats() throws Exception { @Test void testTrendStats() throws Exception { - // Create logs with timestamps that fall into different hours - List mockLogs = Arrays.asList( - // 2023-12-12 10:00 (1734005477630000000L nano = 1734005477630L ms) - LogEntry.builder().timeUnixNano(1734005477630000000L).build(), - // Same hour - LogEntry.builder().timeUnixNano(1734005477640000000L).build(), - // Next hour: 2023-12-12 11:00 (1734009077630000000L nano = 1734009077630L ms) - LogEntry.builder().timeUnixNano(1734009077630000000L).build() - ); - - when(historyDataReader.queryLogsByMultipleConditions(any(), any(), any(), - any(), any(), any(), any())).thenReturn(mockLogs); + when(historyDataReader.queryLogTrendAggregate(any())).thenReturn(Map.of( + "2023-12-12 10:00", 2L, "2023-12-12 11:00", 1L)); mockMvc.perform( MockMvcRequestBuilders @@ -257,13 +232,7 @@ void testTrendStats() throws Exception { @Test void testTrendStatsWithNullTimestamp() throws Exception { - List mockLogs = Arrays.asList( - LogEntry.builder().timeUnixNano(1734005477630000000L).build(), - LogEntry.builder().timeUnixNano(null).build() // This should be filtered out - ); - - when(historyDataReader.queryLogsByMultipleConditions(any(), any(), any(), - any(), any(), any(), any())).thenReturn(mockLogs); + when(historyDataReader.queryLogTrendAggregate(any())).thenReturn(Map.of("2023-12-12 10:00", 1L)); mockMvc.perform( MockMvcRequestBuilders diff --git a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/RestTemplateConfig.java b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/RestTemplateConfig.java index 8930dd35cc4..79507648ad1 100644 --- a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/RestTemplateConfig.java +++ b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/config/RestTemplateConfig.java @@ -21,8 +21,11 @@ import java.time.Duration; import java.util.Collections; import org.apache.hertzbeat.common.constants.NetworkConstants; +import org.apache.hertzbeat.warehouse.constants.WarehouseConstants; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.JdkClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; @@ -37,23 +40,69 @@ public class RestTemplateConfig { * Create RestTemplate with JDK native request factory and custom interceptors. */ @Bean - public RestTemplate restTemplate(ClientHttpRequestFactory factory) { + @Primary + public RestTemplate restTemplate( + @Qualifier("clientHttpRequestFactory") ClientHttpRequestFactory factory) { + return createRestTemplate(factory); + } + + @Bean(WarehouseConstants.GREPTIME_QUERY_REST_TEMPLATE) + public RestTemplate greptimeQueryRestTemplate( + @Qualifier("greptimeQueryClientHttpRequestFactory") ClientHttpRequestFactory factory) { + return createRestTemplate(factory); + } + + @Bean(WarehouseConstants.GREPTIME_WRITE_REST_TEMPLATE) + public RestTemplate greptimeWriteRestTemplate( + @Qualifier("greptimeWriteClientHttpRequestFactory") ClientHttpRequestFactory factory) { + return createRestTemplate(factory); + } + + @Bean(WarehouseConstants.GREPTIME_INIT_REST_TEMPLATE) + public RestTemplate greptimeInitRestTemplate( + @Qualifier("greptimeInitClientHttpRequestFactory") ClientHttpRequestFactory factory) { + return createRestTemplate(factory); + } + + private RestTemplate createRestTemplate(ClientHttpRequestFactory factory) { RestTemplate restTemplate = new RestTemplate(factory); restTemplate.setInterceptors(Collections.singletonList(new HeaderRequestInterceptor())); return restTemplate; } @Bean + @Primary public ClientHttpRequestFactory clientHttpRequestFactory() { + return createRequestFactory(NetworkConstants.HttpClientConstants.CONNECT_TIMEOUT, + NetworkConstants.HttpClientConstants.READ_TIMEOUT); + } + + @Bean("greptimeQueryClientHttpRequestFactory") + public ClientHttpRequestFactory greptimeQueryClientHttpRequestFactory() { + return createRequestFactory(NetworkConstants.HttpClientConstants.GREPTIME_QUERY_CONNECT_TIMEOUT, + NetworkConstants.HttpClientConstants.GREPTIME_QUERY_READ_TIMEOUT); + } + + @Bean("greptimeWriteClientHttpRequestFactory") + public ClientHttpRequestFactory greptimeWriteClientHttpRequestFactory() { + return createRequestFactory(NetworkConstants.HttpClientConstants.GREPTIME_WRITE_CONNECT_TIMEOUT, + NetworkConstants.HttpClientConstants.GREPTIME_WRITE_READ_TIMEOUT); + } + + @Bean("greptimeInitClientHttpRequestFactory") + public ClientHttpRequestFactory greptimeInitClientHttpRequestFactory() { + return createRequestFactory(NetworkConstants.HttpClientConstants.GREPTIME_INIT_CONNECT_TIMEOUT, + NetworkConstants.HttpClientConstants.GREPTIME_INIT_READ_TIMEOUT); + } + + private ClientHttpRequestFactory createRequestFactory(Duration connectTimeout, Duration readTimeout) { HttpClient httpClient = HttpClient.newBuilder() - .connectTimeout(Duration.ofSeconds(NetworkConstants.HttpClientConstants.CONNECT_TIME_OUT)) + .connectTimeout(connectTimeout) .followRedirects(HttpClient.Redirect.NORMAL) .build(); JdkClientHttpRequestFactory factory = new JdkClientHttpRequestFactory(httpClient); - - factory.setReadTimeout(Duration.ofSeconds(NetworkConstants.HttpClientConstants.READ_TIME_OUT)); - + factory.setReadTimeout(readTimeout); return factory; } diff --git a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidator.java b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidator.java new file mode 100644 index 00000000000..ad5aa279e56 --- /dev/null +++ b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidator.java @@ -0,0 +1,65 @@ +/* + * 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.manager.service.impl; + +import com.usthe.sureness.util.JsonWebTokenUtil; +import io.jsonwebtoken.Claims; +import java.util.Collections; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.apache.hertzbeat.common.security.OtlpAccessTokenValidator; +import org.apache.hertzbeat.manager.service.AccountService; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +/** Validates managed HertzBeat API tokens used by the OTLP gRPC listener. */ +@Service +@RequiredArgsConstructor +public class ManagerOtlpAccessTokenValidator implements OtlpAccessTokenValidator { + + private final AccountService accountService; + + @Override + public String validate(String token) { + if (!StringUtils.hasText(token)) { + return "Missing OTLP access token"; + } + try { + Claims claims = JsonWebTokenUtil.parseJwt(token); + if (Boolean.TRUE.equals(claims.get("refresh", Boolean.class))) { + return "Refresh token is not allowed"; + } + if (Boolean.TRUE.equals(claims.get(AccountServiceImpl.CLAIM_MANAGED, Boolean.class))) { + String rejectReason = accountService.checkTokenStatus(token); + if (rejectReason != null) { + return rejectReason; + } + } + @SuppressWarnings("unchecked") + List roles = claims.get("roles", List.class); + String rejectReason = accountService.checkManagedTokenAccess(claims.getSubject(), + roles == null ? Collections.emptyList() : roles); + if (rejectReason == null) { + accountService.touchTokenLastUsedTime(token); + } + return rejectReason; + } catch (Exception exception) { + return "Invalid OTLP access token"; + } + } +} diff --git a/hertzbeat-manager/src/test/resources/sureness.yml b/hertzbeat-manager/src/test/resources/sureness.yml index f04c5a2f7d3..64228f740de 100644 --- a/hertzbeat-manager/src/test/resources/sureness.yml +++ b/hertzbeat-manager/src/test/resources/sureness.yml @@ -71,6 +71,10 @@ resourceRole: - /api/chat/**===get===[admin,user] - /api/chat/**===post===[admin,user] - /api/logs/ingest/**===post===[admin,user] + - /api/otlp/**===post===[admin,user] + - /api/ingestion/otlp/**===get===[admin,user,guest] + - /api/logs/**===get===[admin,user,guest] + - /api/traces/**===get===[admin,user,guest] # config the resource restful api that need bypass auth protection # rule: api===method diff --git a/hertzbeat-startup/src/main/resources/sureness.yml b/hertzbeat-startup/src/main/resources/sureness.yml index d366fe8a023..b4e8e33d86c 100644 --- a/hertzbeat-startup/src/main/resources/sureness.yml +++ b/hertzbeat-startup/src/main/resources/sureness.yml @@ -71,6 +71,10 @@ resourceRole: - /api/chat/**===get===[admin,user] - /api/chat/**===post===[admin] - /api/logs/ingest/**===post===[admin,user] + - /api/otlp/**===post===[admin,user] + - /api/ingestion/otlp/**===get===[admin,user,guest] + - /api/logs/**===get===[admin,user,guest] + - /api/traces/**===get===[admin,user,guest] - /api/account/token===get===[admin] - /api/account/token/**===post===[admin] - /api/account/token/**===delete===[admin] @@ -98,6 +102,9 @@ excludedResource: - /passport/**===get - /status/**===get - /log/**===get + - /observability/**===get + - /metrics/**===get + - /trace/**===get - /**/*.html===get - /**/*.js===get - /**/*.css===get diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/constants/WarehouseConstants.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/constants/WarehouseConstants.java index db73381be6b..fc0c325e406 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/constants/WarehouseConstants.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/constants/WarehouseConstants.java @@ -72,4 +72,10 @@ interface RealTimeName { String LOG_TABLE_NAME = "hertzbeat_logs"; + String GREPTIME_QUERY_REST_TEMPLATE = "greptimeQueryRestTemplate"; + + String GREPTIME_WRITE_REST_TEMPLATE = "greptimeWriteRestTemplate"; + + String GREPTIME_INIT_REST_TEMPLATE = "greptimeInitRestTemplate"; + } diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimePromqlQueryExecutor.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimePromqlQueryExecutor.java index 1a877c83766..383bbce7855 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimePromqlQueryExecutor.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimePromqlQueryExecutor.java @@ -20,6 +20,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; +import org.apache.hertzbeat.warehouse.constants.WarehouseConstants; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -39,7 +41,9 @@ public class GreptimePromqlQueryExecutor extends PromqlQueryExecutor { private final GreptimeProperties greptimeProperties; - public GreptimePromqlQueryExecutor(GreptimeProperties greptimeProperties, RestTemplate restTemplate) { + public GreptimePromqlQueryExecutor(GreptimeProperties greptimeProperties, + @Qualifier(WarehouseConstants.GREPTIME_QUERY_REST_TEMPLATE) + RestTemplate restTemplate) { super(restTemplate, new HttpPromqlProperties(greptimeProperties.httpEndpoint() + QUERY_PATH, greptimeProperties.username(), greptimeProperties.password())); this.greptimeProperties = greptimeProperties; diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimeSqlQueryExecutor.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimeSqlQueryExecutor.java index 42bbb2efc99..0afcc8fe20a 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimeSqlQueryExecutor.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/db/GreptimeSqlQueryExecutor.java @@ -23,8 +23,11 @@ import org.apache.hertzbeat.common.constants.NetworkConstants; import org.apache.hertzbeat.common.constants.SignConstants; import org.apache.hertzbeat.common.util.Base64Util; +import org.apache.hertzbeat.common.support.exception.StorageUnavailableException; import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeSqlQueryContent; +import org.apache.hertzbeat.warehouse.constants.WarehouseConstants; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpEntity; @@ -54,7 +57,9 @@ public class GreptimeSqlQueryExecutor extends SqlQueryExecutor { private final GreptimeProperties greptimeProperties; - public GreptimeSqlQueryExecutor(GreptimeProperties greptimeProperties, RestTemplate restTemplate) { + public GreptimeSqlQueryExecutor(GreptimeProperties greptimeProperties, + @Qualifier(WarehouseConstants.GREPTIME_QUERY_REST_TEMPLATE) + RestTemplate restTemplate) { super(restTemplate, new SqlQueryExecutor.HttpSqlProperties(greptimeProperties.httpEndpoint() + QUERY_PATH, greptimeProperties.username(), greptimeProperties.password())); this.greptimeProperties = greptimeProperties; @@ -88,7 +93,7 @@ public List> execute(String queryString) { HttpMethod.POST, httpEntity, GreptimeSqlQueryContent.class); } catch (Exception e) { log.error("Exception occurred while querying GreptimeDB SQL: {}", e.getMessage(), e); - throw new RuntimeException("Failed to execute GreptimeDB SQL query", e); + throw new StorageUnavailableException("GreptimeDB storage is unavailable", e); } if (responseEntity.getStatusCode().is2xxSuccessful()) { diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/HistoryDataReader.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/HistoryDataReader.java index 567e27177e2..468e6e0557a 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/HistoryDataReader.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/HistoryDataReader.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import org.apache.hertzbeat.common.entity.dto.Value; +import org.apache.hertzbeat.common.entity.dto.observability.LogQueryFilter; import org.apache.hertzbeat.common.entity.log.LogEntry; /** @@ -128,4 +129,26 @@ default long countLogsByMultipleConditions(Long startTime, Long endTime, String String severityText, String searchContent) { throw new UnsupportedOperationException("count logs by multiple conditions is not supported"); } -} \ No newline at end of file + + /** Query the transition workbench using OTLP resource semantics. */ + default List queryObservabilityLogs(LogQueryFilter filter, Integer offset, Integer limit) { + return queryLogsByMultipleConditionsWithPagination(filter.start(), filter.end(), filter.traceId(), + filter.spanId(), filter.severityNumber(), filter.severityText(), filter.search(), offset, limit); + } + + /** Count the transition workbench result using OTLP resource semantics. */ + default long countObservabilityLogs(LogQueryFilter filter) { + return countLogsByMultipleConditions(filter.start(), filter.end(), filter.traceId(), filter.spanId(), + filter.severityNumber(), filter.severityText(), filter.search()); + } + + /** Return severity and trace coverage in one storage aggregation. */ + default Map queryLogOverviewAggregate(LogQueryFilter filter) { + throw new UnsupportedOperationException("query log overview aggregate is not supported"); + } + + /** Return log counts grouped by hour in one storage aggregation. */ + default Map queryLogTrendAggregate(LogQueryFilter filter) { + throw new UnsupportedOperationException("query log trend aggregate is not supported"); + } +} diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java index 387698ea1d5..ae953720dea 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java @@ -40,6 +40,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -57,16 +58,19 @@ import org.apache.hertzbeat.common.constants.MetricDataConstants; import org.apache.hertzbeat.common.entity.arrow.RowWrapper; import org.apache.hertzbeat.common.entity.dto.Value; +import org.apache.hertzbeat.common.entity.dto.observability.LogQueryFilter; import org.apache.hertzbeat.common.entity.log.LogEntry; import org.apache.hertzbeat.common.entity.message.CollectRep; import org.apache.hertzbeat.common.util.Base64Util; import org.apache.hertzbeat.common.util.JsonUtil; import org.apache.hertzbeat.common.util.TimePeriodUtil; +import org.apache.hertzbeat.common.support.exception.StorageUnavailableException; import org.apache.hertzbeat.warehouse.constants.WarehouseConstants; import org.apache.hertzbeat.warehouse.store.history.tsdb.AbstractHistoryDataStorage; import org.apache.hertzbeat.warehouse.store.history.tsdb.vm.PromQlQueryContent; import org.apache.hertzbeat.warehouse.db.GreptimeSqlQueryExecutor; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -106,7 +110,9 @@ public class GreptimeDbDataStorage extends AbstractHistoryDataStorage { private final GreptimeSqlQueryExecutor greptimeSqlQueryExecutor; - public GreptimeDbDataStorage(GreptimeProperties greptimeProperties, RestTemplate restTemplate, + public GreptimeDbDataStorage(GreptimeProperties greptimeProperties, + @Qualifier(WarehouseConstants.GREPTIME_QUERY_REST_TEMPLATE) + RestTemplate restTemplate, GreptimeSqlQueryExecutor greptimeSqlQueryExecutor) { if (greptimeProperties == null) { log.error("init error, please config Warehouse GreptimeDB props in application.yml"); @@ -514,7 +520,7 @@ public void saveLogData(LogEntry logEntry) { .addField("observed_time_unix_nano", DataType.TimestampNanosecond) .addField("severity_number", DataType.Int32) .addField("severity_text", DataType.String) - .addField("body", DataType.Json) + .addField("body", DataType.String) .addField("trace_id", DataType.String) .addField("span_id", DataType.String) .addField("trace_flags", DataType.Int32) @@ -531,7 +537,7 @@ public void saveLogData(LogEntry logEntry) { logEntry.getObservedTimeUnixNano() != null ? logEntry.getObservedTimeUnixNano() : System.nanoTime(), logEntry.getSeverityNumber(), logEntry.getSeverityText(), - JsonUtil.toJson(logEntry.getBody()), + logBodyAsString(logEntry.getBody()), logEntry.getTraceId(), logEntry.getSpanId(), logEntry.getTraceFlags(), @@ -622,6 +628,151 @@ public long countLogsByMultipleConditions(Long startTime, Long endTime, String t } } + @Override + public List queryObservabilityLogs(LogQueryFilter filter, Integer offset, Integer limit) { + try { + StringBuilder sql = new StringBuilder("SELECT * FROM ").append(LOG_TABLE_NAME); + buildObservabilityWhereConditions(sql, filter); + sql.append(" ORDER BY time_unix_nano DESC"); + if (limit != null && limit > 0) { + sql.append(" LIMIT ").append(Math.min(limit, 200)); + if (offset != null && offset > 0) { + sql.append(" OFFSET ").append(offset); + } + } + return mapRowsToLogEntries(greptimeSqlQueryExecutor.execute(sql.toString())); + } catch (IllegalArgumentException exception) { + throw exception; + } catch (Exception exception) { + throw new StorageUnavailableException("GreptimeDB log storage is unavailable", exception); + } + } + + @Override + public long countObservabilityLogs(LogQueryFilter filter) { + try { + StringBuilder sql = new StringBuilder("SELECT COUNT(*) AS count FROM ").append(LOG_TABLE_NAME); + buildObservabilityWhereConditions(sql, filter); + List> rows = greptimeSqlQueryExecutor.execute(sql.toString()); + return rows.isEmpty() ? 0 : valueAsLong(rows.getFirst(), "count"); + } catch (IllegalArgumentException exception) { + throw exception; + } catch (Exception exception) { + throw new StorageUnavailableException("GreptimeDB log storage is unavailable", exception); + } + } + + @Override + public Map queryLogOverviewAggregate(LogQueryFilter filter) { + try { + StringBuilder sql = new StringBuilder("SELECT COUNT(*) AS total_count, ") + .append("SUM(CASE WHEN severity_number BETWEEN 21 AND 24 THEN 1 ELSE 0 END) AS fatal_count, ") + .append("SUM(CASE WHEN severity_number BETWEEN 17 AND 20 THEN 1 ELSE 0 END) AS error_count, ") + .append("SUM(CASE WHEN severity_number BETWEEN 13 AND 16 THEN 1 ELSE 0 END) AS warn_count, ") + .append("SUM(CASE WHEN severity_number BETWEEN 9 AND 12 THEN 1 ELSE 0 END) AS info_count, ") + .append("SUM(CASE WHEN severity_number BETWEEN 5 AND 8 THEN 1 ELSE 0 END) AS debug_count, ") + .append("SUM(CASE WHEN severity_number BETWEEN 1 AND 4 THEN 1 ELSE 0 END) AS trace_count, ") + .append("SUM(CASE WHEN trace_id IS NOT NULL AND trace_id <> '' THEN 1 ELSE 0 END) AS with_trace, ") + .append("SUM(CASE WHEN span_id IS NOT NULL AND span_id <> '' THEN 1 ELSE 0 END) AS with_span, ") + .append("SUM(CASE WHEN trace_id IS NOT NULL AND trace_id <> '' AND span_id IS NOT NULL ") + .append("AND span_id <> '' THEN 1 ELSE 0 END) AS with_both FROM ") + .append(LOG_TABLE_NAME); + buildObservabilityWhereConditions(sql, filter); + List> rows = greptimeSqlQueryExecutor.execute(sql.toString()); + if (rows.isEmpty()) { + return emptyLogOverview(); + } + Map row = rows.getFirst(); + long total = valueAsLong(row, "total_count"); + Map coverage = new HashMap<>(); + coverage.put("withTrace", valueAsLong(row, "with_trace")); + coverage.put("withoutTrace", total - coverage.get("withTrace")); + coverage.put("withSpan", valueAsLong(row, "with_span")); + coverage.put("withBothTraceAndSpan", valueAsLong(row, "with_both")); + Map overview = new HashMap<>(); + overview.put("totalCount", total); + overview.put("fatalCount", valueAsLong(row, "fatal_count")); + overview.put("errorCount", valueAsLong(row, "error_count")); + overview.put("warnCount", valueAsLong(row, "warn_count")); + overview.put("infoCount", valueAsLong(row, "info_count")); + overview.put("debugCount", valueAsLong(row, "debug_count")); + overview.put("traceCount", valueAsLong(row, "trace_count")); + overview.put("traceCoverage", coverage); + return overview; + } catch (IllegalArgumentException exception) { + throw exception; + } catch (Exception exception) { + throw new StorageUnavailableException("GreptimeDB log storage is unavailable", exception); + } + } + + @Override + public Map queryLogTrendAggregate(LogQueryFilter filter) { + try { + StringBuilder sql = new StringBuilder("SELECT date_bin(INTERVAL '1 hour', time_unix_nano) AS bucket, ") + .append("COUNT(*) AS count FROM ").append(LOG_TABLE_NAME); + buildObservabilityWhereConditions(sql, filter); + sql.append(" GROUP BY bucket ORDER BY bucket ASC"); + Map trend = new LinkedHashMap<>(); + for (Map row : greptimeSqlQueryExecutor.execute(sql.toString())) { + trend.put(String.valueOf(row.get("bucket")), valueAsLong(row, "count")); + } + return trend; + } catch (IllegalArgumentException exception) { + throw exception; + } catch (Exception exception) { + throw new StorageUnavailableException("GreptimeDB log storage is unavailable", exception); + } + } + + private Map emptyLogOverview() { + Map coverage = Map.of("withTrace", 0L, "withoutTrace", 0L, + "withSpan", 0L, "withBothTraceAndSpan", 0L); + Map overview = new HashMap<>(); + for (String key : List.of("totalCount", "fatalCount", "errorCount", "warnCount", "infoCount", + "debugCount", "traceCount")) { + overview.put(key, 0L); + } + overview.put("traceCoverage", coverage); + return overview; + } + + private static long valueAsLong(Map row, String key) { + Long value = castToLong(row.get(key)); + return value == null ? 0 : value; + } + + private void buildObservabilityWhereConditions(StringBuilder sql, LogQueryFilter filter) { + buildWhereConditions(sql, filter.start(), filter.end(), filter.traceId(), filter.spanId(), + filter.severityNumber(), filter.severityText(), filter.search()); + List resourceConditions = new ArrayList<>(); + addJsonCondition(resourceConditions, "service.name", filter.serviceName()); + addJsonCondition(resourceConditions, "service.namespace", filter.serviceNamespace()); + addJsonCondition(resourceConditions, "deployment.environment.name", filter.environment()); + if (StringUtils.hasText(filter.resourceFilter())) { + for (ResourceFilterExpression.Clause clause : ResourceFilterExpression.parse(filter.resourceFilter())) { + String attribute = "json_get_string(resource, '$[\"" + clause.key() + "\"]')"; + switch (clause.operator()) { + case EQUALS -> resourceConditions.add(attribute + " = '" + safeString(clause.value()) + "'"); + case NOT_EQUALS -> resourceConditions.add(attribute + " <> '" + safeString(clause.value()) + "'"); + case EXISTS -> resourceConditions.add(attribute + " IS NOT NULL"); + case NOT_EXISTS -> resourceConditions.add(attribute + " IS NULL"); + default -> throw new IllegalArgumentException("Invalid resource filter expression"); + } + } + } + if (!resourceConditions.isEmpty()) { + sql.append(sql.indexOf(" WHERE ") >= 0 ? " AND " : " WHERE ") + .append(String.join(" AND ", resourceConditions)); + } + } + + private void addJsonCondition(List conditions, String key, String value) { + if (StringUtils.hasText(value)) { + conditions.add("json_get_string(resource, '$[\"" + key + "\"]') = '" + safeString(value) + "'"); + } + } + private static long msToNs(Long ms) { return ms * 1_000_000L; } @@ -725,6 +876,13 @@ private List mapRowsToLogEntries(List> rows) { return list; } + private static String logBodyAsString(Object body) { + if (body == null) { + return null; + } + return body instanceof String value ? value : JsonUtil.toJson(body); + } + private static Object parseJsonMaybe(Object value) { if (value == null) return null; if (value instanceof Map) return value; @@ -819,7 +977,7 @@ private void doSaveLogBatch(List logEntries) { .addField("observed_time_unix_nano", DataType.TimestampNanosecond) .addField("severity_number", DataType.Int32) .addField("severity_text", DataType.String) - .addField("body", DataType.Json) + .addField("body", DataType.String) .addField("trace_id", DataType.String) .addField("span_id", DataType.String) .addField("trace_flags", DataType.Int32) @@ -836,7 +994,7 @@ private void doSaveLogBatch(List logEntries) { logEntry.getObservedTimeUnixNano() != null ? logEntry.getObservedTimeUnixNano() : System.nanoTime(), logEntry.getSeverityNumber(), logEntry.getSeverityText(), - JsonUtil.toJson(logEntry.getBody()), + logBodyAsString(logEntry.getBody()), logEntry.getTraceId(), logEntry.getSpanId(), logEntry.getTraceFlags(), diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpression.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpression.java new file mode 100644 index 00000000000..9ce8a5b7834 --- /dev/null +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpression.java @@ -0,0 +1,129 @@ +/* + * 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.warehouse.store.history.tsdb.greptime; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** Parses the bounded resource attribute expression accepted by log queries. */ +final class ResourceFilterExpression { + + private static final Pattern CLAUSE = Pattern.compile( + "^(?:resource\\.)?([A-Za-z0-9_.-]+)\\s*(=|!=|(?i:EXISTS)|(?i:NOT\\s+EXISTS))(?:\\s+(.+))?$"); + + private ResourceFilterExpression() { + } + + static List parse(String expression) { + List clauses = new ArrayList<>(); + for (String value : splitClauses(expression)) { + Matcher matcher = CLAUSE.matcher(value.trim()); + if (!matcher.matches()) { + throw invalidExpression(); + } + Operator operator = Operator.from(matcher.group(2)); + String operand = matcher.group(3); + if (operator.requiresValue()) { + if (operand == null || operand.isBlank()) { + throw invalidExpression(); + } + operand = unquote(operand.trim()); + if (operand.isBlank()) { + throw invalidExpression(); + } + } else if (operand != null && !operand.isBlank()) { + throw invalidExpression(); + } + clauses.add(new Clause(matcher.group(1), operator, operand)); + } + if (clauses.isEmpty()) { + throw invalidExpression(); + } + return clauses; + } + + private static List splitClauses(String expression) { + List clauses = new ArrayList<>(); + int start = 0; + char quote = 0; + for (int index = 0; index < expression.length(); index++) { + char current = expression.charAt(index); + if ((current == '\'' || current == '"') && (index == 0 || expression.charAt(index - 1) != '\\')) { + quote = quote == 0 ? current : quote == current ? 0 : quote; + } + if (quote == 0 && index + 3 <= expression.length() + && expression.regionMatches(true, index, "AND", 0, 3) + && isBoundary(expression, index - 1) && isBoundary(expression, index + 3)) { + clauses.add(expression.substring(start, index)); + start = index + 3; + index += 2; + } + } + if (quote != 0) { + throw invalidExpression(); + } + clauses.add(expression.substring(start)); + return clauses; + } + + private static boolean isBoundary(String value, int index) { + return index < 0 || index >= value.length() || Character.isWhitespace(value.charAt(index)); + } + + private static String unquote(String value) { + if (value.length() >= 2 && ((value.startsWith("\"") && value.endsWith("\"")) + || (value.startsWith("'") && value.endsWith("'")))) { + return value.substring(1, value.length() - 1); + } + if (value.indexOf(' ') >= 0) { + throw invalidExpression(); + } + return value; + } + + private static IllegalArgumentException invalidExpression() { + return new IllegalArgumentException("Invalid resource filter expression"); + } + + record Clause(String key, Operator operator, String value) { + } + + enum Operator { + EQUALS, + NOT_EQUALS, + EXISTS, + NOT_EXISTS; + + static Operator from(String value) { + return switch (value.replaceAll("\\s+", " ").toUpperCase(Locale.ROOT)) { + case "=" -> EQUALS; + case "!=" -> NOT_EQUALS; + case "EXISTS" -> EXISTS; + case "NOT EXISTS" -> NOT_EXISTS; + default -> throw invalidExpression(); + }; + } + + boolean requiresValue() { + return this == EQUALS || this == NOT_EQUALS; + } + } +} diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/influxdb/InfluxdbDataStorage.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/influxdb/InfluxdbDataStorage.java index f65d6673aa5..0cade5b80b6 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/influxdb/InfluxdbDataStorage.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/influxdb/InfluxdbDataStorage.java @@ -88,13 +88,13 @@ public InfluxdbDataStorage(InfluxdbProperties influxdbProperties) { public void initInfluxDb(InfluxdbProperties influxdbProperties) { var client = new OkHttpClient.Builder() - .readTimeout(NetworkConstants.HttpClientConstants.READ_TIME_OUT, TimeUnit.SECONDS) - .writeTimeout(NetworkConstants.HttpClientConstants.WRITE_TIME_OUT, TimeUnit.SECONDS) - .connectTimeout(NetworkConstants.HttpClientConstants.CONNECT_TIME_OUT, TimeUnit.SECONDS) + .readTimeout(NetworkConstants.HttpClientConstants.READ_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS) + .writeTimeout(NetworkConstants.HttpClientConstants.WRITE_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS) + .connectTimeout(NetworkConstants.HttpClientConstants.CONNECT_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS) .connectionPool(new ConnectionPool( NetworkConstants.HttpClientConstants.MAX_IDLE_CONNECTIONS, - NetworkConstants.HttpClientConstants.KEEP_ALIVE_TIMEOUT, - TimeUnit.SECONDS) + NetworkConstants.HttpClientConstants.KEEP_ALIVE_TIMEOUT.toMillis(), + TimeUnit.MILLISECONDS) ).sslSocketFactory(defaultSslSocketFactory(), defaultTrustManager()) .hostnameVerifier(noopHostnameVerifier()) .retryOnConnectionFailure(true); diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/questdb/QuestdbDataStorage.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/questdb/QuestdbDataStorage.java index 801d6352950..93f5b017f24 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/questdb/QuestdbDataStorage.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/questdb/QuestdbDataStorage.java @@ -102,13 +102,13 @@ public void initQuestDb(QuestdbProperties questdbProperties) { this.queryBaseUrl = "http://" + host + ":" + queryPort + "/exec?query="; this.client = new OkHttpClient.Builder() - .readTimeout(NetworkConstants.HttpClientConstants.READ_TIME_OUT, TimeUnit.SECONDS) - .writeTimeout(NetworkConstants.HttpClientConstants.WRITE_TIME_OUT, TimeUnit.SECONDS) - .connectTimeout(NetworkConstants.HttpClientConstants.CONNECT_TIME_OUT, TimeUnit.SECONDS) + .readTimeout(NetworkConstants.HttpClientConstants.READ_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS) + .writeTimeout(NetworkConstants.HttpClientConstants.WRITE_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS) + .connectTimeout(NetworkConstants.HttpClientConstants.CONNECT_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS) .connectionPool(new ConnectionPool( NetworkConstants.HttpClientConstants.MAX_IDLE_CONNECTIONS, - NetworkConstants.HttpClientConstants.KEEP_ALIVE_TIMEOUT, - TimeUnit.SECONDS) + NetworkConstants.HttpClientConstants.KEEP_ALIVE_TIMEOUT.toMillis(), + TimeUnit.MILLISECONDS) ).sslSocketFactory(defaultSslSocketFactory(), defaultTrustManager()) .hostnameVerifier(noopHostnameVerifier()) .retryOnConnectionFailure(true) @@ -411,4 +411,4 @@ public void destroy() throws Exception { this.client.dispatcher().executorService().shutdown(); } } -} \ No newline at end of file +} diff --git a/script/docker-compose/hertzbeat-postgresql-greptimedb/conf/sureness.yml b/script/docker-compose/hertzbeat-postgresql-greptimedb/conf/sureness.yml index 282e93928a1..93d75293107 100644 --- a/script/docker-compose/hertzbeat-postgresql-greptimedb/conf/sureness.yml +++ b/script/docker-compose/hertzbeat-postgresql-greptimedb/conf/sureness.yml @@ -71,6 +71,10 @@ resourceRole: - /api/chat/**===get===[admin,user] - /api/chat/**===post===[admin] - /api/logs/ingest/**===post===[admin,user] + - /api/otlp/**===post===[admin,user] + - /api/ingestion/otlp/**===get===[admin,user,guest] + - /api/logs/**===get===[admin,user,guest] + - /api/traces/**===get===[admin,user,guest] # config the resource restful api that need bypass auth protection # rule: api===method @@ -95,6 +99,9 @@ excludedResource: - /passport/**===get - /status/**===get - /log/**===get + - /observability/**===get + - /metrics/**===get + - /trace/**===get - /**/*.html===get - /**/*.js===get - /**/*.css===get diff --git a/script/sureness.yml b/script/sureness.yml index 829bdc73085..23d0f4d1432 100644 --- a/script/sureness.yml +++ b/script/sureness.yml @@ -71,6 +71,10 @@ resourceRole: - /api/chat/**===get===[admin,user] - /api/chat/**===post===[admin] - /api/logs/ingest/**===post===[admin,user] + - /api/otlp/**===post===[admin,user] + - /api/ingestion/otlp/**===get===[admin,user,guest] + - /api/logs/**===get===[admin,user,guest] + - /api/traces/**===get===[admin,user,guest] # config the resource restful api that need bypass auth protection # rule: api===method @@ -95,6 +99,9 @@ excludedResource: - /passport/**===get - /status/**===get - /log/**===get + - /observability/**===get + - /metrics/**===get + - /trace/**===get - /**/*.html===get - /**/*.js===get - /**/*.css===get From d5cb2e666041b5e0b87d0a2a1a56fefe19bb484d Mon Sep 17 00:00:00 2001 From: Logic Date: Sat, 11 Jul 2026 16:23:40 +0800 Subject: [PATCH 02/12] feat(web): add Angular three-signal workbenches --- web-app/angular.json | 5 + .../core/interceptor/default.interceptor.ts | 12 +- .../src/app/core/interceptor/http-context.ts | 22 + .../log-integration.component.html | 150 +++- .../log-integration.component.less | 272 +++++-- .../log-integration.component.spec.ts | 56 +- .../log-integration.component.ts | 149 ++-- .../log/log-manage/log-manage.component.html | 486 ++++--------- .../log/log-manage/log-manage.component.less | 196 +++-- .../log-manage/log-manage.component.spec.ts | 29 +- .../log/log-manage/log-manage.component.ts | 679 +++++------------- .../src/app/routes/log/log-routing.module.ts | 3 +- .../log/log-stream/log-stream.component.html | 7 +- .../log/log-stream/log-stream.component.less | 12 +- .../log/log-stream/log-stream.component.ts | 10 +- .../metrics/metrics-manage.component.html | 112 +++ .../metrics/metrics-manage.component.less | 160 +++++ .../metrics/metrics-manage.component.ts | 224 ++++++ .../signal-navigation.component.ts | 75 ++ .../observability/signal-query-context.ts | 78 ++ .../signal-time-range.component.ts | 173 +++++ .../src/app/routes/routes-routing.module.ts | 17 +- .../routes/trace/trace-manage.component.html | 174 +++++ .../routes/trace/trace-manage.component.less | 271 +++++++ .../routes/trace/trace-manage.component.ts | 289 ++++++++ web-app/src/app/service/log.service.ts | 127 ++-- .../service/notice-receiver.service.spec.ts | 6 +- .../src/app/service/observability.service.ts | 378 ++++++++++ web-app/src/assets/app-data.json | 24 +- web-app/src/assets/i18n/en-US.json | 112 +++ web-app/src/assets/i18n/ja-JP.json | 112 +++ web-app/src/assets/i18n/pt-BR.json | 112 +++ web-app/src/assets/i18n/zh-CN.json | 112 +++ web-app/src/assets/i18n/zh-TW.json | 112 +++ web-app/src/styles/theme.less | 4 +- 35 files changed, 3556 insertions(+), 1204 deletions(-) create mode 100644 web-app/src/app/core/interceptor/http-context.ts create mode 100644 web-app/src/app/routes/metrics/metrics-manage.component.html create mode 100644 web-app/src/app/routes/metrics/metrics-manage.component.less create mode 100644 web-app/src/app/routes/metrics/metrics-manage.component.ts create mode 100644 web-app/src/app/routes/observability/signal-navigation.component.ts create mode 100644 web-app/src/app/routes/observability/signal-query-context.ts create mode 100644 web-app/src/app/routes/observability/signal-time-range.component.ts create mode 100644 web-app/src/app/routes/trace/trace-manage.component.html create mode 100644 web-app/src/app/routes/trace/trace-manage.component.less create mode 100644 web-app/src/app/routes/trace/trace-manage.component.ts create mode 100644 web-app/src/app/service/observability.service.ts diff --git a/web-app/angular.json b/web-app/angular.json index 149fdd48230..d7d5b42bd08 100644 --- a/web-app/angular.json +++ b/web-app/angular.json @@ -133,6 +133,11 @@ "tsConfig": "tsconfig.spec.json", "scripts": [], "styles": [], + "stylePreprocessorOptions": { + "includePaths": [ + "node_modules/" + ] + }, "assets": [ "src/assets" ] diff --git a/web-app/src/app/core/interceptor/default.interceptor.ts b/web-app/src/app/core/interceptor/default.interceptor.ts index ecf42b14cd5..aba4d01ad3d 100644 --- a/web-app/src/app/core/interceptor/default.interceptor.ts +++ b/web-app/src/app/core/interceptor/default.interceptor.ts @@ -19,6 +19,7 @@ import { catchError, filter, mergeMap, switchMap, take } from 'rxjs/operators'; import { Message } from '../../pojo/Message'; import { AuthService } from '../../service/auth.service'; import { LocalStorageService } from '../../service/local-storage.service'; +import { SILENT_HTTP_ERROR } from './http-context'; const CODE_MESSAGE: { [key: number]: string } = { 400: 'Request Illegal Content, No Response.', @@ -154,7 +155,7 @@ export class DefaultInterceptor implements HttpInterceptor { res['Accept-Language'] = lang; } let token = this.storageSvc.getAuthorizationToken(); - if (token !== null) { + if (!headers?.has('Authorization') && token !== null) { res['Authorization'] = `Bearer ${token}`; } return res; @@ -176,13 +177,16 @@ export class DefaultInterceptor implements HttpInterceptor { } }), catchError((err: HttpErrorResponse) => { + const silentError = newReq.context.get(SILENT_HTTP_ERROR); // handle failed response and token expired switch (err.status) { case 401: return this.tryRefreshToken(err, newReq, next); case 404: case 500: - this.goTo(`/exception/${err.status}?url=${req.urlWithParams}`); + if (!silentError) { + this.goTo(`/exception/${err.status}?url=${req.urlWithParams}`); + } break; case 400: let resp = new HttpResponse({ @@ -195,7 +199,9 @@ export class DefaultInterceptor implements HttpInterceptor { default: break; } - this.checkStatus(err); + if (!silentError) { + this.checkStatus(err); + } return throwError(err.error); }) ); diff --git a/web-app/src/app/core/interceptor/http-context.ts b/web-app/src/app/core/interceptor/http-context.ts new file mode 100644 index 00000000000..9d0312a3f8b --- /dev/null +++ b/web-app/src/app/core/interceptor/http-context.ts @@ -0,0 +1,22 @@ +/* + * 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. + */ + +import { HttpContextToken } from '@angular/common/http'; + +export const SILENT_HTTP_ERROR = new HttpContextToken(() => false); diff --git a/web-app/src/app/routes/log/log-integration/log-integration.component.html b/web-app/src/app/routes/log/log-integration/log-integration.component.html index d8525db5cde..7503716f561 100644 --- a/web-app/src/app/routes/log/log-integration/log-integration.component.html +++ b/web-app/src/app/routes/log/log-integration/log-integration.component.html @@ -17,40 +17,124 @@ ~ under the License. --> - - - - -
-
-

{{ 'log.integration.source' | i18n }}

-
-
- - {{ source.name }} -
+
+
+
+

{{ 'observability.integration.title' | i18n }}

+

{{ 'observability.integration.subtitle' | i18n }}

-
-
- -
-

{{ selectedSource.name }}

- + + +
+
+
+ 1 +
+

{{ 'observability.integration.connection' | i18n }}

+
+
+ + + {{ 'observability.integration.protocol' | i18n }} + + + + + + + + + + + {{ 'observability.integration.address' | i18n }} + + + + + + + {{ 'observability.integration.token' | i18n }} + + + + + + + + + + +
+ + service.name + + + + + + environment + + + + +
+ + +

{{ 'observability.integration.detect-hint' | i18n }}

+ +
+
+ + {{ signalLabel(result.signal) }} + {{ result.lastReceived | date : 'yyyy-MM-dd HH:mm:ss' }} + + {{ result.errorKey ? (result.errorKey | i18n) : result.error }} + +
+
+
+ +
+
+ 2 +
+

{{ 'observability.integration.configuration' | i18n }}

+

{{ 'observability.integration.configuration-hint' | i18n }}

+
+
+ + + + + + + + +
+ {{ 'observability.integration.ready-to-copy' | i18n }} +
- - +
{{ snippet(selectedSnippet) }}
+ + +
-
+ diff --git a/web-app/src/app/routes/log/log-integration/log-integration.component.less b/web-app/src/app/routes/log/log-integration/log-integration.component.less index 7ae298020a8..62472a92c23 100644 --- a/web-app/src/app/routes/log/log-integration/log-integration.component.less +++ b/web-app/src/app/routes/log/log-integration/log-integration.component.less @@ -1,84 +1,220 @@ -@import "~src/styles/theme"; +@import '~src/styles/theme'; -.log-integration-container { +.integration-page { + min-height: 100%; + color: @text-color; +} + +.page-heading { + display: flex; + gap: 24px; + align-items: flex-start; + justify-content: space-between; + padding: 0 0 20px; + border-bottom: 1px solid @border-color-split; + + h1 { + margin: 0 0 6px; + font-weight: 600; + font-size: 24px; + } + + p { + margin: 0; + color: @text-color-secondary; + } +} + +.integration-workspace { + display: grid; + grid-template-columns: minmax(360px, 0.9fr) minmax(440px, 1.1fr); + gap: 0; + margin-top: 20px; + background: @component-background; + border: 1px solid @border-color-split; +} + +.connection-form, +.configuration-output { + padding: 24px; +} + +.connection-form { + border-right: 1px solid @border-color-split; +} + +.section-heading { + display: flex; + gap: 12px; + margin-bottom: 22px; + + h2 { + margin: 0 0 4px; + font-weight: 600; + font-size: 17px; + } + + p { + margin: 0; + color: @text-color-secondary; + } +} + +.step-index { + display: inline-flex; + flex: 0 0 26px; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + color: @primary-color; + font-weight: 600; + background: fade(@primary-color, 10%); + border-radius: 50%; +} + +.field-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 16px; + + nz-form-item { + min-width: 0; + } +} + +.protocol-options { display: flex; - height: 100%; - background: @common-background-color; - border-radius: 4px; - - .data-sources { - width: 240px; - border-right: 1px solid #f0f0f0; - padding: 16px; - background: @common-background-color; - - h2 { - margin-bottom: 16px; - font-size: 16px; - font-weight: 500; + width: 100%; + + label { + position: relative; + flex: 1 1 0; + padding: 0 8px; + white-space: nowrap; + text-align: center; + border: 1px solid @border-color-base; + + + label { + margin-left: -1px; } - .source-list { - .source-item { - display: flex; - align-items: center; - padding: 12px; - cursor: pointer; - border-radius: 4px; - transition: all 0.3s; - - &:hover { - background: rgba(0, 0, 0, 0.05); - } - - &.active { - background: rgba(0, 0, 0, 0.1); - } - - img { - width: 24px; - height: 24px; - margin-right: 8px; - } - } + &.ant-radio-button-wrapper-checked { + z-index: 1; + color: @primary-color; + border-color: @primary-color; } } +} + +.token-input { + width: 100%; +} + +.detect-hint { + margin: 8px 0 0; + color: @text-color-secondary; + font-size: 12px; +} + +.probe-results { + margin-top: 18px; + border-top: 1px solid @border-color-split; +} + +.probe-row { + display: grid; + grid-template-columns: 18px 76px 150px minmax(0, 1fr); + gap: 8px; + align-items: center; + min-height: 40px; + color: @success-color; + border-bottom: 1px solid @border-color-split; + + &.probe-error { + color: @error-color; + } - .doc-content { - flex: 1; - padding: 24px; - overflow-y: auto; - background: @common-background-color; + .probe-message { + overflow: hidden; + color: @text-color-secondary; + white-space: nowrap; + text-overflow: ellipsis; + } +} - h2 { - margin-bottom: 24px; - font-size: 20px; - font-weight: 500; - } +.code-toolbar { + display: flex; + align-items: center; + justify-content: space-between; + min-height: 38px; + padding: 0 10px; + color: @text-color-secondary; + background: @common-tint-gray; + border: 1px solid @border-color-split; + border-bottom: 0; +} + +pre { + min-height: 310px; + margin: 0 0 16px; + padding: 18px; + overflow: auto; + color: @text-color; + font-size: 12px; + line-height: 1.65; + background: #fafafa; + border: 1px solid @border-color-split; + + code { + display: block; + padding: 0; + color: inherit; + background: transparent; + border: 0; } } +:host ::ng-deep .configuration-output .ant-alert-info { + background: @common-tint-gray; + border-color: @border-color-split; +} + [data-theme='dark'] { :host { - .log-integration-container { + .integration-page { + color: @text-color-dark; + } + + .integration-workspace { + background: @common-background-color-dark; + } + + .code-toolbar { + background: @common-tint-gray-dark; + border-color: #434343; + } + + pre { + color: @text-color-dark; background: @common-background-color-dark; - .data-sources { - background: @common-background-color-dark; - } - .doc-content { - background: @common-background-color-dark; - } - .source-list { - .source-item { - &:hover { - background: rgba(255, 255, 255, 0.4); - } - - &.active { - background: rgba(255, 255, 255, 0.6); - } - } - } + border-color: #434343; } } -} \ No newline at end of file + + :host ::ng-deep .configuration-output .ant-alert-info { + background: @common-tint-gray-dark; + border-color: #434343; + } +} + +@media (max-width: 1080px) { + .integration-workspace { + grid-template-columns: 1fr; + } + + .connection-form { + border-right: 0; + border-bottom: 1px solid @border-color-split; + } +} diff --git a/web-app/src/app/routes/log/log-integration/log-integration.component.spec.ts b/web-app/src/app/routes/log/log-integration/log-integration.component.spec.ts index be8ff0b2398..2b83885b012 100644 --- a/web-app/src/app/routes/log/log-integration/log-integration.component.spec.ts +++ b/web-app/src/app/routes/log/log-integration/log-integration.component.spec.ts @@ -17,25 +17,57 @@ * under the License. */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { Router } from '@angular/router'; +import { I18NService } from '@core'; +import { NzNotificationService } from 'ng-zorro-antd/notification'; +import { of } from 'rxjs'; +import { AuthService } from '../../../service/auth.service'; +import { ObservabilityService } from '../../../service/observability.service'; import { LogIntegrationComponent } from './log-integration.component'; describe('LogIntegrationComponent', () => { - let component: LogIntegrationComponent; - let fixture: ComponentFixture; + function createComponent() { + const auth = jasmine.createSpyObj('AuthService', ['generateToken']); + const observability = jasmine.createSpyObj('ObservabilityService', ['probe']); + const notifications = jasmine.createSpyObj('NzNotificationService', ['success', 'error', 'warning']); + const router = jasmine.createSpyObj('Router', ['navigateByUrl']); + const i18n = jasmine.createSpyObj('I18NService', ['fanyi']); + i18n.fanyi.and.callFake(key => key); + const component = new LogIntegrationComponent(auth, observability, notifications, router, i18n); + component.endpoint = 'http://localhost:4200'; + return { component, auth, observability }; + } - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [LogIntegrationComponent] - }).compileComponents(); + it('keeps the onboarding form simple and generates all configuration formats', () => { + const { component } = createComponent(); + component.token = 'token-value'; - fixture = TestBed.createComponent(LogIntegrationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); + expect(component.formValid).toBeTrue(); + expect(component.snippet('environment')).toContain('OTEL_SERVICE_NAME=my-service'); + expect(component.snippet('collector')).toContain('metrics:'); + expect(component.snippet('collector')).toContain('logs:'); + expect(component.snippet('collector')).toContain('traces:'); + expect(component.snippet('java')).toContain('OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer token-value'); + expect(component.snippet('curl')).toContain('/api/otlp/v1/metrics'); }); - it('should create', () => { - expect(component).toBeTruthy(); + it('generates a managed access token and detects each signal independently', () => { + const { component, auth, observability } = createComponent(); + auth.generateToken.and.returnValue(of({ code: 0, data: { token: 'generated-token' }, msg: '' })); + observability.probe.and.returnValue( + of([ + { signal: 'metrics', status: 'success', lastReceived: 1 }, + { signal: 'logs', status: 'error', error: 'storage unavailable' }, + { signal: 'traces', status: 'success', lastReceived: 1 } + ]) + ); + + component.generateToken(); + component.detect(); + + expect(component.token).toBe('generated-token'); + expect(component.probeResults.length).toBe(3); + expect(component.probeResults[1].error).toBe('storage unavailable'); }); }); diff --git a/web-app/src/app/routes/log/log-integration/log-integration.component.ts b/web-app/src/app/routes/log/log-integration/log-integration.component.ts index d80408617d8..be9ecefc2e4 100644 --- a/web-app/src/app/routes/log/log-integration/log-integration.component.ts +++ b/web-app/src/app/routes/log/log-integration/log-integration.component.ts @@ -18,98 +18,133 @@ */ import { CommonModule } from '@angular/common'; -import { HttpClient, HttpClientModule } from '@angular/common/http'; import { Component, Inject, OnInit } from '@angular/core'; -import { Router, ActivatedRoute } from '@angular/router'; +import { Router } from '@angular/router'; import { I18NService } from '@core'; import { ALAIN_I18N_TOKEN, I18nPipe } from '@delon/theme'; import { SharedModule } from '@shared'; -import { NzDividerComponent } from 'ng-zorro-antd/divider'; import { NzNotificationService } from 'ng-zorro-antd/notification'; -import { MarkdownModule } from 'ngx-markdown'; +import { NzRadioModule } from 'ng-zorro-antd/radio'; -interface DataSource { - id: string; - name: string; - icon: string; -} +import { AuthService } from '../../../service/auth.service'; +import { ObservabilityService, OtlpConnectionForm, SignalProbeResult } from '../../../service/observability.service'; -const MARKDOWN_DOC_PATH = './assets/doc/log-integration'; +type OtlpProtocol = 'http-json' | 'http-protobuf' | 'grpc'; @Component({ selector: 'app-log-integration', standalone: true, - imports: [CommonModule, I18nPipe, MarkdownModule, HttpClientModule, NzDividerComponent, SharedModule], + imports: [CommonModule, I18nPipe, SharedModule, NzRadioModule], templateUrl: './log-integration.component.html', styleUrl: './log-integration.component.less' }) export class LogIntegrationComponent implements OnInit { - dataSources: DataSource[] = [ - { - id: 'otlp', - name: this.i18nSvc.fanyi('log.integration.source.otlp'), - icon: 'assets/img/integration/otlp.svg' - } - ]; - - selectedSource: DataSource | null = null; - markdownContent: string = ''; + protocol: OtlpProtocol = 'http-json'; + endpoint = ''; + token = ''; + serviceName = 'my-service'; + environment = 'production'; + generatingToken = false; + detecting = false; + probeResults: SignalProbeResult[] = []; + selectedSnippet = 'environment'; constructor( - private http: HttpClient, - @Inject(ALAIN_I18N_TOKEN) private i18nSvc: I18NService, + private authSvc: AuthService, + private observabilitySvc: ObservabilityService, private notifySvc: NzNotificationService, private router: Router, - private route: ActivatedRoute + @Inject(ALAIN_I18N_TOKEN) private i18nSvc: I18NService ) {} - ngOnInit() { - this.route.params.subscribe(params => { - const sourceId = params['source']; - if (sourceId) { - // Find matching data source - const source = this.dataSources.find(s => s.id === sourceId); - if (source) { - this.selectedSource = source; + ngOnInit(): void { + this.endpoint = window.location.origin; + } + + get formValid(): boolean { + return Boolean(this.endpoint.trim() && this.token.trim() && this.serviceName.trim() && this.environment.trim()); + } + + generateToken(): void { + this.generatingToken = true; + this.authSvc.generateToken(`otlp-${Date.now()}`, 30 * 24 * 3600).subscribe({ + next: message => { + this.generatingToken = false; + if (message.code === 0 && message.data?.token) { + this.token = message.data.token; + this.notifySvc.success(this.i18nSvc.fanyi('observability.integration.token-created'), ''); } else { - // If no matching source found, use the first one as default - this.selectedSource = this.dataSources[0]; - this.router.navigate(['/log/integration/', this.selectedSource.id]); + this.notifySvc.error(this.i18nSvc.fanyi('observability.integration.token-failed'), message.msg || ''); } - } else { - // When no route params, use the first data source - this.selectedSource = this.dataSources[0]; - this.router.navigate(['/log/integration/', this.selectedSource.id]); + }, + error: () => { + this.generatingToken = false; + this.notifySvc.error(this.i18nSvc.fanyi('observability.integration.token-failed'), ''); } + }); + } - if (this.selectedSource) { - this.loadMarkdownContent(this.selectedSource); + detect(): void { + if (!this.formValid) return; + this.detecting = true; + this.probeResults = []; + this.observabilitySvc.probe(this.connectionForm()).subscribe({ + next: results => { + this.probeResults = results; + this.detecting = false; + }, + error: () => { + this.detecting = false; } }); } - selectSource(source: DataSource) { - this.selectedSource = source; - this.loadMarkdownContent(source); - this.router.navigate(['/log/integration', source.id]); + copy(text: string): void { + navigator.clipboard.writeText(text).then( + () => this.notifySvc.success(this.i18nSvc.fanyi('common.notify.copy-success'), ''), + () => this.notifySvc.warning(this.i18nSvc.fanyi('common.notify.copy-fail'), '') + ); } goToTokenManagement(): void { this.router.navigateByUrl('/setting/settings/token'); } - private loadMarkdownContent(source: DataSource) { - const lang = this.i18nSvc.currentLang; - const path = `${MARKDOWN_DOC_PATH}/${source.id}.${lang}.md`; + signalLabel(signal: SignalProbeResult['signal']): string { + return this.i18nSvc.fanyi(`observability.signal.${signal}`); + } - this.http.get(path, { responseType: 'text' }).subscribe({ - next: content => { - this.markdownContent = content; - }, - error: error => { - const enPath = `${MARKDOWN_DOC_PATH}/${source.id}.en-US.md`; - this.http.get(enPath, { responseType: 'text' }).subscribe(content => (this.markdownContent = content)); - } - }); + snippet(type: string): string { + const endpoint = this.endpoint.replace(/\/+$/, ''); + const httpEndpoint = `${endpoint}/api/otlp`; + const grpcEndpoint = endpoint.replace(/^https?:\/\//, '').replace(/:\d+$/, ':4317'); + const headers = `Authorization=Bearer ${this.token || ''}`; + if (type === 'collector') { + return `exporters:\n otlphttp/hertzbeat:\n endpoint: ${httpEndpoint}\n headers:\n Authorization: "Bearer ${ + this.token || '' + }"\nservice:\n pipelines:\n metrics:\n exporters: [otlphttp/hertzbeat]\n logs:\n exporters: [otlphttp/hertzbeat]\n traces:\n exporters: [otlphttp/hertzbeat]`; + } + if (type === 'java') { + const protocol = this.protocol === 'grpc' ? 'grpc' : this.protocol === 'http-json' ? 'http/json' : 'http/protobuf'; + const target = this.protocol === 'grpc' ? grpcEndpoint : httpEndpoint; + return `OTEL_SERVICE_NAME=${this.serviceName}\nOTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=${this.environment}\nOTEL_EXPORTER_OTLP_PROTOCOL=${protocol}\nOTEL_EXPORTER_OTLP_ENDPOINT=${target}\nOTEL_EXPORTER_OTLP_HEADERS=${headers}`; + } + if (type === 'curl') { + return `curl -X POST '${endpoint}/api/otlp/v1/metrics' \\\n -H 'Authorization: Bearer ${ + this.token || '' + }' \\\n -H 'Content-Type: application/json' \\\n --data-binary @metrics.json`; + } + const protocol = this.protocol === 'grpc' ? 'grpc' : this.protocol === 'http-json' ? 'http/json' : 'http/protobuf'; + const target = this.protocol === 'grpc' ? grpcEndpoint : httpEndpoint; + return `OTEL_SERVICE_NAME=${this.serviceName}\nOTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=${this.environment}\nOTEL_EXPORTER_OTLP_PROTOCOL=${protocol}\nOTEL_EXPORTER_OTLP_ENDPOINT=${target}\nOTEL_EXPORTER_OTLP_HEADERS=${headers}`; + } + + private connectionForm(): OtlpConnectionForm { + return { + endpoint: this.endpoint.trim(), + token: this.token.trim(), + serviceName: this.serviceName.trim(), + environment: this.environment.trim() + }; } } diff --git a/web-app/src/app/routes/log/log-manage/log-manage.component.html b/web-app/src/app/routes/log/log-manage/log-manage.component.html index 3ee454cd9d2..97ce977ecb4 100644 --- a/web-app/src/app/routes/log/log-manage/log-manage.component.html +++ b/web-app/src/app/routes/log/log-manage/log-manage.component.html @@ -1,366 +1,132 @@ - - - - - - -
- - - - + +
+

{{ 'observability.logs.title' | i18n }}

{{ 'observability.logs.subtitle' | i18n }}

+ +
+ + + + + + + + - - - TRACE - DEBUG - INFO - WARN - ERROR - FATAL - - - - - - - - - {{ 'log.manage.column-setting' | i18n }} ({{ getVisibleColumnsCount() }}/{{ getColumnKeys().length }}) - - - -
- - - - - - -
- -
-
-
-
- -
-
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- -
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
-
- - - - - - - - - {{ 'log.manage.table.column.time' | i18n }} - {{ - 'log.manage.table.column.observed-time' | i18n - }} - {{ 'log.manage.table.column.severity' | i18n }} - {{ 'log.manage.table.column.body' | i18n }} - {{ - 'log.manage.table.column.attributes' | i18n - }} - {{ 'log.manage.table.column.resource' | i18n }} - {{ 'log.manage.table.column.trace-id' | i18n }} - {{ 'log.manage.table.column.span-id' | i18n }} - {{ - 'log.manage.table.column.trace-flags' | i18n - }} - {{ - 'log.manage.table.column.instrumentation' | i18n - }} - {{ - 'log.manage.table.column.dropped-count' | i18n - }} - - - - - - - - - - {{ (i.timeUnixNano || 0) / 1000000 | date : 'yyyy-MM-dd HH:mm:ss' }} - - - - - {{ (i.observedTimeUnixNano || 0) / 1000000 | date : 'yyyy-MM-dd HH:mm:ss' }} - - - - - - - {{ i.severityText || i.severityNumber || '-' }} - - - -
- {{ getBodyText(i.body) }} -
- - -
- {{ getObjectText(i.attributes) }} -
- - - - -
- {{ getObjectText(i.resource) }} -
- - - - - {{ i.traceId | slice : 0 : 8 }}... - - - - - {{ i.spanId | slice : 0 : 8 }}... - - - - - {{ i.traceFlags }} - - - - -
- {{ i.instrumentationScope.name }} - ({{ i.instrumentationScope.version }}) -
- - - - - {{ i.droppedAttributesCount }} - - - - - -
- - - -
- -
-
- {{ 'log.manage.severity-text' | i18n }}: - - {{ selectedLogEntry.severityText || selectedLogEntry.severityNumber || '未知' }} - -
-
- {{ 'log.manage.timestamp' | i18n }}: - {{ formatTimestamp(selectedLogEntry.timeUnixNano) }} -
-
- {{ 'log.manage.trace-id' | i18n }}: - {{ selectedLogEntry.traceId }} -
-
- {{ 'log.manage.span-id' | i18n }}: - {{ selectedLogEntry.spanId }} -
-
-
- - -
- -
{{ getLogEntryJson(selectedLogEntry) }}
-
-
+ +
{{ 'observability.logs.total' | i18n }}{{ overview.totalCount || 0 }}
ERROR{{ overview.errorCount || 0 }}
WARN{{ overview.warnCount || 0 }}
{{ 'observability.logs.with-trace' | i18n }}{{ overview.traceCoverage?.withTrace || 0 }}
+

{{ 'observability.logs.trend' | i18n }}

{{ total }}
+
+

{{ 'observability.logs.results' | i18n }}

{{ total }}
+ + {{ 'observability.column.time' | i18n }}{{ 'observability.logs.severity' | i18n }}{{ 'observability.column.service' | i18n }}{{ 'observability.logs.message' | i18n }}Trace ID + {{ (log.timeUnixNano || 0) / 1000000 | date : 'yyyy-MM-dd HH:mm:ss.SSS' }}{{ log.severityText || log.severityNumber || '-' }}{{ service(log) }}{{ bodyText(log) }}- + + +
{{ detailJson() }}
+
+
-
+ + + +
diff --git a/web-app/src/app/routes/log/log-manage/log-manage.component.less b/web-app/src/app/routes/log/log-manage/log-manage.component.less index 71361bddfdc..e37a150eaff 100644 --- a/web-app/src/app/routes/log/log-manage/log-manage.component.less +++ b/web-app/src/app/routes/log/log-manage/log-manage.component.less @@ -1,82 +1,152 @@ -.manager-card { - .filters-container { - padding: 8px 0; - margin-bottom: 24px; - } +@import '~src/styles/theme'; + +.signal-page { + min-height: 100%; } -.log-body { - max-width: 400px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: pointer; +.page-heading { + display: flex; + gap: 24px; + align-items: flex-start; + justify-content: space-between; + padding-bottom: 18px; + border-bottom: 1px solid @border-color-split; +} + +.page-heading h1 { + margin: 0 0 5px; + font-weight: 600; + font-size: 24px; +} + +.page-heading p { + margin: 0; + color: @text-color-secondary; +} + +.heading-actions { + display: flex; + gap: 16px; + align-items: center; +} + +.mode-switch { + display: flex; + gap: 0; +} + +.mode-switch button + button { + margin-left: -1px; +} + +.query-toolbar { + display: grid; + grid-template-columns: repeat(4, minmax(150px, 1fr)); + gap: 8px; + align-items: center; + padding: 16px 0; +} + +.query-toolbar app-signal-time-range { + grid-column: 1 / -1; +} + +.resource-expression { + width: 100%; +} + +.overview-strip { + display: grid; + grid-template-columns: repeat(4, 1fr); + margin-bottom: 16px; + border: 1px solid @border-color-split; +} + +.overview-strip div { + display: flex; + flex-direction: column; + gap: 5px; + padding: 10px 16px; + border-right: 1px solid @border-color-split; } -.trace-id, .span-id { - font-family: 'Courier New', monospace; +.overview-strip div:last-child { + border-right: 0; +} + +.overview-strip span { + color: @text-color-secondary; font-size: 12px; - color: #666; } -.attributes-text, .resource-text { - max-width: 180px; +.overview-strip strong { + font-size: 20px; +} + +.chart-region { + min-height: 240px; + border: 1px solid @border-color-split; +} + +.trend-chart { + height: 240px; +} + +.chart-region nz-empty { + display: block; + padding-top: 48px; +} + +.section-title { + display: flex; + gap: 8px; + align-items: center; + margin: 20px 0 10px; +} + +.section-title h2 { + margin: 0; + font-size: 16px; +} + +.section-title span { + color: @text-color-secondary; +} + +.message-cell { + max-width: 580px; overflow: hidden; - text-overflow: ellipsis; white-space: nowrap; - font-size: 12px; - cursor: pointer; + text-overflow: ellipsis; } -.text-muted { - color: #999; - font-style: italic; +.mono { + max-width: 220px; + overflow: hidden; + font-family: SFMono-Regular, Consolas, monospace; + text-overflow: ellipsis; } -nz-statistic { - text-align: center; +.drawer-actions { + display: flex; + gap: 8px; + justify-content: flex-end; + margin-bottom: 14px; } -.column-control-container { - width: 280px; - max-height: 400px; - overflow-y: auto; - .column-control-reset-button { - text-align: center; - } +pre { + max-height: calc(100vh - 150px); + padding: 16px; + overflow: auto; + color: #d7e0ea; + background: #0d1117; } - -.log-details-modal { - .basic-info-card { - margin-bottom: 16px; - .info-row { - margin-bottom: 8px; - } - .info-label { - display: inline-block; - width: 100px; - font-weight: bold; - } - .info-value { - font-family: monospace; - word-break: break-all; - } +@media (max-width: 1400px) { + .query-toolbar { + grid-template-columns: repeat(4, minmax(150px, 1fr)); } - .json-content { - position: relative; - .copy-button { - position: absolute; - top: 8px; - right: 8px; - z-index: 1; - } - .pre { - background: #f5f5f5; - padding: 16px; - border-radius: 4px; - overflow-x: auto; - margin: 0; - padding-top: 40px; - } + + .query-toolbar > button:last-child { + grid-column: -2 / -1; } } diff --git a/web-app/src/app/routes/log/log-manage/log-manage.component.spec.ts b/web-app/src/app/routes/log/log-manage/log-manage.component.spec.ts index e7e11e6ca21..8a262b27dfb 100644 --- a/web-app/src/app/routes/log/log-manage/log-manage.component.spec.ts +++ b/web-app/src/app/routes/log/log-manage/log-manage.component.spec.ts @@ -17,27 +17,24 @@ * under the License. */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ActivatedRoute, Router } from '@angular/router'; +import { LogService } from '../../../service/log.service'; import { LogManageComponent } from './log-manage.component'; describe('LogManageComponent', () => { - let component: LogManageComponent; - let fixture: ComponentFixture; + it('switches query and live modes on the canonical log route', () => { + const logs = jasmine.createSpyObj('LogService', ['list', 'overviewStats', 'trendStats']); + const route = { snapshot: { queryParamMap: { get: () => null }, data: {} } } as unknown as ActivatedRoute; + const router = jasmine.createSpyObj('Router', ['navigate']); + const component = new LogManageComponent(logs, route, router); + component.timeRange = [new Date(1_000), new Date(2_000)]; - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [LogManageComponent] - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(LogManageComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); + component.setMode('stream'); - it('should create', () => { - expect(component).toBeTruthy(); + expect(component.mode).toBe('stream'); + expect(router.navigate).toHaveBeenCalledWith(['/log/manage'], { + queryParams: jasmine.objectContaining({ start: 1_000, end: 2_000, view: 'stream' }) + }); }); }); diff --git a/web-app/src/app/routes/log/log-manage/log-manage.component.ts b/web-app/src/app/routes/log/log-manage/log-manage.component.ts index 496161769bf..0c5f5281a43 100644 --- a/web-app/src/app/routes/log/log-manage/log-manage.component.ts +++ b/web-app/src/app/routes/log/log-manage/log-manage.component.ts @@ -18,35 +18,36 @@ */ import { CommonModule } from '@angular/common'; -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { I18NService } from '@core'; -import { ALAIN_I18N_TOKEN } from '@delon/theme'; +import { ActivatedRoute, Router } from '@angular/router'; +import { I18nPipe } from '@delon/theme'; import { SharedModule } from '@shared'; import { EChartsOption } from 'echarts'; -import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete'; -import { NzButtonModule } from 'ng-zorro-antd/button'; -import { NzCardModule } from 'ng-zorro-antd/card'; -import { NzCheckboxModule } from 'ng-zorro-antd/checkbox'; -import { NzCollapseModule } from 'ng-zorro-antd/collapse'; -import { NzDatePickerModule } from 'ng-zorro-antd/date-picker'; -import { NzDividerModule } from 'ng-zorro-antd/divider'; +import { NzDrawerModule } from 'ng-zorro-antd/drawer'; import { NzEmptyModule } from 'ng-zorro-antd/empty'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzInputModule } from 'ng-zorro-antd/input'; -import { NzListModule } from 'ng-zorro-antd/list'; -import { NzMessageService } from 'ng-zorro-antd/message'; -import { NzModalService, NzModalModule } from 'ng-zorro-antd/modal'; -import { NzPopoverModule } from 'ng-zorro-antd/popover'; -import { NzSpaceModule } from 'ng-zorro-antd/space'; -import { NzStatisticModule } from 'ng-zorro-antd/statistic'; import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; import { NgxEchartsModule } from 'ngx-echarts'; +import { Subject, debounceTime, finalize, forkJoin, switchMap, takeUntil } from 'rxjs'; import { LogEntry } from '../../../pojo/LogEntry'; -import { LogService } from '../../../service/log.service'; +import { LogOverviewStats, LogQueryOptions, LogService } from '../../../service/log.service'; +import { SignalContext } from '../../../service/observability.service'; +import { SignalNavigationComponent } from '../../observability/signal-navigation.component'; +import { moveSignalTimeRangeToNow, readSignalTimeRange, toSignalTimeContext } from '../../observability/signal-query-context'; +import { SignalTimeRangeComponent } from '../../observability/signal-time-range.component'; +import { LogStreamComponent } from '../log-stream/log-stream.component'; + +type LogViewMode = 'query' | 'stream'; + +export function trendBucketMillis(value: string): number { + const numeric = Number(value); + if (Number.isFinite(numeric)) { + return numeric > 10_000_000_000_000 ? numeric / 1_000_000 : numeric; + } + return Date.parse(value); +} @Component({ selector: 'app-log-manage', @@ -54,518 +55,236 @@ import { LogService } from '../../../service/log.service'; imports: [ CommonModule, FormsModule, + I18nPipe, SharedModule, - NzCardModule, + NgxEchartsModule, + NzDrawerModule, + NzEmptyModule, NzTableModule, - NzDatePickerModule, - NzInputModule, - NzButtonModule, NzTagModule, - NzToolTipModule, - NzEmptyModule, - NgxEchartsModule, - NzStatisticModule, - NzSpaceModule, - NzIconModule, - NzDividerModule, - NzCollapseModule, - NzModalModule, - NzCheckboxModule, - NzPopoverModule, - NzListModule, - NzAutocompleteModule + SignalNavigationComponent, + SignalTimeRangeComponent, + LogStreamComponent ], templateUrl: './log-manage.component.html', styleUrl: './log-manage.component.less' }) -export class LogManageComponent implements OnInit { - constructor( - private logSvc: LogService, - private msg: NzMessageService, - private modal: NzModalService, - @Inject(ALAIN_I18N_TOKEN) private i18n: I18NService - ) {} - - // filters +export class LogManageComponent implements OnInit, OnDestroy { + readonly severityLevels = ['TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL']; + mode: LogViewMode = 'query'; timeRange: Date[] = []; - severityNumber?: number; - severityText?: string; - traceId: string = ''; - spanId: string = ''; - searchContent: string = ''; - - // table with pagination - loading = false; - data: LogEntry[] = []; + serviceName = ''; + serviceNamespace = ''; + environment = ''; + traceId = ''; + spanId = ''; + severityText = ''; + searchContent = ''; + resource = ''; + refreshSeconds = 0; pageIndex = 1; pageSize = 20; - totalElements = 0; - totalPages = 0; - - // charts - severityOption!: EChartsOption; - trendOption!: EChartsOption; - traceCoverageOption!: EChartsOption; - severityInstance: any; - trendInstance: any; - traceCoverageInstance: any; - - // Modal state - isModalVisible: boolean = false; - selectedLogEntry: LogEntry | null = null; - - // Statistics visibility control - showStatistics: boolean = false; - - // Batch selection for table - checked = false; - indeterminate = false; - setOfCheckedId = new Set(); - - // overview stats - overviewStats: any = { - totalCount: 0, - fatalCount: 0, - errorCount: 0, - warnCount: 0, - infoCount: 0, - debugCount: 0, - traceCount: 0 - }; - - // column visibility - columnVisibility = { - time: { visible: true, label: this.i18n.fanyi('log.manage.table.column.time') }, - observedTime: { visible: true, label: this.i18n.fanyi('log.manage.table.column.observed-time') }, - severity: { visible: true, label: this.i18n.fanyi('log.manage.table.column.severity') }, - body: { visible: true, label: this.i18n.fanyi('log.manage.table.column.body') }, - attributes: { visible: true, label: this.i18n.fanyi('log.manage.table.column.attributes') }, - resource: { visible: true, label: this.i18n.fanyi('log.manage.table.column.resource') }, - traceId: { visible: true, label: this.i18n.fanyi('log.manage.table.column.trace-id') }, - spanId: { visible: true, label: this.i18n.fanyi('log.manage.table.column.span-id') }, - traceFlags: { visible: true, label: this.i18n.fanyi('log.manage.table.column.trace-flags') }, - instrumentation: { visible: true, label: this.i18n.fanyi('log.manage.table.column.instrumentation') }, - droppedCount: { visible: true, label: this.i18n.fanyi('log.manage.table.column.dropped-count') } - }; + total = 0; + logs: LogEntry[] = []; + overview: Partial = {}; + chartOption: EChartsOption = {}; + selected?: LogEntry; + detailVisible = false; + loading = false; + error = ''; + private readonly queryChanges = new Subject(); + private readonly destroyed = new Subject(); - // column control visible - columnControlVisible = false; + constructor(private logsService: LogService, private route: ActivatedRoute, private router: Router) {} ngOnInit(): void { - this.initChartThemes(); - } - - initChartThemes() { - this.severityOption = { - tooltip: { trigger: 'axis' }, - xAxis: { type: 'category', data: ['TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'] }, - yAxis: { type: 'value' }, - series: [ - { - type: 'bar', - data: [0, 0, 0, 0, 0, 0], - itemStyle: { - color: function (params: any) { - const colors = ['#d9d9d9', '#52c41a', '#1890ff', '#faad14', '#ff4d4f', '#722ed1']; - return colors[params.dataIndex]; - } - } - } - ] - }; - - this.trendOption = { - tooltip: { trigger: 'axis' }, - xAxis: { type: 'category', data: [] }, - yAxis: { type: 'value' }, - series: [ - { - type: 'line', - data: [], - smooth: true, - areaStyle: { opacity: 0.3 } - } - ] - }; - - this.traceCoverageOption = { - tooltip: { trigger: 'item', formatter: '{b}: {c}' }, - series: [ - { - type: 'pie', - radius: ['40%', '70%'], - data: [ - { name: this.i18n.fanyi('log.manage.chart.trace-coverage.with-trace'), value: 0, itemStyle: { color: '#52c41a' } }, - { name: this.i18n.fanyi('log.manage.chart.trace-coverage.without-trace'), value: 0, itemStyle: { color: '#ff4d4f' } }, - { name: this.i18n.fanyi('log.manage.chart.trace-coverage.with-span'), value: 0, itemStyle: { color: '#1890ff' } }, - { name: this.i18n.fanyi('log.manage.chart.trace-coverage.complete-trace-info'), value: 0, itemStyle: { color: '#722ed1' } } - ], - emphasis: { - itemStyle: { - shadowBlur: 10, - shadowOffsetX: 0, - shadowColor: 'rgba(0, 0, 0, 0.5)' - } + const params = this.route.snapshot.queryParamMap; + this.timeRange = readSignalTimeRange(params); + this.mode = params.get('view') === 'stream' || this.route.snapshot.data['logMode'] === 'stream' ? 'stream' : 'query'; + this.traceId = params.get('traceId') || ''; + this.spanId = params.get('spanId') || ''; + this.serviceName = params.get('serviceName') || ''; + this.serviceNamespace = params.get('serviceNamespace') || ''; + this.environment = params.get('environment') || ''; + this.severityText = params.get('severityText') || ''; + this.searchContent = params.get('search') || ''; + this.resource = params.get('resource') || ''; + this.refreshSeconds = Math.max(0, Number(params.get('refresh')) || 0); + this.queryChanges + .pipe( + debounceTime(250), + switchMap(() => { + this.loading = true; + this.error = ''; + const options = this.options(); + return forkJoin({ + list: this.logsService.list(options), + overview: this.logsService.overviewStats(options), + trend: this.logsService.trendStats(options) + }).pipe(finalize(() => (this.loading = false))); + }), + takeUntil(this.destroyed) + ) + .subscribe({ + next: result => { + if (result.list.code !== 0 || result.overview.code !== 0 || result.trend.code !== 0) { + this.error = result.list.msg || result.overview.msg || result.trend.msg; + return; } - } - ] - }; + this.logs = result.list.data?.content || []; + this.total = result.list.data?.totalElements || 0; + this.overview = result.overview.data || {}; + this.chartOption = this.trendChart(result.trend.data?.hourlyStats || {}); + this.updateUrl(this.options()); + }, + error: error => (this.error = error?.error?.msg || error?.message || 'Storage unavailable') + }); + if (this.mode === 'query') this.search(); } - onSeverityChartInit(ec: any) { - this.severityInstance = ec; + ngOnDestroy(): void { + this.destroyed.next(); + this.destroyed.complete(); } - onTrendChartInit(ec: any) { - this.trendInstance = ec; - } - onTraceCoverageChartInit(ec: any) { - this.traceCoverageInstance = ec; - } - - refreshSeverityChartFromOverview(overviewStats: any) { - const traceCount = overviewStats.traceCount || 0; - const debugCount = overviewStats.debugCount || 0; - const infoCount = overviewStats.infoCount || 0; - const warnCount = overviewStats.warnCount || 0; - const errorCount = overviewStats.errorCount || 0; - const fatalCount = overviewStats.fatalCount || 0; - const data = [traceCount, debugCount, infoCount, warnCount, errorCount, fatalCount]; - const option: EChartsOption = { - ...this.severityOption, - series: [ - { - ...(this.severityOption.series as any)?.[0], - data - } - ] - }; - this.severityOption = option; - if (this.severityInstance) this.severityInstance.setOption(option); + search(): void { + this.queryChanges.next(); } - refreshTrendChart(hourlyStats: Record) { - const sortedHours = Object.keys(hourlyStats).sort(); - const data = sortedHours.map(hour => hourlyStats[hour]); - const option: EChartsOption = { - ...this.trendOption, - xAxis: { - type: 'category', - data: sortedHours - }, - series: [{ ...(this.trendOption.series as any)?.[0], data }] - }; - this.trendOption = option; - if (this.trendInstance) this.trendInstance.setOption(option); + refreshToNow(): void { + this.timeRange = moveSignalTimeRangeToNow(this.timeRange); + this.search(); } - refreshTraceCoverageChart(traceCoverageData: any) { - const coverage = traceCoverageData.traceCoverage || {}; - const data = [ - { - name: this.i18n.fanyi('log.manage.chart.trace-coverage.with-trace'), - value: coverage.withTrace || 0, - itemStyle: { color: '#52c41a' } - }, - { - name: this.i18n.fanyi('log.manage.chart.trace-coverage.without-trace'), - value: coverage.withoutTrace || 0, - itemStyle: { color: '#ff4d4f' } - }, - { - name: this.i18n.fanyi('log.manage.chart.trace-coverage.with-span'), - value: coverage.withSpan || 0, - itemStyle: { color: '#1890ff' } - }, - { - name: this.i18n.fanyi('log.manage.chart.trace-coverage.complete-trace-info'), - value: coverage.withBothTraceAndSpan || 0, - itemStyle: { color: '#722ed1' } - } - ]; - const option: EChartsOption = { - ...this.traceCoverageOption, - series: [{ ...(this.traceCoverageOption.series as any)?.[0], data }] - }; - this.traceCoverageOption = option; - if (this.traceCoverageInstance) this.traceCoverageInstance.setOption(option); - } - - query() { - this.loading = true; - const start = this.timeRange?.[0]?.getTime(); - const end = this.timeRange?.[1]?.getTime(); - - const obs = this.logSvc.list( - start, - end, - this.traceId, - this.spanId, - this.severityNumber, - this.severityText, - this.searchContent, - this.pageIndex - 1, - this.pageSize - ); - - obs.subscribe({ - next: message => { - if (message.code === 0) { - const pageData = message.data; - this.data = pageData.content; - this.totalElements = pageData.totalElements; - this.totalPages = pageData.totalPages; - this.pageIndex = pageData.number + 1; - - // Clear selection when data changes - this.setOfCheckedId.clear(); - this.refreshCheckedStatus(); - - this.loadStatsWithFilters(); - } else { - this.msg.warning(this.i18n.fanyi('log.manage.error.unsupported-db')); - } - this.loading = false; - }, - error: () => { - this.loading = false; - this.msg.error(this.i18n.fanyi('common.notify.query-fail')); - } + setMode(mode: LogViewMode): void { + if (this.mode === mode) return; + this.mode = mode; + this.router.navigate(['/log/manage'], { + queryParams: { ...toSignalTimeContext(this.timeRange), ...this.signalFilters(), view: mode === 'stream' ? 'stream' : null } }); + if (mode === 'query') this.search(); } - loadStatsWithFilters() { - const start = this.timeRange?.[0]?.getTime(); - const end = this.timeRange?.[1]?.getTime(); - const traceId = this.traceId || undefined; - const spanId = this.spanId || undefined; - const severity = this.severityNumber || undefined; - const severityText = this.severityText || undefined; - const search = this.searchContent || undefined; - - this.logSvc.overviewStats(start, end, traceId, spanId, severity, severityText, search).subscribe({ - next: message => { - if (message.code === 0) { - this.overviewStats = message.data || {}; - this.refreshSeverityChartFromOverview(this.overviewStats); - } - } - }); - - this.logSvc.traceCoverageStats(start, end, traceId, spanId, severity, severityText, search).subscribe({ - next: message => { - if (message.code === 0) { - this.refreshTraceCoverageChart(message.data || {}); - } - } - }); - - this.logSvc.trendStats(start, end, traceId, spanId, severity, severityText, search).subscribe({ - next: message => { - if (message.code === 0) { - this.refreshTrendChart(message.data?.hourlyStats || {}); - } - } - }); + pageChanged(page: number): void { + this.pageIndex = page; + this.search(); } - clearFilters() { - this.timeRange = []; - this.severityNumber = undefined; - this.traceId = ''; - this.spanId = ''; - this.severityText = ''; - this.searchContent = ''; - this.pageIndex = 1; - this.query(); + open(log: LogEntry): void { + this.selected = log; + this.detailVisible = true; } - toggleStatistics() { - this.showStatistics = !this.showStatistics; - } - - // Batch selection methods - updateCheckedSet(id: string, checked: boolean): void { - if (checked) { - this.setOfCheckedId.add(id); - } else { - this.setOfCheckedId.delete(id); - } - } - - onItemChecked(id: string, checked: boolean): void { - this.updateCheckedSet(id, checked); - this.refreshCheckedStatus(); - } - - onAllChecked(checked: boolean): void { - this.data.forEach(item => this.updateCheckedSet(this.getLogId(item), checked)); - this.refreshCheckedStatus(); - } - - refreshCheckedStatus(): void { - this.checked = this.data.every(item => this.setOfCheckedId.has(this.getLogId(item))); - this.indeterminate = this.data.some(item => this.setOfCheckedId.has(this.getLogId(item))) && !this.checked; - } - - getLogId(item: LogEntry): string { - return `${item.timeUnixNano}_${item.traceId || 'no-trace'}`; - } - - batchDelete(): void { - if (this.setOfCheckedId.size === 0) { - this.msg.warning(this.i18n.fanyi('common.notify.no-select-delete')); - return; - } - - const selectedItems = this.data.filter(item => this.setOfCheckedId.has(this.getLogId(item))); - - this.modal.confirm({ - nzTitle: this.i18n.fanyi('common.confirm.delete-batch'), - nzOkText: this.i18n.fanyi('common.button.delete'), - nzOkDanger: true, - nzCancelText: this.i18n.fanyi('common.button.cancel'), - nzOnOk: () => { - this.performBatchDelete(selectedItems); + openTrace(log: LogEntry): void { + if (!log.traceId) return; + this.router.navigate(['/trace/manage'], { + queryParams: { + start: this.timeRange[0].getTime(), + end: this.timeRange[1].getTime(), + traceId: log.traceId, + serviceName: log.resource?.['service.name'], + serviceNamespace: log.resource?.['service.namespace'], + environment: log.resource?.['deployment.environment.name'] } }); } - performBatchDelete(selectedItems: LogEntry[]): void { - const timeUnixNanos = selectedItems.filter(item => item.timeUnixNano != null).map(item => item.timeUnixNano!); - - if (timeUnixNanos.length === 0) { - this.msg.warning(this.i18n.fanyi('common.notify.no-select-delete')); - return; - } - - this.logSvc.batchDelete(timeUnixNanos).subscribe({ - next: message => { - if (message.code === 0) { - this.msg.success(this.i18n.fanyi('common.notify.delete-success')); - this.setOfCheckedId.clear(); - this.refreshCheckedStatus(); - this.query(); - } else { - this.msg.error(message.msg || this.i18n.fanyi('common.notify.delete-fail')); - } - }, - error: () => { - this.msg.error(this.i18n.fanyi('common.notify.delete-fail')); + openMetrics(log: LogEntry): void { + this.router.navigate(['/metrics/manage'], { + queryParams: { + start: this.timeRange[0].getTime(), + end: this.timeRange[1].getTime(), + serviceName: log.resource?.['service.name'], + serviceNamespace: log.resource?.['service.namespace'], + environment: log.resource?.['deployment.environment.name'] } }); } - onTablePageChange(params: { pageIndex: number; pageSize: number; sort: any; filter: any }) { - this.pageIndex = params.pageIndex; - this.pageSize = params.pageSize; - this.query(); - } - - getSeverityColor(severityNumber?: number): string { - if (!severityNumber) return 'default'; - if (severityNumber >= 21 && severityNumber <= 24) return 'purple'; // FATAL - if (severityNumber >= 17 && severityNumber <= 20) return 'red'; // ERROR - if (severityNumber >= 13 && severityNumber <= 16) return 'orange'; // WARN - if (severityNumber >= 9 && severityNumber <= 12) return 'blue'; // INFO - if (severityNumber >= 5 && severityNumber <= 8) return 'green'; // DEBUG - if (severityNumber >= 1 && severityNumber <= 4) return 'default'; // TRACE - return 'default'; - } - - getBodyText(body: any): string { - if (!body) return ''; - if (typeof body === 'string') return body.length > 100 ? `${body.substring(0, 100)}...` : body; - if (typeof body === 'object') { - const str = JSON.stringify(body); - return str.length > 100 ? `${str.substring(0, 100)}...` : str; - } - return String(body); - } - - getObjectText(obj: any): string { - if (!obj) return ''; - if (typeof obj === 'object') { - const keys = Object.keys(obj); - if (keys.length === 0) return ''; - if (keys.length === 1) { - return `${keys[0]}: ${obj[keys[0]]}`; - } - return `${keys[0]}: ${obj[keys[0]]} (+${keys.length - 1} more)`; - } - return String(obj); - } - - getInstrumentationText(scope: any): string { - if (!scope) return ''; - const parts = []; - if (scope.name) parts.push(`Name: ${scope.name}`); - if (scope.version) parts.push(`Version: ${scope.version}`); - if (scope.attributes && Object.keys(scope.attributes).length > 0) { - parts.push(`Attributes: ${Object.keys(scope.attributes).length} items`); - } - return parts.join('\n'); - } - - // Modal methods - showLogDetails(logEntry: LogEntry): void { - this.selectedLogEntry = logEntry; - this.isModalVisible = true; - } - - handleModalCancel(): void { - this.isModalVisible = false; - this.selectedLogEntry = null; - } - - getLogEntryJson(logEntry: LogEntry): string { - return JSON.stringify(logEntry, null, 2); + navigationContext(): SignalContext & { refresh?: number } { + return { + ...toSignalTimeContext(this.timeRange), + serviceName: this.serviceName, + serviceNamespace: this.serviceNamespace, + environment: this.environment, + traceId: this.traceId, + spanId: this.spanId, + refresh: this.refreshSeconds || undefined + }; } - formatTimestamp(timeUnixNano: number | undefined): string { - if (!timeUnixNano) return ''; - return new Date(timeUnixNano / 1000000).toLocaleString(); + bodyText(log: LogEntry): string { + return typeof log.body === 'string' ? log.body : JSON.stringify(log.body); } - copyToClipboard(text: string): void { - navigator.clipboard - .writeText(text) - .then(() => { - this.msg.success(this.i18n.fanyi('common.notify.copy-success')); - }) - .catch(err => { - console.error('Failed to copy: ', err); - this.msg.error(this.i18n.fanyi('common.notify.copy-fail')); - }); + service(log: LogEntry): string { + return String(log.resource?.['service.name'] || '-'); } - toggleColumnVisibility(column: string): void { - if (this.columnVisibility[column as keyof typeof this.columnVisibility]) { - this.columnVisibility[column as keyof typeof this.columnVisibility].visible = - !this.columnVisibility[column as keyof typeof this.columnVisibility].visible; - } + detailJson(): string { + return JSON.stringify(this.selected, null, 2); } - getVisibleColumnsCount(): number { - return Object.values(this.columnVisibility).filter(col => col.visible).length; + severityColor(value?: number): string { + if (!value) return 'default'; + if (value >= 17) return 'error'; + if (value >= 13) return 'warning'; + if (value >= 9) return 'processing'; + return 'default'; } - getColumnKeys(): string[] { - return Object.keys(this.columnVisibility); + private options(): LogQueryOptions { + return { + ...toSignalTimeContext(this.timeRange), + traceId: this.traceId, + spanId: this.spanId, + severityText: this.severityText, + search: this.searchContent, + serviceName: this.serviceName, + serviceNamespace: this.serviceNamespace, + environment: this.environment, + resource: this.resource, + pageIndex: this.pageIndex - 1, + pageSize: this.pageSize + }; } - getColumnVisibility(): any { - return this.columnVisibility; + private updateUrl(options: LogQueryOptions): void { + const { pageIndex, pageSize, ...context } = options; + this.router.navigate([], { + relativeTo: this.route, + queryParams: { ...context, view: this.mode === 'stream' ? 'stream' : null, refresh: this.refreshSeconds || null }, + replaceUrl: true + }); } - resetColumns(): void { - Object.keys(this.columnVisibility).forEach(key => { - this.columnVisibility[key as keyof typeof this.columnVisibility].visible = true; - }); - this.msg.success(this.i18n.fanyi('common.notify.operate-success')); + private signalFilters(): Pick { + return { + traceId: this.traceId, + spanId: this.spanId, + serviceName: this.serviceName, + serviceNamespace: this.serviceNamespace, + environment: this.environment + }; } - toggleColumnControl(): void { - this.columnControlVisible = !this.columnControlVisible; + private trendChart(hourly: Record): EChartsOption { + const times = Object.keys(hourly).sort(); + return { + animation: false, + tooltip: { trigger: 'axis' }, + grid: { left: 48, right: 20, top: 18, bottom: 36 }, + xAxis: { + type: 'category', + data: times.map(time => { + const millis = trendBucketMillis(time); + return Number.isFinite(millis) + ? new Date(millis).toLocaleString([], { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }) + : time; + }) + }, + yAxis: { type: 'value' }, + series: [{ type: 'line', showSymbol: false, areaStyle: { opacity: 0.12 }, data: times.map(time => hourly[time]) }] + }; } } diff --git a/web-app/src/app/routes/log/log-routing.module.ts b/web-app/src/app/routes/log/log-routing.module.ts index 7ba2eb7916e..6175bf8e29a 100644 --- a/web-app/src/app/routes/log/log-routing.module.ts +++ b/web-app/src/app/routes/log/log-routing.module.ts @@ -22,12 +22,11 @@ import { RouterModule, Routes } from '@angular/router'; import { LogIntegrationComponent } from './log-integration/log-integration.component'; import { LogManageComponent } from './log-manage/log-manage.component'; -import { LogStreamComponent } from './log-stream/log-stream.component'; const routes: Routes = [ { path: '', component: LogIntegrationComponent }, { path: 'integration/:source', component: LogIntegrationComponent }, - { path: 'stream', component: LogStreamComponent }, + { path: 'stream', component: LogManageComponent, data: { logMode: 'stream' } }, { path: 'manage', component: LogManageComponent } ]; diff --git a/web-app/src/app/routes/log/log-stream/log-stream.component.html b/web-app/src/app/routes/log/log-stream/log-stream.component.html index 4efa55c9ba4..0916bbe21b6 100644 --- a/web-app/src/app/routes/log/log-stream/log-stream.component.html +++ b/web-app/src/app/routes/log/log-stream/log-stream.component.html @@ -18,17 +18,18 @@ --> - + -
+
- +
diff --git a/web-app/src/app/routes/log/log-stream/log-stream.component.less b/web-app/src/app/routes/log/log-stream/log-stream.component.less index eaa26d12582..f9fff80d397 100644 --- a/web-app/src/app/routes/log/log-stream/log-stream.component.less +++ b/web-app/src/app/routes/log/log-stream/log-stream.component.less @@ -22,6 +22,17 @@ .log-stream-container { background: @common-background-color; + &.embedded { + .header-card { + margin: 0; + background: transparent; + } + + ::ng-deep .header-card > .ant-card-body { + padding: 16px 0 0; + } + } + .header-card { margin-bottom: 16px; @@ -434,4 +445,3 @@ } } } - diff --git a/web-app/src/app/routes/log/log-stream/log-stream.component.ts b/web-app/src/app/routes/log/log-stream/log-stream.component.ts index e8d7630ddb7..e5d7c1093e0 100644 --- a/web-app/src/app/routes/log/log-stream/log-stream.component.ts +++ b/web-app/src/app/routes/log/log-stream/log-stream.component.ts @@ -28,7 +28,8 @@ import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, - NgZone + NgZone, + Input } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { I18NService } from '@core'; @@ -82,6 +83,7 @@ interface ExtendedLogEntry { changeDetection: ChangeDetectionStrategy.OnPush }) export class LogStreamComponent implements OnInit, OnDestroy, AfterViewInit { + @Input() embedded = false; // SSE connection and state private eventSource!: EventSource; isConnected: boolean = false; @@ -95,10 +97,10 @@ export class LogStreamComponent implements OnInit, OnDestroy, AfterViewInit { // Filter properties filterSeverityNumber: string = ''; - filterSeverityText: string = ''; + @Input() filterSeverityText: string = ''; filterLogContent: string = ''; - filterTraceId: string = ''; - filterSpanId: string = ''; + @Input() filterTraceId: string = ''; + @Input() filterSpanId: string = ''; // UI state showFilters: boolean = true; diff --git a/web-app/src/app/routes/metrics/metrics-manage.component.html b/web-app/src/app/routes/metrics/metrics-manage.component.html new file mode 100644 index 00000000000..0ddaa722358 --- /dev/null +++ b/web-app/src/app/routes/metrics/metrics-manage.component.html @@ -0,0 +1,112 @@ + +
+
+
+

{{ 'observability.metrics.title' | i18n }}

+

{{ 'observability.metrics.subtitle' | i18n }}

+
+
+ + {{ series.length }} {{ 'observability.metrics.series' | i18n }} +
+
+ +
+ + + + {{ name }} + + + +
+ + + +
+
{{ 'observability.metrics.total-series' | i18n }}{{ series.length }}
+
{{ 'observability.metrics.total-samples' | i18n }}{{ summary.sampleCount }}
+
{{ 'observability.metrics.minimum' | i18n }}{{ summary.minimum | number : '1.0-2' }}
+
{{ 'observability.metrics.maximum' | i18n }}{{ summary.maximum | number : '1.0-2' }}
+
+ +
+

{{ 'observability.metrics.trend' | i18n }}

{{ series.length }} +
+ +
+
+ +
+ +
+ +
+ +
+

{{ 'observability.metrics.samples' | i18n }}

+ {{ rows.length }} +
+ + {{ 'observability.column.time' | i18n }}{{ 'observability.column.value' | i18n }}{{ 'observability.column.labels' | i18n }} + + + {{ row.timestamp | date : 'yyyy-MM-dd HH:mm:ss' }}{{ row.value }}{{ labelText(row.labels) }} + + + + + + +
+
{{ label.key }}
{{ label.value }}
+
+
+
+
diff --git a/web-app/src/app/routes/metrics/metrics-manage.component.less b/web-app/src/app/routes/metrics/metrics-manage.component.less new file mode 100644 index 00000000000..277be38e3ac --- /dev/null +++ b/web-app/src/app/routes/metrics/metrics-manage.component.less @@ -0,0 +1,160 @@ +@import '~src/styles/theme'; + +.signal-page { + min-height: 100%; +} + +.page-heading { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding-bottom: 18px; + border-bottom: 1px solid @border-color-split; +} + +.page-heading h1 { + margin: 0 0 5px; + font-weight: 600; + font-size: 24px; +} + +.page-heading p, +.result-count { + margin: 0; + color: @text-color-secondary; +} + +.heading-actions { + display: flex; + gap: 16px; + align-items: center; +} + +.query-toolbar { + display: grid; + grid-template-columns: minmax(400px, 1fr) 140px auto; + gap: 8px; + align-items: center; + padding: 16px 0; +} + +.query-toolbar app-signal-time-range { + grid-column: 1 / -1; +} + +.promql-input { + width: 100%; +} + +.chart-region { + min-height: 240px; + background: @component-background; + border: 1px solid @border-color-split; +} + +.metric-chart { + height: 240px; +} + +.overview-strip { + display: grid; + grid-template-columns: repeat(4, 1fr); + margin-bottom: 0; + border: 1px solid @border-color-split; +} + +.overview-strip div { + display: flex; + flex-direction: column; + gap: 5px; + padding: 10px 16px; + border-right: 1px solid @border-color-split; +} + +.overview-strip div:last-child { + border-right: 0; +} + +.overview-strip span { + color: @text-color-secondary; + font-size: 12px; +} + +.overview-strip strong { + font-size: 20px; +} + +.series-strip { + display: flex; + gap: 6px; + padding: 8px 0; + overflow-x: auto; + border-bottom: 1px solid @border-color-split; +} + +.series-strip button { + flex: 0 0 auto; + max-width: 360px; + overflow: hidden; + font-family: SFMono-Regular, Consolas, monospace; + text-overflow: ellipsis; +} + +.chart-region nz-empty { + display: block; + padding-top: 60px; +} + +.loading-region { + opacity: 0.55; +} + +.section-title { + display: flex; + gap: 8px; + align-items: center; + margin: 18px 0 10px; +} + +.section-title h2 { + margin: 0; + font-size: 16px; +} + +.section-title span { + color: @text-color-secondary; +} + +.mono { + max-width: 640px; + overflow: hidden; + font-family: SFMono-Regular, Consolas, monospace; + white-space: nowrap; + text-overflow: ellipsis; +} + +.detail-list { + display: grid; + grid-template-columns: minmax(120px, auto) 1fr; + margin: 0; +} + +.detail-list dt, +.detail-list dd { + margin: 0; + padding: 9px 0; + border-bottom: 1px solid @border-color-split; +} + +.detail-list dt { + color: @text-color-secondary; +} +@media (max-width: 1400px) { + .query-toolbar { + grid-template-columns: minmax(320px, 1fr) 130px auto; + } + + .query-toolbar > button:last-child { + grid-column: -2 / -1; + } +} diff --git a/web-app/src/app/routes/metrics/metrics-manage.component.ts b/web-app/src/app/routes/metrics/metrics-manage.component.ts new file mode 100644 index 00000000000..e68ce0b97f9 --- /dev/null +++ b/web-app/src/app/routes/metrics/metrics-manage.component.ts @@ -0,0 +1,224 @@ +/* + * 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. + */ + +import { CommonModule } from '@angular/common'; +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { I18nPipe } from '@delon/theme'; +import { SharedModule } from '@shared'; +import { EChartsOption } from 'echarts'; +import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete'; +import { NzDrawerModule } from 'ng-zorro-antd/drawer'; +import { NzEmptyModule } from 'ng-zorro-antd/empty'; +import { NzTableModule } from 'ng-zorro-antd/table'; +import { NgxEchartsModule } from 'ngx-echarts'; +import { Subject, debounceTime, finalize, switchMap, takeUntil } from 'rxjs'; + +import { MetricSeries, ObservabilityService, SignalContext } from '../../service/observability.service'; +import { SignalNavigationComponent } from '../observability/signal-navigation.component'; +import { moveSignalTimeRangeToNow, readSignalTimeRange, toSignalTimeContext } from '../observability/signal-query-context'; +import { SignalTimeRangeComponent } from '../observability/signal-time-range.component'; + +interface MetricTableRow { + timestamp: number; + value: number; + labels: Record; +} + +@Component({ + selector: 'app-metrics-manage', + standalone: true, + imports: [ + CommonModule, + FormsModule, + I18nPipe, + SharedModule, + NgxEchartsModule, + NzTableModule, + NzEmptyModule, + NzDrawerModule, + NzAutocompleteModule, + SignalNavigationComponent, + SignalTimeRangeComponent + ], + templateUrl: './metrics-manage.component.html', + styleUrl: './metrics-manage.component.less' +}) +export class MetricsManageComponent implements OnInit, OnDestroy { + timeRange: Date[] = []; + query = ''; + step = 30; + refreshSeconds = 0; + serviceName = ''; + serviceNamespace = ''; + environment = ''; + operationName = ''; + metricNames: string[] = []; + series: MetricSeries[] = []; + rows: MetricTableRow[] = []; + summary = { sampleCount: 0, minimum: 0, maximum: 0, latest: 0 }; + chartOption: EChartsOption = {}; + loading = false; + error = ''; + detailVisible = false; + selectedSeries?: MetricSeries; + private readonly queryChanges = new Subject(); + private readonly destroyed = new Subject(); + + constructor(private observability: ObservabilityService, private route: ActivatedRoute, private router: Router) {} + + ngOnInit(): void { + const params = this.route.snapshot.queryParamMap; + this.timeRange = readSignalTimeRange(params); + this.serviceName = params.get('serviceName') || ''; + this.serviceNamespace = params.get('serviceNamespace') || ''; + this.environment = params.get('environment') || ''; + this.operationName = params.get('operationName') || ''; + this.query = params.get('query') || ''; + this.step = Math.max(1, Math.min(Number(params.get('step')) || 30, 3600)); + this.refreshSeconds = Math.max(0, Number(params.get('refresh')) || 0); + this.queryChanges + .pipe( + debounceTime(250), + switchMap(() => { + this.loading = true; + this.error = ''; + return this.observability + .queryMetrics(this.context(), this.query || 'up', undefined, undefined, undefined, this.step) + .pipe(finalize(() => (this.loading = false))); + }), + takeUntil(this.destroyed) + ) + .subscribe({ + next: message => { + if (message.code !== 0) { + this.error = message.msg; + return; + } + this.series = message.data?.series || []; + this.rows = this.series.flatMap(series => + series.points.map(point => ({ timestamp: point.timestamp, value: point.value, labels: series.labels })) + ); + const values = this.rows.map(row => row.value); + const latest = this.rows.reduce( + (current, row) => (!current || row.timestamp > current.timestamp ? row : current), + undefined + ); + this.summary = { + sampleCount: this.rows.length, + minimum: values.length ? Math.min(...values) : 0, + maximum: values.length ? Math.max(...values) : 0, + latest: latest?.value || 0 + }; + this.chartOption = this.toChart(this.series); + this.updateUrl(); + }, + error: error => (this.error = error?.error?.msg || error?.message || 'Storage unavailable') + }); + this.loadInventory(); + } + + ngOnDestroy(): void { + this.destroyed.next(); + this.destroyed.complete(); + } + + search(): void { + this.queryChanges.next(); + } + + refreshToNow(): void { + this.timeRange = moveSignalTimeRangeToNow(this.timeRange); + this.search(); + } + + selectMetric(name: string): void { + this.query = name; + this.search(); + } + + showSeries(series: MetricSeries): void { + this.selectedSeries = series; + this.detailVisible = true; + } + + labelText(labels: Record): string { + return Object.entries(labels) + .map(([key, value]) => `${key}=${value}`) + .join(', '); + } + + navigationContext(): SignalContext & { refresh?: number } { + return { ...this.context(), refresh: this.refreshSeconds || undefined }; + } + + private loadInventory(): void { + this.observability + .metricInventory(this.context()) + .pipe(takeUntil(this.destroyed)) + .subscribe({ + next: message => { + this.metricNames = message.data?.metricNames || []; + if (!this.query && this.metricNames.length) this.query = this.metricNames[0]; + this.search(); + }, + error: error => { + this.error = error?.error?.msg || error?.message || 'Storage unavailable'; + this.search(); + } + }); + } + + private context(): SignalContext { + return { + ...toSignalTimeContext(this.timeRange), + serviceName: this.serviceName, + serviceNamespace: this.serviceNamespace, + environment: this.environment, + operationName: this.operationName + }; + } + + private updateUrl(): void { + this.router.navigate([], { + relativeTo: this.route, + queryParams: { ...this.context(), query: this.query || null, step: this.step, refresh: this.refreshSeconds || null }, + replaceUrl: true + }); + } + + private toChart(series: MetricSeries[]): EChartsOption { + return { + animation: false, + tooltip: { trigger: 'axis' }, + grid: { left: 52, right: 24, top: 24, bottom: 44 }, + xAxis: { type: 'time' }, + yAxis: { type: 'value', scale: true }, + dataZoom: [{ type: 'inside' }, { type: 'slider', height: 18, bottom: 8 }], + series: series.map((item, index) => ({ + name: this.labelText(item.labels) || `${this.query} ${index + 1}`, + type: 'line', + showSymbol: false, + sampling: 'lttb', + data: item.points.map(point => [point.timestamp, point.value]) + })) + }; + } +} diff --git a/web-app/src/app/routes/observability/signal-navigation.component.ts b/web-app/src/app/routes/observability/signal-navigation.component.ts new file mode 100644 index 00000000000..c1bd3389fef --- /dev/null +++ b/web-app/src/app/routes/observability/signal-navigation.component.ts @@ -0,0 +1,75 @@ +/* + * 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. + */ + +import { Component, Input } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { I18nPipe } from '@delon/theme'; +import { SharedModule } from '@shared'; + +import { SignalContext } from '../../service/observability.service'; + +type SignalKind = 'metrics' | 'logs' | 'traces'; + +@Component({ + selector: 'app-signal-navigation', + standalone: true, + imports: [I18nPipe, RouterModule, SharedModule], + template: ` + + `, + styles: [ + ` + nav { + display: flex; + } + a + a { + margin-left: -1px; + } + ` + ] +}) +export class SignalNavigationComponent { + @Input() active: SignalKind = 'metrics'; + @Input() context: SignalContext = {}; +} diff --git a/web-app/src/app/routes/observability/signal-query-context.ts b/web-app/src/app/routes/observability/signal-query-context.ts new file mode 100644 index 00000000000..7c757f72f2d --- /dev/null +++ b/web-app/src/app/routes/observability/signal-query-context.ts @@ -0,0 +1,78 @@ +/* + * 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. + */ + +import { ParamMap } from '@angular/router'; + +export interface SignalTimeContext { + start?: number; + end?: number; +} + +export type SignalTimePreset = '15m' | '30m' | '1h' | '3h' | '6h' | '12h' | '24h' | '7d'; + +export const SIGNAL_TIME_PRESETS: ReadonlyArray<{ value: SignalTimePreset; durationMs: number }> = [ + { value: '15m', durationMs: 15 * 60_000 }, + { value: '30m', durationMs: 30 * 60_000 }, + { value: '1h', durationMs: 60 * 60_000 }, + { value: '3h', durationMs: 3 * 60 * 60_000 }, + { value: '6h', durationMs: 6 * 60 * 60_000 }, + { value: '12h', durationMs: 12 * 60 * 60_000 }, + { value: '24h', durationMs: 24 * 60 * 60_000 }, + { value: '7d', durationMs: 7 * 24 * 60 * 60_000 } +]; + +export function readSignalTimeRange(params: ParamMap, defaultDurationMs = 30 * 60_000): Date[] { + const end = Number(params.get('end')) || Date.now(); + const start = Number(params.get('start')) || end - defaultDurationMs; + return [new Date(start), new Date(end)]; +} + +export function toSignalTimeContext(timeRange?: Date[]): SignalTimeContext { + return { + start: timeRange?.[0]?.getTime(), + end: timeRange?.[1]?.getTime() + }; +} + +export function moveSignalTimeRangeToNow(timeRange: Date[], now = Date.now(), defaultDurationMs = 30 * 60_000): Date[] { + const duration = Math.max(1, (timeRange[1]?.getTime() || now) - (timeRange[0]?.getTime() || now - defaultDurationMs)); + return [new Date(now - duration), new Date(now)]; +} + +export function createSignalTimePreset(preset: SignalTimePreset, now = Date.now()): Date[] { + const duration = SIGNAL_TIME_PRESETS.find(item => item.value === preset)?.durationMs || 30 * 60_000; + return [new Date(now - duration), new Date(now)]; +} + +export function detectSignalTimePreset(timeRange: Date[], now = Date.now(), liveToleranceMs = 60_000): SignalTimePreset | 'custom' { + const duration = (timeRange[1]?.getTime() || 0) - (timeRange[0]?.getTime() || 0); + if (Math.abs(now - (timeRange[1]?.getTime() || 0)) > liveToleranceMs) return 'custom'; + return SIGNAL_TIME_PRESETS.find(item => item.durationMs === duration)?.value || 'custom'; +} + +export function shiftSignalTimeRange(timeRange: Date[], direction: -1 | 1, now = Date.now()): Date[] { + const start = timeRange[0]?.getTime() || now - 30 * 60_000; + const end = timeRange[1]?.getTime() || now; + const duration = Math.max(1, end - start); + if (direction < 0) { + return [new Date(start - duration), new Date(end - duration)]; + } + const nextEnd = Math.min(now, end + duration); + return [new Date(nextEnd - duration), new Date(nextEnd)]; +} diff --git a/web-app/src/app/routes/observability/signal-time-range.component.ts b/web-app/src/app/routes/observability/signal-time-range.component.ts new file mode 100644 index 00000000000..06bf68d75c7 --- /dev/null +++ b/web-app/src/app/routes/observability/signal-time-range.component.ts @@ -0,0 +1,173 @@ +/* + * 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. + */ + +import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { I18nPipe } from '@delon/theme'; +import { SharedModule } from '@shared'; +import { NzDatePickerModule } from 'ng-zorro-antd/date-picker'; +import { NzSelectModule } from 'ng-zorro-antd/select'; + +import { + createSignalTimePreset, + detectSignalTimePreset, + SIGNAL_TIME_PRESETS, + shiftSignalTimeRange, + SignalTimePreset +} from './signal-query-context'; + +@Component({ + selector: 'app-signal-time-range', + standalone: true, + imports: [FormsModule, I18nPipe, SharedModule, NzDatePickerModule, NzSelectModule], + template: ` + + + + + + + + + + + `, + styles: [ + ` + :host { + display: grid; + grid-template-columns: auto minmax(330px, 1fr) 126px 40px; + gap: 8px; + align-items: center; + min-width: 0; + } + .range-actions { + display: flex; + min-width: 0; + } + .range-actions button { + flex: 0 0 34px; + } + .range-actions button + nz-select, + .range-actions nz-select + button { + margin-left: -1px; + } + .range-actions nz-select { + width: 138px; + } + nz-range-picker { + width: 100%; + min-width: 0; + } + :host > button { + width: 40px; + } + @media (max-width: 900px) { + :host { + grid-template-columns: auto minmax(260px, 1fr) 112px 40px; + } + } + ` + ] +}) +export class SignalTimeRangeComponent implements OnChanges, OnDestroy { + readonly presets = SIGNAL_TIME_PRESETS; + @Input() value: Date[] = []; + @Input() refreshSeconds = 0; + @Output() readonly valueChange = new EventEmitter(); + @Output() readonly refreshSecondsChange = new EventEmitter(); + @Output() readonly apply = new EventEmitter(); + @Output() readonly refresh = new EventEmitter(); + private timerId?: number; + + ngOnChanges(changes: SimpleChanges): void { + if (changes['refreshSeconds']) this.scheduleRefresh(this.refreshSeconds); + } + + ngOnDestroy(): void { + this.clearRefreshTimer(); + } + + get selectedPreset(): SignalTimePreset | 'custom' { + return detectSignalTimePreset(this.value); + } + + get canMoveForward(): boolean { + return Boolean(this.value[1] && this.value[1].getTime() < Date.now() - 30_000); + } + + selectPreset(preset: SignalTimePreset | 'custom'): void { + if (preset === 'custom') return; + this.commit(createSignalTimePreset(preset)); + } + + setAbsoluteRange(value: Date[]): void { + if (!value?.[0] || !value?.[1]) return; + this.commit(value); + } + + shift(direction: -1 | 1): void { + this.commit(shiftSignalTimeRange(this.value, direction)); + } + + refreshNow(): void { + this.refresh.emit(); + } + + setRefreshInterval(seconds: number): void { + this.refreshSecondsChange.emit(seconds); + this.scheduleRefresh(seconds); + } + + private commit(value: Date[]): void { + this.valueChange.emit(value); + this.apply.emit(); + } + + private scheduleRefresh(seconds: number): void { + this.clearRefreshTimer(); + if (seconds > 0) this.timerId = window.setInterval(() => this.refresh.emit(), seconds * 1_000); + } + + private clearRefreshTimer(): void { + if (this.timerId != null) window.clearInterval(this.timerId); + this.timerId = undefined; + } +} diff --git a/web-app/src/app/routes/routes-routing.module.ts b/web-app/src/app/routes/routes-routing.module.ts index b1ff83b0082..084a87a2461 100644 --- a/web-app/src/app/routes/routes-routing.module.ts +++ b/web-app/src/app/routes/routes-routing.module.ts @@ -12,7 +12,7 @@ import { UserLockComponent } from './passport/lock/lock.component'; import { UserLoginComponent } from './passport/login/login.component'; import { StatusPublicComponent } from './status-public/status-public.component'; -const routes: Routes = [ +export const routes: Routes = [ { path: '', component: LayoutBasicComponent, @@ -28,6 +28,21 @@ const routes: Routes = [ data: { titleI18n: 'menu.monitor.center' } }, { path: 'log', loadChildren: () => import('./log/log.module').then(m => m.LogModule) }, + { + path: 'observability/integration', + loadComponent: () => import('./log/log-integration/log-integration.component').then(m => m.LogIntegrationComponent), + data: { titleI18n: 'menu.observability.integration' } + }, + { + path: 'metrics/manage', + loadComponent: () => import('./metrics/metrics-manage.component').then(m => m.MetricsManageComponent), + data: { titleI18n: 'menu.observability.metrics' } + }, + { + path: 'trace/manage', + loadComponent: () => import('./trace/trace-manage.component').then(m => m.TraceManageComponent), + data: { titleI18n: 'menu.observability.traces' } + }, { path: 'alert', loadChildren: () => import('./alert/alert.module').then(m => m.AlertModule) }, { path: 'setting', loadChildren: () => import('./setting/setting.module').then(m => m.SettingModule) } ] diff --git a/web-app/src/app/routes/trace/trace-manage.component.html b/web-app/src/app/routes/trace/trace-manage.component.html new file mode 100644 index 00000000000..5b6983f0ea2 --- /dev/null +++ b/web-app/src/app/routes/trace/trace-manage.component.html @@ -0,0 +1,174 @@ + +
+
+

{{ 'observability.traces.title' | i18n }}

{{ 'observability.traces.subtitle' | i18n }}

+ +
+
+ + + + + + + + + + + + +
+ +
+
{{ 'observability.traces.total' | i18n }}{{ overview.totalCount }}
+
{{ 'observability.traces.errors' | i18n }}{{ overview.errorCount }}
+
{{ 'observability.traces.error-rate' | i18n }}{{ overview.errorRate | percent : '1.1-1' }}
+
{{ 'observability.traces.average' | i18n }}{{ overview.averageDurationMillis | number : '1.0-2' }} ms
+
P95{{ overview.p95DurationMillis | number : '1.0-2' }} ms
+
+

{{ 'observability.traces.results' | i18n }}

{{ total }}
+ + {{ 'observability.column.start' | i18n }}{{ 'observability.column.service' | i18n }}{{ 'observability.column.operation' | i18n }}{{ 'observability.column.duration' | i18n }}{{ 'observability.column.status' | i18n }}Trace ID + {{ trace.startTime | date : 'yyyy-MM-dd HH:mm:ss.SSS' }}{{ trace.serviceName }}{{ trace.rootSpanName }}{{ trace.durationNanos / 1000000 | number : '1.0-2' }} ms{{ trace.status }}{{ trace.traceId }} + + + + +
+
+
+ Span +
0 ms{{ waterfallDurationMs() | number : '1.0-2' }} ms
+ {{ 'observability.column.duration' | i18n }} +
+
{{ span.serviceName }}{{ span.spanName }}
{{ span.durationNanos / 1000000 | number : '1.0-2' }} ms
+
+ +
+

{{ 'observability.traces.span-details' | i18n }}

+
+
Span ID
{{ selectedSpan.spanId }}
{{ 'observability.column.status' | i18n }}
{{ spanStatus(selectedSpan) }}{{ selectedSpan.statusMessage }}
+
{{ item.key }}
{{ item.value }}
+
+

{{ 'observability.traces.events' | i18n }}

+
+
+
{{ event.name }}
+
+
{{ attribute.key }}
{{ attribute.value }}
+
+
+
+

{{ 'observability.empty.events' | i18n }}

+
+

{{ 'observability.traces.resource-attributes' | i18n }}

{{ item.key }}
{{ item.value }}
+
+
+
+
diff --git a/web-app/src/app/routes/trace/trace-manage.component.less b/web-app/src/app/routes/trace/trace-manage.component.less new file mode 100644 index 00000000000..6a7eced52ef --- /dev/null +++ b/web-app/src/app/routes/trace/trace-manage.component.less @@ -0,0 +1,271 @@ +@import '~src/styles/theme'; + +.signal-page { + min-height: 100%; +} + +.page-heading { + display: flex; + gap: 24px; + align-items: flex-start; + justify-content: space-between; + padding-bottom: 18px; + border-bottom: 1px solid @border-color-split; +} + +.page-heading h1 { + margin: 0 0 5px; + font-weight: 600; + font-size: 24px; +} + +.page-heading p { + margin: 0; + color: @text-color-secondary; +} + +.query-toolbar { + display: grid; + grid-template-columns: repeat(4, minmax(150px, 1fr)); + gap: 8px; + align-items: center; + padding: 16px 0; +} + +.query-toolbar app-signal-time-range { + grid-column: 1 / -1; +} + +.overview-strip { + display: grid; + grid-template-columns: repeat(5, 1fr); + margin-bottom: 16px; + border: 1px solid @border-color-split; +} + +.overview-strip div { + display: flex; + flex-direction: column; + gap: 5px; + padding: 12px 16px; + border-right: 1px solid @border-color-split; +} + +.overview-strip div:last-child { + border-right: 0; +} + +.overview-strip span { + color: @text-color-secondary; + font-size: 12px; +} + +.overview-strip strong { + font-weight: 600; + font-size: 20px; +} + +.section-title { + display: flex; + gap: 8px; + align-items: center; + margin: 18px 0 10px; +} + +.section-title h2 { + margin: 0; + font-size: 16px; +} + +.section-title span { + color: @text-color-secondary; +} + +.mono { + max-width: 260px; + overflow: hidden; + font-family: SFMono-Regular, Consolas, monospace; + white-space: nowrap; + text-overflow: ellipsis; +} + +.drawer-actions { + display: flex; + gap: 8px; + justify-content: flex-end; + padding-bottom: 14px; + border-bottom: 1px solid @border-color-split; +} + +.waterfall-axis { + display: grid; + grid-template-columns: 210px minmax(220px, 1fr) 82px; + gap: 12px; + align-items: end; + min-height: 34px; + color: @text-color-secondary; + font-size: 11px; + border-bottom: 1px solid @border-color-split; +} + +.time-ruler { + display: flex; + align-items: flex-end; + justify-content: space-between; + height: 24px; + padding-top: 7px; + background-image: linear-gradient(to right, @border-color-split 1px, transparent 1px); + background-repeat: repeat-x; + background-position: left bottom; + background-size: 25% 7px; +} + +.waterfall-row { + display: grid; + grid-template-columns: 210px minmax(220px, 1fr) 82px; + gap: 12px; + align-items: center; + min-height: 46px; + border-bottom: 1px solid @border-color-split; + cursor: pointer; +} + +.waterfall-row:hover, +.selected-row { + background: fade(@primary-color, 5%); +} + +.span-name { + min-width: 0; + border-left: 2px solid fade(@primary-color, 18%); +} + +.span-name strong, +.span-name span { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.span-name span { + color: @text-color-secondary; + font-size: 12px; +} + +.span-track { + position: relative; + height: 18px; + background: fade(@primary-color, 6%); + background-image: linear-gradient(to right, @border-color-split 1px, transparent 1px); + background-size: 25% 100%; +} + +.span-bar { + position: absolute; + top: 2px; + min-width: 3px; + height: 14px; + background: @primary-color; +} + +.error-bar { + background: @error-color; +} + +.attribute-section { + margin-top: 24px; +} + +.attribute-section h3 { + font-size: 14px; +} + +.attribute-section h4 { + margin: 20px 0 8px; + color: @text-color-secondary; + font-weight: 500; + font-size: 12px; + text-transform: uppercase; +} + +.attribute-section dl { + display: grid; + grid-template-columns: minmax(220px, 0.8fr) minmax(0, 1.2fr); + column-gap: 24px; +} + +.attribute-section dt, +.attribute-section dd { + margin: 0; + padding: 8px 0; + border-bottom: 1px solid @border-color-split; +} + +.attribute-section dt { + color: @text-color-secondary; + overflow-wrap: anywhere; +} + +.attribute-section dd { + min-width: 0; + overflow-wrap: anywhere; +} + +.status-value { + display: flex; + gap: 8px; + align-items: center; +} + +.event-list { + border-top: 1px solid @border-color-split; +} + +.event-item { + padding: 12px 0; + border-bottom: 1px solid @border-color-split; +} + +.event-item > header { + display: flex; + gap: 16px; + align-items: baseline; + justify-content: space-between; +} + +.event-item time { + color: @text-color-secondary; + font-size: 12px; + white-space: nowrap; +} + +.event-item dl { + margin: 8px 0 0; + padding-left: 12px; + border-left: 2px solid fade(@primary-color, 18%); +} + +.event-item dt, +.event-item dd { + padding: 5px 0; + font-size: 12px; +} + +.inline-empty { + margin: 0; + padding: 10px 0; + color: @text-color-secondary; +} + +.attribute-section pre { + max-height: 180px; + margin: 0; + overflow: auto; + white-space: pre-wrap; +} +@media (max-width: 1300px) { + .query-toolbar { + grid-template-columns: repeat(4, minmax(150px, 1fr)); + } +} diff --git a/web-app/src/app/routes/trace/trace-manage.component.ts b/web-app/src/app/routes/trace/trace-manage.component.ts new file mode 100644 index 00000000000..405d2f31d9a --- /dev/null +++ b/web-app/src/app/routes/trace/trace-manage.component.ts @@ -0,0 +1,289 @@ +/* + * 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. + */ + +import { CommonModule } from '@angular/common'; +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { I18nPipe } from '@delon/theme'; +import { SharedModule } from '@shared'; +import { NzDrawerModule } from 'ng-zorro-antd/drawer'; +import { NzEmptyModule } from 'ng-zorro-antd/empty'; +import { NzTableModule } from 'ng-zorro-antd/table'; +import { NzTagModule } from 'ng-zorro-antd/tag'; +import { Subject, debounceTime, finalize, forkJoin, switchMap, takeUntil } from 'rxjs'; + +import { + ObservabilityService, + SignalContext, + TraceDetail, + TraceListItem, + TraceOverview, + TraceSpanNode +} from '../../service/observability.service'; +import { SignalNavigationComponent } from '../observability/signal-navigation.component'; +import { moveSignalTimeRangeToNow, readSignalTimeRange, toSignalTimeContext } from '../observability/signal-query-context'; +import { SignalTimeRangeComponent } from '../observability/signal-time-range.component'; + +@Component({ + selector: 'app-trace-manage', + standalone: true, + imports: [ + CommonModule, + FormsModule, + I18nPipe, + SharedModule, + NzDrawerModule, + NzEmptyModule, + NzTableModule, + NzTagModule, + SignalNavigationComponent, + SignalTimeRangeComponent + ], + templateUrl: './trace-manage.component.html', + styleUrl: './trace-manage.component.less' +}) +export class TraceManageComponent implements OnInit, OnDestroy { + timeRange: Date[] = []; + serviceName = ''; + serviceNamespace = ''; + environment = ''; + operationName = ''; + traceId = ''; + errorOnly = false; + minDurationMs?: number; + maxDurationMs?: number; + refreshSeconds = 0; + pageIndex = 1; + pageSize = 20; + total = 0; + traces: TraceListItem[] = []; + overview: TraceOverview = { totalCount: 0, errorCount: 0, errorRate: 0, averageDurationMillis: 0, p95DurationMillis: 0 }; + selected?: TraceDetail; + selectedSpan?: TraceSpanNode; + detailVisible = false; + loading = false; + detailLoading = false; + error = ''; + private readonly queryChanges = new Subject(); + private readonly destroyed = new Subject(); + + constructor(private observability: ObservabilityService, private route: ActivatedRoute, private router: Router) {} + + ngOnInit(): void { + const params = this.route.snapshot.queryParamMap; + this.timeRange = readSignalTimeRange(params); + this.traceId = params.get('traceId') || ''; + this.serviceName = params.get('serviceName') || ''; + this.serviceNamespace = params.get('serviceNamespace') || ''; + this.environment = params.get('environment') || ''; + this.operationName = params.get('operationName') || ''; + this.errorOnly = params.get('errorOnly') === 'true'; + this.minDurationMs = this.readOptionalNumber(params.get('minDurationMs')); + this.maxDurationMs = this.readOptionalNumber(params.get('maxDurationMs')); + this.refreshSeconds = Math.max(0, Number(params.get('refresh')) || 0); + this.queryChanges + .pipe( + debounceTime(250), + switchMap(() => { + this.loading = true; + this.error = ''; + return forkJoin({ + list: this.observability.queryTraces( + this.context(), + this.pageIndex - 1, + this.pageSize, + this.errorOnly, + this.minDurationMs, + this.maxDurationMs + ), + overview: this.observability.traceOverview(this.context(), this.errorOnly) + }).pipe(finalize(() => (this.loading = false))); + }), + takeUntil(this.destroyed) + ) + .subscribe({ + next: result => { + if (result.list.code !== 0 || result.overview.code !== 0) { + this.error = result.list.msg || result.overview.msg; + return; + } + this.traces = result.list.data?.content || []; + this.total = result.list.data?.totalElements || 0; + this.overview = result.overview.data || this.overview; + this.updateUrl(); + }, + error: error => (this.error = error?.error?.msg || error?.message || 'Storage unavailable') + }); + this.search(); + } + + ngOnDestroy(): void { + this.destroyed.next(); + this.destroyed.complete(); + } + + search(): void { + this.queryChanges.next(); + } + + refreshToNow(): void { + this.timeRange = moveSignalTimeRangeToNow(this.timeRange); + this.search(); + } + + pageChanged(page: number): void { + this.pageIndex = page; + this.search(); + } + + openTrace(trace: TraceListItem): void { + this.detailVisible = true; + this.detailLoading = true; + this.observability + .traceDetail(trace.traceId) + .pipe( + finalize(() => (this.detailLoading = false)), + takeUntil(this.destroyed) + ) + .subscribe({ + next: message => { + if (message.code === 0) { + this.selected = message.data; + this.selectedSpan = message.data?.spans?.[0]; + } else this.error = message.msg; + }, + error: error => (this.error = error?.error?.msg || error?.message || 'Storage unavailable') + }); + } + + selectSpan(span: TraceSpanNode): void { + this.selectedSpan = span; + } + + viewLogs(): void { + if (!this.selected?.summary) return; + const summary = this.selected.summary; + this.router.navigate(['/log/manage'], { + queryParams: { + ...this.timeContext(summary), + traceId: summary.traceId, + environment: summary.resourceAttributes?.['deployment.environment.name'] + } + }); + } + + viewMetrics(): void { + if (!this.selected?.summary) return; + const summary = this.selected.summary; + this.router.navigate(['/metrics/manage'], { + queryParams: { + ...this.timeContext(summary), + serviceName: summary.serviceName, + serviceNamespace: summary.serviceNamespace, + environment: summary.resourceAttributes?.['deployment.environment.name'], + operationName: summary.rootSpanName + } + }); + } + + navigationContext(): SignalContext & { refresh?: number } { + return { ...this.context(), refresh: this.refreshSeconds || undefined }; + } + + waterfallOffset(span: TraceSpanNode): number { + const spans = this.selected?.spans || []; + const start = Math.min(...spans.map(item => item.startTime)); + const end = Math.max(...spans.map(item => item.startTime + item.durationNanos / 1_000_000)); + return end === start ? 0 : ((span.startTime - start) / (end - start)) * 100; + } + + waterfallWidth(span: TraceSpanNode): number { + const spans = this.selected?.spans || []; + const start = Math.min(...spans.map(item => item.startTime)); + const end = Math.max(...spans.map(item => item.startTime + item.durationNanos / 1_000_000)); + return Math.max(0.7, (span.durationNanos / 1_000_000 / Math.max(1, end - start)) * 100); + } + + waterfallDurationMs(): number { + const spans = this.selected?.spans || []; + if (!spans.length) return 0; + const start = Math.min(...spans.map(item => item.startTime)); + const end = Math.max(...spans.map(item => item.startTime + item.durationNanos / 1_000_000)); + return Math.max(0, end - start); + } + + spanDepth(span: TraceSpanNode): number { + const spans = this.selected?.spans || []; + const byId = new Map(spans.map(item => [item.spanId, item])); + let current = span; + let depth = 0; + const visited = new Set(); + while (current.parentSpanId && byId.has(current.parentSpanId) && !visited.has(current.parentSpanId)) { + visited.add(current.parentSpanId); + current = byId.get(current.parentSpanId)!; + depth++; + } + return Math.min(depth, 8); + } + + isErrorSpan(span?: TraceSpanNode): boolean { + return span?.status === 'ERROR' || span?.status === 'STATUS_CODE_ERROR'; + } + + spanStatus(span: TraceSpanNode): string { + return this.isErrorSpan(span) ? 'ERROR' : 'OK'; + } + + private context(): SignalContext { + return { + ...toSignalTimeContext(this.timeRange), + traceId: this.traceId, + serviceName: this.serviceName, + serviceNamespace: this.serviceNamespace, + environment: this.environment, + operationName: this.operationName + }; + } + + private updateUrl(): void { + this.router.navigate([], { + relativeTo: this.route, + queryParams: { + ...this.context(), + errorOnly: this.errorOnly || null, + minDurationMs: this.minDurationMs ?? null, + maxDurationMs: this.maxDurationMs ?? null, + refresh: this.refreshSeconds || null + }, + replaceUrl: true + }); + } + + private readOptionalNumber(value: string | null): number | undefined { + if (!value) return undefined; + const parsed = Number(value); + return Number.isFinite(parsed) ? parsed : undefined; + } + + private timeContext(trace: TraceListItem): { start: number; end: number } { + const padding = Math.max(30_000, trace.durationNanos / 1_000_000 + 5_000); + return { start: trace.startTime - padding, end: trace.startTime + padding }; + } +} diff --git a/web-app/src/app/service/log.service.ts b/web-app/src/app/service/log.service.ts index 0f5b70ea7d1..2fc75b7ee3a 100644 --- a/web-app/src/app/service/log.service.ts +++ b/web-app/src/app/service/log.service.ts @@ -25,107 +25,60 @@ import { LogEntry } from '../pojo/LogEntry'; import { Message } from '../pojo/Message'; import { Page } from '../pojo/Page'; -// endpoints -const logs_list_uri = '/logs/list'; -const logs_stats_overview_uri = '/logs/stats/overview'; -const logs_stats_trend_uri = '/logs/stats/trend'; -const logs_stats_trace_coverage_uri = '/logs/stats/trace-coverage'; -const logs_batch_delete_uri = '/logs'; +export interface LogQueryOptions { + start?: number; + end?: number; + traceId?: string; + spanId?: string; + severityNumber?: number; + severityText?: string; + search?: string; + serviceName?: string; + serviceNamespace?: string; + environment?: string; + resource?: string; + pageIndex?: number; + pageSize?: number; +} + +export interface LogOverviewStats { + totalCount: number; + errorCount: number; + warnCount: number; + traceCoverage?: { + withTrace: number; + }; +} @Injectable({ providedIn: 'root' }) export class LogService { constructor(private http: HttpClient) {} - public list( - start?: number, - end?: number, - traceId?: string, - spanId?: string, - severityNumber?: number, - severityText?: string, - search?: string, - pageIndex: number = 0, - pageSize: number = 20 - ): Observable>> { - let params = new HttpParams(); - if (start != null) params = params.set('start', start); - if (end != null) params = params.set('end', end); - if (traceId) params = params.set('traceId', traceId); - if (spanId) params = params.set('spanId', spanId); - if (severityNumber != null) params = params.set('severityNumber', severityNumber); - if (severityText) params = params.set('severityText', severityText); - if (search) params = params.set('search', search); - params = params.set('pageIndex', pageIndex); - params = params.set('pageSize', pageSize); - return this.http.get>(logs_list_uri, { params }); + list(options: LogQueryOptions): Observable>> { + return this.http.get>>('/logs/list', { params: this.params(options) }); } - public overviewStats( - start?: number, - end?: number, - traceId?: string, - spanId?: string, - severityNumber?: number, - severityText?: string, - search?: string - ): Observable> { - let params = new HttpParams(); - if (start != null) params = params.set('start', start); - if (end != null) params = params.set('end', end); - if (traceId) params = params.set('traceId', traceId); - if (spanId) params = params.set('spanId', spanId); - if (severityNumber != null) params = params.set('severityNumber', severityNumber); - if (severityText) params = params.set('severityText', severityText); - if (search) params = params.set('search', search); - return this.http.get>(logs_stats_overview_uri, { params }); + overviewStats(options: LogQueryOptions): Observable> { + return this.http.get>('/logs/stats/overview', { params: this.params(options) }); } - public trendStats( - start?: number, - end?: number, - traceId?: string, - spanId?: string, - severityNumber?: number, - severityText?: string, - search?: string - ): Observable> { - let params = new HttpParams(); - if (start != null) params = params.set('start', start); - if (end != null) params = params.set('end', end); - if (traceId) params = params.set('traceId', traceId); - if (spanId) params = params.set('spanId', spanId); - if (severityNumber != null) params = params.set('severityNumber', severityNumber); - if (severityText) params = params.set('severityText', severityText); - if (search) params = params.set('search', search); - return this.http.get>(logs_stats_trend_uri, { params }); + trendStats(options: LogQueryOptions): Observable }>> { + return this.http.get }>>('/logs/stats/trend', { + params: this.params(options) + }); } - public traceCoverageStats( - start?: number, - end?: number, - traceId?: string, - spanId?: string, - severityNumber?: number, - severityText?: string, - search?: string - ): Observable> { + batchDelete(timeUnixNanos: number[]): Observable> { let params = new HttpParams(); - if (start != null) params = params.set('start', start); - if (end != null) params = params.set('end', end); - if (traceId) params = params.set('traceId', traceId); - if (spanId) params = params.set('spanId', spanId); - if (severityNumber != null) params = params.set('severityNumber', severityNumber); - if (severityText) params = params.set('severityText', severityText); - if (search) params = params.set('search', search); - return this.http.get>(logs_stats_trace_coverage_uri, { params }); + timeUnixNanos.forEach(value => (params = params.append('timeUnixNanos', value))); + return this.http.delete>('/logs', { params }); } - public batchDelete(timeUnixNanos: number[]): Observable> { - let httpParams = new HttpParams(); - timeUnixNanos.forEach(timeUnixNano => { - httpParams = httpParams.append('timeUnixNanos', timeUnixNano); + private params(options: LogQueryOptions): HttpParams { + let params = new HttpParams(); + Object.entries(options).forEach(([key, value]) => { + if (value != null && value !== '') params = params.set(key, value); }); - const options = { params: httpParams }; - return this.http.delete>(logs_batch_delete_uri, options); + return params; } } diff --git a/web-app/src/app/service/notice-receiver.service.spec.ts b/web-app/src/app/service/notice-receiver.service.spec.ts index b0e1c031894..e7ef04d9128 100644 --- a/web-app/src/app/service/notice-receiver.service.spec.ts +++ b/web-app/src/app/service/notice-receiver.service.spec.ts @@ -19,14 +19,14 @@ import { TestBed } from '@angular/core/testing'; -import { NoticeReceiverMailService } from './notice-receiver.service'; +import { NoticeReceiverService } from './notice-receiver.service'; describe('NoticeReceiverService', () => { - let service: NoticeReceiverMailService; + let service: NoticeReceiverService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(NoticeReceiverMailService); + service = TestBed.inject(NoticeReceiverService); }); it('should be created', () => { diff --git a/web-app/src/app/service/observability.service.ts b/web-app/src/app/service/observability.service.ts new file mode 100644 index 00000000000..22f32e8579b --- /dev/null +++ b/web-app/src/app/service/observability.service.ts @@ -0,0 +1,378 @@ +/* + * 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. + */ + +import { HttpClient, HttpContext, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable, catchError, forkJoin, map, of, switchMap, timer } from 'rxjs'; + +import { SILENT_HTTP_ERROR } from '../core/interceptor/http-context'; +import { Message } from '../pojo/Message'; + +export interface OtlpConnectionForm { + endpoint: string; + token: string; + serviceName: string; + environment: string; +} + +export interface SignalProbeResult { + signal: 'metrics' | 'logs' | 'traces'; + status: 'success' | 'error'; + lastReceived?: number; + error?: string; + errorKey?: string; +} + +export interface SignalContext { + start?: number; + end?: number; + serviceName?: string; + serviceNamespace?: string; + environment?: string; + traceId?: string; + spanId?: string; + operationName?: string; +} + +export interface MetricPoint { + timestamp: number; + value: number; +} + +export interface MetricSeries { + labels: Record; + points: MetricPoint[]; +} + +export interface MetricsConsole { + query: string; + start: number; + end: number; + step: number; + series: MetricSeries[]; +} + +export interface TraceListItem { + traceId: string; + rootSpanId: string; + serviceName: string; + serviceNamespace: string; + rootSpanName: string; + durationNanos: number; + status: string; + startTime: number; + errorSpanCount: number; + resourceAttributes: Record; +} + +export interface TraceSpanNode { + traceId: string; + spanId: string; + parentSpanId: string; + spanName: string; + serviceName: string; + status: string; + spanKind: string; + statusMessage: string; + durationNanos: number; + startTime: number; + resourceAttributes: Record; + spanAttributes: Record; + spanEvents: TraceSpanEvent[]; +} + +export interface TraceSpanEvent { + name: string; + time: string; + attributes: Record; +} + +export interface TraceDetail { + summary: TraceListItem; + spans: TraceSpanNode[]; +} + +export interface TraceOverview { + totalCount: number; + errorCount: number; + errorRate: number; + averageDurationMillis: number; + p95DurationMillis: number; +} + +export interface SignalPage { + content: T[]; + pageIndex: number; + pageSize: number; + totalElements: number; +} + +interface LogProbeEntry { + timeUnixNano: number | string; +} + +@Injectable({ providedIn: 'root' }) +export class ObservabilityService { + private readonly silentProbeContext = new HttpContext().set(SILENT_HTTP_ERROR, true); + + constructor(private http: HttpClient) {} + + probe(config: OtlpConnectionForm): Observable { + const now = Date.now(); + const traceId = this.randomHex(32); + const spanId = this.randomHex(16); + return forkJoin([ + this.probeMetrics(config, now), + this.probeLogs(config, now, traceId, spanId), + this.probeTraces(config, now, traceId, spanId) + ]); + } + + metricInventory(context: SignalContext, limit = 100): Observable> { + return this.http.get>('/ingestion/otlp/metrics/inventory', { + params: this.contextParams(context).set('limit', limit) + }); + } + + queryMetrics( + context: SignalContext, + query: string, + filter?: string, + groupBy?: string, + aggregation?: string, + step = 30 + ): Observable> { + let params = this.contextParams(context).set('query', query).set('step', step); + if (filter) params = params.set('filter', filter); + if (groupBy) params = params.set('groupBy', groupBy); + if (aggregation) params = params.set('aggregation', aggregation); + return this.http.get>('/ingestion/otlp/metrics/console', { params }); + } + + queryTraces( + context: SignalContext, + pageIndex: number, + pageSize: number, + errorOnly = false, + minDurationMs?: number, + maxDurationMs?: number + ): Observable>> { + let params = this.contextParams(context).set('pageIndex', pageIndex).set('pageSize', pageSize).set('errorOnly', errorOnly); + if (minDurationMs != null) params = params.set('minDurationMs', minDurationMs); + if (maxDurationMs != null) params = params.set('maxDurationMs', maxDurationMs); + return this.http.get>>('/traces/list', { params }); + } + + traceOverview(context: SignalContext, errorOnly = false): Observable> { + return this.http.get>('/traces/stats/overview', { + params: this.contextParams(context).set('errorOnly', errorOnly) + }); + } + + traceDetail(traceId: string): Observable> { + return this.http.get>(`/traces/${encodeURIComponent(traceId)}`); + } + + private probeMetrics(config: OtlpConnectionForm, now: number): Observable { + const payload = { + resourceMetrics: [ + { + resource: { attributes: this.resourceAttributes(config) }, + scopeMetrics: [ + { + scope: { name: 'hertzbeat-onboarding' }, + metrics: [ + { + name: 'hertzbeat_onboarding_probe', + gauge: { dataPoints: [{ timeUnixNano: this.toNanos(now), asDouble: 1 }] } + } + ] + } + ] + } + ] + }; + return this.send(config, 'metrics', payload).pipe( + switchMap(() => timer(800)), + switchMap(() => { + const params = this.signalParams(config, now).set('query', 'hertzbeat_onboarding_probe').set('step', 1); + return this.http.get>('/ingestion/otlp/metrics/console', { + params, + context: this.silentProbeContext + }); + }), + map(message => { + const values = message.data?.series?.flatMap(series => series.points) || []; + const latest = values.reduce((value, point) => Math.max(value, Number(point.timestamp)), 0); + if (message.code !== 0 || !latest) throw new Error(message.msg || 'Metric probe was not found'); + return { signal: 'metrics', status: 'success', lastReceived: latest } as SignalProbeResult; + }), + catchError(error => of(this.failedProbe('metrics', error))) + ); + } + + private probeLogs(config: OtlpConnectionForm, now: number, traceId: string, spanId: string): Observable { + const payload = { + resourceLogs: [ + { + resource: { attributes: this.resourceAttributes(config) }, + scopeLogs: [ + { + scope: { name: 'hertzbeat-onboarding' }, + logRecords: [ + { + timeUnixNano: this.toNanos(now), + observedTimeUnixNano: this.toNanos(now), + severityNumber: 'SEVERITY_NUMBER_INFO', + severityText: 'INFO', + body: { stringValue: 'HertzBeat OTLP onboarding probe' }, + traceId, + spanId + } + ] + } + ] + } + ] + }; + return this.send(config, 'logs', payload).pipe( + switchMap(() => timer(800)), + switchMap(() => + this.http.get>>('/logs/list', { + params: this.signalParams(config, now).set('traceId', traceId).set('pageSize', 1), + context: this.silentProbeContext + }) + ), + map(message => { + const entry = message.data?.content?.[0]; + if (message.code !== 0 || !entry) throw new Error(message.msg || 'Log probe was not found'); + return { + signal: 'logs', + status: 'success', + lastReceived: Number(entry.timeUnixNano) / 1_000_000 + } as SignalProbeResult; + }), + catchError(error => of(this.failedProbe('logs', error))) + ); + } + + private probeTraces(config: OtlpConnectionForm, now: number, traceId: string, spanId: string): Observable { + const payload = { + resourceSpans: [ + { + resource: { attributes: this.resourceAttributes(config) }, + scopeSpans: [ + { + scope: { name: 'hertzbeat-onboarding' }, + spans: [ + { + traceId, + spanId, + name: 'hertzbeat.onboarding.probe', + kind: 'SPAN_KIND_INTERNAL', + startTimeUnixNano: this.toNanos(now), + endTimeUnixNano: this.toNanos(now + 10), + status: { code: 'STATUS_CODE_OK' } + } + ] + } + ] + } + ] + }; + return this.send(config, 'traces', payload).pipe( + switchMap(() => timer(800)), + switchMap(() => + this.http.get>>('/traces/list', { + params: this.signalParams(config, now).set('traceId', traceId).set('pageSize', 1), + context: this.silentProbeContext + }) + ), + map(message => { + if (message.code !== 0 || !message.data?.content?.length) { + throw new Error(message.msg || 'Trace probe was not found'); + } + return { signal: 'traces', status: 'success', lastReceived: now } as SignalProbeResult; + }), + catchError(error => of(this.failedProbe('traces', error))) + ); + } + + private send(config: OtlpConnectionForm, signal: string, payload: unknown): Observable { + const endpoint = config.endpoint.replace(/\/+$/, ''); + const headers = new HttpHeaders({ Authorization: `Bearer ${config.token}`, 'Content-Type': 'application/json' }); + return this.http.post(`${endpoint}/api/otlp/v1/${signal}`, payload, { headers, context: this.silentProbeContext }); + } + + private signalParams(config: OtlpConnectionForm, now: number): HttpParams { + return new HttpParams() + .set('start', now - 60_000) + .set('end', now + 60_000) + .set('serviceName', config.serviceName) + .set('environment', config.environment); + } + + contextParams(context: SignalContext): HttpParams { + let params = new HttpParams(); + Object.entries(context).forEach(([key, value]) => { + if (value != null && value !== '') params = params.set(key, value); + }); + return params; + } + + private resourceAttributes(config: OtlpConnectionForm): unknown[] { + return [ + { key: 'service.name', value: { stringValue: config.serviceName } }, + { key: 'deployment.environment.name', value: { stringValue: config.environment } } + ]; + } + + private toNanos(timestamp: number): string { + return (BigInt(timestamp) * 1_000_000n).toString(); + } + + private randomHex(length: number): string { + const bytes = new Uint8Array(length / 2); + crypto.getRandomValues(bytes); + return Array.from(bytes, value => value.toString(16).padStart(2, '0')).join(''); + } + + private failedProbe(signal: SignalProbeResult['signal'], error: unknown): SignalProbeResult { + const failure = this.asRecord(error); + const response = failure?.['error']; + if (error instanceof ProgressEvent || failure?.['status'] === 0 || response instanceof ProgressEvent) { + return { signal, status: 'error', errorKey: 'observability.integration.error.network' }; + } + const responseMessage = this.asRecord(response)?.['msg']; + const responseBody = typeof response === 'string' ? response : undefined; + const message = failure?.['message']; + const detail = + typeof responseMessage === 'string' ? responseMessage : responseBody || (typeof message === 'string' ? message : undefined); + return { + signal, + status: 'error', + error: detail, + errorKey: detail ? undefined : 'observability.integration.error.request' + }; + } + + private asRecord(value: unknown): Record | undefined { + return typeof value === 'object' && value !== null ? (value as Record) : undefined; + } +} diff --git a/web-app/src/assets/app-data.json b/web-app/src/assets/app-data.json index c880a953fe2..87b6f3fb3b0 100644 --- a/web-app/src/assets/app-data.json +++ b/web-app/src/assets/app-data.json @@ -137,28 +137,34 @@ ] }, { - "text": "Log", - "i18n": "menu.log", + "text": "Observability", + "i18n": "menu.observability", "group": true, "hideInBreadcrumb": true, "children": [ { "text": "Integration", - "i18n": "menu.log.integration", + "i18n": "menu.observability.integration", "icon": "anticon-api", - "link": "/log/integration/otlp" + "link": "/observability/integration" }, { - "text": "Stream", - "i18n": "menu.log.stream", - "icon": "anticon-file-text", - "link": "/log/stream" + "text": "Metrics", + "i18n": "menu.observability.metrics", + "icon": "anticon-line-chart", + "link": "/metrics/manage" }, { "text": "Manage", - "i18n": "menu.log.manage", + "i18n": "menu.observability.logs", "icon": "anticon-database", "link": "/log/manage" + }, + { + "text": "Traces", + "i18n": "menu.observability.traces", + "icon": "anticon-node-index", + "link": "/trace/manage" } ] }, diff --git a/web-app/src/assets/i18n/en-US.json b/web-app/src/assets/i18n/en-US.json index 211fd3387c9..4fc35366f49 100644 --- a/web-app/src/assets/i18n/en-US.json +++ b/web-app/src/assets/i18n/en-US.json @@ -633,6 +633,113 @@ "log.integration.token.new": "Click to generate Token", "log.integration.token.notice": "This content will only be displayed once. Please keep your Token safe and do not disclose it to others.", "log.integration.token.title": "Access Authentication Token", + "observability.integration.address": "HertzBeat address", + "observability.integration.address-hint": "Use the address your application can reach. Do not add an OTLP path.", + "observability.integration.configuration": "Copy a configuration", + "observability.integration.configuration-hint": "Choose the format used by your application or collector.", + "observability.integration.connection": "Connection details", + "observability.integration.detect": "Detect ingestion", + "observability.integration.detect-hint": "Sends one temporary metric, log, and trace, then verifies each result.", + "observability.integration.error.network": "Cannot reach HertzBeat. Check the address and network access.", + "observability.integration.error.request": "Detection failed. Check the configuration and try again.", + "observability.integration.generate-token": "Generate", + "observability.integration.grpc-note": "OTLP/gRPC listens on port 4317.", + "observability.integration.protocol": "Protocol", + "observability.integration.ready-to-copy": "Generated from the form above", + "observability.integration.subtitle": "Connect metrics, logs, and traces without configuring entities, pipelines, or tables.", + "observability.integration.title": "Connect OpenTelemetry", + "observability.integration.token": "Access token", + "observability.integration.token-created": "A 30-day access token was generated", + "observability.integration.token-failed": "Unable to generate an access token", + "observability.integration.token-placeholder": "Paste or generate an API token", + "observability.signal.logs": "Logs", + "observability.signal.metrics": "Metrics", + "observability.signal.traces": "Traces", + "observability.action.view-logs": "View related logs", + "observability.action.view-metrics": "View related metrics", + "observability.action.view-trace": "View trace", + "observability.column.duration": "Duration", + "observability.column.labels": "Labels", + "observability.column.operation": "Operation", + "observability.column.service": "Service", + "observability.column.start": "Start time", + "observability.column.status": "Status", + "observability.column.time": "Time", + "observability.column.value": "Value", + "observability.empty.events": "No events recorded for this span", + "observability.empty.metrics": "No metric samples matched this query", + "observability.empty.logs": "No logs matched this query", + "observability.empty.spans": "No spans are available for this trace", + "observability.filter.environment": "Environment", + "observability.filter.errors-only": "Errors only", + "observability.filter.status": "Status", + "observability.filter.all-statuses": "All statuses", + "observability.filter.min-duration": "Minimum duration (ms)", + "observability.filter.max-duration": "Maximum duration (ms)", + "observability.filter.operation": "Operation name", + "observability.filter.service": "Service name", + "observability.filter.trace-id": "Trace ID", + "observability.metrics.aggregation": "Aggregation", + "observability.metrics.filter": "label=value", + "observability.metrics.group-by": "Group by label", + "observability.metrics.metric": "Metric name", + "observability.metrics.promql": "PromQL expression (metric names autocomplete)", + "observability.metrics.step": "Step (seconds)", + "observability.metrics.samples": "Samples", + "observability.metrics.total-series": "Total series", + "observability.metrics.total-samples": "Total samples", + "observability.metrics.minimum": "Minimum", + "observability.metrics.maximum": "Maximum", + "observability.metrics.trend": "Trend", + "observability.metrics.series": "series", + "observability.metrics.series-detail": "Series labels", + "observability.metrics.subtitle": "Inspect OTLP metric trends, series, and raw samples.", + "observability.metrics.title": "Metrics", + "observability.navigation.signals": "Switch signal workspace", + "observability.time.toolbar": "Time range controls", + "observability.time.preset": "Relative time range", + "observability.time.custom": "Custom range", + "observability.time.previous": "Previous time window", + "observability.time.next": "Next time window", + "observability.time.auto-refresh": "Auto refresh interval", + "observability.time.refresh-manual": "Manual refresh", + "observability.time.refresh-10s": "Every 10 seconds", + "observability.time.refresh-30s": "Every 30 seconds", + "observability.time.refresh-1m": "Every 1 minute", + "observability.time.refresh-5m": "Every 5 minutes", + "observability.time.last-15m": "Last 15 minutes", + "observability.time.last-30m": "Last 30 minutes", + "observability.time.last-1h": "Last 1 hour", + "observability.time.last-3h": "Last 3 hours", + "observability.time.last-6h": "Last 6 hours", + "observability.time.last-12h": "Last 12 hours", + "observability.time.last-24h": "Last 24 hours", + "observability.time.last-7d": "Last 7 days", + "observability.logs.detail": "Log detail", + "observability.logs.message": "Message", + "observability.logs.mode.query": "Query", + "observability.logs.mode.stream": "Live", + "observability.logs.resource-filter": "Resource expression: cloud.region = prod AND service.version != dev", + "observability.logs.results": "Log results", + "observability.logs.trend": "Trend", + "observability.logs.search": "Search message", + "observability.logs.severity": "Severity", + "observability.logs.subtitle": "Query historical logs or inspect the live stream.", + "observability.logs.title": "Logs", + "observability.logs.total": "Total logs", + "observability.logs.with-trace": "With trace", + "observability.traces.average": "Average duration", + "observability.traces.detail": "Trace detail", + "observability.traces.error-rate": "Error rate", + "observability.traces.errors": "Error traces", + "observability.traces.events": "Events", + "observability.traces.resource-attributes": "Resource attributes", + "observability.traces.subtitle": "Find slow and failed traces, then inspect their span waterfall.", + "observability.traces.span-details": "Span attributes and events", + "observability.traces.title": "Traces", + "observability.traces.total": "Total traces", + "observability.traces.results": "Trace results", + "common.button.query": "Query", "log.manage.batch-delete": "Batch Delete", "log.manage.basic-information": "Basic Information", "log.manage.clear": "Clear", @@ -758,6 +865,11 @@ "menu.log.integration": "Integration", "menu.log.manage": "Log Manage", "menu.log.stream": "Log Stream", + "menu.observability": "Observability", + "menu.observability.integration": "Connect", + "menu.observability.logs": "Logs", + "menu.observability.metrics": "Metrics", + "menu.observability.traces": "Traces", "menu.main": "Main", "menu.monitor": "Monitoring", "menu.monitor.bigdata": "Bigdata Monitor", diff --git a/web-app/src/assets/i18n/ja-JP.json b/web-app/src/assets/i18n/ja-JP.json index 68336fff41e..c86536d9703 100644 --- a/web-app/src/assets/i18n/ja-JP.json +++ b/web-app/src/assets/i18n/ja-JP.json @@ -592,6 +592,113 @@ "log.integration.token.new": "クリックしてトークンを生成", "log.integration.token.notice": "この内容は一度しか表示されません。トークンを大切に保管し、他人に漏らさないでください。", "log.integration.token.title": "アクセス認証トークン", + "observability.integration.address": "HertzBeat address", + "observability.integration.address-hint": "Use the address your application can reach. Do not add an OTLP path.", + "observability.integration.configuration": "Copy a configuration", + "observability.integration.configuration-hint": "Choose the format used by your application or collector.", + "observability.integration.connection": "Connection details", + "observability.integration.detect": "Detect ingestion", + "observability.integration.detect-hint": "Sends one temporary metric, log, and trace, then verifies each result.", + "observability.integration.error.network": "Cannot reach HertzBeat. Check the address and network access.", + "observability.integration.error.request": "Detection failed. Check the configuration and try again.", + "observability.integration.generate-token": "Generate", + "observability.integration.grpc-note": "OTLP/gRPC listens on port 4317.", + "observability.integration.protocol": "Protocol", + "observability.integration.ready-to-copy": "Generated from the form above", + "observability.integration.subtitle": "Connect metrics, logs, and traces without configuring entities, pipelines, or tables.", + "observability.integration.title": "Connect OpenTelemetry", + "observability.integration.token": "Access token", + "observability.integration.token-created": "A 30-day access token was generated", + "observability.integration.token-failed": "Unable to generate an access token", + "observability.integration.token-placeholder": "Paste or generate an API token", + "observability.signal.logs": "Logs", + "observability.signal.metrics": "Metrics", + "observability.signal.traces": "Traces", + "observability.action.view-logs": "View related logs", + "observability.action.view-metrics": "View related metrics", + "observability.action.view-trace": "View trace", + "observability.column.duration": "Duration", + "observability.column.labels": "Labels", + "observability.column.operation": "Operation", + "observability.column.service": "Service", + "observability.column.start": "Start time", + "observability.column.status": "Status", + "observability.column.time": "Time", + "observability.column.value": "Value", + "observability.empty.events": "No events recorded for this span", + "observability.empty.metrics": "No metric samples matched this query", + "observability.empty.logs": "No logs matched this query", + "observability.empty.spans": "No spans are available for this trace", + "observability.filter.environment": "Environment", + "observability.filter.errors-only": "Errors only", + "observability.filter.status": "Status", + "observability.filter.all-statuses": "All statuses", + "observability.filter.min-duration": "Minimum duration (ms)", + "observability.filter.max-duration": "Maximum duration (ms)", + "observability.filter.operation": "Operation name", + "observability.filter.service": "Service name", + "observability.filter.trace-id": "Trace ID", + "observability.metrics.aggregation": "Aggregation", + "observability.metrics.filter": "label=value", + "observability.metrics.group-by": "Group by label", + "observability.metrics.metric": "Metric name", + "observability.metrics.promql": "PromQL expression (metric names autocomplete)", + "observability.metrics.step": "Step (seconds)", + "observability.metrics.samples": "Samples", + "observability.metrics.total-series": "Total series", + "observability.metrics.total-samples": "Total samples", + "observability.metrics.minimum": "Minimum", + "observability.metrics.maximum": "Maximum", + "observability.metrics.trend": "Trend", + "observability.metrics.series": "series", + "observability.metrics.series-detail": "Series labels", + "observability.metrics.subtitle": "Inspect OTLP metric trends, series, and raw samples.", + "observability.metrics.title": "Metrics", + "observability.navigation.signals": "Switch signal workspace", + "observability.time.toolbar": "Time range controls", + "observability.time.preset": "Relative time range", + "observability.time.custom": "Custom range", + "observability.time.previous": "Previous time window", + "observability.time.next": "Next time window", + "observability.time.auto-refresh": "Auto refresh interval", + "observability.time.refresh-manual": "Manual refresh", + "observability.time.refresh-10s": "Every 10 seconds", + "observability.time.refresh-30s": "Every 30 seconds", + "observability.time.refresh-1m": "Every 1 minute", + "observability.time.refresh-5m": "Every 5 minutes", + "observability.time.last-15m": "Last 15 minutes", + "observability.time.last-30m": "Last 30 minutes", + "observability.time.last-1h": "Last 1 hour", + "observability.time.last-3h": "Last 3 hours", + "observability.time.last-6h": "Last 6 hours", + "observability.time.last-12h": "Last 12 hours", + "observability.time.last-24h": "Last 24 hours", + "observability.time.last-7d": "Last 7 days", + "observability.logs.detail": "Log detail", + "observability.logs.message": "Message", + "observability.logs.mode.query": "Query", + "observability.logs.mode.stream": "Live", + "observability.logs.resource-filter": "Resource expression: cloud.region = prod AND service.version != dev", + "observability.logs.results": "Log results", + "observability.logs.trend": "Trend", + "observability.logs.search": "Search message", + "observability.logs.severity": "Severity", + "observability.logs.subtitle": "Query historical logs or inspect the live stream.", + "observability.logs.title": "Logs", + "observability.logs.total": "Total logs", + "observability.logs.with-trace": "With trace", + "observability.traces.average": "Average duration", + "observability.traces.detail": "Trace detail", + "observability.traces.error-rate": "Error rate", + "observability.traces.errors": "Error traces", + "observability.traces.events": "Events", + "observability.traces.resource-attributes": "Resource attributes", + "observability.traces.subtitle": "Find slow and failed traces, then inspect their span waterfall.", + "observability.traces.span-details": "Span attributes and events", + "observability.traces.title": "Traces", + "observability.traces.total": "Total traces", + "observability.traces.results": "Trace results", + "common.button.query": "Query", "log.manage.batch-delete": "一括削除", "log.manage.basic-information": "基本情報", "log.manage.clear": "クリア", @@ -717,6 +824,11 @@ "menu.log.integration": "統合", "menu.log.manage": "ログ管理", "menu.log.stream": "ログストリーム", + "menu.observability": "Observability", + "menu.observability.integration": "Connect", + "menu.observability.logs": "Logs", + "menu.observability.metrics": "Metrics", + "menu.observability.traces": "Traces", "menu.main": "メイン", "menu.monitor": "監視", "menu.monitor.bigdata": "ビッグデータ監視", diff --git a/web-app/src/assets/i18n/pt-BR.json b/web-app/src/assets/i18n/pt-BR.json index b9b9c520dd9..77003bc6416 100644 --- a/web-app/src/assets/i18n/pt-BR.json +++ b/web-app/src/assets/i18n/pt-BR.json @@ -361,6 +361,113 @@ "log.integration.token.new": "Clique para gerar Token", "log.integration.token.notice": "Este conteúdo será exibido apenas uma vez, por favor, guarde seu Token com segurança e não o compartilhe com outros", "log.integration.token.title": "Token de autenticação de acesso", + "observability.integration.address": "HertzBeat address", + "observability.integration.address-hint": "Use the address your application can reach. Do not add an OTLP path.", + "observability.integration.configuration": "Copy a configuration", + "observability.integration.configuration-hint": "Choose the format used by your application or collector.", + "observability.integration.connection": "Connection details", + "observability.integration.detect": "Detect ingestion", + "observability.integration.detect-hint": "Sends one temporary metric, log, and trace, then verifies each result.", + "observability.integration.error.network": "Cannot reach HertzBeat. Check the address and network access.", + "observability.integration.error.request": "Detection failed. Check the configuration and try again.", + "observability.integration.generate-token": "Generate", + "observability.integration.grpc-note": "OTLP/gRPC listens on port 4317.", + "observability.integration.protocol": "Protocol", + "observability.integration.ready-to-copy": "Generated from the form above", + "observability.integration.subtitle": "Connect metrics, logs, and traces without configuring entities, pipelines, or tables.", + "observability.integration.title": "Connect OpenTelemetry", + "observability.integration.token": "Access token", + "observability.integration.token-created": "A 30-day access token was generated", + "observability.integration.token-failed": "Unable to generate an access token", + "observability.integration.token-placeholder": "Paste or generate an API token", + "observability.signal.logs": "Logs", + "observability.signal.metrics": "Metrics", + "observability.signal.traces": "Traces", + "observability.action.view-logs": "View related logs", + "observability.action.view-metrics": "View related metrics", + "observability.action.view-trace": "View trace", + "observability.column.duration": "Duration", + "observability.column.labels": "Labels", + "observability.column.operation": "Operation", + "observability.column.service": "Service", + "observability.column.start": "Start time", + "observability.column.status": "Status", + "observability.column.time": "Time", + "observability.column.value": "Value", + "observability.empty.events": "No events recorded for this span", + "observability.empty.metrics": "No metric samples matched this query", + "observability.empty.logs": "No logs matched this query", + "observability.empty.spans": "No spans are available for this trace", + "observability.filter.environment": "Environment", + "observability.filter.errors-only": "Errors only", + "observability.filter.status": "Status", + "observability.filter.all-statuses": "All statuses", + "observability.filter.min-duration": "Minimum duration (ms)", + "observability.filter.max-duration": "Maximum duration (ms)", + "observability.filter.operation": "Operation name", + "observability.filter.service": "Service name", + "observability.filter.trace-id": "Trace ID", + "observability.metrics.aggregation": "Aggregation", + "observability.metrics.filter": "label=value", + "observability.metrics.group-by": "Group by label", + "observability.metrics.metric": "Metric name", + "observability.metrics.promql": "PromQL expression (metric names autocomplete)", + "observability.metrics.step": "Step (seconds)", + "observability.metrics.samples": "Samples", + "observability.metrics.total-series": "Total series", + "observability.metrics.total-samples": "Total samples", + "observability.metrics.minimum": "Minimum", + "observability.metrics.maximum": "Maximum", + "observability.metrics.trend": "Trend", + "observability.metrics.series": "series", + "observability.metrics.series-detail": "Series labels", + "observability.metrics.subtitle": "Inspect OTLP metric trends, series, and raw samples.", + "observability.metrics.title": "Metrics", + "observability.navigation.signals": "Switch signal workspace", + "observability.time.toolbar": "Time range controls", + "observability.time.preset": "Relative time range", + "observability.time.custom": "Custom range", + "observability.time.previous": "Previous time window", + "observability.time.next": "Next time window", + "observability.time.auto-refresh": "Auto refresh interval", + "observability.time.refresh-manual": "Manual refresh", + "observability.time.refresh-10s": "Every 10 seconds", + "observability.time.refresh-30s": "Every 30 seconds", + "observability.time.refresh-1m": "Every 1 minute", + "observability.time.refresh-5m": "Every 5 minutes", + "observability.time.last-15m": "Last 15 minutes", + "observability.time.last-30m": "Last 30 minutes", + "observability.time.last-1h": "Last 1 hour", + "observability.time.last-3h": "Last 3 hours", + "observability.time.last-6h": "Last 6 hours", + "observability.time.last-12h": "Last 12 hours", + "observability.time.last-24h": "Last 24 hours", + "observability.time.last-7d": "Last 7 days", + "observability.logs.detail": "Log detail", + "observability.logs.message": "Message", + "observability.logs.mode.query": "Query", + "observability.logs.mode.stream": "Live", + "observability.logs.resource-filter": "Resource expression: cloud.region = prod AND service.version != dev", + "observability.logs.results": "Log results", + "observability.logs.trend": "Trend", + "observability.logs.search": "Search message", + "observability.logs.severity": "Severity", + "observability.logs.subtitle": "Query historical logs or inspect the live stream.", + "observability.logs.title": "Logs", + "observability.logs.total": "Total logs", + "observability.logs.with-trace": "With trace", + "observability.traces.average": "Average duration", + "observability.traces.detail": "Trace detail", + "observability.traces.error-rate": "Error rate", + "observability.traces.errors": "Error traces", + "observability.traces.events": "Events", + "observability.traces.resource-attributes": "Resource attributes", + "observability.traces.subtitle": "Find slow and failed traces, then inspect their span waterfall.", + "observability.traces.span-details": "Span attributes and events", + "observability.traces.title": "Traces", + "observability.traces.total": "Total traces", + "observability.traces.results": "Trace results", + "common.button.query": "Query", "log.manage.batch-delete": "Excluir em lote", "log.manage.basic-information": "Informações básicas", "log.manage.clear": "Limpar", @@ -452,6 +559,11 @@ "menu.log.integration": "Integração", "menu.log.manage": "Gerenciamento de Log", "menu.log.stream": "Fluxo de Log", + "menu.observability": "Observability", + "menu.observability.integration": "Connect", + "menu.observability.logs": "Logs", + "menu.observability.metrics": "Metrics", + "menu.observability.traces": "Traces", "menu.account": "Página pessoal", "menu.account.binding": "Vinculação de conta", "menu.account.center": "Centro pessoal", diff --git a/web-app/src/assets/i18n/zh-CN.json b/web-app/src/assets/i18n/zh-CN.json index db4ef2f8562..b7be8345c2a 100644 --- a/web-app/src/assets/i18n/zh-CN.json +++ b/web-app/src/assets/i18n/zh-CN.json @@ -636,6 +636,113 @@ "log.integration.token.new": "点击生成 Token", "log.integration.token.notice": "此内容只会展示一次,请妥善保管您的 Token,不要泄露给他人", "log.integration.token.title": "访问认证 Token", + "observability.integration.address": "HertzBeat 地址", + "observability.integration.address-hint": "填写应用能够访问的 HertzBeat 地址,不需要添加 OTLP 路径。", + "observability.integration.configuration": "复制接入配置", + "observability.integration.configuration-hint": "选择你的应用或 Collector 使用的配置格式。", + "observability.integration.connection": "连接信息", + "observability.integration.detect": "检测接入", + "observability.integration.detect-hint": "发送一条临时指标、日志和链路,并逐项验证查询结果。", + "observability.integration.error.network": "无法连接 HertzBeat,请检查地址和网络访问。", + "observability.integration.error.request": "检测失败,请检查配置后重试。", + "observability.integration.generate-token": "生成", + "observability.integration.grpc-note": "OTLP/gRPC 默认监听 4317 端口。", + "observability.integration.protocol": "协议", + "observability.integration.ready-to-copy": "已根据左侧表单生成", + "observability.integration.subtitle": "无需理解实体、Pipeline 或数据表,即可接入指标、日志和链路。", + "observability.integration.title": "接入 OpenTelemetry", + "observability.integration.token": "访问令牌", + "observability.integration.token-created": "已生成有效期 30 天的访问令牌", + "observability.integration.token-failed": "无法生成访问令牌", + "observability.integration.token-placeholder": "粘贴或生成 API Token", + "observability.signal.logs": "日志", + "observability.signal.metrics": "指标", + "observability.signal.traces": "链路", + "observability.action.view-logs": "查看相关日志", + "observability.action.view-metrics": "查看相关指标", + "observability.action.view-trace": "查看链路", + "observability.column.duration": "耗时", + "observability.column.labels": "标签", + "observability.column.operation": "操作", + "observability.column.service": "服务", + "observability.column.start": "开始时间", + "observability.column.status": "状态", + "observability.column.time": "时间", + "observability.column.value": "数值", + "observability.empty.events": "该 Span 没有记录事件", + "observability.empty.metrics": "当前条件下没有指标样本", + "observability.empty.logs": "当前条件下没有日志", + "observability.empty.spans": "该链路没有可用 Span", + "observability.filter.environment": "环境", + "observability.filter.errors-only": "仅错误", + "observability.filter.status": "状态", + "observability.filter.all-statuses": "全部状态", + "observability.filter.min-duration": "最短耗时(毫秒)", + "observability.filter.max-duration": "最长耗时(毫秒)", + "observability.filter.operation": "操作名称", + "observability.filter.service": "服务名称", + "observability.filter.trace-id": "Trace ID", + "observability.metrics.aggregation": "聚合方式", + "observability.metrics.filter": "标签=值", + "observability.metrics.group-by": "分组标签", + "observability.metrics.metric": "指标名称", + "observability.metrics.promql": "PromQL 表达式(支持指标名补全)", + "observability.metrics.step": "步长(秒)", + "observability.metrics.samples": "样本明细", + "observability.metrics.total-series": "Series 总数", + "observability.metrics.total-samples": "样本总数", + "observability.metrics.minimum": "最小值", + "observability.metrics.maximum": "最大值", + "observability.metrics.trend": "趋势", + "observability.metrics.series": "条 Series", + "observability.metrics.series-detail": "Series 标签", + "observability.metrics.subtitle": "查看 OTLP 指标趋势、Series 和原始样本。", + "observability.metrics.title": "指标", + "observability.navigation.signals": "切换信号工作台", + "observability.time.toolbar": "时间范围控制", + "observability.time.preset": "相对时间范围", + "observability.time.custom": "自定义时间", + "observability.time.previous": "上一个时间窗口", + "observability.time.next": "下一个时间窗口", + "observability.time.auto-refresh": "自动刷新间隔", + "observability.time.refresh-manual": "手动刷新", + "observability.time.refresh-10s": "每 10 秒", + "observability.time.refresh-30s": "每 30 秒", + "observability.time.refresh-1m": "每 1 分钟", + "observability.time.refresh-5m": "每 5 分钟", + "observability.time.last-15m": "最近 15 分钟", + "observability.time.last-30m": "最近 30 分钟", + "observability.time.last-1h": "最近 1 小时", + "observability.time.last-3h": "最近 3 小时", + "observability.time.last-6h": "最近 6 小时", + "observability.time.last-12h": "最近 12 小时", + "observability.time.last-24h": "最近 24 小时", + "observability.time.last-7d": "最近 7 天", + "observability.logs.detail": "日志详情", + "observability.logs.message": "日志内容", + "observability.logs.mode.query": "查询", + "observability.logs.mode.stream": "实时", + "observability.logs.resource-filter": "资源表达式:cloud.region = prod AND service.version != dev", + "observability.logs.results": "日志结果", + "observability.logs.trend": "趋势", + "observability.logs.search": "搜索日志内容", + "observability.logs.severity": "级别", + "observability.logs.subtitle": "查询历史日志或查看实时日志流。", + "observability.logs.title": "日志", + "observability.logs.total": "日志总数", + "observability.logs.with-trace": "含 Trace", + "observability.traces.average": "平均耗时", + "observability.traces.detail": "链路详情", + "observability.traces.error-rate": "错误率", + "observability.traces.errors": "错误链路", + "observability.traces.events": "事件", + "observability.traces.resource-attributes": "资源属性", + "observability.traces.subtitle": "定位慢链路和错误链路,并检查 Span 瀑布图。", + "observability.traces.span-details": "Span 属性与事件", + "observability.traces.title": "链路", + "observability.traces.total": "链路总数", + "observability.traces.results": "链路结果", + "common.button.query": "查询", "log.manage.batch-delete": "批量删除", "log.manage.basic-information": "基本信息", "log.manage.clear": "清空", @@ -748,6 +855,11 @@ "menu.log.integration": "集成接入", "menu.log.manage": "日志管理", "menu.log.stream": "日志流", + "menu.observability": "可观测性", + "menu.observability.integration": "接入", + "menu.observability.logs": "日志", + "menu.observability.metrics": "指标", + "menu.observability.traces": "链路", "menu.clear.local.storage": "清理本地缓存", "menu.dashboard": "仪表盘", "menu.extras": "更多", diff --git a/web-app/src/assets/i18n/zh-TW.json b/web-app/src/assets/i18n/zh-TW.json index 6cb39791ddb..d53cfa573fc 100644 --- a/web-app/src/assets/i18n/zh-TW.json +++ b/web-app/src/assets/i18n/zh-TW.json @@ -596,6 +596,113 @@ "log.integration.token.new": "點擊生成 Token", "log.integration.token.notice": "此內容只會顯示一次,請妥善保管您的 Token,不要洩漏給他人", "log.integration.token.title": "存取認證 Token", + "observability.integration.address": "HertzBeat 位址", + "observability.integration.address-hint": "填寫應用能夠存取的 HertzBeat 位址,不需要加入 OTLP 路徑。", + "observability.integration.configuration": "複製接入設定", + "observability.integration.configuration-hint": "選擇應用或 Collector 使用的設定格式。", + "observability.integration.connection": "連線資訊", + "observability.integration.detect": "檢測接入", + "observability.integration.detect-hint": "發送一筆臨時指標、日誌和鏈路,並逐項驗證查詢結果。", + "observability.integration.error.network": "無法連線 HertzBeat,請檢查位址和網路存取。", + "observability.integration.error.request": "檢測失敗,請檢查設定後重試。", + "observability.integration.generate-token": "產生", + "observability.integration.grpc-note": "OTLP/gRPC 預設監聽 4317 埠。", + "observability.integration.protocol": "協定", + "observability.integration.ready-to-copy": "已根據左側表單產生", + "observability.integration.subtitle": "無需理解實體、Pipeline 或資料表,即可接入指標、日誌和鏈路。", + "observability.integration.title": "接入 OpenTelemetry", + "observability.integration.token": "存取令牌", + "observability.integration.token-created": "已產生有效期 30 天的存取令牌", + "observability.integration.token-failed": "無法產生存取令牌", + "observability.integration.token-placeholder": "貼上或產生 API Token", + "observability.signal.logs": "日誌", + "observability.signal.metrics": "指標", + "observability.signal.traces": "鏈路", + "observability.action.view-logs": "查看相關日誌", + "observability.action.view-metrics": "查看相關指標", + "observability.action.view-trace": "查看鏈路", + "observability.column.duration": "耗時", + "observability.column.labels": "標籤", + "observability.column.operation": "操作", + "observability.column.service": "服務", + "observability.column.start": "開始時間", + "observability.column.status": "狀態", + "observability.column.time": "時間", + "observability.column.value": "數值", + "observability.empty.events": "該 Span 沒有記錄事件", + "observability.empty.metrics": "目前條件下沒有指標樣本", + "observability.empty.logs": "目前條件下沒有日誌", + "observability.empty.spans": "該鏈路沒有可用 Span", + "observability.filter.environment": "環境", + "observability.filter.errors-only": "僅錯誤", + "observability.filter.status": "狀態", + "observability.filter.all-statuses": "全部狀態", + "observability.filter.min-duration": "最短耗時(毫秒)", + "observability.filter.max-duration": "最長耗時(毫秒)", + "observability.filter.operation": "操作名稱", + "observability.filter.service": "服務名稱", + "observability.filter.trace-id": "Trace ID", + "observability.metrics.aggregation": "聚合方式", + "observability.metrics.filter": "標籤=值", + "observability.metrics.group-by": "分組標籤", + "observability.metrics.metric": "指標名稱", + "observability.metrics.promql": "PromQL 表達式(支援指標名稱補全)", + "observability.metrics.step": "步長(秒)", + "observability.metrics.samples": "樣本明細", + "observability.metrics.total-series": "Series 總數", + "observability.metrics.total-samples": "樣本總數", + "observability.metrics.minimum": "最小值", + "observability.metrics.maximum": "最大值", + "observability.metrics.trend": "趨勢", + "observability.metrics.series": "條 Series", + "observability.metrics.series-detail": "Series 標籤", + "observability.metrics.subtitle": "查看 OTLP 指標趨勢、Series 和原始樣本。", + "observability.metrics.title": "指標", + "observability.navigation.signals": "切換信號工作台", + "observability.time.toolbar": "時間範圍控制", + "observability.time.preset": "相對時間範圍", + "observability.time.custom": "自訂時間", + "observability.time.previous": "上一個時間視窗", + "observability.time.next": "下一個時間視窗", + "observability.time.auto-refresh": "自動重新整理間隔", + "observability.time.refresh-manual": "手動重新整理", + "observability.time.refresh-10s": "每 10 秒", + "observability.time.refresh-30s": "每 30 秒", + "observability.time.refresh-1m": "每 1 分鐘", + "observability.time.refresh-5m": "每 5 分鐘", + "observability.time.last-15m": "最近 15 分鐘", + "observability.time.last-30m": "最近 30 分鐘", + "observability.time.last-1h": "最近 1 小時", + "observability.time.last-3h": "最近 3 小時", + "observability.time.last-6h": "最近 6 小時", + "observability.time.last-12h": "最近 12 小時", + "observability.time.last-24h": "最近 24 小時", + "observability.time.last-7d": "最近 7 天", + "observability.logs.detail": "日誌詳情", + "observability.logs.message": "日誌內容", + "observability.logs.mode.query": "查詢", + "observability.logs.mode.stream": "即時", + "observability.logs.resource-filter": "資源表達式:cloud.region = prod AND service.version != dev", + "observability.logs.results": "日誌結果", + "observability.logs.trend": "趨勢", + "observability.logs.search": "搜尋日誌內容", + "observability.logs.severity": "級別", + "observability.logs.subtitle": "查詢歷史日誌或查看即時日誌流。", + "observability.logs.title": "日誌", + "observability.logs.total": "日誌總數", + "observability.logs.with-trace": "含 Trace", + "observability.traces.average": "平均耗時", + "observability.traces.detail": "鏈路詳情", + "observability.traces.error-rate": "錯誤率", + "observability.traces.errors": "錯誤鏈路", + "observability.traces.events": "事件", + "observability.traces.resource-attributes": "資源屬性", + "observability.traces.subtitle": "定位慢鏈路和錯誤鏈路,並檢查 Span 瀑布圖。", + "observability.traces.span-details": "Span 屬性與事件", + "observability.traces.title": "鏈路", + "observability.traces.total": "鏈路總數", + "observability.traces.results": "鏈路結果", + "common.button.query": "查詢", "log.manage.batch-delete": "批次刪除", "log.manage.basic-information": "基本資訊", "log.manage.clear": "清空", @@ -721,6 +828,11 @@ "menu.log.integration": "整合", "menu.log.manage": "日誌管理", "menu.log.stream": "日誌流", + "menu.observability": "可觀測性", + "menu.observability.integration": "接入", + "menu.observability.logs": "日誌", + "menu.observability.metrics": "指標", + "menu.observability.traces": "鏈路", "menu.main": "主導航", "menu.monitor": "監控", "menu.monitor.bigdata": "大數據監控", diff --git a/web-app/src/styles/theme.less b/web-app/src/styles/theme.less index 46f0c9da57c..f2e3a7be40c 100644 --- a/web-app/src/styles/theme.less +++ b/web-app/src/styles/theme.less @@ -2,8 +2,8 @@ // - `default` Default theme // - `dark` Import the official dark less style file // - `compact` Import the official compact less style file -@import '@delon/theme/theme-default.less'; -@import "ng-zorro-antd/code-editor/style/entry.less"; +@import (less) '../../node_modules/@delon/theme/theme-default.less'; +@import (less) '../../node_modules/ng-zorro-antd/code-editor/style/entry.less'; // ==========The following is the custom theme variable area========== // The theme parameters can be generated at https://ng-alain.github.io/ng-alain/ From a9222b2a78ea5aa8aa87732de3aa46069bdcbf12 Mon Sep 17 00:00:00 2001 From: Logic Date: Sat, 11 Jul 2026 16:24:17 +0800 Subject: [PATCH 03/12] test(observability): cover transition release contracts --- .../config/GreptimeSignalInitializerTest.java | 92 +++++++++ .../config/GreptimeSignalPipelineTest.java | 37 ++++ .../log/config/OtlpGrpcServerConfigTest.java | 107 ++++++++++ .../controller/OtlpSignalControllerTest.java | 81 ++++++++ .../SignalWorkloadExceptionHandlerTest.java | 59 ++++++ .../ThreeSignalQueryControllerTest.java | 145 ++++++++++++++ .../log/service/SignalWorkloadGuardTest.java | 63 ++++++ .../impl/GreptimeOtlpSignalForwarderTest.java | 126 ++++++++++++ .../GreptimeThreeSignalQueryServiceTest.java | 182 ++++++++++++++++++ .../ManagerOtlpAccessTokenValidatorTest.java | 80 ++++++++ .../ResourceFilterExpressionTest.java | 58 ++++++ .../log/log-manage/log-trend-time.spec.ts | 30 +++ .../metrics/metrics-manage.component.spec.ts | 74 +++++++ .../routes/observability-navigation.spec.ts | 84 ++++++++ .../signal-query-context.spec.ts | 65 +++++++ .../signal-time-range.component.spec.ts | 47 +++++ .../trace/trace-manage.component.spec.ts | 126 ++++++++++++ .../app/service/observability.service.spec.ts | 76 ++++++++ 18 files changed, 1532 insertions(+) create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalPipelineTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfigTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/OtlpSignalControllerTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandlerTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryControllerTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/SignalWorkloadGuardTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarderTest.java create mode 100644 hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryServiceTest.java create mode 100644 hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidatorTest.java create mode 100644 hertzbeat-warehouse/src/test/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpressionTest.java create mode 100644 web-app/src/app/routes/log/log-manage/log-trend-time.spec.ts create mode 100644 web-app/src/app/routes/metrics/metrics-manage.component.spec.ts create mode 100644 web-app/src/app/routes/observability-navigation.spec.ts create mode 100644 web-app/src/app/routes/observability/signal-query-context.spec.ts create mode 100644 web-app/src/app/routes/observability/signal-time-range.component.spec.ts create mode 100644 web-app/src/app/routes/trace/trace-manage.component.spec.ts create mode 100644 web-app/src/app/service/observability.service.spec.ts diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java new file mode 100644 index 00000000000..1054477af74 --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java @@ -0,0 +1,92 @@ +/* + * 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 org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.List; +import java.util.Map; +import org.mockito.InOrder; +import org.apache.hertzbeat.warehouse.db.GreptimeSqlQueryExecutor; +import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +@ExtendWith(MockitoExtension.class) +class GreptimeSignalInitializerTest { + + @Mock + private GreptimeSqlQueryExecutor sqlQueryExecutor; + + @Mock + private RestTemplate restTemplate; + + private GreptimeSignalInitializer initializer; + + @BeforeEach + void setUp() { + initializer = new GreptimeSignalInitializer( + new GreptimeProperties(true, "127.0.0.1:4001", "http://127.0.0.1:4000", + "public", "greptime", "secret"), + sqlQueryExecutor, + restTemplate); + } + + @Test + void shouldPrepareTraceSchemaPipelineAndReadiness() { + when(sqlQueryExecutor.execute(anyString())).thenAnswer(invocation -> + invocation.getArgument(0, String.class).startsWith("SELECT 1") + ? List.of(Map.of("ready", 1)) : List.of()); + when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(String.class))) + .thenReturn(ResponseEntity.ok("ok")); + + initializer.initialize(); + + InOrder sqlOrder = org.mockito.Mockito.inOrder(sqlQueryExecutor); + sqlOrder.verify(sqlQueryExecutor).execute(org.mockito.ArgumentMatchers.startsWith("CREATE TABLE IF NOT EXISTS hzb_traces")); + sqlOrder.verify(sqlQueryExecutor).execute(org.mockito.ArgumentMatchers.startsWith( + "ALTER TABLE hzb_traces ADD COLUMN IF NOT EXISTS \"resource_attributes.service.namespace\"")); + sqlOrder.verify(sqlQueryExecutor).execute(org.mockito.ArgumentMatchers.startsWith( + "ALTER TABLE hzb_traces ADD COLUMN IF NOT EXISTS \"resource_attributes.deployment.environment.name\"")); + sqlOrder.verify(sqlQueryExecutor).execute("SELECT 1 AS ready"); + verify(restTemplate).exchange(eq("http://127.0.0.1:4000/v1/pipelines/hertzbeat_otlp_log_v1"), + eq(HttpMethod.POST), any(HttpEntity.class), eq(String.class)); + } + + @Test + void shouldFailStartupWhenGreptimeIsUnavailable() { + when(sqlQueryExecutor.execute(anyString())).thenThrow(new IllegalStateException("offline")); + + assertThatThrownBy(initializer::initialize) + .isInstanceOf(IllegalStateException.class) + .hasMessage("GreptimeDB is required for the three-signal release but initialization failed") + .hasCauseInstanceOf(IllegalStateException.class); + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalPipelineTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalPipelineTest.java new file mode 100644 index 00000000000..1e29119ec48 --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalPipelineTest.java @@ -0,0 +1,37 @@ +/* + * 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 org.assertj.core.api.Assertions.assertThat; + +import java.nio.charset.StandardCharsets; +import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; + +class GreptimeSignalPipelineTest { + + @Test + void shouldStoreOtlpBodyAsStringAndAttributesAsJson() throws Exception { + String pipeline = new ClassPathResource("greptime/pipelines/hertzbeat_otlp_log_v1.yaml") + .getContentAsString(StandardCharsets.UTF_8); + + assertThat(pipeline).contains("- field: body\n type: string"); + assertThat(pipeline).doesNotContain("- body\n - attributes"); + assertThat(pipeline).contains("- attributes\n - resource\n - instrumentation_scope\n type: json"); + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfigTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfigTest.java new file mode 100644 index 00000000000..41245fe3914 --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/OtlpGrpcServerConfigTest.java @@ -0,0 +1,107 @@ +/* + * 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 org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import io.grpc.ManagedChannel; +import io.grpc.Metadata; +import io.grpc.Server; +import io.grpc.ServerInterceptors; +import io.grpc.Status; +import io.grpc.StatusRuntimeException; +import io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder; +import io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder; +import io.grpc.stub.MetadataUtils; +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest; +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse; +import io.opentelemetry.proto.collector.metrics.v1.MetricsServiceGrpc; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; +import org.apache.hertzbeat.common.security.OtlpAccessTokenValidator; +import org.apache.hertzbeat.log.service.OtlpSignalForwarder; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; +import org.apache.hertzbeat.log.service.SignalQueryRejectedException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class OtlpGrpcServerConfigTest { + + private Server server; + private ManagedChannel channel; + + @BeforeEach + void setUp() throws Exception { + OtlpSignalForwarder forwarder = mock(OtlpSignalForwarder.class); + SignalWorkloadGuard guard = mock(SignalWorkloadGuard.class); + OtlpAccessTokenValidator validator = token -> "probe-token".equals(token) ? null : "Invalid token"; + when(guard.execute(eq(SignalWorkloadGuard.Workload.OTLP_WRITE), any())).thenAnswer(invocation -> { + Supplier action = invocation.getArgument(1); + return action.get(); + }); + when(forwarder.forwardProtobuf(eq("metrics"), any())).thenReturn(new byte[0]); + server = NettyServerBuilder.forPort(0) + .addService(ServerInterceptors.intercept( + new OtlpGrpcServerConfig.MetricsService(forwarder, guard), + new OtlpGrpcServerConfig.BearerTokenInterceptor(validator))) + .build().start(); + channel = NettyChannelBuilder.forAddress("127.0.0.1", server.getPort()).usePlaintext().build(); + } + + @AfterEach + void tearDown() throws Exception { + channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); + server.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); + } + + @Test + void shouldAcceptAuthorizedOtlpGrpcMetricsRequest() { + Metadata headers = new Metadata(); + headers.put(Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER), "Bearer probe-token"); + ExportMetricsServiceResponse response = MetricsServiceGrpc.newBlockingStub(channel) + .withInterceptors(MetadataUtils.newAttachHeadersInterceptor(headers)) + .export(ExportMetricsServiceRequest.getDefaultInstance()); + + assertThat(response).isEqualTo(ExportMetricsServiceResponse.getDefaultInstance()); + } + + @Test + void shouldRejectMissingOtlpGrpcBearerToken() { + assertThatThrownBy(() -> MetricsServiceGrpc.newBlockingStub(channel) + .export(ExportMetricsServiceRequest.getDefaultInstance())) + .isInstanceOfSatisfying(StatusRuntimeException.class, + exception -> assertThat(exception.getStatus().getCode()) + .isEqualTo(Status.Code.UNAUTHENTICATED)); + } + + @Test + void shouldMapGrpcFailuresWithoutHidingClientAndCapacityErrors() { + assertThat(OtlpGrpcServerConfig.toGrpcStatus(new IllegalArgumentException("payload"))) + .isEqualTo(Status.INVALID_ARGUMENT); + assertThat(OtlpGrpcServerConfig.toGrpcStatus(new SignalQueryRejectedException("OTLP_WRITE"))) + .isEqualTo(Status.RESOURCE_EXHAUSTED); + assertThat(OtlpGrpcServerConfig.toGrpcStatus(new IllegalStateException("storage"))) + .isEqualTo(Status.UNAVAILABLE); + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/OtlpSignalControllerTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/OtlpSignalControllerTest.java new file mode 100644 index 00000000000..a3e48a14e04 --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/OtlpSignalControllerTest.java @@ -0,0 +1,81 @@ +/* + * 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.controller; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.apache.hertzbeat.log.service.OtlpSignalForwarder; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +/** OTLP/HTTP route contract tests. */ +@ExtendWith(MockitoExtension.class) +class OtlpSignalControllerTest { + + @Mock + private OtlpSignalForwarder signalForwarder; + + private MockMvc mockMvc; + + @BeforeEach + void setUp() { + mockMvc = MockMvcBuilders.standaloneSetup( + new OtlpSignalController(signalForwarder, new SignalWorkloadGuard())).build(); + } + + @Test + void shouldRouteAllThreeSignals() throws Exception { + when(signalForwarder.forwardHttp(any(), any(), any())) + .thenReturn(ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body("{}".getBytes())); + + for (String signal : new String[] {"metrics", "logs", "traces"}) { + mockMvc.perform(MockMvcRequestBuilders.post("/api/otlp/v1/" + signal) + .contentType(MediaType.APPLICATION_JSON) + .content("{}")) + .andExpect(status().isOk()); + verify(signalForwarder).forwardHttp(eq(signal), any(), any(HttpHeaders.class)); + } + } + + @Test + void shouldReturnBadRequestForMalformedOtlpPayload() throws Exception { + when(signalForwarder.forwardHttp(eq("metrics"), any(), any())) + .thenThrow(new IllegalArgumentException("Malformed OTLP metrics JSON payload")); + + mockMvc.perform(MockMvcRequestBuilders.post("/api/otlp/v1/metrics") + .contentType(MediaType.APPLICATION_JSON) + .content("{")) + .andExpect(status().isBadRequest()) + .andExpect(content().string("Malformed OTLP metrics JSON payload")); + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandlerTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandlerTest.java new file mode 100644 index 00000000000..9e3a32fa6da --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/SignalWorkloadExceptionHandlerTest.java @@ -0,0 +1,59 @@ +/* + * 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.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.apache.hertzbeat.common.entity.dto.Message; +import org.apache.hertzbeat.log.service.SignalQueryRejectedException; +import org.junit.jupiter.api.Test; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; + +/** Tests retryable overload responses. */ +class SignalWorkloadExceptionHandlerTest { + + @Test + void shouldReturnRetryableTooManyRequests() { + ResponseEntity> response = new SignalWorkloadExceptionHandler() + .handleRejected(new SignalQueryRejectedException("METRICS")); + + assertEquals(HttpStatus.TOO_MANY_REQUESTS, response.getStatusCode()); + assertEquals("1", response.getHeaders().getFirst(HttpHeaders.RETRY_AFTER)); + } + + @Test + void shouldReturnBadRequestForInvalidAdvancedQuery() { + ResponseEntity> response = new SignalWorkloadExceptionHandler() + .handleInvalidQuery(new IllegalArgumentException("Invalid PromQL query")); + + assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode()); + } + + @Test + void shouldTakePrecedenceOverTheManagerGlobalAdvice() { + Order order = SignalWorkloadExceptionHandler.class.getAnnotation(Order.class); + + assertNotNull(order); + assertEquals(Ordered.HIGHEST_PRECEDENCE, order.value()); + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryControllerTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryControllerTest.java new file mode 100644 index 00000000000..a98c9fdd2e3 --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryControllerTest.java @@ -0,0 +1,145 @@ +/* + * 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.controller; + +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.util.List; +import java.util.Map; +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsConsole; +import org.apache.hertzbeat.common.entity.dto.observability.OtlpMetricsInventory; +import org.apache.hertzbeat.common.entity.dto.observability.SignalPage; +import org.apache.hertzbeat.common.entity.dto.observability.TraceDetail; +import org.apache.hertzbeat.common.entity.dto.observability.TraceListItem; +import org.apache.hertzbeat.common.entity.dto.observability.TraceOverview; +import org.apache.hertzbeat.common.entity.dto.observability.TraceSpanNode; +import org.apache.hertzbeat.log.service.ThreeSignalQueryService; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +/** Tests the entity-free public query contract. */ +@ExtendWith(MockitoExtension.class) +class ThreeSignalQueryControllerTest { + + private MockMvc mockMvc; + + @Mock + private ThreeSignalQueryService queryService; + + @BeforeEach + void setUp() { + mockMvc = MockMvcBuilders.standaloneSetup( + new ThreeSignalQueryController(queryService, new SignalWorkloadGuard())).build(); + } + + @Test + void shouldQueryMetricsWithoutEntityContext() throws Exception { + when(queryService.queryMetrics("http_server_duration", 1000L, 2000L, "checkout", "payments", + "prod", null, null, null, 60, null)) + .thenReturn(new OtlpMetricsConsole("http_server_duration", 1000L, 2000L, 60, List.of())); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/ingestion/otlp/metrics/console") + .param("query", "http_server_duration") + .param("start", "1000") + .param("end", "2000") + .param("serviceName", "checkout") + .param("serviceNamespace", "payments") + .param("environment", "prod") + .param("step", "60")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.query").value("http_server_duration")) + .andExpect(jsonPath("$.data.series").isArray()); + } + + @Test + void shouldExposeMetricInventory() throws Exception { + when(queryService.metricInventory(1000L, 2000L, "checkout", "payments", "prod", 50)) + .thenReturn(new OtlpMetricsInventory(List.of("http_server_duration"))); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/ingestion/otlp/metrics/inventory") + .param("start", "1000") + .param("end", "2000") + .param("serviceName", "checkout") + .param("serviceNamespace", "payments") + .param("environment", "prod") + .param("limit", "50")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.metricNames[0]").value("http_server_duration")); + } + + @Test + void shouldQueryTraceListAndDetail() throws Exception { + TraceListItem item = new TraceListItem("trace-1", "span-1", "checkout", "payments", "GET /cart", + 10_000_000L, "ERROR", 1000L, 1, Map.of("deployment.environment.name", "prod")); + when(queryService.queryTraces(1000L, 2000L, "trace-1", true, "checkout", "payments", "prod", + "GET /cart", 1L, 100L, 0, 20)) + .thenReturn(new SignalPage<>(List.of(item), 0, 20, 1)); + TraceSpanNode span = new TraceSpanNode("trace-1", "span-1", "", "GET /cart", "checkout", "ERROR", + "SERVER", "failed", 10_000_000L, 1000L, Map.of(), Map.of(), List.of()); + when(queryService.traceDetail("trace-1")).thenReturn(new TraceDetail(item, List.of(span))); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/traces/list") + .param("start", "1000") + .param("end", "2000") + .param("traceId", "trace-1") + .param("errorOnly", "true") + .param("serviceName", "checkout") + .param("serviceNamespace", "payments") + .param("environment", "prod") + .param("operationName", "GET /cart") + .param("minDurationMs", "1") + .param("maxDurationMs", "100")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.content[0].traceId").value("trace-1")); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/traces/trace-1")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.spans[0].spanId").value("span-1")); + } + + @Test + void shouldExposeTraceOverview() throws Exception { + when(queryService.traceOverview(1000L, 2000L, "trace-1", true, "checkout", "payments", "prod", + "GET /cart", 1L, 100L)) + .thenReturn(new TraceOverview(4, 1, 0.25, 12.5, 24.0)); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/traces/stats/overview") + .param("start", "1000") + .param("end", "2000") + .param("traceId", "trace-1") + .param("errorOnly", "true") + .param("serviceName", "checkout") + .param("serviceNamespace", "payments") + .param("environment", "prod") + .param("operationName", "GET /cart") + .param("minDurationMs", "1") + .param("maxDurationMs", "100")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.totalCount").value(4)) + .andExpect(jsonPath("$.data.errorRate").value(0.25)); + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/SignalWorkloadGuardTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/SignalWorkloadGuardTest.java new file mode 100644 index 00000000000..d8c92d7625b --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/SignalWorkloadGuardTest.java @@ -0,0 +1,63 @@ +/* + * 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.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Limits; +import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Workload; +import org.junit.jupiter.api.Test; + +/** Tests bounded signal workload isolation and recovery. */ +class SignalWorkloadGuardTest { + + @Test + void shouldRejectOverflowAndRecoverAfterPressureStops() throws Exception { + SignalWorkloadGuard guard = new SignalWorkloadGuard(Map.of(Workload.METRICS, new Limits(1, 1))); + CountDownLatch entered = new CountDownLatch(1); + CountDownLatch release = new CountDownLatch(1); + ExecutorService executor = Executors.newSingleThreadExecutor(); + try { + Future active = executor.submit(() -> guard.execute(Workload.METRICS, () -> { + entered.countDown(); + try { + release.await(); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + } + return "done"; + })); + entered.await(); + + assertThrows(SignalQueryRejectedException.class, + () -> guard.execute(Workload.METRICS, () -> "overflow")); + + release.countDown(); + assertEquals("done", active.get()); + assertEquals("recovered", guard.execute(Workload.METRICS, () -> "recovered")); + } finally { + executor.shutdownNow(); + } + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarderTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarderTest.java new file mode 100644 index 00000000000..07b4cd18151 --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeOtlpSignalForwarderTest.java @@ -0,0 +1,126 @@ +/* + * 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.service.impl; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest; +import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest; +import java.nio.charset.StandardCharsets; +import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +/** Greptime native OTLP forwarding tests. */ +@ExtendWith(MockitoExtension.class) +class GreptimeOtlpSignalForwarderTest { + + @Mock + private RestTemplate restTemplate; + + @Test + void shouldConvertJsonAndForwardMetricsWithResourcePromotion() { + when(restTemplate.exchange(eq("http://127.0.0.1:4000/v1/otlp/v1/metrics"), eq(HttpMethod.POST), + any(HttpEntity.class), eq(byte[].class))).thenReturn(ResponseEntity.ok(new byte[0])); + GreptimeOtlpSignalForwarder forwarder = new GreptimeOtlpSignalForwarder( + new GreptimeProperties(true, "127.0.0.1:4001", "http://127.0.0.1:4000", + "public", "greptime", "secret"), restTemplate); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + ResponseEntity response = forwarder.forwardHttp("metrics", "{}".getBytes(StandardCharsets.UTF_8), + headers); + + assertThat(response.getStatusCode().is2xxSuccessful()).isTrue(); + ArgumentCaptor> request = ArgumentCaptor.forClass(HttpEntity.class); + verify(restTemplate).exchange(eq("http://127.0.0.1:4000/v1/otlp/v1/metrics"), eq(HttpMethod.POST), + request.capture(), eq(byte[].class)); + assertThat(request.getValue().getHeaders().getFirst("X-Greptime-OTLP-Metric-Promote-Resource-Attrs")) + .contains("service.name", "deployment.environment.name"); + assertThat(request.getValue().getBody()).isEqualTo(ExportMetricsServiceRequest.getDefaultInstance().toByteArray()); + } + + @Test + void shouldAcceptStandardHexTraceIdsInOtlpJson() throws Exception { + when(restTemplate.exchange(eq("http://127.0.0.1:4000/v1/otlp/v1/traces"), eq(HttpMethod.POST), + any(HttpEntity.class), eq(byte[].class))).thenReturn(ResponseEntity.ok(new byte[0])); + GreptimeOtlpSignalForwarder forwarder = new GreptimeOtlpSignalForwarder( + new GreptimeProperties(true, "127.0.0.1:4001", "http://127.0.0.1:4000", + "public", "greptime", "secret"), restTemplate); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + String json = "{\"resourceSpans\":[{\"scopeSpans\":[{\"spans\":[{" + + "\"traceId\":\"0123456789abcdef0123456789abcdef\"," + + "\"spanId\":\"0123456789abcdef\"," + + "\"parentSpanId\":\"fedcba9876543210\",\"name\":\"probe\"}]}]}]}"; + + forwarder.forwardHttp("traces", json.getBytes(StandardCharsets.UTF_8), headers); + + ArgumentCaptor> request = ArgumentCaptor.forClass(HttpEntity.class); + verify(restTemplate).exchange(eq("http://127.0.0.1:4000/v1/otlp/v1/traces"), eq(HttpMethod.POST), + request.capture(), eq(byte[].class)); + ExportTraceServiceRequest parsed = ExportTraceServiceRequest.parseFrom(request.getValue().getBody()); + assertThat(parsed.getResourceSpans(0).getScopeSpans(0).getSpans(0).getTraceId().toByteArray()) + .containsExactly(java.util.HexFormat.of().parseHex("0123456789abcdef0123456789abcdef")); + assertThat(parsed.getResourceSpans(0).getScopeSpans(0).getSpans(0).getParentSpanId().toByteArray()) + .containsExactly(java.util.HexFormat.of().parseHex("fedcba9876543210")); + } + + @Test + void shouldRejectMalformedJsonBeforeCallingGreptime() { + GreptimeOtlpSignalForwarder forwarder = new GreptimeOtlpSignalForwarder( + new GreptimeProperties(true, "127.0.0.1:4001", "http://127.0.0.1:4000", + "public", "greptime", "secret"), restTemplate); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + assertThatThrownBy(() -> forwarder.forwardHttp("metrics", "{".getBytes(StandardCharsets.UTF_8), headers)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Malformed OTLP JSON payload"); + verifyNoInteractions(restTemplate); + } + + @Test + void shouldRejectMalformedProtobufBeforeCallingGreptime() { + GreptimeOtlpSignalForwarder forwarder = new GreptimeOtlpSignalForwarder( + new GreptimeProperties(true, "127.0.0.1:4001", "http://127.0.0.1:4000", + "public", "greptime", "secret"), restTemplate); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.parseMediaType("application/x-protobuf")); + + assertThatThrownBy(() -> forwarder.forwardHttp("traces", new byte[] {(byte) 0xff}, headers)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Malformed OTLP traces protobuf payload"); + verifyNoInteractions(restTemplate); + } +} diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryServiceTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryServiceTest.java new file mode 100644 index 00000000000..5a377ac1969 --- /dev/null +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/service/impl/GreptimeThreeSignalQueryServiceTest.java @@ -0,0 +1,182 @@ +/* + * 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.service.impl; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +import java.net.URI; +import java.util.List; +import java.util.Map; +import org.apache.hertzbeat.warehouse.db.GreptimeSqlQueryExecutor; +import org.apache.hertzbeat.warehouse.store.history.tsdb.greptime.GreptimeProperties; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +/** Unit tests for Greptime-backed entity-free queries. */ +@ExtendWith(MockitoExtension.class) +class GreptimeThreeSignalQueryServiceTest { + + @Mock + private GreptimeSqlQueryExecutor sqlQueryExecutor; + + @Mock + private RestTemplate restTemplate; + + private GreptimeThreeSignalQueryService service; + + @BeforeEach + void setUp() { + service = new GreptimeThreeSignalQueryService( + new GreptimeProperties(true, "127.0.0.1:4001", "http://127.0.0.1:4000", + "public", "greptime", "secret"), + sqlQueryExecutor, + restTemplate); + } + + @Test + void shouldBuildResourceScopedPromqlWithoutEntityLabels() { + when(restTemplate.exchange(any(URI.class), eq(HttpMethod.GET), any(HttpEntity.class), eq(Map.class))) + .thenReturn(ResponseEntity.ok(Map.of("data", Map.of("result", List.of())))); + + service.queryMetrics("http_server_duration", 1000L, 2000L, "checkout", "payments", "prod", + "http.method=GET", "service_name", "sum", 60, "GET /cart"); + + ArgumentCaptor uri = ArgumentCaptor.forClass(URI.class); + ArgumentCaptor> request = ArgumentCaptor.forClass(HttpEntity.class); + verify(restTemplate).exchange(uri.capture(), eq(HttpMethod.GET), request.capture(), eq(Map.class)); + assertThat(uri.getValue().toString()) + .contains("service_name", "checkout", "service_namespace", "payments") + .contains("deployment_environment_name", "prod") + .doesNotContain("entityId", "entityType", "hertzbeat_entity"); + assertThat(request.getValue().getHeaders().getFirst("Authorization")).startsWith("Basic "); + } + + @Test + void shouldAllowMetricsQueryWithoutAggregation() { + when(restTemplate.exchange(any(URI.class), eq(HttpMethod.GET), any(HttpEntity.class), eq(Map.class))) + .thenReturn(ResponseEntity.ok(Map.of("data", Map.of("result", List.of())))); + + var result = service.queryMetrics("http_server_duration", 1000L, 2000L, null, null, null, + null, null, null, 60, null); + + assertThat(result.query()).isEqualTo("http_server_duration"); + } + + @Test + void shouldPreserveAdvancedPromql() { + when(restTemplate.exchange(any(URI.class), eq(HttpMethod.GET), any(HttpEntity.class), eq(Map.class))) + .thenReturn(ResponseEntity.ok(Map.of("data", Map.of("result", List.of())))); + + var result = service.queryMetrics("sum by (service_name) (rate(http_requests_total[5m]))", + 1000L, 2000L, null, null, null, null, null, null, 60, null); + + assertThat(result.query()).isEqualTo("sum by (service_name) (rate(http_requests_total[5m]))"); + } + + @Test + void shouldExposeInvalidPromqlAsBadRequest() { + when(restTemplate.exchange(any(URI.class), eq(HttpMethod.GET), any(HttpEntity.class), eq(Map.class))) + .thenReturn(ResponseEntity.ok(Map.of("status", "error", "error", "invalid parameter query"))); + + assertThatThrownBy(() -> service.queryMetrics("sum(", 1000L, 2000L, null, null, null, + null, null, null, 60, null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Invalid PromQL query"); + } + + @Test + void shouldBuildTraceSqlWithoutEntityOrWorkspacePredicates() { + when(sqlQueryExecutor.execute(any())).thenReturn(List.of()); + + service.queryTraces(1000L, 2000L, "trace-1", true, "checkout", "payments", "prod", + "GET /cart", 1L, 100L, 0, 20); + + ArgumentCaptor sql = ArgumentCaptor.forClass(String.class); + verify(sqlQueryExecutor).execute(sql.capture()); + assertThat(sql.getValue()) + .contains("trace_id = 'trace-1'", "service_name = 'checkout'", + "\"resource_attributes.service.namespace\"", "\"resource_attributes.deployment.environment.name\"", + "CASE WHEN parent_span_id IS NULL OR parent_span_id = '' THEN service_name END", + "CASE WHEN parent_span_id IS NULL OR parent_span_id = '' THEN span_name END", + "duration_nano >= 1000000", "duration_nano <= 100000000") + .doesNotContainIgnoringCase("entity") + .doesNotContainIgnoringCase("workspace"); + } + + @Test + void shouldRejectInvalidQueryRangesBeforeAccessingStorage() { + assertThatThrownBy(() -> service.queryMetrics("up", 2000L, 1000L, null, null, null, + null, null, null, 30, null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Query start time must not exceed end time"); + assertThatThrownBy(() -> service.queryTraces(1000L, 2000L, null, false, null, null, null, + null, 20L, 10L, 0, 20)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Minimum trace duration must not exceed maximum duration"); + + verifyNoInteractions(restTemplate, sqlQueryExecutor); + } + + @Test + void shouldBuildTraceDurationFromTheFullSpanCoverage() { + Map root = new java.util.HashMap<>(spanRow("trace-1", "root", "", 1000L, 1_000_000_000L)); + root.put("span_events", "[{\"name\":\"retry.scheduled\",\"time\":\"2026-07-11T00:00:00Z\"," + + "\"attributes\":{\"retry.attempt\":1}}]"); + Map child = spanRow("trace-1", "child", "root", 1800L, 400_000_000L); + when(sqlQueryExecutor.execute(any())).thenReturn(List.of(root, child)); + + var detail = service.traceDetail("trace-1"); + + assertThat(detail.summary().durationNanos()).isEqualTo(1_200_000_000L); + assertThat(detail.spans()).hasSize(2); + assertThat(detail.spans().getFirst().spanEvents()).singleElement().satisfies(event -> { + assertThat(event.name()).isEqualTo("retry.scheduled"); + assertThat(event.attributes()).containsEntry("retry.attempt", 1); + }); + } + + private Map spanRow(String traceId, String spanId, String parentSpanId, + long timestamp, long durationNanos) { + return Map.ofEntries( + Map.entry("trace_id", traceId), + Map.entry("span_id", spanId), + Map.entry("parent_span_id", parentSpanId), + Map.entry("span_name", "GET /cart"), + Map.entry("service_name", "checkout"), + Map.entry("span_status_code", "STATUS_CODE_OK"), + Map.entry("span_kind", "SPAN_KIND_SERVER"), + Map.entry("span_status_message", ""), + Map.entry("duration_nano", durationNanos), + Map.entry("timestamp", timestamp), + Map.entry("span_events", "[]")); + } +} diff --git a/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidatorTest.java b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidatorTest.java new file mode 100644 index 00000000000..d65a4473059 --- /dev/null +++ b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/impl/ManagerOtlpAccessTokenValidatorTest.java @@ -0,0 +1,80 @@ +/* + * 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.manager.service.impl; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.usthe.sureness.util.JsonWebTokenUtil; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.hertzbeat.manager.service.AccountService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class ManagerOtlpAccessTokenValidatorTest { + + @Mock + private AccountService accountService; + + private ManagerOtlpAccessTokenValidator validator; + + @BeforeEach + void setUp() { + JsonWebTokenUtil.setDefaultSecretKey("CyaFv0bwq2Eik0jdrKUtsA6bx3sDJeFV643R" + + "LnfKefTjsIfJLBa2YkhEqEGtcHDTNe4CU6+98tVt4bisXQ13rbN0oxhUZR73M6EByXIO+SV5" + + "dKhaX0csgOCTlCxq20yhmUea6H6JIpSE2Rwp"); + validator = new ManagerOtlpAccessTokenValidator(accountService); + } + + @Test + void shouldRejectRefreshTokensBeforeAccountAccess() { + String token = JsonWebTokenUtil.issueJwt("admin", 3600L, new HashMap<>(Map.of("refresh", true))); + + assertThat(validator.validate(token)).isEqualTo("Refresh token is not allowed"); + verify(accountService, never()).touchTokenLastUsedTime(token); + } + + @Test + void shouldValidateManagedAccessTokenAndRecordUsage() { + String token = JsonWebTokenUtil.issueJwt("admin", 3600L, List.of("admin"), + new HashMap<>(Map.of(AccountServiceImpl.CLAIM_MANAGED, true))); + when(accountService.checkManagedTokenAccess("admin", List.of("admin"))).thenReturn(null); + + assertThat(validator.validate(token)).isNull(); + verify(accountService).checkTokenStatus(token); + verify(accountService).touchTokenLastUsedTime(token); + } + + @Test + void shouldRejectRevokedManagedTokenWithoutUpdatingUsage() { + String token = JsonWebTokenUtil.issueJwt("admin", 3600L, List.of("admin"), + new HashMap<>(Map.of(AccountServiceImpl.CLAIM_MANAGED, true))); + when(accountService.checkTokenStatus(token)).thenReturn("Token has been revoked"); + + assertThat(validator.validate(token)).isEqualTo("Token has been revoked"); + verify(accountService, never()).touchTokenLastUsedTime(token); + } +} diff --git a/hertzbeat-warehouse/src/test/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpressionTest.java b/hertzbeat-warehouse/src/test/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpressionTest.java new file mode 100644 index 00000000000..a4daaba443b --- /dev/null +++ b/hertzbeat-warehouse/src/test/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/ResourceFilterExpressionTest.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.warehouse.store.history.tsdb.greptime; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import org.junit.jupiter.api.Test; + +class ResourceFilterExpressionTest { + + @Test + void shouldParseMultipleResourceClauses() { + var clauses = ResourceFilterExpression.parse( + "resource.cloud.region = \"ap-southeast-1\" AND service.version != dev AND pod.name EXISTS"); + + assertThat(clauses).extracting(ResourceFilterExpression.Clause::key) + .containsExactly("cloud.region", "service.version", "pod.name"); + assertThat(clauses).extracting(ResourceFilterExpression.Clause::operator) + .containsExactly(ResourceFilterExpression.Operator.EQUALS, + ResourceFilterExpression.Operator.NOT_EQUALS, ResourceFilterExpression.Operator.EXISTS); + } + + @Test + void shouldKeepAndInsideQuotedAttributeValue() { + var clauses = ResourceFilterExpression.parse( + "service.version = \"blue AND green\" AND k8s.pod.name NOT EXISTS"); + + assertThat(clauses).hasSize(2); + assertThat(clauses.getFirst().value()).isEqualTo("blue AND green"); + assertThat(clauses.getLast().operator()).isEqualTo(ResourceFilterExpression.Operator.NOT_EXISTS); + } + + @Test + void shouldRejectInvalidResourceExpression() { + assertThatThrownBy(() -> ResourceFilterExpression.parse("cloud.region ~~ prod")) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Invalid resource filter expression"); + assertThatThrownBy(() -> ResourceFilterExpression.parse("service.name = \"unterminated")) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Invalid resource filter expression"); + } +} diff --git a/web-app/src/app/routes/log/log-manage/log-trend-time.spec.ts b/web-app/src/app/routes/log/log-manage/log-trend-time.spec.ts new file mode 100644 index 00000000000..2459a80281c --- /dev/null +++ b/web-app/src/app/routes/log/log-manage/log-trend-time.spec.ts @@ -0,0 +1,30 @@ +/* + * 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. + */ + +import { trendBucketMillis } from './log-manage.component'; + +describe('log trend time normalization', () => { + it('converts Greptime nanosecond buckets to epoch milliseconds', () => { + expect(trendBucketMillis('1783699200000000000')).toBe(1783699200000); + }); + + it('keeps epoch milliseconds unchanged', () => { + expect(trendBucketMillis('1783699200000')).toBe(1783699200000); + }); +}); diff --git a/web-app/src/app/routes/metrics/metrics-manage.component.spec.ts b/web-app/src/app/routes/metrics/metrics-manage.component.spec.ts new file mode 100644 index 00000000000..304d49fd135 --- /dev/null +++ b/web-app/src/app/routes/metrics/metrics-manage.component.spec.ts @@ -0,0 +1,74 @@ +/* + * 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. + */ + +import { fakeAsync, tick } from '@angular/core/testing'; +import { ActivatedRoute, Router, convertToParamMap } from '@angular/router'; +import { of } from 'rxjs'; + +import { ObservabilityService } from '../../service/observability.service'; +import { MetricsManageComponent } from './metrics-manage.component'; + +describe('MetricsManageComponent', () => { + it('loads inventory, queries the selected metric, and derives the sample summary', fakeAsync(() => { + const observability = jasmine.createSpyObj('ObservabilityService', ['metricInventory', 'queryMetrics']); + observability.metricInventory.and.returnValue(of({ code: 0, data: { metricNames: ['http.requests'] }, msg: '' })); + observability.queryMetrics.and.returnValue( + of({ + code: 0, + data: { + query: 'http.requests', + start: 1_000, + end: 2_000, + step: 15, + series: [ + { + labels: { service: 'checkout' }, + points: [ + { timestamp: 1_000, value: 4 }, + { timestamp: 2_000, value: 9 } + ] + } + ] + }, + msg: '' + }) + ); + const route = { + snapshot: { queryParamMap: convertToParamMap({ start: 1_000, end: 2_000, step: 15 }) } + } as unknown as ActivatedRoute; + const router = jasmine.createSpyObj('Router', ['navigate']); + const component = new MetricsManageComponent(observability, route, router); + + component.ngOnInit(); + tick(250); + + expect(observability.queryMetrics).toHaveBeenCalledWith( + jasmine.objectContaining({ start: 1_000, end: 2_000 }), + 'http.requests', + undefined, + undefined, + undefined, + 15 + ); + expect(component.summary).toEqual({ sampleCount: 2, minimum: 4, maximum: 9, latest: 9 }); + expect(component.rows.length).toBe(2); + expect(router.navigate).toHaveBeenCalledWith([], jasmine.objectContaining({ replaceUrl: true })); + component.ngOnDestroy(); + })); +}); diff --git a/web-app/src/app/routes/observability-navigation.spec.ts b/web-app/src/app/routes/observability-navigation.spec.ts new file mode 100644 index 00000000000..47bbd765039 --- /dev/null +++ b/web-app/src/app/routes/observability-navigation.spec.ts @@ -0,0 +1,84 @@ +/* + * 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. + */ + +import { ActivatedRoute, Router, convertToParamMap } from '@angular/router'; + +import { LogService } from '../service/log.service'; +import { ObservabilityService } from '../service/observability.service'; +import { LogManageComponent } from './log/log-manage/log-manage.component'; +import { routes } from './routes-routing.module'; +import { TraceManageComponent } from './trace/trace-manage.component'; + +describe('Observability transition navigation', () => { + it('exposes integration, metrics, logs, and traces while keeping the legacy log route', () => { + const children = routes[0].children || []; + expect(children.map(route => route.path)).toContain('observability/integration'); + expect(children.map(route => route.path)).toContain('metrics/manage'); + expect(children.map(route => route.path)).toContain('trace/manage'); + expect(children.map(route => route.path)).toContain('log'); + }); + + it('keeps time and OTLP resource context when moving from a trace to logs and metrics', () => { + const observability = jasmine.createSpyObj('ObservabilityService', [ + 'queryTraces', + 'traceOverview', + 'traceDetail' + ]); + const route = { snapshot: { queryParamMap: convertToParamMap({}) } } as unknown as ActivatedRoute; + const router = jasmine.createSpyObj('Router', ['navigate']); + const component = new TraceManageComponent(observability, route, router); + component.selected = { + summary: { + traceId: 'trace-1', + rootSpanId: 'span-1', + serviceName: 'checkout', + serviceNamespace: 'payments', + rootSpanName: 'POST /checkout', + durationNanos: 2_000_000, + status: 'OK', + startTime: 10_000, + errorSpanCount: 0, + resourceAttributes: { 'deployment.environment.name': 'prod' } + }, + spans: [] + }; + + component.viewLogs(); + component.viewMetrics(); + + expect(router.navigate.calls.argsFor(0)[0]).toEqual(['/log/manage']); + expect(router.navigate.calls.argsFor(0)[1]?.queryParams?.['traceId']).toBe('trace-1'); + expect(router.navigate.calls.argsFor(1)[0]).toEqual(['/metrics/manage']); + expect(router.navigate.calls.argsFor(1)[1]?.queryParams?.['operationName']).toBe('POST /checkout'); + }); + + it('opens the matching trace from a log without an entity route', () => { + const logs = jasmine.createSpyObj('LogService', ['list', 'overviewStats', 'trendStats']); + const route = { snapshot: { queryParamMap: convertToParamMap({}) } } as unknown as ActivatedRoute; + const router = jasmine.createSpyObj('Router', ['navigate']); + const component = new LogManageComponent(logs, route, router); + component.timeRange = [new Date(1_000), new Date(2_000)]; + + component.openTrace({ traceId: 'trace-2', resource: { 'service.name': 'catalog' } }); + + expect(router.navigate).toHaveBeenCalledWith(['/trace/manage'], { + queryParams: jasmine.objectContaining({ traceId: 'trace-2', serviceName: 'catalog', start: 1_000, end: 2_000 }) + }); + }); +}); diff --git a/web-app/src/app/routes/observability/signal-query-context.spec.ts b/web-app/src/app/routes/observability/signal-query-context.spec.ts new file mode 100644 index 00000000000..50a66dcec4f --- /dev/null +++ b/web-app/src/app/routes/observability/signal-query-context.spec.ts @@ -0,0 +1,65 @@ +/* + * 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. + */ + +import { ParamMap } from '@angular/router'; + +import { + createSignalTimePreset, + detectSignalTimePreset, + moveSignalTimeRangeToNow, + readSignalTimeRange, + shiftSignalTimeRange, + toSignalTimeContext +} from './signal-query-context'; + +describe('signal query context', () => { + it('reads and writes the shared start and end contract', () => { + const values = new Map([ + ['start', '1000'], + ['end', '2000'] + ]); + const params = { get: (key: string) => values.get(key) || null } as ParamMap; + + const range = readSignalTimeRange(params); + + expect(range.map(value => value.getTime())).toEqual([1_000, 2_000]); + expect(toSignalTimeContext(range)).toEqual({ start: 1_000, end: 2_000 }); + }); + + it('moves a fixed range to now without changing its duration', () => { + const range = moveSignalTimeRangeToNow([new Date(1_000), new Date(61_000)], 121_000); + + expect(range.map(value => value.getTime())).toEqual([61_000, 121_000]); + }); + + it('creates and detects a relative time preset', () => { + const range = createSignalTimePreset('1h', 7_200_000); + + expect(range.map(value => value.getTime())).toEqual([3_600_000, 7_200_000]); + expect(detectSignalTimePreset(range, 7_200_000)).toBe('1h'); + expect(detectSignalTimePreset(range, 7_300_000)).toBe('custom'); + }); + + it('moves a time window backward and clamps forward movement to now', () => { + const range = [new Date(60_000), new Date(120_000)]; + + expect(shiftSignalTimeRange(range, -1, 300_000).map(value => value.getTime())).toEqual([0, 60_000]); + expect(shiftSignalTimeRange(range, 1, 150_000).map(value => value.getTime())).toEqual([90_000, 150_000]); + }); +}); diff --git a/web-app/src/app/routes/observability/signal-time-range.component.spec.ts b/web-app/src/app/routes/observability/signal-time-range.component.spec.ts new file mode 100644 index 00000000000..973cd2ff571 --- /dev/null +++ b/web-app/src/app/routes/observability/signal-time-range.component.spec.ts @@ -0,0 +1,47 @@ +/* + * 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. + */ + +import { fakeAsync, tick } from '@angular/core/testing'; + +import { SignalTimeRangeComponent } from './signal-time-range.component'; + +describe('SignalTimeRangeComponent', () => { + it('applies a relative preset without requiring manual dates', () => { + const component = new SignalTimeRangeComponent(); + const ranges: Date[][] = []; + component.valueChange.subscribe(value => ranges.push(value)); + + component.selectPreset('15m'); + + expect(ranges.length).toBe(1); + expect(ranges[0][1].getTime() - ranges[0][0].getTime()).toBe(15 * 60_000); + }); + + it('emits automatic refresh at the configured interval', fakeAsync(() => { + const component = new SignalTimeRangeComponent(); + let refreshes = 0; + component.refresh.subscribe(() => refreshes++); + + component.setRefreshInterval(10); + tick(10_000); + component.ngOnDestroy(); + + expect(refreshes).toBe(1); + })); +}); diff --git a/web-app/src/app/routes/trace/trace-manage.component.spec.ts b/web-app/src/app/routes/trace/trace-manage.component.spec.ts new file mode 100644 index 00000000000..044a995975f --- /dev/null +++ b/web-app/src/app/routes/trace/trace-manage.component.spec.ts @@ -0,0 +1,126 @@ +/* + * 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. + */ + +import { fakeAsync, tick } from '@angular/core/testing'; +import { ActivatedRoute, Router, convertToParamMap } from '@angular/router'; +import { of } from 'rxjs'; + +import { ObservabilityService, TraceListItem, TraceSpanNode } from '../../service/observability.service'; +import { TraceManageComponent } from './trace-manage.component'; + +describe('TraceManageComponent', () => { + function span(spanId: string, parentSpanId: string, status: string): TraceSpanNode { + return { + traceId: 'trace', + spanId, + parentSpanId, + spanName: spanId, + serviceName: 'service', + status, + spanKind: 'SPAN_KIND_INTERNAL', + statusMessage: '', + durationNanos: 1_000_000, + startTime: 1, + resourceAttributes: {}, + spanAttributes: {}, + spanEvents: [] + }; + } + + function summary(): TraceListItem { + return { + traceId: 'trace', + rootSpanId: 'root', + serviceName: 'service', + serviceNamespace: '', + rootSpanName: 'operation', + durationNanos: 1_000_000, + status: 'STATUS_CODE_OK', + startTime: 1, + errorSpanCount: 0, + resourceAttributes: {} + }; + } + + it('recognizes Greptime status codes and calculates hierarchy depth', () => { + const component = new TraceManageComponent( + jasmine.createSpyObj('ObservabilityService', ['queryTraces', 'traceOverview', 'traceDetail']), + { snapshot: { queryParamMap: convertToParamMap({}) } } as unknown as ActivatedRoute, + jasmine.createSpyObj('Router', ['navigate']) + ); + const root = span('root', '', 'STATUS_CODE_OK'); + const child = span('child', 'root', 'STATUS_CODE_ERROR'); + const leaf = span('leaf', 'child', 'STATUS_CODE_OK'); + component.selected = { summary: summary(), spans: [root, child, leaf] }; + + expect(component.isErrorSpan(child)).toBeTrue(); + expect(component.spanStatus(child)).toBe('ERROR'); + expect(component.spanDepth(leaf)).toBe(2); + expect(component.waterfallDurationMs()).toBe(1); + }); + + it('restores bounded duration and status filters and persists them after querying', fakeAsync(() => { + const observability = jasmine.createSpyObj('ObservabilityService', [ + 'queryTraces', + 'traceOverview', + 'traceDetail' + ]); + observability.queryTraces.and.returnValue( + of({ code: 0, data: { content: [], pageIndex: 0, pageSize: 20, totalElements: 0 }, msg: '' }) + ); + observability.traceOverview.and.returnValue( + of({ code: 0, data: { totalCount: 0, errorCount: 0, errorRate: 0, averageDurationMillis: 0, p95DurationMillis: 0 }, msg: '' }) + ); + const route = { + snapshot: { + queryParamMap: convertToParamMap({ + start: 1_000, + end: 2_000, + environment: 'staging', + errorOnly: 'true', + minDurationMs: '1', + maxDurationMs: '5000', + refresh: '10' + }) + } + } as unknown as ActivatedRoute; + const router = jasmine.createSpyObj('Router', ['navigate']); + const component = new TraceManageComponent(observability, route, router); + + component.ngOnInit(); + tick(250); + + expect(observability.queryTraces).toHaveBeenCalledWith( + jasmine.objectContaining({ start: 1_000, end: 2_000, environment: 'staging' }), + 0, + 20, + true, + 1, + 5_000 + ); + expect(router.navigate).toHaveBeenCalledWith( + [], + jasmine.objectContaining({ + queryParams: jasmine.objectContaining({ errorOnly: true, minDurationMs: 1, maxDurationMs: 5_000, refresh: 10 }), + replaceUrl: true + }) + ); + component.ngOnDestroy(); + })); +}); diff --git a/web-app/src/app/service/observability.service.spec.ts b/web-app/src/app/service/observability.service.spec.ts new file mode 100644 index 00000000000..c6b2c307140 --- /dev/null +++ b/web-app/src/app/service/observability.service.spec.ts @@ -0,0 +1,76 @@ +/* + * 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. + */ + +import { HttpClient, HttpContext } from '@angular/common/http'; +import { Observable, of } from 'rxjs'; + +import { SILENT_HTTP_ERROR } from '../core/interceptor/http-context'; +import { ObservabilityService, OtlpConnectionForm, SignalProbeResult } from './observability.service'; + +interface ObservabilityServiceInternals { + failedProbe(signal: SignalProbeResult['signal'], error: unknown): SignalProbeResult; + send(config: OtlpConnectionForm, signal: string, payload: unknown): Observable; +} + +interface HttpRequestOptions { + context: HttpContext; +} + +describe('ObservabilityService', () => { + it('maps browser transport failures to a user-facing message key', () => { + const service = new ObservabilityService({} as HttpClient); + const result = (service as unknown as ObservabilityServiceInternals).failedProbe('metrics', new ProgressEvent('error')); + + expect(result.errorKey).toBe('observability.integration.error.network'); + expect(result.error).toBeUndefined(); + }); + + it('maps wrapped HTTP transport failures to the same message key', () => { + const service = new ObservabilityService({} as HttpClient); + const result = (service as unknown as ObservabilityServiceInternals).failedProbe('logs', { + status: 0, + error: new ProgressEvent('error') + }); + + expect(result.errorKey).toBe('observability.integration.error.network'); + }); + + it('preserves a server error message', () => { + const service = new ObservabilityService({} as HttpClient); + const result = (service as unknown as ObservabilityServiceInternals).failedProbe('traces', { + error: { msg: 'Storage unavailable' } + }); + + expect(result.error).toBe('Storage unavailable'); + expect(result.errorKey).toBeUndefined(); + }); + + it('marks probe ingestion requests as locally handled', () => { + const http = jasmine.createSpyObj('HttpClient', ['post']); + http.post.and.returnValue(of({})); + const service = new ObservabilityService(http); + + (service as unknown as ObservabilityServiceInternals) + .send({ endpoint: 'http://localhost:1157', token: 'token', serviceName: 'service', environment: 'test' }, 'metrics', {}) + .subscribe(); + + const options = http.post.calls.mostRecent().args[2] as HttpRequestOptions; + expect(options.context.get(SILENT_HTTP_ERROR)).toBeTrue(); + }); +}); From 9f22a1cdd53fabca3669485c8784561e2988cd8a Mon Sep 17 00:00:00 2001 From: Duansg Date: Sat, 11 Jul 2026 20:57:30 +0800 Subject: [PATCH 04/12] Update hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Duansg --- .../entity/dto/observability/MetricPoint.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java index bb6f676c55e..a1fa69b5442 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricPoint.java @@ -1,3 +1,22 @@ +/* + * 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. + */ + /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with From 216e3f9d291738ea76b9387930fccab69ab3b6da Mon Sep 17 00:00:00 2001 From: Logic Date: Sat, 11 Jul 2026 21:47:22 +0800 Subject: [PATCH 05/12] fix(ci): gate Greptime signal controllers --- .../entity/dto/observability/MetricSeries.java | 12 +++++++++++- .../dto/observability/OtlpMetricsConsole.java | 12 +++++++++++- .../dto/observability/OtlpMetricsInventory.java | 12 +++++++++++- .../entity/dto/observability/SignalPage.java | 12 +++++++++++- .../entity/dto/observability/TraceDetail.java | 12 +++++++++++- .../entity/dto/observability/TraceListItem.java | 12 +++++++++++- .../entity/dto/observability/TraceOverview.java | 12 +++++++++++- .../dto/observability/TraceSpanEvent.java | 12 +++++++++++- .../entity/dto/observability/TraceSpanNode.java | 12 +++++++++++- .../log/controller/OtlpSignalController.java | 2 ++ .../controller/ThreeSignalQueryController.java | 2 ++ .../pipelines/hertzbeat_otlp_log_v1.yaml | 15 +++++++++++++++ .../resources/greptime/tables/hzb_traces.sql | 15 +++++++++++++++ .../apache/hertzbeat/startup/ContextTest.java | 6 ++++++ .../log/log-manage/log-manage.component.html | 17 ++++++++++++++++- .../metrics/metrics-manage.component.html | 17 ++++++++++++++++- .../routes/trace/trace-manage.component.html | 17 ++++++++++++++++- 17 files changed, 187 insertions(+), 12 deletions(-) diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java index 3e7e39266f6..f12e3caf94c 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java index 01303cd7be6..db5b1f09ff6 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsConsole.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java index 7885775f741..46d54c057d4 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java index c3255ad1f29..b0ca312fd4c 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java index e7c3ab1c508..87d433e0d1a 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceDetail.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java index 617df000b25..5cbb83da013 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceListItem.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java index f817edc7ec9..e892d965931 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceOverview.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java index 267b79ab14c..d913dda23b2 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanEvent.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java index 4b9645990c9..7b5cfe324cf 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/TraceSpanNode.java @@ -2,7 +2,17 @@ * 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 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.common.entity.dto.observability; diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java index 1551d4e44eb..a88e2d10eb5 100644 --- a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/OtlpSignalController.java @@ -23,6 +23,7 @@ import org.apache.hertzbeat.log.service.OtlpSignalForwarder; import org.apache.hertzbeat.log.service.SignalWorkloadGuard; import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Workload; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -35,6 +36,7 @@ /** Standard OTLP/HTTP gateway for all three signals. */ @RestController +@ConditionalOnProperty(prefix = "warehouse.store.greptime", name = "enabled", havingValue = "true") @RequestMapping("/api/otlp/v1") @Tag(name = "OTLP Signal Controller") public class OtlpSignalController { diff --git a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java index 25fb38f8dee..de95425c17b 100644 --- a/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java +++ b/hertzbeat-log/src/main/java/org/apache/hertzbeat/log/controller/ThreeSignalQueryController.java @@ -29,6 +29,7 @@ import org.apache.hertzbeat.log.service.ThreeSignalQueryService; import org.apache.hertzbeat.log.service.SignalWorkloadGuard; import org.apache.hertzbeat.log.service.SignalWorkloadGuard.Workload; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -37,6 +38,7 @@ /** Public entity-free query APIs for OTLP metrics and traces. */ @RestController +@ConditionalOnProperty(prefix = "warehouse.store.greptime", name = "enabled", havingValue = "true") @Tag(name = "Three Signal Query Controller") public class ThreeSignalQueryController { diff --git a/hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml b/hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml index 135dc5979bf..ac2ff301764 100644 --- a/hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml +++ b/hertzbeat-log/src/main/resources/greptime/pipelines/hertzbeat_otlp_log_v1.yaml @@ -1,3 +1,18 @@ +# 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. + version: 2 processors: - vrl: diff --git a/hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql b/hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql index c83bbecec45..64585ce31b8 100644 --- a/hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql +++ b/hertzbeat-log/src/main/resources/greptime/tables/hzb_traces.sql @@ -1,3 +1,18 @@ +-- 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. + CREATE TABLE IF NOT EXISTS hzb_traces ( "timestamp" TIMESTAMP(9) TIME INDEX, "timestamp_end" TIMESTAMP(9) NULL, diff --git a/hertzbeat-startup/src/test/java/org/apache/hertzbeat/startup/ContextTest.java b/hertzbeat-startup/src/test/java/org/apache/hertzbeat/startup/ContextTest.java index 902c676c619..19401144d7b 100644 --- a/hertzbeat-startup/src/test/java/org/apache/hertzbeat/startup/ContextTest.java +++ b/hertzbeat-startup/src/test/java/org/apache/hertzbeat/startup/ContextTest.java @@ -43,6 +43,8 @@ import org.apache.hertzbeat.common.queue.impl.InMemoryCommonDataQueue; import org.apache.hertzbeat.common.support.SpringContextHolder; import org.apache.hertzbeat.alert.service.impl.TencentSmsClientImpl; +import org.apache.hertzbeat.log.controller.OtlpSignalController; +import org.apache.hertzbeat.log.controller.ThreeSignalQueryController; import org.apache.hertzbeat.warehouse.WarehouseWorkerPool; import org.apache.hertzbeat.warehouse.controller.MetricsDataController; import org.apache.hertzbeat.warehouse.store.history.tsdb.iotdb.IotDbDataStorage; @@ -105,6 +107,10 @@ void testAutoImport() { assertThrows(NoSuchBeanDefinitionException.class, () -> ctx.getBean(IotDbDataStorage.class)); assertNotNull(ctx.getBean(MetricsDataController.class)); + + // Greptime-only signal controllers must not break the default application context. + assertThrows(NoSuchBeanDefinitionException.class, () -> ctx.getBean(OtlpSignalController.class)); + assertThrows(NoSuchBeanDefinitionException.class, () -> ctx.getBean(ThreeSignalQueryController.class)); } } diff --git a/web-app/src/app/routes/log/log-manage/log-manage.component.html b/web-app/src/app/routes/log/log-manage/log-manage.component.html index 97ce977ecb4..c2a4439eeee 100644 --- a/web-app/src/app/routes/log/log-manage/log-manage.component.html +++ b/web-app/src/app/routes/log/log-manage/log-manage.component.html @@ -1,4 +1,19 @@ - +
+
diff --git a/web-app/src/app/routes/trace/trace-manage.component.html b/web-app/src/app/routes/trace/trace-manage.component.html index 5b6983f0ea2..ab75188840e 100644 --- a/web-app/src/app/routes/trace/trace-manage.component.html +++ b/web-app/src/app/routes/trace/trace-manage.component.html @@ -1,4 +1,19 @@ - +
Date: Sat, 11 Jul 2026 21:53:36 +0800 Subject: [PATCH 06/12] test(observability): allow licensed Greptime schema --- .../hertzbeat/log/config/GreptimeSignalInitializerTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java index 1054477af74..840d184f4cd 100644 --- a/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java +++ b/hertzbeat-log/src/test/java/org/apache/hertzbeat/log/config/GreptimeSignalInitializerTest.java @@ -70,7 +70,8 @@ void shouldPrepareTraceSchemaPipelineAndReadiness() { initializer.initialize(); InOrder sqlOrder = org.mockito.Mockito.inOrder(sqlQueryExecutor); - sqlOrder.verify(sqlQueryExecutor).execute(org.mockito.ArgumentMatchers.startsWith("CREATE TABLE IF NOT EXISTS hzb_traces")); + sqlOrder.verify(sqlQueryExecutor).execute(org.mockito.ArgumentMatchers.contains( + "CREATE TABLE IF NOT EXISTS hzb_traces")); sqlOrder.verify(sqlQueryExecutor).execute(org.mockito.ArgumentMatchers.startsWith( "ALTER TABLE hzb_traces ADD COLUMN IF NOT EXISTS \"resource_attributes.service.namespace\"")); sqlOrder.verify(sqlQueryExecutor).execute(org.mockito.ArgumentMatchers.startsWith( From 1c0c881c588f7c977b9bef3488df25dafe03e8b9 Mon Sep 17 00:00:00 2001 From: Logic Date: Sat, 11 Jul 2026 22:11:37 +0800 Subject: [PATCH 07/12] test(log): isolate OTLP gRPC from storage e2e --- .../apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java | 3 ++- .../hertzbeat/log/storage/GreptimeLogStorageE2eTest.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java index 451f8ce7783..2dc2a2c82a7 100644 --- a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java +++ b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java @@ -63,7 +63,8 @@ @SpringBootTest(classes = org.apache.hertzbeat.startup.HertzBeatApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @TestPropertySource(properties = { "warehouse.store.duckdb.enabled=false", - "warehouse.store.greptime.enabled=true" + "warehouse.store.greptime.enabled=true", + "hertzbeat.otlp.grpc.enabled=false" }) @Slf4j @TestInstance(TestInstance.Lifecycle.PER_CLASS) diff --git a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java index 9a0fbaea312..63a04c00bc2 100644 --- a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java +++ b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java @@ -52,7 +52,8 @@ @SpringBootTest(classes = org.apache.hertzbeat.startup.HertzBeatApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @TestPropertySource(properties = { "warehouse.store.duckdb.enabled=false", - "warehouse.store.greptime.enabled=true" + "warehouse.store.greptime.enabled=true", + "hertzbeat.otlp.grpc.enabled=false" }) @Slf4j @TestInstance(TestInstance.Lifecycle.PER_CLASS) From 5d523ddce322ad82ab1bcb65b3dbe516b0a1b97d Mon Sep 17 00:00:00 2001 From: Logic Date: Sun, 12 Jul 2026 08:01:47 +0800 Subject: [PATCH 08/12] docs(pr): add Angular observability screenshots --- .../angular-three-signals/logs-workbench.png | Bin 0 -> 198757 bytes .../metrics-workbench.png | Bin 0 -> 322854 bytes .../angular-three-signals/otlp-onboarding.png | Bin 0 -> 288292 bytes .../angular-three-signals/trace-waterfall.png | Bin 0 -> 267760 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/pr-assets/angular-three-signals/logs-workbench.png create mode 100644 .github/pr-assets/angular-three-signals/metrics-workbench.png create mode 100644 .github/pr-assets/angular-three-signals/otlp-onboarding.png create mode 100644 .github/pr-assets/angular-three-signals/trace-waterfall.png diff --git a/.github/pr-assets/angular-three-signals/logs-workbench.png b/.github/pr-assets/angular-three-signals/logs-workbench.png new file mode 100644 index 0000000000000000000000000000000000000000..83176915c6d00b3efbe5cc3c9aaeff31e4755a7f GIT binary patch literal 198757 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%0DC6LGHl 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�lgpvPP$2gVYSwwO1^rH$nq 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 V9mZ{br2qkkvb>sHwTyY_{{h#-jTis` literal 0 HcmV?d00001 diff --git a/.github/pr-assets/angular-three-signals/metrics-workbench.png b/.github/pr-assets/angular-three-signals/metrics-workbench.png new file mode 100644 index 0000000000000000000000000000000000000000..2383a92f0c6f944570a39877b3d4a689da8f08d0 GIT binary patch literal 322854 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

TZ|KAk>H^_%dz0F@AGg%yufsY3` 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%0DdCw+O=z` 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

6Hv`V~jYHZ%1x}Nm5qobn>0i3A7 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ã@N7UT%f!u}Xk)?1ivS@}K> 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 W+p5I;Ixz#t<)LL6#Qc+conz&2r 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 literal 0 HcmV?d00001 diff --git a/.github/pr-assets/angular-three-signals/otlp-onboarding.png b/.github/pr-assets/angular-three-signals/otlp-onboarding.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb941e2a7b29f58b32549a94728317cbfa8c25c GIT binary patch literal 288292 zcmXuLV|XS_*EJkWCZ5=~ZQHhOJDFf&`;5(r&e*nX+qNfqbA9*s{HQK=AJw~7t*X6u zbw?=5OTfcm!+?N*z)MMrDuaOh-~|BzcY*@@E(x>Z5C4upU6dt+L8_*3ProywW|~sw za&jQl-)Sfi&@d~IAOAJ^4%pw}`_?>A5b*C9^uMw^u>Y(5!J7yEe`#>1{~8wi&%l9z z2!cq73aS1Ez34oyHyw7{@%-}&Jl6BRHpGVaXCxIvA|+EM3gOJcw9?3*9XcDo!l)#E zLYO^{$qsi@rc|$I(Y^|IUa-sqmGpNcl`RBiZJX_S^Hll#_i;GswK%QHzIEwaO)yhB z(0^IckxrqIGm+^jpOZ-OsLr>u4G{@BU060DFpinK{&2G{G{3#dMk{51#Rzk9Vq#))a`D`42LmRgwzhV5 zR!K$>Rct977c4$!gbr_p7=Z{qorG>?|I_aejE@?Xp{SSbfY;Y6l!{=KTMSmy*M-WC zFJ*j1F)gs7?BiG?8_c-qWSaC3%mxRt%ha&mG=2n1=0AzL0cbpMRBXtpNG8z=xEDJ)!vQZ`E9;w~{ST!)xITp05k z_0&}V8Ln|=CL!swULimt4Q$U_5CiKmH;xv!}-lpJ=9}q#$Y{ z4@T|3ecs(M3p|>SD@2M%Y$S-HM1*WdXx1Sm&sbJe0&%W0!`!51<9NqVCI7xlv<7@M zJyOk-^n9rJyEPO1Lp@Ozv;}(>$pw3s3Sfxv-2J&I)m$r{bUKt6t{9EDblm+GbJC_5 zlV{Z{dC`v`P@!IaFkxOV$$aUq1H-8994lrEOQtL@FBAOIeV$BG$zcRj6NE5DB(`aInRLY`6I;dg;p2R(Qct$#u2M8_w za#fp|xk(YV2I~*9krcnjwc7uauTqge=K04=iC`|+9~j<1)OcXQr^`BJJmv9W`u=~z z@_>ry!**=hJ)-af%rrblfr!>sIPDz=8c8@f79?>XQ6f5WkPzVx8tDhxD@rA7lhHws zJe*M|3*Da2m^Blzu?Zm(zkdr1E0;8hmZHc)7>$3-G^g;(DWHqXLZImTg_t1J1(H9z zv8#7KK9bOdPQUX$?$a)SdIJz?Q`xQn7<_;K5UUch!B19 zb4Rc#dEw-@EBvZ*xB&&C1$w6^YRE()Q-&ULSMUR9R6COSgH3j2dP2HHA%qWfY<^ry zHEE$U`)S-^A1H${`1?C)&)N0#xPJjpCP=2&Xr*Nu&H|MR0sIjEP+yRh4BbkOWP+Uu z78%eXG-(p$IvI9VTJZhDB-8$Wy5LaO-1gjJ*!+E}eeF}(8SmAo7ASO1Ee(f_7z>*A zpMM!;K_cXS<=K<=C=Bxup6t^ZcGCBKHIuI=)XH<-l_CxZN83;HPpGAm9sCWG|6@|7 z)IYR0xvJdwYPcFNa^{%ciKezQ^KUba(yqfu18Q~JNcMvX-SYEGc5TD$70)vd;2 zCcB=RgEsH{(KbD=M;pQ7?>bf)eiNB#wSOavcF(!S*MKjG`^Bfn{nk9s_e$t+Da#H#U>Vb<(Hn?sF+PfGOuEk!Y@;Zd@n;GYH2T412y3TT8^_- zH>CbP7=FZ-8ZV`k(E|zoh{=6d5|Xs?Q<05%tHQEOEUgIymiID^&Q-KP$pd_oDMWk|HdNMy@DLsJZk#z8fUEZx*f5E9AV9PAk>P5NryYLAhlwHh~QmqjGrW(wKG zfz@CQ^N+>Fna1y~kk6r^rEBHZsn)!u|Hfr(={Z!r;&Opr$zolk`=o9H#kQ%D{AH(Q zAO~S{nR`RaW$TSdg2&C)x)4U!uXgQcYI%jSS5ucb&Nacdk^ljf28G`wHfc1=V&`337|Unx*y< z%NA@#YUO}iJ^2<%>I?Wie0H7PFltx9CK}xrx906jcoY`wY%Eay#W*magHr{bMu0+^U%|~IVO_RH++tyM>$m}j|)aDHWOsP z0zm_`XQwgy@Lb|{LiFQQi3}gfdGfrDnzOc|V$Mi3m z`=XC}jtw4G)Kt^60&IhKo$ z-E{S9&tkl$W`t$@c-1~Bo|RRvM7nPL7ay$zxWRwreFkj!s;~3Ky$H`M3n_fGw~E^3N^L8Zo+v8PaO zR9}VVJp+-WT#?}Fa4OU~2XnLDpr=Z(3I4i&d1M+ngGx-8hc*F5h%h=#deZ~i_~$i* z3!45NDU&&M*RYT9bC?AZm@rsBPm3Ub6JhAH#ymLjX&sGU-C zw%I@X6k#V(zW`mMKa_i~)6+#4W6P+!BXeL@RUksWyq~LqdenkIFSL$Q)Dv$I865`% zM5zQ|x9Y3fzES&{nPJl`P3g|_7|on81PgF1w@Kg4ugv-+yXs8hKYRn-zu){UCWc#0 zt=jtCR-@B8+N)dXPYJcpT$2pjr?*KWznYjr)@KQ1O0lRkxk<@s{7*N4hQe#-HTq}! zHz9aE-Cxr~sNR2F87CLGpZ0Kw1ze5-GX&;^9YQu78A#DzK8*D_=r%o^*3j0P1{j%R_Qv&MwA z8zPoU&@9virQ{@PpObP4RO>}s(mK^JerjznUDSHtbGE7=?mN}}zub4fIDzl~2@MU` z&C4O5rW0{R$MT!``V5k*0>2sZaT%jhkD6EQQu&+k9OFEvHGrNK7DwKsz#FBPG~Me8(~8{+NTtM;#^kOGCW15O)FBW>{_}{Xa1jer~71$sqT-du$*oL zB(XYXRyge%TBL~q4QFNFO_B%ib*#T+1=3JTy-sM4RU-D22xz!!oi>qGQR2VpR$}vj z7<&$ozjtrB(X#%7y^oq76RLL;4ISSif!+0|oQ#5klR1@L`wjF;eW$e76S;x{Cb5zj zhZ?8>6aTl6dZl!(-5W8cBl(o}tjlvwtx(il6=Mh#gr*xF?KOPSKEFlnUN+TMx>Gu* z_ELJL7K@?=VKuK}t$k1gZ$-1(`ffgER8{chZqzb=GryPqPd3Du_rG;UA?n!u@T*`q zu}P07=1aa`!|HQ>DU)5Gt8Ff!&Ej*$W2UxYjfTUXRrh(meA%3U$K|Efg4{?1IlIcW z6v3vqo=~P;5cRQ>eAieZRb@!njmP)e6SDBSdt^#T-##ya@vz}d>HNHA@ zBGBoOdMdtjD(ml{ikN}|lf9aS?c7rN)V8;;;% zlNVPvHwVF^NuTbP6WS^KOU27&!2Sg4EA5r-h$OwLq5YNBm^`NHwNxrsq&{|eO*p2X zmR+_e77)=~ZMJZB{n5|3Kx2zU-hLz8gi#<H?k2ku%9<7HJJh zR(Z2O+!+!O^Po2B1!4Hl`x--2Xt!I9TjImx#DGK;(weG;p2>07S9Q1=Ds&c?jZ?n_|48Xkf7B`Dep zj_&7j*N+~{HA+x!K;LaE-udPA%rB*0rOB^vDDRZs`K`{Yy(a+mtnRvULCLs#`MpB6J8JN}rA&2c7sh&Nutl0VVe`!$M19~hAB=J?vu1WmB6dlV=c{`E;(7V(J7K?9eg zD9!wgyjEak&sf>`(DG0p8rr=?#9HM>VFWvui@jHTw(;&WfhT~xET80UJp{sMN#)sj zwzYzBf?S(YcTt+hq>E^M^85b~?m4}T70Wxr=LmlttCkT zSWd*-kFGR+JHDH05DAM!vf{$P zt11TPG}6fgmr%_I9vYW5qJ`=0{}ep~aTr1eS8!{zidd9%BHw|L|O5?<4#JSh`RuM-B8~1(Q$}*sx5Q%tJn?Nu@17mO? zvwEW;-BN=)BgOQ&Ttsjwtx+0ZPts#1jK`B*@#Wr^x~W*8TJ!58H4tpC(BKWC*DXA^ z4~rW#4$nge;Ipip(vsP-$wY)h){da_r=WoNtC)gCYuYu$?W{9n7G;XPuUlgi;k`;k zfsKv5xymAY)bZq1T` zXbxW6R|U}F*1?@XerFQ@9l1IGtzPFT1XTZm_`5?m**nl1qqe?N)j~}CtSP*tB2CpW zV%u{T`UpXAlX~Fxn_Oi}+;G$N^(jX|4?nAOT$9W;u`9=OZx738ArSwk+k^&fjctqA&qwk7D9#|#}=?i53m@vSGIjJQRAX}g{ZrM1LL|zhwq8_D0hWEnEO<_F` z%td*$JEW>X$6>_D1^d81jgS==5&f*>^%hKVvqO2W+_@q2M84i=YzZ2?a?vZgybw~RRcBV`)`A1n z`e-#rCy_eiOMqWngu|_*B)3JhK}~PIX;4q717p@OCU>G-s4NBNthEK`E)HpA4#*`B^TEC8X`I`n56K&|KgEsE1d z5{bg_v!7g=pS%1X{z{c*)l(8uJKCicrQ?dqoz1I=LK(|o0Np%?G|p5ZvD!*v#{n<# zZG4ow;I9bwKPb*lb6d1O>?#*qRL^G&XgTeGDYNmwU&a(C0XbQao`O)%VIpf@A}v7& z{R&4xrbqyR#N#2fbo|#yy6#i*a^I_O$@tmLc5oa z$s1ny5@_hmtjAMSwe)=QwSLLG`o8$np`hb85!9l_c6CDO7Xt}cCIVC7z*ivAxjc3D zZGZT#PD*b5?;-K{z4gt18onG9=0KlKpJg3i@*!KtX=C}8H`BX~_=FCz2SXmp*)jW5 zs*yR^*t9I~qLPqqH`yze60m8v2JLxqw9mdE8HP5h)B2yqz$&*>s#{$Rb~`QZH5;WpM%9j z$}fpnZNa;Se4RCq7R`nNcTmcLn7>`q5!Qw=sI}tdji00TNMM5rOvM$LMJ_j3R{xx= zF!}oOay|H$l8}#7^40>8UL0Oq(b8=0ZSn5~va6j3~$$1E_ABw~5;(;(r2`P4b z#6(NCrNBe}-ZqdJ**FtU5L6{G^GS9b!#;ygm3B~h%ME8zy}xO;Ov30t%k_v{@nTM1 z6Nyrj4G*CmMl`(+bj;E~|40ojls%TP8d!+k@Ii@{)@73h?NKYItEZ=vv$I0I7RJ_o z0b}m;YnRP>x>u(*wc6Sx`KD>%hBWW0)V>&%rUS-V&+Fc7y~lnN?DS>eJkIz-S*c=h ziZVLt9*l~AO@~o|Vem@Ii}pv4*mPjMTh}V%RBst6{t}k$!8I?6*hE`WqeC-3M#+o1 zk$q)Si<|U;?iZ@h-9OZHid&vEFoh}9r(lwX4(L;M{t)MS$oGM(W{EanOeR&unCG=? z%|(PCDw%8HFh_%MKsOM*;Sh(&HncSv_1__F1}U^|LNee^Qary zlxw@5VEFkQx-qSE^>QQa+QeGE>QNYD3*2>Quw1hMDPm__$mK#M+!~l>ZMpTa=d9o^ z%X@tVQmKpmvVw`u`Q|A5b%^7w75kVclCu zI%|A}OfMot5~9h;;C9My+bnrv?J&dXy9}xs`jt_oJ%?+xE77lm6!Y#DVes}mwD@Md zFyjQ{wZ<)AW5nUPQ^z2tZTh)R+b$cioq9`AWx@fChhFOr2uVL%oOmCImtmRJw^*}# zLbAN541i1Ls219v}-JUaUes+8tms0wwbhXLn10s zQ!zcL$)B;c=FI(z8B$r^mB79a0XO=avyg7Hn~ynPN8$#T&Z9H(+Iv#v? z_Acrl{FZd5yWs(kVu%`~zX}|h!3of9K1d6t-3kXjPTVS{wT)J+bCop<^53opr?Z;x_;OM;gw|?QOpL>cz?lR7zyodeSNwQ;y{_0L7mS$}S&R^cQE>5&Gr>FP)$a%9#7`u)|QJ7gl zjy;ApJQ~bhUQ?clX>+ctG}%Q8)A7IkA3wxZCKwMx1JptqYhsPQztC`C;NMH*E;IB< zti48Uwh|7;y+Chv0LM~#*yB=zA?y&oA8`}ZQl!fJqj=%0DEG>@|>LBOV$IXA8GZbas!Iel2APh5|Xpt4b6V#%!YX2{@KpYcbZM5={(dDpSF zd0CoU4fZ}}*UFJ66x~(85j}aO()l<9npihJn@**3>w;~?4 z0O1edA}XSC2qnqM7S;I}hbA>8IZhF3juUf&kvGEIoj_*&mPc6I6 z++KA-w=*y67;a<(3-&syP(`b~>*Lu)7{OM{%c*VsD)P{F-+`vBpmP;ONED2(KwX^a@ID?h!@t?)v@w2Ygf{9VAIL}z~l3cpHFGj?!P~? zn;z%FYMK&KrtjM=c4x)22ItrUKC~yNvRNylSKV>Gu5%8NfP+X9kf=yF|dZtyi zdOyc@yzH&kE67J9+;Ke}1vQ8Gp9)nYtu^}#ai{Pioiu?w+NU(!T&HZLYifHH4+_w| zXImZi2WQxK@X1cN|D|8rK1f2z&j7f|LZT?g^4*niV$_rT zehhf}&r?ex6%a<=P*Iel`Lg4*8Y1Kh4W^m<+t~Rc-6H4T5C=srcgDd$gu-74e03Qw zcA8(?cl91KnJrgxJ}3YgP9A!TMq~BNm&e)OvFh|890DK5LVX*F7t;mCU}o>!=u`NA zN|J{|a2d0!2>)vs~ zkUpd9gtk1UJ2Mr&OujD>$JMvuJTfQ`75Uo<){6!XKaCb z%XvuJ_g671W5#)P>=6e=gMPZky(ZwW4Zm8JBoWv%09ZS5LyZ7c2Tpxs zoDuZfLrB4&yMu`1oLt_>fj|=)4Ne|*JQ9mc$9{N?{czYVDfYar*D{X5#)!QYxGXN( z6g%rum0*?JdIfVJ&9S+|@}_z})4gxfZKveh*kl%TDn-Py(M#}5-x@a;*XP5$MYaB0 zh5o&K4)4F&kk#>2f$~L+uKR2Yy7k=b_NIo0he`thkNcwszdwhEHp^9fj|(dMC?+(E zcOxSspWubQihduD%MKg(y88M;n#I9ti>3@4Y zc!7G_%1>i}Tewccp|~Q`+UnLkaseJa&A*|3JNu)gK%EFdCzg0ame))TR7DdAvz$jA z3G8-&5>1v|E#sT;#_~~eS3U>M$%504;W%LtA+ik)rLQ^+sJT2e^eXpC%PEUG6wIm8-DO*72)2K#hBx_Dw5Pac?pojhB`; z&}d-lQ(94DoTszQRx49lqQT0kr>l+HaR%(FLS}x}zeP!e zhlELG?8{2*Mgha>JL!YbH#;Ip!Jj44K!(MUJ# z;Q)^smKh_Ai%}3gdzaaD2?@}sm1eEtIpFsYEz)!0$RP67hcFtlXLAX2I*V;_xNLA)%O85d=rgr=jrhlQt2{F_rmE9*}vV z>+jm`|E~8US{kTvP_m;9Cj|EZ_4ht0Zy;0(Ol3(-2#l(SG%ni1nc6F>87I(oAygD3 z;a9%owfTwh+$60E?{wnJye!O^x?<$aU=}gX%>L!tfPFUzD5qd3^Nj8i*|zczLcOt( zwgVOO_;e~7m$5aoJ(7R2Jm8nVu-f>@B&Y;>MPgB&pt*#kx%J4sD|zJE_pzLVUQes7Yya@gMeC4+5j6YtR+q(w%WvA+P0WB3(?n#$vG5ek96*laHF{E zx|DU%fx0@b<#KN&v~3n`n#)cmDh<*UTVdmC|I{h_d65-VP}s3FqjXMj z$`uov+EhA6R7=n+;kc)sjRA8#mX-Nr#NEPZIQnr9=7HUKvtc2{7)@zMjM0w`&@S&f z-wo%wUFVO`#2B}A=sz@>Sk-ELQ-tg4Lk{&`+D)e|_EED&&?!M`A{QxhrkFyzsbaX% zrY^0`JY0+MGO=Q0j+``udP99Qa2B)>4eC*Ehmku&5g_(wQO0p@j7J+qlNkpb88ktM zLiVegS>k&G>$?0_Lw$*m4PigCO%&k0SBV~Om5Cem+K%?}o9qxjP{qUH# z6eR;JOEws+(&yOn0X~576L3y2vq$q%>JvO#Xw`=a8TZ(X#1LnnwqBLikt) zGRJyz4Ti>bUU85?=7xE!tgNKS!LjM(M3pxxm&acZPZ!?z`t6=;y#E@Hb7p23F@A_p zaYH9d$NPX4o14WevfiT4)h?RMnP@RoK--6FiqXWN-VMrbN&stMWOHYo%PP#q&Fk@8 z4EvweUF&tHFnsbyezLlVt~<3*kI%F=liFr3ftV{50~(pLgdoI#M)Ob{zfjO$_;bNO&+K%a4kNiLd!gNW^?!ce?Sgwtgi&j6#KM?3bU)%B zW4Np)Sgl{8pSKUyz&vu(9rnovIrU_v)S&z|tqaMUbo2G8HAnUGi9XD)Sk?q4g<$OL+78@qemK)eG$l~IFXpa5Op(0 z%Ea*u`u@oSR=-YdI`lOPh3omo0H5NU)x)C=Tao3Nz8Ovy_RAJ3?LO@lyklq1D!J1x zFDRtpsW9KZ5wCD(#f=>=HAQN47~b1RF+&_A4cFKrE_L=h9iAw(L{68)_r1et+2>*1 z&5=_&I;i!OvSS!Hm=`OIW7L#&XC1lm+Ho=1=0e9`v1Tv!GQ;H<_tB$v5)W{H291L- z4=z(kVA6h`kpJWe(xjh`80b^rk^)f9Llh>}^qG=}1SX^=m>!q-$Pgplg{R9e7Y)oE zb{^>PXT9@6q(7Z1(9)wFcUkTLlIeRFdi zWn9U@+Jn!zusJbj!W=adj2g^GsnxHSMIGA% zf|f11V~ra{>WdCq8QJq(SmvvpVr}h@4)`F-{!(+xFP%F$c`CFkAnZ(Ham=v;SD7t| zh9Z)sFgD}FK^>!!08Wj9V8n7aDoQ)bJ4e5(jF~>$5j&NNQlH$3gu=o;E=>qkx5oc$AZT5lFU%Gl|MLfi66Z_u+0HKrSr| zGx2C@!=5QUN7AhMS+UJQj4^w+A@ERCDHf6ZK+n1%DzhJd^6 z`%OSVLcdw^W%nNwUweBji`bR(pZH&}-AmJAc?W{n1#+)YjGyV5M8f#b=|=#4!~ z3oEq5bSloW*kv@poTcT6fxSP5kNqIj&z}$5|30lI^@5ktHOy<$QP)<5S)5G@^{r`t za+sL7KdHNwDe5f@4gG@6o%Yhiop8?OTbIAi{Ti@q3Uqg|C-3mAcYCeZ@i>CdjUzAI zb?jc!9yPrW@!{ep=1ep1Z0u0Y&bIfSMC+;>^Ix}abeP(#T3jcrdIM>c$$=zquZ*!PDo^CxQPw4rkqU+dIJ>yj8y;um z1=3Qs1KSCO*+<8vL#3D%NCWeu6Xn^tv=5++(r!~keUW#QY1a=UJjL+SDPOIqRO5xn z?eV?!Y|YT#lK}SezV7!U;j#d%wlh5aQPi!m8M;9QEpHAp7gM|L`0mX7%r17NuFIy3 z+|A~?*O>sq@jIA-msWI0e1wYP z1f0};`y$fmkXhNMiv}g303tAS+QfDy`5`JvQ!+SafAsJ2qQwwjGDAwtd7)BD~;it*=V>pgMnaqye}*6zuAy6D@osE>2pw5AVSH6F>7L4 zl&5+h*tL!G543;KP2{Z^Lpl~U;d&YKR=aruK^T-UaMi%r|mVIBp4QKLs~yt;u5 z)0Yh=KEv$BYMxa|K6i6|T=KK96XO2j;Kh`zTREm!qp#fUYfQJZ6W8Lt|0XG~A5$uR zZDlh8yD-XrP6@6UzOdjPr7V#Oiyk9{V0{UyQx_5kI(&g}NdJz48U@7ZR3;k>C-snV z)0MxwB_DoQJ5~p9yp_)ayv{!D+WKY>;vptg#5EYBWk7|$@iZH=Q%yO!9*^y93$$L-upEzWY9DDA2}=Gjf?4 zkRFyB{-B;!oBapUrTg=8IQOf~|7K}j^~?O`))w}-Q}-yQ0f`N7ozKVgp?#ab#X}V; zzuLgt!pUsuJ|h$`KbzZQb=vnb^qiT$V0#x5S>Eu%ejbifBs^t8L2Pe?KNPJnO(fFq z^$Q+8+zJN6JVU2?v(}ck#EC5?G?(>AnQp8}M>sQm+JsN7iX$-sWD8<6oQaeZ)W4<| znMc(ggSLr}QT9G{Se#kl-)>h&Bf~6+6=f{AQ`WEr&g4UO4REs#|LvsjQYQC@!^hsx z-kftNjTRhiCG3Mklg@J0b_HFt?4)j)UO$QO$>JvF^$Zj(JGzKP=vy(+HVL$I`#rAtRPy7T zYORl8opi;U1eM|qg%1l`O#qv{1BBolNWFEP8!j%~pHJH-uGWZ%iq)BJ25E)b4*DWw z6nzX#<6k`!elZ9mx{L#}2)EsFHb12B{p01OIRL10WG)I>uD%IjsQ&l5nE|fWse<9- z8qhWE)JVwC%mCgxG*Na)Xle7KO3}E$I_tT1I|{&r|K92(m6LuHFBYY+P@U4>w@6}S z`1BPBViYqvQt5LZW*He4XoDw=h)u%YzEAh_vn5y`>k=MQ^SvK?AQY}d4wGf;D0|-4(XCk0 z+L(y1>{($~>|o?1=u6rv#GA=gwH%-5jid{w{dH7;rD>j{Sp7r%qO1O64Fe*74rBomiQUcEt-cU}A;K~1hFDCZ)+WrM#&%#qv}g26(TMMDp0 z!E*H?db`}^R+ThtFGmA!Dd6`w7vhoGC|)1myo$n*`oxh*uhTPOa$#>rX{h=Nu8BggS-*R3>FAGL9Q+%7Y#V0`Cy7_zO>1lBJo$Jr zeIA^JS zx-ke&y-8thjDMlwx0N5|7jK2@gE0HKrso03fR_AbUK9G7az2$cHeeV4K5P8I5im3x z?1P@jR!o<~o>j4P1{?h`L!a*{1Ugs+^Cg5jHL57Y7fWl-P<<(J<=lz6=a&{j4wqT1 z6iZTZD2k}VEbB{VN1d4Y`}RSlqyaEC(*5-;u&*1LPDQt@UUOr1AvEICnpPW`gAk?i zRHzQ2(x#2W1pcSo%-l%j-95R}M| zs1v9WbFSF5Y0YC`>AdYvr^@W<3LS_5!lU!xOesXa6$DyB7%iQX>;GMP>&0)Je9nodHlb`$Ou&;$^!PQ!NBkdzad&frbPjeY7^#HC z5?~=|PxVIrdIZGNLlPm~0C>5PA`&#AHEPMg1x5)kWD|te{~!}dzL=i>M2;AzK%&-O zkGE&X(#rI-W8Xtf@@zY`xxMbYR*plp8WZ~wJi0L$6B3E;woSf-x@U(`S0Oo9sa{@5 z)>V;2A!w?blHe2(N=vzKV>E_}EgXLfKY9J-lZG0^`l?Z%KHqaQh4b$P`kV_Y1F!KKcsN@N#OS7Gze0OEPKS)a%zeVNTYdk%;+1z z1VDd_=fOPSN?C-pMy97IqhneyvOZauLLTv=Q&)#IVT@f~%7_8Ud_B(f`!`TlW}{(o zt;;jLiu5E&Nyw#{Z;s@1@QWD1vPsU+fe>X`7Bb%^t#{=2(L)*FI7eWFH)aigKu&`9 zdg9l1*Ja16*ZtI_RWP+I`ikz^6f)yD4&tSvxyaear>T`Vci%hzuz4X`Ggl7sV5NJz zDkehVTK#m+pR3i0uQ!6~+NrOn>zoO5*6nhl)r~f%B0Sc}Rw?x~bDL2o&Z)Ngqd?qU zacw7O@R~f|&ew(f&TVd|iiHe2gYK*5%=8{Q_0XEub|%{ix`swWGIk1eDPfQK*Yn)b z_D1ir3ukgGDS2iTWcR)WX3pDwk)QW0#*%gF`7Hi8{*3|K@vjlEO^L#`{oeXKnHX!% z>WD-Qh%bi0rwE2-pMR;jeqco+&|G|LF>Qk#R!)*r7;nYUg$bIWJD~&pPS!)rwgYHW z7^sopC?w#DRJu#p944Jb$F;4Sum)4J+t&Ixp$Jjx(Uwx%8k{W`44Q1eE_4EcH4M1r ziyJdg0}z@u4!BD0iaxLrAw5qlI!4x;ud* z35UA+J@UR$ENCIP-X6}h&G2}s;8_hL$@QMN3KH+S45c?Lr!kwJEti9U-ZJOb6K{9& zpr^=8cB^a^V-lR?CM8xbE6mgTD49ke=T?bTCj-|e{l%dX&x2FoF#0(122(d?e5G+O z=i5u|w-UBHN>!^3fZ5GxO!mp|6Qn+1i*4a`u{Sk3b;R^#X3;nn<<|(#K)1(UDTLkd z=VQszx>%z?sGe{PAR5nL0+cZOCTOrP9DT6VdU&zsI99TjF_01$jkJ2L>HZe z%gCr^Vq)@_B~dX83oRca6Fu@C2%9xgGnI6M@ww4R<1 zDS5n;ySux!b>zhT{e4e~cqHO)2%kBsz&Ig&Da$(j84zrRI}yG$`N9(nWN2hCfW6zt zNPh{433P<3k2h;DwsoL6<7;8^xFr}lzSfr3)#zS@6VHK=f^*1#V4+}=-%u_6KkDxXm8*?n@m+rU zSsOnrj0TO%^e#?UE#TN8Lel&ykCjWx;qq|(choo6$E%Cn_bWWmkeQ^mcW7hKnVd=f zrrYm;>X+Z(58~Y(Yte~$I73o&^#m^y=u}Whgl`vqOZ9KtgO@Holx7Djht6B`@>#Fb zqC|#2Z>8&$^?ASBh9}{_ZV()_j|9s!jTGEVLV7C93~31%F|bz)68-K*W~DLJ1>R^? z$}L2;7uL6YNH`c>eP}(bwmS4HtGwEi=?+(8Tt~u^06QCau+aN7KM*7bv=xFi9)76H z@}Db~B~>qHR@ewz4rj(PQUr!Qikf%Q^oQ5eNOA^=B#RdwdDAuVV3mRagJlob=aZjV zpxk4EK(%TE$z<4^R;bb-r+92&GuTTO%h_V#hvjJ)!67eUU_an5m(~{*{Cp$w|E*Nx z5#Uf+uVMy}f}@<;gp>wq|D>mT*e_tqJ46npKb8A6a1S{O0UIC@!5*sP^JzSvUicb- z@dnT7W}sQ_#0sIVR`1*gpQzZY{fii`kK9)`q_A>EhaR0798H!Y+t^94Cb4$i(sL0T zaz@7(eq z&-X)}TwoQ(M)zH#2{wa3z`KI66@fR)?D?R&Hy82-jU0Ar5Z^?vLpBQt;g&aej4|m zvwjzD+ZshU$Ar&(t*g%_Q)SovJNmj z!~YT$vRyw*Ejua^9Zk$5tEqj5PF(ET*Ke6}ODVKYeWTHd$;hY`<@gM@8Xd zJBBtIaWe6M!`*MbZI~I%kJku=!!y3)#K;Qw-)KkXHBOHk*@Xh93Ag(3D38?!KF&bK8 zOESTSHcL!JtK<)2DENQ>0tj{mf};=%raUTRB;W_{p$!~Rpan1@0Sh@_ZVo8GpnnM2 zP=}yfA5)}LNtRO)D|{rRi(2neb&CQ?gheQYmla_hUZsMm{SlZ)Sa=;aT6$@2@}W+X z{vQBeK%l?k37&Kilqc|(A^?$)<#R*x`#&Et1?ZhW|MNd*FznyI{}2E04-XwW#K%a- z;l=(h|MD;Q?Ah}tfAS}67BE7jZ2XYXyYK4i)#W%ea~b30sgvJ*>4||s?fi#Jmp}bz zZf@?t{v$_^pLy)`=;-k1TW@^$*`+18wspqJ_g(Af6;L%9#S54GfZ3+NvdHE$8ll7cj*bq4Dto^H)*_f$qXfV#MaPN+MBr!= zPFFtf53^3$gjtZ3l-#qJxG+eFI6BKwmiCzwCx7=}oq?S~3sfm-SFeU|zj?*bbB&t& zPk(>)#Ib|Vzc3a=W05(z|6pl$e(~M6Z#eosPUqUCoi(L^LuE1yB6iu#q5R;1v8n2f z3))hxSSo7mx@Kh^x283#19q;Mu{p@Po=WfniAMvZ)(*QQ1`nK6cO(eDp(|H(3L}ZJ z3vJ?*cYJhUd}8>{?YZe`ShxVWQfOvGe!c@FmTnxwbibIl_D+qitXQoY(iBd<*uNHx z@?Dgq@GO5PJ=^J#yE%3wwrgArUn{Z$S0A$M$z`m=!9sOkE;!;#%?l<1?R)|?Ax0u zu&>-i1GBt1J2_mK92v-g90%G;+DpHFs@X722kR_C_Lsl9a_7$U_rCWH_SbQD%P|IB zuZy!P3@;&T)q<$h3iiDA+Ie%KA4j_SBBDV1ThYFMXCl4JSnwl6qdTgp*^|{)9X7SDk?_HX` z(^}T*$T~3bmfbEm-q~}fCng3*Mura@7{kXvtL0z#@O@UkPd{227&JyF%AB>Ytwd83 zd!Br3Xli_bi8X6##}1Ec-+4NS3WinYxc-fsx86R#K-bgbV!BR(jO-RGY&$*{{X({wsKE}Vo+L|PyNA_Qv>Y%cUi zJRm25L^9JIaJ{^OZzci+cxB2;CL8`6P;&2IDrexWNkIYu6!~Q>aA2_D;v35*vNs-u zk|W5l?7*iMeuAMKitUKowFwLN*|jY#NXLL13X3iT#~up@^6fwI)aE0BQ#aFbHl05UmArn@Hh$A7uvm(Dy9Qc5x6xk4d00og{5pt3rOvcB@Ar8<` zf6;If=|PG!0Roc@lAe+vGER;Cuv--Pvp@SYuHO3NKmOz2{_WqUiy1ll_U&VQzVy;d zfAv>?^^>3ceA8z zL-EqZpS}Ig$KU(j_YNMa438AAem2K8rr%kGQdP1InZ+l-c8M_AHF5Na8z8Z-s_Da% z2hN>)=HyXlX;J(Ce*CLz*FX8q-}?I0giw>RD$oba=ZGtb0K+;eRIfW4z!94u%!^@} z*sYf*vDrJdFr0VF!l)#+Bh9sqP>*t)7{N&1_wa0FX0qHJPAkPiF9wg;d}BG2qiEA% z@w9CaTzkSjud>Nh#OP&;t(5cSa^>XlLzwKp`s&5gj~)HhJJ;WS`z;7JI5<=;6=tWW zFPwk>#F@kAo<4K?*6jRT?f3u9*KS>J%udgi%HwcGX>m!Fzts*h`2jcL3Jx5-Vu)^3 zZ_XSX$Y{tXwMG1gYna}1fHi1h@*HCraW|}ffE_(shXRQdCq40jPAcw3uUy5p3s<=e|+ z=2Z1!^S%FNaq-U5+>N=>Xi{8`vS@KLgjTZ#vtva33);%9#z0|Ud9e{@13i&ggjnxs z8Arov#>BxnS`ZVLT5te9#*3CVN>!oX;shCcsyHU5_t5o(ej6K`W_yWGH5Pu9eaEco z`f}dME-qd>_w?j%{>HiE$M)=*J)Vg81DM#$AFw9N|Z)lF{ZCv}#kkeq$2WA@H@l*!s6{#RVZ!87J$PYVHv`(+afV@ls{5Qm>-$!7kr>{<){V_QKSm!&)9yR!cj&7rpwR zs||kZ8>ioR_4a@I@xLrD&f!JCw%RYg@c7ri`NZinMaC#T!Qi_%6!6T`PtVL~|Mj0Q zqM1E#Y|q6{Z_xY~pL_n>-?iyVQ>&xaI{W0rlaEg@%i{Wkq<7!1thm#keDVo=66_RD z<{J1Lcqt+@V{_Q)HDzg`{o2poi-LBsl;yO0rNpTft~ZH%FB}*cY#=*xX30PUW92iW z)#Z97A@^oHRVk`=sq%A*3Yi(3E-XqRzJ-CH*CCA)lF>siIf8HSNNc zvhuNZY0(XAP_sFGsewBLZFEX|=J_)hFaIsq3bk9fIAlc;{%TPH^ro^3n{7>pqvflI zGll~ua{c;sc-hg>Q3e1FVcVYB;Jx?W;}u*KJh7BI;Fx&}&p~G5u+GH6i{`-SQ0EH1h*QAoj@B@OJf6#9rEl{I86$2(<3l3zXI?76b zKtnX*6;c6J^OOFCaR+DF(J+6=NTd*mukC&EPz#WyDGpVW0t7@LGV_zVq?!fHsgXp) z2J%pZ6fkH18w}BDkP~b{1Ngj^vI@E;vawlC22#kwD>4w5=mFu%l`Eh}i$413BY=~K zR`5jLASV!LJ^|oYuU_Se)W<6VMaTyIAr}x3UFZ&~lR;|CNCyI1EN~#5rU9HdU-y|a zXDCi0jp~$1 zWO&fyL=a;b1Ap-sfAKrN^EASRD!*CKoEOKJXk-tR3HU$-^W__tpGKPop&pv&4 z_Kx7rH9hbX~b?$2grmpwi_2{74nLC**M;V1<7^WF)6(k)y zBo%IV*1M0|T>S&5uy6#zlpVg7Dc5SY=5u*0Q87gp7fBtczMy&d6-l`3Jf1zLh4h(Rewge)#Z6~Vg;+9mMY<82jzt^S+I4^=tvo5#Pb=H#QBGZzmR+qLF&8K!EO76mYZ*!@=* zgWI$1*cuns`^c$DLlYbX55R{kE@2Q(Yt0t=8C_U9vNbn0HZnXkzzshuwRzl!dToxQ zxY=CDnl&ecJDdb3!-6Rh59V$q!yrxXZld$S`|Zj~}y&$nwrixNc| z508st!O~0FO2*H%uC;Gpo91r2l0Sg7zq~lVe50z(j%kya+}gEQwc8)g&3-ahUB)k! zlc`vC#p-x6Ond}dVa62K^=hGsy$4GvJcVer&-r-A9~;MrBFn}>B(@S*<_9X}()egO zmk|dV=mgk)Gpc&+#@WXXedpIsJ#qTr*l6d&D`dro!;O$d#~U5Be)zjz_nNP;0n8m+ z$Bvf%$N%AnLxULv8+mGlW{Hs(wks9%zoPZx;tlktj<8iXtpf5Dt2%ku?dJdk=Ih8R zKri81kS|>LKy>jY(Tt73VeNnYKi_`qtxM&?prN&yw}kI(U#n!z$B*m}%!-S@DZQb4 zA^M|Z2Oqcdx*HZldFt#` zeeuPg{^QH=%`blQ+_PUhb^LgdoG{6poe*;kKCX0aVnX{@KRoUs?rGYmpMKD8V9e_3 zAt%4#PLk<}PmC5NwszRxIZlh2rMq?tDgZ2Dtz`V+KXch4pYD;Pr*PbI>GDUH@qwyGf(KuoCwcEI!{s<3_Rg7#JrsF{cyc7&~yhWER(#Ij1>7{py9^I zfW!hV!uz@H-I`cAB1C1gG3}m1P@MTVx2VMbF{*WTQK1HG!NA zDyT$TZr!>CaA?jG%+H-WN2NfPft+Nc2vq|Uu2+Jhft00Q>Y|{`MiFY^Cz*+Wz*<&- zw`A*w?WKUEFr=2lfWAWmh9c#;=broi_rFia$$qCt=sU&(-xP!V*=L{qmw)+}AOHBr zzyJHcPg%nDVzqP7IMKpAde~ZX9(8t>)z0U(X>n5(_8hUzQPXytt2`RCNL;rkG!+kx z1rlDgSUN@Enk@{On08`scwpeUuMK0KJUdfiZM}X?d+oJPu3Wmz*TmHbreU!ZcB2MrjX|_= zN{W?!Xt}uz$7+Q=Fl?0YTSO4b7O}}D&W=ls!GktHj!do%Z58s_OfkbL+xgk)OP?MX z8g%yW+4IQ-t1_7V-5-5#Xw>gI+I?3)ueL$fm_ zXeai4CGi9iV=O_qPOz9~(d5p^;P8HGVa2h<9(Qe$hg@)(Jv!_Rf%Ga;g4;+AL)^6Ucd2RF1;XEG8KKXd^!ue~ty7SoM z$ERm*`~H>FXO2wmapvZ6Y`~4{+Mz>-e)X&O?o7`ioC+OGh$ey2_>g9awO_&xch?rd zXE}?;rH56Hnhau&7?fLeS1fh9n=56JjLn9*JijviYCHR>)zTVoy>_8J>*}}RqpeKI zDvohiB|LJ%oMB{xI1)Noh{2Pfbz{q-RW}14y&I?Sqa#O$vzfCs3`RJ>k})w8;tT_4 z8TReX+nhb4CvYrmxXADva(M2!C!c?A&p=tIC9hv@)|T~^>im&YrLn1ktF<%P^0DKn zN;m}(7qc94)ruv-AEE%^q(QxjszKPp+`i6rnfhm!wS5z~-ha2C2gQI;27q}Na@8FpFVlgVn8x=-nizWs6p<_WXwJLG|p7;4PYr#hwBTt^Vs0N zcJ$h#BecC_>S3d%-MO`r%~eo_a+YsN@L&zTx9%!PoUoR6+2SzSu58uX@}WZqfACvp z@7!+9%w5H(pj_bw-wb=`W8;Ik%*Tmhox9!#O1SvPcvtQaZCCA^;V_}I35SXpuA2=k z!7thxf^KCX&l#bWYW(4a3#Oene0IJI#lpx^V6=T3O%WPi%$u%VzjgiA)Ttx+p<#zp zryrkRKz>Cv%xNgr3$bYKp3nm0EBRnr4fhPM4FAOR#{fWt5TaMY8^Mq)?E_1PE|x)PnAUQdl{{ ztMRHUr2q}E;2@cG;(WXa4*&r^MJNtTB3N7T7RbaU{=`882%te863Gl?KvA3sIWff{ zot#hr3mg)`6UY(*5%2+d5R<6NS71(%G6N|@z?mwDP>>pd&yynEz)u;#0X!iojUocW z1aAserNBnhfFNm3elR2_PfE##iyb)A1Yz=kgT#{vnMns*Y6M|q6wrTk zK#|fdOF@cImM3WQ~uIF~>4J7GSo~YIB7E zyhH+IEgU8>9JOp0>)#9UBn^c>UoLj?hFzc9TRD8_z=_k7Bjei96JtXoS>F@W4ji-L zctazZ!chCf@hPwU^rx3@EG*!S1Exz%5yc{oju2g>VrWe(qE@8f0Y@S)j1_-}t> z&%Of-%S$Jp7}SKDu;y2AkzD#1ZN$?49{HVkgaV+Z6ms0NcJtQU)urW6<~jS!5nCDuN5)9y&`J_XgchbsW@ynbG0R^IuLG50o&(ue zudZCb`sw)C(23KB_Dqd@eBs*gP-SXzuu-qQ|L$!zmQJ4?A1vcp3R{w(%$B9N?KmOgD`wk91b@tfROSft(?qDTXU9s!c1%#ZTLGALT*^3`Gm?e%L z9Ud%~u3f!REHd+pl@v@9f=RhW^pX6%rn9$=pkF+p#nfOomS&fNhGF>@E{NF;enTlhg62KHt@Z%jaiCcBZDl{2r zPRhC=L!w#4dcHDRK)Ex$(E693UYVX*a+}GO1!9g7JvV))df~&Rk3PO0a|^2L&d)7z z|K!c9wI6)v#WMxWj!^h$KmF;utu`09W;~{#IJYp5(xutgpv{B2G09t{<}Z? z*PxGp!9kk;=Rf>24vI%cCo#z%E@)VY*^Z|>+T`9Mex*2c;p8iNRN>r-mbIISS20?C z>C@UPFTaMvfRW)*ZqGb;kn7cjV&}s9xBmI>e$l9}Jo)7K$y0~fpu+Ljd+&H}zWEMg zkx6Q5%7W8fnAa|Rcm?xNOo7qDj!zCf{k3Dyy>MW(AS8R-oTI{uL+4lTeC&D?FT8kY z{{f)^djI^D*M9Z^<|Hi?TTFX6a%_mpC4np#LZ0w3lHR-W#FfIS(?=eELR(s~P?G-Q zjaPsApBLF$V&yL6OI*CktvL9+Z8af1H-Gbq3jS;d1F{Du!(x6%<-&fPh5!Xazi$s* zwTAz?TBF+JT)JLqcqr&>!^!%%2J>~sF3cqR;gp=yy0>xLY_~;zVF=;i4oL3rEh3%=bcsx5Tj`gXMyOCJr3QRnrUP zhvSDchU-G%fD8bCOinZ^2tx4UM=ljQzmdnf=&=_c7<5~39TPnimL&<}p_gO^`^86ozM{^*Y`UAly* zjMrnv2AxQkA*u42Y!5a&4}}Sn9nNy4kS&NaTHM59=vnSjw#DTgcq$imzi!Y*F@W~v zVFlq|OYB3h--@Oqa#=j{w2(-{V}UWje`M3p>N~-Pz10 z!gsg<;7&A0%o`EL-CQ&8A3HJijjtbN7q!vU&YU?2LTrS=8z3LL0efv;KJVnGw88Qr zj!(Y!`g`JZc=E|JjR>Ko)BJ5)?xn=Se92UmwKHz3ja7UhH{dqsKKFxk3w!xrlV2NUw8 zQP*Gj==SVow{c~9rHl;dw`Z1?YkKTvhO$E=Y&Jq-^il+RpS6X5_)iEiI_F_n2XULm zRuq@##8`~qnZ6$R9GqyLJiT{#q&zY_xNrZSe9n30tye!eFPx)PMve~+ov=;8Q2_bI zjqB&ne~1EYa%vcNEtfA}zIgGX>Fhgk;usooRv&lYDQQsesKQX`I+|8^3)Sg ze1jE%<$#{WdXT`45Nn&cqwz1E(Bf(}4!bUM`X1XSvmUJILve1eap=H!wO*gOJR2Qj;$Z!86HNa9^3NZ<_Ve2di!K@;4o5T^Ep{zt?gU?Z?uC%!EI0!* zv^Rfwdtm`%{Ss3whlG(g3^Vug%O4esanNj)3h{xxnbDB~5)0zNojL8*pIyN5MFTb( z54>dqoosTBN_@PGXPncEHZX*6VJt+o0N>o6AFnLT&)&WRlbG8xdSL%3L_wUHoo@W? z-~E?M=jWb(_T1592Wc_LfADem(|`K;p-70ZtvV#QKq1h%OSVJ zDpOcYa^mJ70SZsktSJl+U6@DjN}$JKSg9IL0tOdO2quZ2l8uJJg+r2jJRdcI{1Q(w zR#r#L+Mz<648UamB|p2xh$YOVVggOB#)DBqk%EB1TV{4CHpri1mQCDLcvDMC6Gkr|j&Clw3SP6q1Yi2x&!0S>JoPSs>40yI#SZRaNdfkushB~Y9c z0vQPWlyG=b3!p%c{E{-{2O3hD{7Hl&vMky732s1;0SMGfAVP|aBSj#A2yQ8tqb#qW z8)s~wKZz1^s_R1NmL-vjBoGp1x`aS8NvC$1NQ90cPKOeKAX2&mCW+)ELLL@8`I8nA zA&^c3Wx7o1KOdX|P!*a>IP?W^dKu$PI-NwE>M{}_`^l3hCFSvS%t#=P=+Yh4501ve zgTRTnfc-HPEAZ2ig@qEQR=I3|Qveuh3vytXAZ*3p61I(fRyQx%5$#ACNv_Vc#vF*@ zF=nJeyV`DYkd+%7huf{jLY)sy=ZY{~1~GXcS;1Aavne#>$%L1PE}hkZI9ulG%D3Uo z|Igl=H%D?@37(OW_lX;*D%6QO$>J%BBGs$b(Ym^4w5GYX&Bo@Bwfz8l*xK5DoZWwR zXKhy9GdnZg+S#V0rX)%f#iMvtu@2TLc5b5Fm z{Q2|iz30!Lr<0k6Q&bKMs@xsNl=kVzb9e8|+mQ^0$8s5X434Ia%^g%_ia0r4c>esv z&`<%E3Sx8C1ZRpH8%41ZS880va(9M2HFD|EE2`pwfGk1{kE$ZPvCG2wnFLMTtf8ca z=avgCV)0vd?xP@G+pxw)Czc*8aK-!469;lb*8IbzXgrokC9%5YIOXEPZO$;KvKb_R zUQyXoI;UNYI;|m0qt|e_%q^UgD^C2tt$TXLIK=7tgo()jf|ny zDs2=u*643SB922K=E0UNI$z#E|Bt7*7?xk?JcbKHsNB|YYg@17 zvYASW{(z(^7@-4zO9#`(FqAxc)BB&YfD}=QTV;HCaT{nWc_4oL+Xts!7#}&Ca8|4f zKfiM4!~4l{4)uc*;d&925e|;QS~VxZ4Y)1ZJZW%J{)9aUcf~9w`Wg#0M9ya^q4ad$3g7 zNX0Qbs$)M^!`WOKf6FkEGUXJj(OQ%FAj6d)4(_wLE)sDpJ!EkiZ9KAGT>5AK^54)W zu+HM_>)-tBecKvJr$#s=oM&^1J5}&NA~K3qDb;V!MjX_m$wmS<+tqeDmMW);)6>Jb zc;wWHW3RmQ+{XIH$wcHZ#wltFxq9v9m8-YUoq7HHKl<+3=PhpVynWmL`On|JeECi$ zmFJ?CR4&UL!7ZLkYsK05wORuXc`}}jJMH3~x#jmix$^R<7qfXLCvL-OiH`{z$uGf; zGE`qwSn-{?lMc2*i_iGKgRCM4-a)^3X{U2{OPkN zFMPUCZ>BUDLH;3zG;B%$9Ohob(eAKdyXm^D z${x?HIe5|l5Ih0GJApL%MOTfLgFl3Ise#BroZCdfPaf zsvOSYD_J}Unhrd5>3{_#3WW`&B3jDgE0B37fSZQE3n{6%2BnF^-V`rHYCLsCfT?Ri zxx@omqe?vQAju2401J{H8pJ?hfRl?)yc0A8A~nJJ8HPSm0OHdYJZU&yfXsoGU;N@1 zoU><-MHlp=AN@#oV0K`hfBtz=vgLvRLoVGt^w&OOH6T#&SlVf^Em^NM*dRbD09VGP zYNEUol{FI~(;=2wti3WP()R{FrMu&QYlX4O!#gNOK5_V*h;{A^M&*AFyLtNo%T1A! zZM>v9LaqIBEe`}S-PnXm;CXcN8w>^YFvJ-#n; zi-yUp%N@{M5?!h`i&#ee<&VA%-fSbsqR9sf%Ma$QKl|2eqr>9G>h?`^nKG*prFCO?~*E4$KgyCt!_?5+0VTX{VDhOu;n#S*fk$f$fmYDFvR;0kzvWZMGz=@VKiR zQ!E2J1*@qp#X(|;v)f@M7TYoGLxvdhcW$n~|GVq6b0|==qKv`oMGGxv`5WIjTzH)m zNz4+o1!j)4X4OvB8<7NZPCMRs;gwTwe)nvY4QR{y?2ENu{`$g=+x6+`m*?(t&i5u4 zvt+U|zoas_3D4p<4kyJJ`*37MoCjJ}rqPXhrEaI|&5dRxU&m2EHdSGdkNak0@rKht zfR41dxM?jNvrnBm^wQU|+PB!3Hy*zCyU%mE2`gE^`%ydAXd?#ES-3pJwrAHW|Ia^O zs5LW?gR42C74blD@=*D&{^^^!5$oWj{rcC>e)`EL4esPr#~Vr-?!fFY+MNnBV z(hoSk|7o7G!)%h&HMSGcbuQE5AsWGpcjrWQ3kCZvK~U*uTIdNl{p5uW7R|Y8?iPY;j!O3gCTDnA z9jSR)l3}k!M%Z`FE0cySypw?W)Qi+evw{-%B<-kpcUd@l6H$jW=&-q}?mRgZI>uD@0gGE>{Rx6B&L|xDQA?#C7DdpyM za0u;$EY>}^W?IH+4W7W$iP-FH^~6zplN2V$3opEBEiYI<|9Sb=joX;CVJ(6=o1D~O zhe*vaU4~)oB`KqkokjF7rd`W3H7Am+hU_YfMJpyA(OA0Wz!fDA9zJm5)X^I^uPqlJ zMB-6g9N2A+CQ9+J*IY~|OfAZYM5=}r`#|JF=z?Ys1(JA&Yc(A9!H*o8I)5(m-g|Q& z{PF#4=HWSLt z*Or&o*^22O@q8e0>i}*k>y?FLNAicyOh4FIeb|05Tb&zDjOKIkl@iKGoF>J`4jnm= zOfKBJTdLq*CB@a@*yBP|Eu_&35H`cUP_0$1Rnw`~Fh^Cg(Ob7>Kl$Xdv2i4pQy5KW zGkE<*&DT11?D*=#<&k0f*rD<9;X;1+VH|%6HmZN@-bY6!CMOPJ1=Do6mX3QyQjB#p zei$id((KeEkwqzy=|b5BM^c4cHjT3%@c_gXc5vAoz2Z7MPk{8Pc3-2OKB47-Ra5$MKU0FbP}|A2~k#(hKKDCv7}r%r7qgmw$Mh>}W7=-ku*FJ(P)O zoL0HgO1GNjOgvjg7U4#Cr_EtHhie$wiilvt!)8mhZKbj5Sx55Xlv5(T@vy{A_o#ZK z7_l?4Mq|050_Xkz+yCxg;rk2UV)ySZ{p{cWU&Fams~go;wS>u5sk}CQaHJ+~1Z;dp z-I`l|``rtT$Pl;Oq!amcs}O0#mu}qp#@D`%Pq6%ueRz5#o8ux%ju6Nu4?XYTfx{aHXJ31D z0ASh7@bk~T=rqdgg`PkEJTk)4(%k6e1Vf$CTPoL%9X-e%%ZX#LmDQrSL5kwZWsrfb zGG?cUT=7n)hkN7{7dtIiu3S5IVrZjUOy`FG#lL+0(pBpp-u~$N&Dj+9la?xn56-;t z+AGJ87EYfQZ*@g{KVYl3xE6~|vL&D`p;_Rd`XEu?4K_8Q-AO^c;85XTu|k2b)!xJ4 zibxr<@3)!|Jl!eMq?q{keC+HUDSi{G{3ZPg~Rwm>rO}_bz`_#iDmE= zhDTmUR6%mrF?EGEOP8h| z%*{Vsn1yRm%_5@}HL4q2amAf{I@?#B{Qk98O<_pvn5@sq62EAGRcwA zSmbUS?S2}o!jwog%q#2;F{NOTU*p6B3Vs|S4LER>p3M1`TC-licdxOwHp49R+H0>Z zmX04ge(3Wre*e~6Z=nkbN>9y3vax5<^D})D895(wCk}dZepVL%;Doh6JuOkF<~{wa@pU1bcIPV5yj>L zJ27c)x-?I$v+$@QD?&EeYL=KwYqgoN@e!)b$)eHGp$Bs%D8Q6{_WUqYaVB<-#1rET z1I{#x=NQ%v+K8dTDKAzSaXKY}3hrufRl#14tdgwQ41Z>CW`JfZ$vlr|ey-hu5mM`g z7+0sWBQ0fhzPST7Pzs8@`+x(Ig4))S&a5`Jc(S<_tyWq%`zsZznMBg5a%~MtY&!dz zRUB#EuaC7yIr>#fv=iAe3uRowsz%=&%0c z#~0td@y$1WGM#UK{OPSoSKiTqIJc&!}cP`=edDjRN;7hZmO^2}N8juid=uYa}p z*@xNn_>E+C2<_IU=k{kE!_BtXS zQ>=C7SmM=l?T=Q0iRuc~}B$s*zx#HVzSusN;wmh0@f z%*@QtfdgC;B4REYcH2IOX%a>&%S+r;6-&esZmqZ8T3%b-pdt9;3wRr6;G3qG$aWJC z#j#eM2Enl`cb~Dn7g?&dF5k0v+wNXX}iv?*6NsCkle{A^lc`iQ_Q z_6dw)F^A=Bl)Tv7F~+cBzs@&sNpcK{Fk+Qz9LpJjPfBJphjYi6i(w-;RDx!A?%~SF z_(Aa(k3U}`>us&rAV=%w$=aX7AK{56%QLEzTbb;j+ z(V|>y0Z{j=W5*7W2AW#Y)Y59{xnxRZ6c!D|2A=V`T!a}Jn07n~KY)<|25GQ#F!3XJ zpUGzFo#|YDJem^z8q44^8j4X|plJkTC23p5jjEc~*-DLbRK@MMN~&?+Ic$^91BXII zf+LrmTv^u0_IC1JGIj39Jjz^BMB(LY9U8QYAtp( zNQokYnz9!!*7N0K9+l;|gl6=!(tKpplDR{>(4TEPH} zMTizbw`Su%krOr9Ou1fT!x%;--Pw0S*;_7E>ctYum!znyBdf&{8^|Zmp5q7vH}7#Y@95sjApNBYYT(03_?TKkG ze0%M)ABo6l{?C8+H;fb*8kiEcyy$-Pc|3Xi<~P4dWb*&w zum3eoPji%UoiAqv{DT}*uX5Sxqoe1rk)D|;UaDNK7RUX7 z6K8;LNNtM7THE~u|D)D2nRL+eH{c5sCDfyA*x(^%LLz=CSqS!MA?# zFvdb4%Cc3?I!0SugCLj6SrMFZ)nE&nZ4o#J7pnC;xOK!yii6Xi_}O~NDr64bS-OE4 zDMt0n^LH+6EY(Wo@kGA5yw0gOCq4wXWr^yR8rsR2Rp+KKj@2^XVZNdE3ZSgq{Gx0Y zFarpLJm-ETy=ojh)hG@^MMRtpyu**+V<~=nW&J<>X8zmXInUHP9L1S$?)c%?Z{NOo z^~)M?_exTiYh;N_a z6Q`zMe(|%L?fLo4;o)zLr>ad`uE4@SHzw#*p;2!yv5HJjJXfrK@WDqp{2JNOMx9;3 zSTdDIg_TUCNf=EPN;UStqYJBvk3L;Kc5G_wV19MA{m#26ol5bcvH7K?w|{s4g%@5J znPNlRzIv;%xcFdgt(~8k`S_Cf)hu$UMt=D2LN!;3Etae64LfO1T)OVuoL`S-5B&ZE z7Sco_f9j))q7HK+C+b`?l0EeHyQ`eFjHD)PIriH~q!PHB^x8tx&opD~pSlAVT1+US z2Vtq!UqziPZ&pD>CypGSdU)`DA`(CO_2Y-X zF)?;HW8K7%4-oyvm}2u(8!C)ny?X7=t@*pND~Atb@W9?(nsHOC)PDZ=zx?RJ zN9Ue9^W&eKUtO_c>Ey-Fui;i3*_2hEvB+A_ML%VF6`QFU)WGd1vTQ6xzg%A3Sj08( zsFfVD-hA@~$6lU)uv~8>TTZ6DmRwz_wxYG?&!70=U!H`mfS+GjaPqn6iIWG$vbAWd z(5j9Z=v_8Pem_Z`E-i5Fi!m5fa_YRLvC9#SpzALq`drr4@d=CCLjHj1_7 z_39TFZ@u`!xDX*~A3ZUO9^})Hmw)-2->z4de)8AfJ9Xk~lcTF|{g*!?f73=-k#VT; z=*i)q{PfR9M(%(9(QU@etFN8@#y6+w^bxCEV<(AaNt|22&NfSx;?0{YFTOmIN?3=c z$G`QRuMZ8~dob6kl%wp1;msMwPAl-x0umq>KTZ8)(DAo#-76K#w{IhE5%7T~DtUNf z_GH=L$fOHc6)}U%&ppHkESeB$*T)%{*q5SRVH1*L_w2WU>%Q+CY2om@T+B11LEF;S~RM)dIR_97I??7 zQ{O=Wk0zuM3X-MO250fp$Rwu9p33X$Q8ctfdaIe?u~4W z$r2ljOpK0w>sx>J{vY03URypeabV{3%)k4$mkJ{V>`_zM)GIH(^vY|moH;o|S)A|` zD@!xw_2~kdMkUeM$q!MpNppEY_ai0{FJ>Swtj-4yOw)OBRiDp}ef{fi3=d~;Qo)Yy z*)s>>tmfyc`CJ6sfys$O_lFl(L~MA90!HEQfAI0u>zAH8fBakDKL3O7|K-?t{Qf=I zbQ%E~>VN#yY7a&Dfue6$*r-R{WZ8|XT*;Cd9?R67k$8flalej5h?C6PqgI}=pNc1j zhw!3q6^kX99L^4L&os`6nO?ZFX`pCgN6nHk=rUzq>icYk>JX!488YpBs~-I*&FPu;sai-)8Zw~uR^gh3*zSe@pH6DP1z!>S6c zL6dWT4Y(|B;1fm)%M^G{?!buDI40t-|I8*ow{avBc}Ak#+JWb>cnZc0s>a!ZkrVl1 zUVH7@bu=CwL6U6??8h#&2nQyCovB*6 zgr<+a<?;j71D9B}9~Tu~AsZ19dc;ucuZx%pFTKs_k05kURJ0R5tcH=gY^>X0207 zGGO;$J%cHhg)t=xYIUqFVZlsWB0r!TjKrEWSgdJ_G`JFrbJI$eA~70+iEkmSX0q{E zwm}0Tr68`fDwu&Ww<5QQKG7<0&HTew>B{BVb7w{-#w=J0j*+lobnx)xKmTw3>cD}S z>EqUcqgKN{U2fdD`2{_RyVV)c;=T(;nBIWKp@Ga&rx1J`a>%LnV6OPdh5O(C{vnux z7hfHpp7}oREGpHs(oHf!Hf;9I*R9(HID+G`WB1UgQYdBQ8r4A zk1pJK{>87q@Vx9NkeB%|GgN>6)zRU?$%9`T9?M2D>5--77vK5qho4`(a{RO8H{W2l zt8wn7+{n}!uq~Gwqhp2Xqxr%xOH&m;2rOM#pf%z4TM_iQmo8s??#4Hte=dqm%^Tl3 zbL`~Ag9lusHS}od?KpBJR z%4p=e6qdjmN)S8FGm%I?M(ZkcX<~5alA~>}t(GobyfQU0a_ZFhaQ?MR7w;}U_=HU= z1Z|d-O4V9kv&OkdXSROz%FRE#cX4r{imMN1E;_OZ;k0oy4!q!0);Q>4OKuSg^frOu zrdSik4E!mIM4sYHL@lk`p87~QP;!{!vK1`{cLW*a0iJj~i{!J|hjE{pj^|b^{3#Nx z;m}QG$5zruxUh&c7+}dVu4Iu!JbL`dVL0M8I|NC**$57_B1eMcmS*uUiIgHG!lxga zn$$4$lNdZ?;B$~o40c?BsY}6b7dXfT8Xq`uEls78tP?{RYh(2#mMElWYmB-_F;8dA zv!BFbAbfduDcjy9mrxNV5vkI0s4CVJKvQ)DiNvs6^F%HnLlexk1*W0~f77azG>1

q?23fI%8e4QP;$0)?7D@=0c7l7rg3 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 X@-RGjJ0?j90sMRvmKG`#(DD91z+(dd literal 0 HcmV?d00001 diff --git a/.github/pr-assets/angular-three-signals/trace-waterfall.png b/.github/pr-assets/angular-three-signals/trace-waterfall.png new file mode 100644 index 0000000000000000000000000000000000000000..7d641db1a6d0a3180bdf2d30ff032d518af5ae01 GIT binary patch literal 267760 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⪙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

_ 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 Date: Mon, 13 Jul 2026 22:46:14 +0800 Subject: [PATCH 09/12] Update hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Tomsun28 --- .../dto/observability/MetricSeries.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java index f12e3caf94c..b6c884d11e1 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/MetricSeries.java @@ -1,3 +1,22 @@ +/* + * 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. + */ + /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with From 30076e6ea6aa54b5b591ac76752c9f3b66a03c93 Mon Sep 17 00:00:00 2001 From: Tomsun28 Date: Mon, 13 Jul 2026 22:46:24 +0800 Subject: [PATCH 10/12] Update hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Tomsun28 --- .../entity/dto/observability/SignalPage.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java index b0ca312fd4c..99933aef137 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/SignalPage.java @@ -1,3 +1,22 @@ +/* + * 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. + */ + /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with From 2106bbb0742cbf2e4eef2fa5d47cb15d73c8bb15 Mon Sep 17 00:00:00 2001 From: Tomsun28 Date: Mon, 13 Jul 2026 22:46:33 +0800 Subject: [PATCH 11/12] Update hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Tomsun28 --- .../observability/OtlpMetricsInventory.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java index 46d54c057d4..8f2f1526417 100644 --- a/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java +++ b/hertzbeat-common-core/src/main/java/org/apache/hertzbeat/common/entity/dto/observability/OtlpMetricsInventory.java @@ -1,3 +1,22 @@ +/* + * 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. + */ + /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with From 6a53e1b58ea561d949e7fc33c97b51a759d352c5 Mon Sep 17 00:00:00 2001 From: Logic Date: Wed, 15 Jul 2026 23:20:34 +0800 Subject: [PATCH 12/12] fix(e2e): pin Vector image for log tests --- .../org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java | 2 +- .../org/apache/hertzbeat/log/alert/LogRealTimeAlertE2eTest.java | 2 +- .../org/apache/hertzbeat/log/ingestion/LogIngestionE2eTest.java | 2 +- .../apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java index 2dc2a2c82a7..9957ce417b0 100644 --- a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java +++ b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogPeriodicAlertE2eTest.java @@ -70,7 +70,7 @@ @TestInstance(TestInstance.Lifecycle.PER_CLASS) public class LogPeriodicAlertE2eTest { - private static final String VECTOR_IMAGE = "timberio/vector:latest-alpine"; + private static final String VECTOR_IMAGE = "timberio/vector:0.56.0-alpine"; private static final int VECTOR_PORT = 8686; private static final String VECTOR_CONFIG_PATH = "/etc/vector/vector.yml"; private static final String ENV_HERTZBEAT_PORT = "HERTZBEAT_PORT"; diff --git a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogRealTimeAlertE2eTest.java b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogRealTimeAlertE2eTest.java index f7f257bc9be..4ae973b343c 100644 --- a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogRealTimeAlertE2eTest.java +++ b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/alert/LogRealTimeAlertE2eTest.java @@ -60,7 +60,7 @@ @TestInstance(TestInstance.Lifecycle.PER_CLASS) public class LogRealTimeAlertE2eTest { - private static final String VECTOR_IMAGE = "timberio/vector:latest-alpine"; + private static final String VECTOR_IMAGE = "timberio/vector:0.56.0-alpine"; private static final int VECTOR_PORT = 8686; private static final String VECTOR_CONFIG_PATH = "/etc/vector/vector.yml"; private static final String ENV_HERTZBEAT_PORT = "HERTZBEAT_PORT"; diff --git a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/ingestion/LogIngestionE2eTest.java b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/ingestion/LogIngestionE2eTest.java index 30cab016d16..57feada98ed 100644 --- a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/ingestion/LogIngestionE2eTest.java +++ b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/ingestion/LogIngestionE2eTest.java @@ -49,7 +49,7 @@ @TestInstance(TestInstance.Lifecycle.PER_CLASS) public class LogIngestionE2eTest { - private static final String VECTOR_IMAGE = "timberio/vector:latest-alpine"; + private static final String VECTOR_IMAGE = "timberio/vector:0.56.0-alpine"; private static final int VECTOR_PORT = 8686; private static final String VECTOR_CONFIG_PATH = "/etc/vector/vector.yml"; private static final String ENV_HERTZBEAT_PORT = "HERTZBEAT_PORT"; diff --git a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java index 63a04c00bc2..d56a46ee6c6 100644 --- a/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java +++ b/hertzbeat-e2e/hertzbeat-log-e2e/src/test/java/org/apache/hertzbeat/log/storage/GreptimeLogStorageE2eTest.java @@ -59,7 +59,7 @@ @TestInstance(TestInstance.Lifecycle.PER_CLASS) public class GreptimeLogStorageE2eTest { - private static final String VECTOR_IMAGE = "timberio/vector:latest-alpine"; + private static final String VECTOR_IMAGE = "timberio/vector:0.56.0-alpine"; private static final int VECTOR_PORT = 8686; private static final String VECTOR_CONFIG_PATH = "/etc/vector/vector.yml"; private static final String ENV_HERTZBEAT_PORT = "HERTZBEAT_PORT";

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

*ZjR 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