Support OpenTelemetry tracing
Closes #28581 Signed-off-by: Martin Bartoš <mabartos@redhat.com> Co-authored-by: Steven Hawkins <shawkins@redhat.com>
This commit is contained in:
parent
10fae5de7a
commit
5b83a7993c
18 changed files with 802 additions and 9 deletions
|
@ -40,6 +40,10 @@
|
||||||
<groupId>org.infinispan</groupId>
|
<groupId>org.infinispan</groupId>
|
||||||
<artifactId>infinispan-commons</artifactId>
|
<artifactId>infinispan-commons</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.quarkus</groupId>
|
||||||
|
<artifactId>quarkus-opentelemetry</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -5,8 +5,11 @@ import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
import static java.lang.String.format;
|
||||||
|
|
||||||
public class LoggingOptions {
|
public class LoggingOptions {
|
||||||
|
|
||||||
public static final Handler DEFAULT_LOG_HANDLER = Handler.console;
|
public static final Handler DEFAULT_LOG_HANDLER = Handler.console;
|
||||||
|
@ -17,6 +20,12 @@ public class LoggingOptions {
|
||||||
public static final String DEFAULT_LOG_PATH = "data" + File.separator + "log" + File.separator + DEFAULT_LOG_FILENAME;
|
public static final String DEFAULT_LOG_PATH = "data" + File.separator + "log" + File.separator + DEFAULT_LOG_FILENAME;
|
||||||
public static final Boolean GELF_ACTIVATED = isGelfActivated();
|
public static final Boolean GELF_ACTIVATED = isGelfActivated();
|
||||||
|
|
||||||
|
// Log format + tracing
|
||||||
|
private static final Function<String, String> DEFAULT_LOG_FORMAT_FUNC = (additionalFields) ->
|
||||||
|
"%d{yyyy-MM-dd HH:mm:ss,SSS} " + additionalFields + "%-5p [%c] (%t) %s%e%n";
|
||||||
|
public static final String DEFAULT_LOG_FORMAT = DEFAULT_LOG_FORMAT_FUNC.apply("");
|
||||||
|
public static final String DEFAULT_LOG_TRACING_FORMAT = DEFAULT_LOG_FORMAT_FUNC.apply("traceId=%X{traceId}, parentId=%X{parentId}, spanId=%X{spanId}, sampled=%X{sampled} ");
|
||||||
|
|
||||||
public enum Handler {
|
public enum Handler {
|
||||||
console,
|
console,
|
||||||
file,
|
file,
|
||||||
|
@ -91,7 +100,13 @@ public class LoggingOptions {
|
||||||
public static final Option<String> LOG_CONSOLE_FORMAT = new OptionBuilder<>("log-console-format", String.class)
|
public static final Option<String> LOG_CONSOLE_FORMAT = new OptionBuilder<>("log-console-format", String.class)
|
||||||
.category(OptionCategory.LOGGING)
|
.category(OptionCategory.LOGGING)
|
||||||
.description("The format of unstructured console log entries. If the format has spaces in it, escape the value using \"<format>\".")
|
.description("The format of unstructured console log entries. If the format has spaces in it, escape the value using \"<format>\".")
|
||||||
.defaultValue("%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n")
|
.defaultValue(DEFAULT_LOG_FORMAT)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<Boolean> LOG_CONSOLE_INCLUDE_TRACE = new OptionBuilder<>("log-console-include-trace", Boolean.class)
|
||||||
|
.category(OptionCategory.LOGGING)
|
||||||
|
.description(format("Include tracing information in the console log. If the '%s' option is specified, this option has no effect.", LOG_CONSOLE_FORMAT.getKey()))
|
||||||
|
.defaultValue(true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public static final Option<Boolean> LOG_CONSOLE_COLOR = new OptionBuilder<>("log-console-color", Boolean.class)
|
public static final Option<Boolean> LOG_CONSOLE_COLOR = new OptionBuilder<>("log-console-color", Boolean.class)
|
||||||
|
@ -120,7 +135,13 @@ public class LoggingOptions {
|
||||||
public static final Option<String> LOG_FILE_FORMAT = new OptionBuilder<>("log-file-format", String.class)
|
public static final Option<String> LOG_FILE_FORMAT = new OptionBuilder<>("log-file-format", String.class)
|
||||||
.category(OptionCategory.LOGGING)
|
.category(OptionCategory.LOGGING)
|
||||||
.description("Set a format specific to file log entries.")
|
.description("Set a format specific to file log entries.")
|
||||||
.defaultValue("%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n")
|
.defaultValue(DEFAULT_LOG_FORMAT)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<Boolean> LOG_FILE_INCLUDE_TRACE = new OptionBuilder<>("log-file-include-trace", Boolean.class)
|
||||||
|
.category(OptionCategory.LOGGING)
|
||||||
|
.description(format("Include tracing information in the file log. If the '%s' option is specified, this option has no effect.", LOG_FILE_FORMAT.getKey()))
|
||||||
|
.defaultValue(true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public static final Option<Output> LOG_FILE_OUTPUT = new OptionBuilder<>("log-file-output", Output.class)
|
public static final Option<Output> LOG_FILE_OUTPUT = new OptionBuilder<>("log-file-output", Output.class)
|
||||||
|
@ -158,7 +179,13 @@ public class LoggingOptions {
|
||||||
public static final Option<String> LOG_SYSLOG_FORMAT = new OptionBuilder<>("log-syslog-format", String.class)
|
public static final Option<String> LOG_SYSLOG_FORMAT = new OptionBuilder<>("log-syslog-format", String.class)
|
||||||
.category(OptionCategory.LOGGING)
|
.category(OptionCategory.LOGGING)
|
||||||
.description("Set a format specific to syslog entries.")
|
.description("Set a format specific to syslog entries.")
|
||||||
.defaultValue("%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n")
|
.defaultValue(DEFAULT_LOG_FORMAT)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<Boolean> LOG_SYSLOG_INCLUDE_TRACE = new OptionBuilder<>("log-syslog-include-trace", Boolean.class)
|
||||||
|
.category(OptionCategory.LOGGING)
|
||||||
|
.description(format("Include tracing information in the syslog. If the '%s' option is specified, this option has no effect.", LOG_SYSLOG_FORMAT.getKey()))
|
||||||
|
.defaultValue(true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public static final Option<Output> LOG_SYSLOG_OUTPUT = new OptionBuilder<>("log-syslog-output", Output.class)
|
public static final Option<Output> LOG_SYSLOG_OUTPUT = new OptionBuilder<>("log-syslog-output", Output.class)
|
||||||
|
|
|
@ -15,6 +15,7 @@ public enum OptionCategory {
|
||||||
PROXY("Proxy", 90, ConfigSupportLevel.SUPPORTED),
|
PROXY("Proxy", 90, ConfigSupportLevel.SUPPORTED),
|
||||||
VAULT("Vault", 100, ConfigSupportLevel.SUPPORTED),
|
VAULT("Vault", 100, ConfigSupportLevel.SUPPORTED),
|
||||||
LOGGING("Logging", 110, ConfigSupportLevel.SUPPORTED),
|
LOGGING("Logging", 110, ConfigSupportLevel.SUPPORTED),
|
||||||
|
TRACING("Tracing", 111, ConfigSupportLevel.PREVIEW),
|
||||||
TRUSTSTORE("Truststore", 115, ConfigSupportLevel.SUPPORTED),
|
TRUSTSTORE("Truststore", 115, ConfigSupportLevel.SUPPORTED),
|
||||||
SECURITY("Security", 120, ConfigSupportLevel.SUPPORTED),
|
SECURITY("Security", 120, ConfigSupportLevel.SUPPORTED),
|
||||||
EXPORT("Export", 130, ConfigSupportLevel.SUPPORTED),
|
EXPORT("Export", 130, ConfigSupportLevel.SUPPORTED),
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed 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.keycloak.config;
|
||||||
|
|
||||||
|
import io.quarkus.opentelemetry.runtime.config.build.SamplerType;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class TracingOptions {
|
||||||
|
|
||||||
|
public static final Option<Boolean> TRACING_ENABLED = new OptionBuilder<>("tracing-enabled", Boolean.class)
|
||||||
|
.category(OptionCategory.TRACING)
|
||||||
|
.description("Enables the OpenTelemetry tracing.")
|
||||||
|
.defaultValue(Boolean.FALSE)
|
||||||
|
.buildTime(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<String> TRACING_ENDPOINT = new OptionBuilder<>("tracing-endpoint", String.class)
|
||||||
|
.category(OptionCategory.TRACING)
|
||||||
|
.description("OpenTelemetry endpoint to connect to.")
|
||||||
|
.defaultValue("http://localhost:4317")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<Boolean> TRACING_JDBC_ENABLED = new OptionBuilder<>("tracing-jdbc-enabled", Boolean.class)
|
||||||
|
.category(OptionCategory.TRACING)
|
||||||
|
.description("Enables the OpenTelemetry JDBC tracing.")
|
||||||
|
.defaultValue(true)
|
||||||
|
.buildTime(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<String> TRACING_PROTOCOL = new OptionBuilder<>("tracing-protocol", String.class)
|
||||||
|
.category(OptionCategory.TRACING)
|
||||||
|
.description("OpenTelemetry protocol used for the telemetry data.")
|
||||||
|
.defaultValue("grpc")
|
||||||
|
.expectedValues("grpc", "http/protobuf")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<String> TRACING_SAMPLER_TYPE = new OptionBuilder<>("tracing-sampler-type", String.class)
|
||||||
|
.category(OptionCategory.TRACING)
|
||||||
|
.description("OpenTelemetry sampler to use for tracing.")
|
||||||
|
.defaultValue(SamplerType.TRACE_ID_RATIO.getValue())
|
||||||
|
.expectedValues(Arrays.stream(SamplerType.values()).map(SamplerType::getValue).toList())
|
||||||
|
.buildTime(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public static final Option<Double> TRACING_SAMPLER_RATIO = new OptionBuilder<>("tracing-sampler-ratio", Double.class)
|
||||||
|
.category(OptionCategory.TRACING)
|
||||||
|
.description("OpenTelemetry sampler ratio. Probability that a span will be sampled. Expected double value in interval <0,1).")
|
||||||
|
.defaultValue(1.0d)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public enum TracingCompression {
|
||||||
|
gzip,
|
||||||
|
none
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Option<TracingCompression> TRACING_COMPRESSION = new OptionBuilder<>("tracing-compression", TracingCompression.class)
|
||||||
|
.category(OptionCategory.TRACING)
|
||||||
|
.description("OpenTelemetry compression method used to compress payloads. If unset, compression is disabled.")
|
||||||
|
.defaultValue(TracingCompression.none)
|
||||||
|
.build();
|
||||||
|
}
|
|
@ -159,6 +159,10 @@
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-logging-json-deployment</artifactId>
|
<artifactId>quarkus-logging-json-deployment</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.quarkus</groupId>
|
||||||
|
<artifactId>quarkus-opentelemetry-deployment</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
|
|
|
@ -109,6 +109,14 @@
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-logging-json</artifactId>
|
<artifactId>quarkus-logging-json</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.quarkus</groupId>
|
||||||
|
<artifactId>quarkus-opentelemetry</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.opentelemetry.instrumentation</groupId>
|
||||||
|
<artifactId>opentelemetry-jdbc</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.apicatalog</groupId>
|
<groupId>com.apicatalog</groupId>
|
||||||
|
|
|
@ -158,9 +158,7 @@ public class IgnoredArtifacts {
|
||||||
);
|
);
|
||||||
|
|
||||||
private static Set<String> health() {
|
private static Set<String> health() {
|
||||||
boolean isHealthEnabled = Configuration.getOptionalBooleanValue(
|
boolean isHealthEnabled = Configuration.isTrue(HealthOptions.HEALTH_ENABLED);
|
||||||
MicroProfileConfigProvider.NS_KEYCLOAK_PREFIX + HealthOptions.HEALTH_ENABLED.getKey()).orElse(false);
|
|
||||||
|
|
||||||
return !isHealthEnabled ? HEALTH : emptySet();
|
return !isHealthEnabled ? HEALTH : emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,9 +171,7 @@ public class IgnoredArtifacts {
|
||||||
);
|
);
|
||||||
|
|
||||||
private static Set<String> metrics() {
|
private static Set<String> metrics() {
|
||||||
boolean isMetricsEnabled = Configuration.getOptionalBooleanValue(
|
boolean isMetricsEnabled = Configuration.isTrue(MetricsOptions.METRICS_ENABLED);
|
||||||
MicroProfileConfigProvider.NS_KEYCLOAK_PREFIX + MetricsOptions.METRICS_ENABLED.getKey()).orElse(false);
|
|
||||||
|
|
||||||
return !isMetricsEnabled ? METRICS : emptySet();
|
return !isMetricsEnabled ? METRICS : emptySet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.keycloak.quarkus.runtime.configuration.mappers;
|
package org.keycloak.quarkus.runtime.configuration.mappers;
|
||||||
|
|
||||||
import static java.util.Optional.of;
|
import static java.util.Optional.of;
|
||||||
|
import static org.keycloak.config.LoggingOptions.DEFAULT_LOG_FORMAT;
|
||||||
import static org.keycloak.config.LoggingOptions.GELF_ACTIVATED;
|
import static org.keycloak.config.LoggingOptions.GELF_ACTIVATED;
|
||||||
import static org.keycloak.quarkus.runtime.configuration.Configuration.isTrue;
|
import static org.keycloak.quarkus.runtime.configuration.Configuration.isTrue;
|
||||||
import static org.keycloak.quarkus.runtime.configuration.mappers.PropertyMapper.fromOption;
|
import static org.keycloak.quarkus.runtime.configuration.mappers.PropertyMapper.fromOption;
|
||||||
|
@ -15,10 +16,13 @@ import java.util.stream.Stream;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.jboss.logmanager.LogContext;
|
import org.jboss.logmanager.LogContext;
|
||||||
import org.keycloak.config.LoggingOptions;
|
import org.keycloak.config.LoggingOptions;
|
||||||
|
import org.keycloak.config.Option;
|
||||||
|
import org.keycloak.config.TracingOptions;
|
||||||
import org.keycloak.quarkus.runtime.Messages;
|
import org.keycloak.quarkus.runtime.Messages;
|
||||||
import org.keycloak.quarkus.runtime.cli.PropertyException;
|
import org.keycloak.quarkus.runtime.cli.PropertyException;
|
||||||
|
|
||||||
import io.smallrye.config.ConfigSourceInterceptorContext;
|
import io.smallrye.config.ConfigSourceInterceptorContext;
|
||||||
|
import org.keycloak.quarkus.runtime.configuration.Configuration;
|
||||||
|
|
||||||
public final class LoggingPropertyMappers {
|
public final class LoggingPropertyMappers {
|
||||||
|
|
||||||
|
@ -46,6 +50,11 @@ public final class LoggingPropertyMappers {
|
||||||
.isEnabled(LoggingPropertyMappers::isConsoleEnabled, CONSOLE_ENABLED_MSG)
|
.isEnabled(LoggingPropertyMappers::isConsoleEnabled, CONSOLE_ENABLED_MSG)
|
||||||
.to("quarkus.log.console.format")
|
.to("quarkus.log.console.format")
|
||||||
.paramLabel("format")
|
.paramLabel("format")
|
||||||
|
.transformer((value, ctx) -> addTracingInfo(value, LoggingOptions.LOG_CONSOLE_INCLUDE_TRACE))
|
||||||
|
.build(),
|
||||||
|
fromOption(LoggingOptions.LOG_CONSOLE_INCLUDE_TRACE)
|
||||||
|
.isEnabled(() -> LoggingPropertyMappers.isConsoleEnabled() && TracingPropertyMappers.isTracingEnabled(),
|
||||||
|
"Console log handler and Tracing is activated")
|
||||||
.build(),
|
.build(),
|
||||||
fromOption(LoggingOptions.LOG_CONSOLE_COLOR)
|
fromOption(LoggingOptions.LOG_CONSOLE_COLOR)
|
||||||
.isEnabled(LoggingPropertyMappers::isConsoleEnabled, CONSOLE_ENABLED_MSG)
|
.isEnabled(LoggingPropertyMappers::isConsoleEnabled, CONSOLE_ENABLED_MSG)
|
||||||
|
@ -72,6 +81,11 @@ public final class LoggingPropertyMappers {
|
||||||
.isEnabled(LoggingPropertyMappers::isFileEnabled, FILE_ENABLED_MSG)
|
.isEnabled(LoggingPropertyMappers::isFileEnabled, FILE_ENABLED_MSG)
|
||||||
.to("quarkus.log.file.format")
|
.to("quarkus.log.file.format")
|
||||||
.paramLabel("format")
|
.paramLabel("format")
|
||||||
|
.transformer((value, ctx) -> addTracingInfo(value, LoggingOptions.LOG_FILE_INCLUDE_TRACE))
|
||||||
|
.build(),
|
||||||
|
fromOption(LoggingOptions.LOG_FILE_INCLUDE_TRACE)
|
||||||
|
.isEnabled(() -> LoggingPropertyMappers.isFileEnabled() && TracingPropertyMappers.isTracingEnabled(),
|
||||||
|
"File log handler and Tracing is activated")
|
||||||
.build(),
|
.build(),
|
||||||
fromOption(LoggingOptions.LOG_FILE_OUTPUT)
|
fromOption(LoggingOptions.LOG_FILE_OUTPUT)
|
||||||
.isEnabled(LoggingPropertyMappers::isFileEnabled, FILE_ENABLED_MSG)
|
.isEnabled(LoggingPropertyMappers::isFileEnabled, FILE_ENABLED_MSG)
|
||||||
|
@ -112,6 +126,11 @@ public final class LoggingPropertyMappers {
|
||||||
.isEnabled(LoggingPropertyMappers::isSyslogEnabled, SYSLOG_ENABLED_MSG)
|
.isEnabled(LoggingPropertyMappers::isSyslogEnabled, SYSLOG_ENABLED_MSG)
|
||||||
.to("quarkus.log.syslog.format")
|
.to("quarkus.log.syslog.format")
|
||||||
.paramLabel("format")
|
.paramLabel("format")
|
||||||
|
.transformer((value, ctx) -> addTracingInfo(value, LoggingOptions.LOG_SYSLOG_INCLUDE_TRACE))
|
||||||
|
.build(),
|
||||||
|
fromOption(LoggingOptions.LOG_SYSLOG_INCLUDE_TRACE)
|
||||||
|
.isEnabled(() -> LoggingPropertyMappers.isSyslogEnabled() && TracingPropertyMappers.isTracingEnabled(),
|
||||||
|
"Syslog handler and Tracing is activated")
|
||||||
.build(),
|
.build(),
|
||||||
fromOption(LoggingOptions.LOG_SYSLOG_OUTPUT)
|
fromOption(LoggingOptions.LOG_SYSLOG_OUTPUT)
|
||||||
.isEnabled(LoggingPropertyMappers::isSyslogEnabled, SYSLOG_ENABLED_MSG)
|
.isEnabled(LoggingPropertyMappers::isSyslogEnabled, SYSLOG_ENABLED_MSG)
|
||||||
|
@ -265,4 +284,19 @@ public final class LoggingPropertyMappers {
|
||||||
|
|
||||||
return of(Boolean.TRUE.toString());
|
return of(Boolean.TRUE.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add tracing info to the log if the format is not explicitly set, and tracing and {@code includeTraceOption} options are enabled
|
||||||
|
*/
|
||||||
|
private static Optional<String> addTracingInfo(Optional<String> value, Option<Boolean> includeTraceOption) {
|
||||||
|
var isTracingEnabled = Configuration.isTrue(TracingOptions.TRACING_ENABLED);
|
||||||
|
var includeTrace = Configuration.isTrue(includeTraceOption);
|
||||||
|
var isChangedLogFormat = !DEFAULT_LOG_FORMAT.equals(value.get());
|
||||||
|
|
||||||
|
if (!isTracingEnabled || !includeTrace || isChangedLogFormat) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Optional.of(LoggingOptions.DEFAULT_LOG_TRACING_FORMAT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -304,6 +304,11 @@ public class PropertyMapper<T> {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder<T> mapFrom(Option<?> mapFrom) {
|
||||||
|
this.mapFrom = mapFrom.getKey();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder<T> mapFrom(String mapFrom) {
|
public Builder<T> mapFrom(String mapFrom) {
|
||||||
this.mapFrom = mapFrom;
|
this.mapFrom = mapFrom;
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -58,6 +58,7 @@ public final class PropertyMappers {
|
||||||
MAPPERS.addAll(VaultPropertyMappers.getVaultPropertyMappers());
|
MAPPERS.addAll(VaultPropertyMappers.getVaultPropertyMappers());
|
||||||
MAPPERS.addAll(FeaturePropertyMappers.getMappers());
|
MAPPERS.addAll(FeaturePropertyMappers.getMappers());
|
||||||
MAPPERS.addAll(LoggingPropertyMappers.getMappers());
|
MAPPERS.addAll(LoggingPropertyMappers.getMappers());
|
||||||
|
MAPPERS.addAll(TracingPropertyMappers.getMappers());
|
||||||
MAPPERS.addAll(TransactionPropertyMappers.getTransactionPropertyMappers());
|
MAPPERS.addAll(TransactionPropertyMappers.getTransactionPropertyMappers());
|
||||||
MAPPERS.addAll(ClassLoaderPropertyMappers.getMappers());
|
MAPPERS.addAll(ClassLoaderPropertyMappers.getMappers());
|
||||||
MAPPERS.addAll(SecurityPropertyMappers.getMappers());
|
MAPPERS.addAll(SecurityPropertyMappers.getMappers());
|
||||||
|
|
|
@ -0,0 +1,125 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed 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.keycloak.quarkus.runtime.configuration.mappers;
|
||||||
|
|
||||||
|
import io.smallrye.config.ConfigValue;
|
||||||
|
import org.keycloak.quarkus.runtime.cli.PropertyException;
|
||||||
|
import org.keycloak.quarkus.runtime.configuration.Configuration;
|
||||||
|
import org.keycloak.utils.StringUtil;
|
||||||
|
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
|
import static org.keycloak.config.TracingOptions.TRACING_COMPRESSION;
|
||||||
|
import static org.keycloak.config.TracingOptions.TRACING_ENABLED;
|
||||||
|
import static org.keycloak.config.TracingOptions.TRACING_ENDPOINT;
|
||||||
|
import static org.keycloak.config.TracingOptions.TRACING_JDBC_ENABLED;
|
||||||
|
import static org.keycloak.config.TracingOptions.TRACING_PROTOCOL;
|
||||||
|
import static org.keycloak.config.TracingOptions.TRACING_SAMPLER_RATIO;
|
||||||
|
import static org.keycloak.config.TracingOptions.TRACING_SAMPLER_TYPE;
|
||||||
|
import static org.keycloak.quarkus.runtime.configuration.mappers.PropertyMapper.fromOption;
|
||||||
|
|
||||||
|
public class TracingPropertyMappers {
|
||||||
|
private static final String TRACING_ENABLED_MSG = "Tracing is enabled";
|
||||||
|
|
||||||
|
private TracingPropertyMappers() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PropertyMapper<?>[] getMappers() {
|
||||||
|
return new PropertyMapper[]{
|
||||||
|
fromOption(TRACING_ENABLED)
|
||||||
|
.to("quarkus.otel.traces.enabled")
|
||||||
|
.build(),
|
||||||
|
fromOption(TRACING_ENDPOINT)
|
||||||
|
.isEnabled(TracingPropertyMappers::isTracingEnabled, TRACING_ENABLED_MSG)
|
||||||
|
.to("quarkus.otel.exporter.otlp.traces.endpoint")
|
||||||
|
.paramLabel("url")
|
||||||
|
.validator(TracingPropertyMappers::validateEndpoint)
|
||||||
|
.build(),
|
||||||
|
fromOption(TRACING_PROTOCOL)
|
||||||
|
.isEnabled(TracingPropertyMappers::isTracingEnabled, TRACING_ENABLED_MSG)
|
||||||
|
.to("quarkus.otel.exporter.otlp.traces.protocol")
|
||||||
|
.paramLabel("protocol")
|
||||||
|
.build(),
|
||||||
|
fromOption(TRACING_SAMPLER_TYPE)
|
||||||
|
.isEnabled(TracingPropertyMappers::isTracingEnabled, TRACING_ENABLED_MSG)
|
||||||
|
.to("quarkus.otel.traces.sampler")
|
||||||
|
.paramLabel("type")
|
||||||
|
.build(),
|
||||||
|
fromOption(TRACING_SAMPLER_RATIO)
|
||||||
|
.isEnabled(TracingPropertyMappers::isTracingEnabled, TRACING_ENABLED_MSG)
|
||||||
|
.to("quarkus.otel.traces.sampler.arg")
|
||||||
|
.validator(TracingPropertyMappers::validateRatio)
|
||||||
|
.paramLabel("ratio")
|
||||||
|
.build(),
|
||||||
|
fromOption(TRACING_COMPRESSION)
|
||||||
|
.isEnabled(TracingPropertyMappers::isTracingEnabled, TRACING_ENABLED_MSG)
|
||||||
|
.to("quarkus.otel.exporter.otlp.traces.compression")
|
||||||
|
.paramLabel("method")
|
||||||
|
.build(),
|
||||||
|
fromOption(TRACING_JDBC_ENABLED)
|
||||||
|
.mapFrom(TRACING_ENABLED)
|
||||||
|
.isEnabled(TracingPropertyMappers::isTracingEnabled, TRACING_ENABLED_MSG)
|
||||||
|
.to("quarkus.datasource.jdbc.telemetry")
|
||||||
|
.build()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void validateEndpoint(PropertyMapper<String> mapper, ConfigValue value) {
|
||||||
|
if (value == null || StringUtil.isBlank(value.getValue())) {
|
||||||
|
throw new PropertyException("URL specified in 'tracing-endpoint' option must not be empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isValidUrl(value.getValue())) {
|
||||||
|
throw new PropertyException("URL specified in 'tracing-endpoint' option is invalid.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void validateRatio(PropertyMapper<Double> mapper, ConfigValue value) {
|
||||||
|
if (value == null || StringUtil.isBlank(value.getValue())) {
|
||||||
|
throw new PropertyException("Ratio in 'tracing-sampler-ratio' option must not be empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
var ratio = Double.parseDouble(value.getValue());
|
||||||
|
if (ratio <= 0.0 || ratio > 1.0) {
|
||||||
|
throw new NumberFormatException();
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new PropertyException("Ratio in 'tracing-sampler-ratio' option must be a double value in interval <0,1).");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isTracingEnabled() {
|
||||||
|
return Configuration.isTrue(TRACING_ENABLED);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isTracingJdbcEnabled() {
|
||||||
|
return Configuration.isTrue(TRACING_JDBC_ENABLED);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isValidUrl(String url) {
|
||||||
|
try {
|
||||||
|
new URL(url).toURI();
|
||||||
|
return true;
|
||||||
|
} catch (MalformedURLException | URISyntaxException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,168 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed 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.keycloak.quarkus.runtime.configuration.test;
|
||||||
|
|
||||||
|
import io.quarkus.opentelemetry.runtime.config.build.SamplerType;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.keycloak.config.LoggingOptions;
|
||||||
|
import org.keycloak.config.TracingOptions;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class TracingConfigurationTest extends AbstractConfigurationTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void defaultValues() {
|
||||||
|
initConfig();
|
||||||
|
|
||||||
|
assertConfig(Map.of(
|
||||||
|
"tracing-enabled", "false",
|
||||||
|
"tracing-endpoint", "http://localhost:4317",
|
||||||
|
"tracing-protocol", "grpc",
|
||||||
|
"tracing-jdbc-enabled", "false",
|
||||||
|
"tracing-sampler-type", SamplerType.TRACE_ID_RATIO.getValue(),
|
||||||
|
"tracing-sampler-ratio", "1.0",
|
||||||
|
"tracing-compression", TracingOptions.TracingCompression.none.name(),
|
||||||
|
"log-console-include-trace", "true",
|
||||||
|
"log-file-include-trace", "true",
|
||||||
|
"log-syslog-include-trace", "true"
|
||||||
|
));
|
||||||
|
|
||||||
|
assertExternalConfig(Map.of(
|
||||||
|
"quarkus.otel.traces.enabled", "false",
|
||||||
|
"quarkus.otel.exporter.otlp.traces.endpoint", "http://localhost:4317",
|
||||||
|
"quarkus.otel.exporter.otlp.traces.protocol", "grpc",
|
||||||
|
"quarkus.datasource.jdbc.telemetry", "false",
|
||||||
|
"quarkus.otel.traces.sampler", SamplerType.TRACE_ID_RATIO.getValue(),
|
||||||
|
"quarkus.otel.traces.sampler.arg", "1.0",
|
||||||
|
"quarkus.otel.exporter.otlp.traces.compression", TracingOptions.TracingCompression.none.name()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void differentValues() {
|
||||||
|
putEnvVars(Map.of(
|
||||||
|
"KC_TRACING_ENABLED", "true",
|
||||||
|
"KC_TRACING_ENDPOINT", "http://something:4444",
|
||||||
|
"KC_TRACING_PROTOCOL", "http/protobuf",
|
||||||
|
"KC_TRACING_JDBC_ENABLED", "false",
|
||||||
|
"KC_TRACING_SAMPLER_TYPE", SamplerType.PARENT_BASED_ALWAYS_ON.getValue(),
|
||||||
|
"KC_TRACING_SAMPLER_RATIO", "0.5",
|
||||||
|
"KC_TRACING_COMPRESSION", TracingOptions.TracingCompression.gzip.name(),
|
||||||
|
"KC_LOG_CONSOLE_INCLUDE_TRACE", "false",
|
||||||
|
"KC_LOG_FILE_INCLUDE_TRACE", "false",
|
||||||
|
"KC_LOG_SYSLOG_INCLUDE_TRACE", "false"
|
||||||
|
));
|
||||||
|
|
||||||
|
initConfig();
|
||||||
|
|
||||||
|
assertConfig(Map.of(
|
||||||
|
"tracing-enabled", "true",
|
||||||
|
"tracing-endpoint", "http://something:4444",
|
||||||
|
"tracing-protocol", "http/protobuf",
|
||||||
|
"tracing-jdbc-enabled", "false",
|
||||||
|
"tracing-sampler-type", SamplerType.PARENT_BASED_ALWAYS_ON.getValue(),
|
||||||
|
"tracing-sampler-ratio", "0.5",
|
||||||
|
"tracing-compression", TracingOptions.TracingCompression.gzip.name(),
|
||||||
|
"log-console-include-trace", "false",
|
||||||
|
"log-file-include-trace", "false",
|
||||||
|
"log-syslog-include-trace", "false"
|
||||||
|
));
|
||||||
|
|
||||||
|
assertExternalConfig(Map.of(
|
||||||
|
"quarkus.otel.traces.enabled", "true",
|
||||||
|
"quarkus.otel.exporter.otlp.traces.endpoint", "http://something:4444",
|
||||||
|
"quarkus.otel.exporter.otlp.traces.protocol", "http/protobuf",
|
||||||
|
"quarkus.datasource.jdbc.telemetry", "false",
|
||||||
|
"quarkus.otel.traces.sampler", SamplerType.PARENT_BASED_ALWAYS_ON.getValue(),
|
||||||
|
"quarkus.otel.traces.sampler.arg", "0.5",
|
||||||
|
"quarkus.otel.exporter.otlp.traces.compression", TracingOptions.TracingCompression.gzip.name()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void consoleLogTraceOn() {
|
||||||
|
assertLogFormat(LoggingOptions.Handler.console, true, LoggingOptions.DEFAULT_LOG_TRACING_FORMAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void consoleLogTraceOff() {
|
||||||
|
assertLogFormat(LoggingOptions.Handler.console, false, LoggingOptions.DEFAULT_LOG_FORMAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fileLogTraceOn() {
|
||||||
|
assertLogFormat(LoggingOptions.Handler.file, true, LoggingOptions.DEFAULT_LOG_TRACING_FORMAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fileLogTraceOff() {
|
||||||
|
assertLogFormat(LoggingOptions.Handler.file, false, LoggingOptions.DEFAULT_LOG_FORMAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void syslogLogTraceOn() {
|
||||||
|
assertLogFormat(LoggingOptions.Handler.syslog, true, LoggingOptions.DEFAULT_LOG_TRACING_FORMAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void syslogLogTraceOff() {
|
||||||
|
assertLogFormat(LoggingOptions.Handler.syslog, false, LoggingOptions.DEFAULT_LOG_FORMAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assert log format for individual log handlers with different `includeTrace` option.
|
||||||
|
* It also checks the log format is unchanged despite the `includeTrace` option, when explicitly specified.
|
||||||
|
*/
|
||||||
|
protected void assertLogFormat(LoggingOptions.Handler loggerType, boolean includeTrace, String expectedFormat) {
|
||||||
|
var envVars = new HashMap<String, String>();
|
||||||
|
envVars.put("KC_TRACING_ENABLED", "true");
|
||||||
|
envVars.put("KC_LOG_" + loggerType.name().toUpperCase() + "_INCLUDE_TRACE", Boolean.toString(includeTrace));
|
||||||
|
|
||||||
|
putEnvVars(envVars);
|
||||||
|
|
||||||
|
initConfig();
|
||||||
|
|
||||||
|
assertConfig(Map.of(
|
||||||
|
"tracing-enabled", "true",
|
||||||
|
"log-" + loggerType.name() + "-include-trace", Boolean.toString(includeTrace)
|
||||||
|
));
|
||||||
|
|
||||||
|
assertExternalConfig(Map.of(
|
||||||
|
"quarkus.otel.traces.enabled", "true",
|
||||||
|
"quarkus.log." + loggerType.name() + ".format", expectedFormat
|
||||||
|
));
|
||||||
|
|
||||||
|
// Assert no effect on the format when explicitly set
|
||||||
|
envVars.put("KC_LOG_" + loggerType.name().toUpperCase() + "_FORMAT", "someFormat");
|
||||||
|
putEnvVars(envVars);
|
||||||
|
|
||||||
|
initConfig();
|
||||||
|
|
||||||
|
assertConfig(Map.of(
|
||||||
|
"tracing-enabled", "true",
|
||||||
|
"log-" + loggerType.name() + "-include-trace", Boolean.toString(includeTrace)
|
||||||
|
));
|
||||||
|
|
||||||
|
assertExternalConfig(Map.of(
|
||||||
|
"quarkus.otel.traces.enabled", "true",
|
||||||
|
"quarkus.log." + loggerType.name() + ".format", "someFormat"
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
153
quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/TracingDistTest.java
vendored
Normal file
153
quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/TracingDistTest.java
vendored
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed 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.keycloak.it.cli.dist;
|
||||||
|
|
||||||
|
import io.quarkus.test.junit.main.Launch;
|
||||||
|
import io.quarkus.test.junit.main.LaunchResult;
|
||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
import org.junit.jupiter.api.Order;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
import org.keycloak.it.junit5.extension.CLIResult;
|
||||||
|
import org.keycloak.it.junit5.extension.DistributionTest;
|
||||||
|
import org.keycloak.it.junit5.extension.RawDistOnly;
|
||||||
|
|
||||||
|
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||||
|
@DistributionTest
|
||||||
|
@RawDistOnly(reason = "Containers are immutable")
|
||||||
|
public class TracingDistTest {
|
||||||
|
|
||||||
|
private void assertTracingEnabled(CLIResult result) {
|
||||||
|
result.assertMessage("opentelemetry");
|
||||||
|
result.assertMessage("service.name=\"Keycloak\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertTracingDisabled(CLIResult result) {
|
||||||
|
result.assertMessage("opentelemetry");
|
||||||
|
result.assertNoMessage("service.name=\"Keycloak\"");
|
||||||
|
result.assertNoMessage("Failed to export spans.");
|
||||||
|
result.assertNoMessage("Connection refused: localhost/127.0.0.1:4317");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(1)
|
||||||
|
@Launch({"start-dev", "--log-level=io.opentelemetry:fine"})
|
||||||
|
void disabled(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertStartedDevMode();
|
||||||
|
assertTracingDisabled(cliResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(2)
|
||||||
|
@Launch({"start-dev", "--tracing-enabled=true", "--log-level=io.opentelemetry:fine"})
|
||||||
|
void enabledJdbc(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertStartedDevMode();
|
||||||
|
assertTracingEnabled(cliResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(3)
|
||||||
|
@Launch({"build", "--tracing-enabled=true"})
|
||||||
|
void buildTracingEnabled(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertBuild();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--log-level=io.opentelemetry:fine"})
|
||||||
|
void enabled(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertStarted();
|
||||||
|
assertTracingEnabled(cliResult);
|
||||||
|
// Initial system logs do not have any tracing data
|
||||||
|
cliResult.assertMessage("traceId=, parentId=, spanId=, sampled=");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--tracing-endpoint=http://endpoint:8888", "--log-level=io.opentelemetry:fine"})
|
||||||
|
void differentEndpoint(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertStarted();
|
||||||
|
assertTracingEnabled(cliResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--tracing-endpoint="})
|
||||||
|
void emptyEndpoint(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertError("URL specified in 'tracing-endpoint' option must not be empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--tracing-endpoint=ht://wrong"})
|
||||||
|
void invalidUrl(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertError("URL specified in 'tracing-endpoint' option is invalid.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--tracing-protocol=http/protobuf", "--log-level=io.opentelemetry:fine"})
|
||||||
|
void protocolHttpProtobuf(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
assertTracingEnabled(cliResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--tracing-protocol=wrong"})
|
||||||
|
void unknownProtocol(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertError("Invalid value for option '--tracing-protocol': wrong. Expected values are: grpc, http/protobuf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--tracing-sampler-ratio=0.0"})
|
||||||
|
void wrongSamplerRatio(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertError("Ratio in 'tracing-sampler-ratio' option must be a double value in interval <0,1).");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--tracing-compression=wrong"})
|
||||||
|
void wrongCompression(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
cliResult.assertError("Invalid value for option '--tracing-compression': wrong. Expected values are: gzip, none");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Launch({"start", "--hostname-strict=false", "--http-enabled=true", "--optimized", "--log-console-include-trace=false"})
|
||||||
|
void hideTracingInfoInConsoleLog(LaunchResult result) {
|
||||||
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
|
// Initial system logs do not have any tracing data
|
||||||
|
cliResult.assertNoMessage("traceId=, parentId=, spanId=, sampled=");
|
||||||
|
cliResult.assertStarted();
|
||||||
|
}
|
||||||
|
}
|
|
@ -125,6 +125,10 @@ Logging:
|
||||||
The format of unstructured console log entries. If the format has spaces in
|
The format of unstructured console log entries. If the format has spaces in
|
||||||
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
||||||
|
--log-console-include-trace <true|false>
|
||||||
|
Include tracing information in the console log. If the 'log-console-format'
|
||||||
|
option is specified, this option has no effect. Default: true. Available
|
||||||
|
only when Console log handler and Tracing is activated.
|
||||||
--log-console-output <output>
|
--log-console-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when Console log
|
values are: default, json. Default: default. Available only when Console log
|
||||||
|
@ -135,6 +139,10 @@ Logging:
|
||||||
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
||||||
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
||||||
activated.
|
activated.
|
||||||
|
--log-file-include-trace <true|false>
|
||||||
|
Include tracing information in the file log. If the 'log-file-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
File log handler and Tracing is activated.
|
||||||
--log-file-output <output>
|
--log-file-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when File log
|
values are: default, json. Default: default. Available only when File log
|
||||||
|
@ -181,6 +189,10 @@ Logging:
|
||||||
--log-syslog-format <format>
|
--log-syslog-format <format>
|
||||||
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
||||||
|
--log-syslog-include-trace <true|false>
|
||||||
|
Include tracing information in the syslog. If the 'log-syslog-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
Syslog handler and Tracing is activated.
|
||||||
--log-syslog-output <output>
|
--log-syslog-output <output>
|
||||||
Set the syslog output to JSON or default (plain) unstructured logging.
|
Set the syslog output to JSON or default (plain) unstructured logging.
|
||||||
Possible values are: default, json. Default: default. Available only when
|
Possible values are: default, json. Default: default. Available only when
|
||||||
|
@ -189,6 +201,34 @@ Logging:
|
||||||
Sets the protocol used to connect to the syslog server. Possible values are:
|
Sets the protocol used to connect to the syslog server. Possible values are:
|
||||||
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
||||||
|
|
||||||
|
Tracing (Preview):
|
||||||
|
|
||||||
|
--tracing-compression <method>
|
||||||
|
Preview: OpenTelemetry compression method used to compress payloads. If unset,
|
||||||
|
compression is disabled. Possible values are: gzip, none. Default: none.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry tracing. Default: false.
|
||||||
|
--tracing-endpoint <url>
|
||||||
|
Preview: OpenTelemetry endpoint to connect to. Default: http://localhost:4317.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-jdbc-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry JDBC tracing. Default: true. Available only
|
||||||
|
when Tracing is enabled.
|
||||||
|
--tracing-protocol <protocol>
|
||||||
|
Preview: OpenTelemetry protocol used for the telemetry data. Possible values
|
||||||
|
are: grpc, http/protobuf. Default: grpc. Available only when Tracing is
|
||||||
|
enabled.
|
||||||
|
--tracing-sampler-ratio <ratio>
|
||||||
|
Preview: OpenTelemetry sampler ratio. Probability that a span will be sampled.
|
||||||
|
Expected double value in interval <0,1). Default: 1.0. Available only when
|
||||||
|
Tracing is enabled.
|
||||||
|
--tracing-sampler-type <type>
|
||||||
|
Preview: OpenTelemetry sampler to use for tracing. Possible values are:
|
||||||
|
always_on, always_off, traceidratio, parentbased_always_on,
|
||||||
|
parentbased_always_off, parentbased_traceidratio. Default: traceidratio.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
|
||||||
Truststore:
|
Truststore:
|
||||||
|
|
||||||
--tls-hostname-verifier <tls-hostname-verifier>
|
--tls-hostname-verifier <tls-hostname-verifier>
|
||||||
|
|
|
@ -125,6 +125,10 @@ Logging:
|
||||||
The format of unstructured console log entries. If the format has spaces in
|
The format of unstructured console log entries. If the format has spaces in
|
||||||
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
||||||
|
--log-console-include-trace <true|false>
|
||||||
|
Include tracing information in the console log. If the 'log-console-format'
|
||||||
|
option is specified, this option has no effect. Default: true. Available
|
||||||
|
only when Console log handler and Tracing is activated.
|
||||||
--log-console-output <output>
|
--log-console-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when Console log
|
values are: default, json. Default: default. Available only when Console log
|
||||||
|
@ -135,6 +139,10 @@ Logging:
|
||||||
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
||||||
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
||||||
activated.
|
activated.
|
||||||
|
--log-file-include-trace <true|false>
|
||||||
|
Include tracing information in the file log. If the 'log-file-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
File log handler and Tracing is activated.
|
||||||
--log-file-output <output>
|
--log-file-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when File log
|
values are: default, json. Default: default. Available only when File log
|
||||||
|
@ -181,6 +189,10 @@ Logging:
|
||||||
--log-syslog-format <format>
|
--log-syslog-format <format>
|
||||||
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
||||||
|
--log-syslog-include-trace <true|false>
|
||||||
|
Include tracing information in the syslog. If the 'log-syslog-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
Syslog handler and Tracing is activated.
|
||||||
--log-syslog-output <output>
|
--log-syslog-output <output>
|
||||||
Set the syslog output to JSON or default (plain) unstructured logging.
|
Set the syslog output to JSON or default (plain) unstructured logging.
|
||||||
Possible values are: default, json. Default: default. Available only when
|
Possible values are: default, json. Default: default. Available only when
|
||||||
|
@ -189,6 +201,34 @@ Logging:
|
||||||
Sets the protocol used to connect to the syslog server. Possible values are:
|
Sets the protocol used to connect to the syslog server. Possible values are:
|
||||||
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
||||||
|
|
||||||
|
Tracing (Preview):
|
||||||
|
|
||||||
|
--tracing-compression <method>
|
||||||
|
Preview: OpenTelemetry compression method used to compress payloads. If unset,
|
||||||
|
compression is disabled. Possible values are: gzip, none. Default: none.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry tracing. Default: false.
|
||||||
|
--tracing-endpoint <url>
|
||||||
|
Preview: OpenTelemetry endpoint to connect to. Default: http://localhost:4317.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-jdbc-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry JDBC tracing. Default: true. Available only
|
||||||
|
when Tracing is enabled.
|
||||||
|
--tracing-protocol <protocol>
|
||||||
|
Preview: OpenTelemetry protocol used for the telemetry data. Possible values
|
||||||
|
are: grpc, http/protobuf. Default: grpc. Available only when Tracing is
|
||||||
|
enabled.
|
||||||
|
--tracing-sampler-ratio <ratio>
|
||||||
|
Preview: OpenTelemetry sampler ratio. Probability that a span will be sampled.
|
||||||
|
Expected double value in interval <0,1). Default: 1.0. Available only when
|
||||||
|
Tracing is enabled.
|
||||||
|
--tracing-sampler-type <type>
|
||||||
|
Preview: OpenTelemetry sampler to use for tracing. Possible values are:
|
||||||
|
always_on, always_off, traceidratio, parentbased_always_on,
|
||||||
|
parentbased_always_off, parentbased_traceidratio. Default: traceidratio.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
|
||||||
Truststore:
|
Truststore:
|
||||||
|
|
||||||
--tls-hostname-verifier <tls-hostname-verifier>
|
--tls-hostname-verifier <tls-hostname-verifier>
|
||||||
|
|
|
@ -335,6 +335,10 @@ Logging:
|
||||||
The format of unstructured console log entries. If the format has spaces in
|
The format of unstructured console log entries. If the format has spaces in
|
||||||
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
||||||
|
--log-console-include-trace <true|false>
|
||||||
|
Include tracing information in the console log. If the 'log-console-format'
|
||||||
|
option is specified, this option has no effect. Default: true. Available
|
||||||
|
only when Console log handler and Tracing is activated.
|
||||||
--log-console-output <output>
|
--log-console-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when Console log
|
values are: default, json. Default: default. Available only when Console log
|
||||||
|
@ -345,6 +349,10 @@ Logging:
|
||||||
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
||||||
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
||||||
activated.
|
activated.
|
||||||
|
--log-file-include-trace <true|false>
|
||||||
|
Include tracing information in the file log. If the 'log-file-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
File log handler and Tracing is activated.
|
||||||
--log-file-output <output>
|
--log-file-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when File log
|
values are: default, json. Default: default. Available only when File log
|
||||||
|
@ -391,6 +399,10 @@ Logging:
|
||||||
--log-syslog-format <format>
|
--log-syslog-format <format>
|
||||||
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
||||||
|
--log-syslog-include-trace <true|false>
|
||||||
|
Include tracing information in the syslog. If the 'log-syslog-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
Syslog handler and Tracing is activated.
|
||||||
--log-syslog-output <output>
|
--log-syslog-output <output>
|
||||||
Set the syslog output to JSON or default (plain) unstructured logging.
|
Set the syslog output to JSON or default (plain) unstructured logging.
|
||||||
Possible values are: default, json. Default: default. Available only when
|
Possible values are: default, json. Default: default. Available only when
|
||||||
|
@ -399,6 +411,34 @@ Logging:
|
||||||
Sets the protocol used to connect to the syslog server. Possible values are:
|
Sets the protocol used to connect to the syslog server. Possible values are:
|
||||||
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
||||||
|
|
||||||
|
Tracing (Preview):
|
||||||
|
|
||||||
|
--tracing-compression <method>
|
||||||
|
Preview: OpenTelemetry compression method used to compress payloads. If unset,
|
||||||
|
compression is disabled. Possible values are: gzip, none. Default: none.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry tracing. Default: false.
|
||||||
|
--tracing-endpoint <url>
|
||||||
|
Preview: OpenTelemetry endpoint to connect to. Default: http://localhost:4317.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-jdbc-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry JDBC tracing. Default: true. Available only
|
||||||
|
when Tracing is enabled.
|
||||||
|
--tracing-protocol <protocol>
|
||||||
|
Preview: OpenTelemetry protocol used for the telemetry data. Possible values
|
||||||
|
are: grpc, http/protobuf. Default: grpc. Available only when Tracing is
|
||||||
|
enabled.
|
||||||
|
--tracing-sampler-ratio <ratio>
|
||||||
|
Preview: OpenTelemetry sampler ratio. Probability that a span will be sampled.
|
||||||
|
Expected double value in interval <0,1). Default: 1.0. Available only when
|
||||||
|
Tracing is enabled.
|
||||||
|
--tracing-sampler-type <type>
|
||||||
|
Preview: OpenTelemetry sampler to use for tracing. Possible values are:
|
||||||
|
always_on, always_off, traceidratio, parentbased_always_on,
|
||||||
|
parentbased_always_off, parentbased_traceidratio. Default: traceidratio.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
|
||||||
Truststore:
|
Truststore:
|
||||||
|
|
||||||
--tls-hostname-verifier <tls-hostname-verifier>
|
--tls-hostname-verifier <tls-hostname-verifier>
|
||||||
|
|
|
@ -336,6 +336,10 @@ Logging:
|
||||||
The format of unstructured console log entries. If the format has spaces in
|
The format of unstructured console log entries. If the format has spaces in
|
||||||
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
||||||
|
--log-console-include-trace <true|false>
|
||||||
|
Include tracing information in the console log. If the 'log-console-format'
|
||||||
|
option is specified, this option has no effect. Default: true. Available
|
||||||
|
only when Console log handler and Tracing is activated.
|
||||||
--log-console-output <output>
|
--log-console-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when Console log
|
values are: default, json. Default: default. Available only when Console log
|
||||||
|
@ -346,6 +350,10 @@ Logging:
|
||||||
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
||||||
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
||||||
activated.
|
activated.
|
||||||
|
--log-file-include-trace <true|false>
|
||||||
|
Include tracing information in the file log. If the 'log-file-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
File log handler and Tracing is activated.
|
||||||
--log-file-output <output>
|
--log-file-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when File log
|
values are: default, json. Default: default. Available only when File log
|
||||||
|
@ -392,6 +400,10 @@ Logging:
|
||||||
--log-syslog-format <format>
|
--log-syslog-format <format>
|
||||||
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
||||||
|
--log-syslog-include-trace <true|false>
|
||||||
|
Include tracing information in the syslog. If the 'log-syslog-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
Syslog handler and Tracing is activated.
|
||||||
--log-syslog-output <output>
|
--log-syslog-output <output>
|
||||||
Set the syslog output to JSON or default (plain) unstructured logging.
|
Set the syslog output to JSON or default (plain) unstructured logging.
|
||||||
Possible values are: default, json. Default: default. Available only when
|
Possible values are: default, json. Default: default. Available only when
|
||||||
|
@ -400,6 +412,34 @@ Logging:
|
||||||
Sets the protocol used to connect to the syslog server. Possible values are:
|
Sets the protocol used to connect to the syslog server. Possible values are:
|
||||||
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
||||||
|
|
||||||
|
Tracing (Preview):
|
||||||
|
|
||||||
|
--tracing-compression <method>
|
||||||
|
Preview: OpenTelemetry compression method used to compress payloads. If unset,
|
||||||
|
compression is disabled. Possible values are: gzip, none. Default: none.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry tracing. Default: false.
|
||||||
|
--tracing-endpoint <url>
|
||||||
|
Preview: OpenTelemetry endpoint to connect to. Default: http://localhost:4317.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-jdbc-enabled <true|false>
|
||||||
|
Preview: Enables the OpenTelemetry JDBC tracing. Default: true. Available only
|
||||||
|
when Tracing is enabled.
|
||||||
|
--tracing-protocol <protocol>
|
||||||
|
Preview: OpenTelemetry protocol used for the telemetry data. Possible values
|
||||||
|
are: grpc, http/protobuf. Default: grpc. Available only when Tracing is
|
||||||
|
enabled.
|
||||||
|
--tracing-sampler-ratio <ratio>
|
||||||
|
Preview: OpenTelemetry sampler ratio. Probability that a span will be sampled.
|
||||||
|
Expected double value in interval <0,1). Default: 1.0. Available only when
|
||||||
|
Tracing is enabled.
|
||||||
|
--tracing-sampler-type <type>
|
||||||
|
Preview: OpenTelemetry sampler to use for tracing. Possible values are:
|
||||||
|
always_on, always_off, traceidratio, parentbased_always_on,
|
||||||
|
parentbased_always_off, parentbased_traceidratio. Default: traceidratio.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
|
||||||
Truststore:
|
Truststore:
|
||||||
|
|
||||||
--tls-hostname-verifier <tls-hostname-verifier>
|
--tls-hostname-verifier <tls-hostname-verifier>
|
||||||
|
|
|
@ -287,6 +287,10 @@ Logging:
|
||||||
The format of unstructured console log entries. If the format has spaces in
|
The format of unstructured console log entries. If the format has spaces in
|
||||||
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
it, escape the value using "<format>". Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Console log handler is activated.
|
||||||
|
--log-console-include-trace <true|false>
|
||||||
|
Include tracing information in the console log. If the 'log-console-format'
|
||||||
|
option is specified, this option has no effect. Default: true. Available
|
||||||
|
only when Console log handler and Tracing is activated.
|
||||||
--log-console-output <output>
|
--log-console-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when Console log
|
values are: default, json. Default: default. Available only when Console log
|
||||||
|
@ -297,6 +301,10 @@ Logging:
|
||||||
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
Set a format specific to file log entries. Default: %d{yyyy-MM-dd HH:mm:ss,
|
||||||
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
SSS} %-5p [%c] (%t) %s%e%n. Available only when File log handler is
|
||||||
activated.
|
activated.
|
||||||
|
--log-file-include-trace <true|false>
|
||||||
|
Include tracing information in the file log. If the 'log-file-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
File log handler and Tracing is activated.
|
||||||
--log-file-output <output>
|
--log-file-output <output>
|
||||||
Set the log output to JSON or default (plain) unstructured logging. Possible
|
Set the log output to JSON or default (plain) unstructured logging. Possible
|
||||||
values are: default, json. Default: default. Available only when File log
|
values are: default, json. Default: default. Available only when File log
|
||||||
|
@ -343,6 +351,10 @@ Logging:
|
||||||
--log-syslog-format <format>
|
--log-syslog-format <format>
|
||||||
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
Set a format specific to syslog entries. Default: %d{yyyy-MM-dd HH:mm:ss,SSS} %
|
||||||
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
-5p [%c] (%t) %s%e%n. Available only when Syslog is activated.
|
||||||
|
--log-syslog-include-trace <true|false>
|
||||||
|
Include tracing information in the syslog. If the 'log-syslog-format' option
|
||||||
|
is specified, this option has no effect. Default: true. Available only when
|
||||||
|
Syslog handler and Tracing is activated.
|
||||||
--log-syslog-output <output>
|
--log-syslog-output <output>
|
||||||
Set the syslog output to JSON or default (plain) unstructured logging.
|
Set the syslog output to JSON or default (plain) unstructured logging.
|
||||||
Possible values are: default, json. Default: default. Available only when
|
Possible values are: default, json. Default: default. Available only when
|
||||||
|
@ -351,6 +363,24 @@ Logging:
|
||||||
Sets the protocol used to connect to the syslog server. Possible values are:
|
Sets the protocol used to connect to the syslog server. Possible values are:
|
||||||
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
tcp, udp, ssl-tcp. Default: tcp. Available only when Syslog is activated.
|
||||||
|
|
||||||
|
Tracing (Preview):
|
||||||
|
|
||||||
|
--tracing-compression <method>
|
||||||
|
Preview: OpenTelemetry compression method used to compress payloads. If unset,
|
||||||
|
compression is disabled. Possible values are: gzip, none. Default: none.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-endpoint <url>
|
||||||
|
Preview: OpenTelemetry endpoint to connect to. Default: http://localhost:4317.
|
||||||
|
Available only when Tracing is enabled.
|
||||||
|
--tracing-protocol <protocol>
|
||||||
|
Preview: OpenTelemetry protocol used for the telemetry data. Possible values
|
||||||
|
are: grpc, http/protobuf. Default: grpc. Available only when Tracing is
|
||||||
|
enabled.
|
||||||
|
--tracing-sampler-ratio <ratio>
|
||||||
|
Preview: OpenTelemetry sampler ratio. Probability that a span will be sampled.
|
||||||
|
Expected double value in interval <0,1). Default: 1.0. Available only when
|
||||||
|
Tracing is enabled.
|
||||||
|
|
||||||
Truststore:
|
Truststore:
|
||||||
|
|
||||||
--tls-hostname-verifier <tls-hostname-verifier>
|
--tls-hostname-verifier <tls-hostname-verifier>
|
||||||
|
|
Loading…
Reference in a new issue