From f935cd0d21acff6e7de9b7c8b6f86622f1104251 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 2 Oct 2024 01:58:48 +0000 Subject: [PATCH] Sync documentation of main branch --- _data/versioned/main/index/quarkus.yaml | 12 + _data/versioned/main/index/relations.yaml | 139 ++++++ .../main/config/quarkus-all-config.adoc | 423 +++++++++++++++++- .../quarkus-observability-devservices.adoc | 14 +- ...ity-devservices_quarkus.observability.adoc | 14 +- .../config/quarkus-oidc_quarkus.keycloak.adoc | 29 ++ ...kus-oidc_quarkus.keycloak.devservices.adoc | 29 ++ .../main/config/quarkus-opentelemetry.adoc | 390 +++++++++++++++- .../quarkus-opentelemetry_quarkus.otel.adoc | 390 +++++++++++++++- .../_includes/opentelemetry-config.adoc | 4 +- _versions/main/guides/logging.adoc | 5 + _versions/main/guides/openapi-swaggerui.adoc | 5 + .../main/guides/opentelemetry-logging.adoc | 173 +++++++ .../main/guides/opentelemetry-metrics.adoc | 18 +- _versions/main/guides/opentelemetry.adoc | 11 + ...ity-authorize-web-endpoints-reference.adoc | 136 +++++- 16 files changed, 1750 insertions(+), 42 deletions(-) create mode 100644 _versions/main/guides/opentelemetry-logging.adoc diff --git a/_data/versioned/main/index/quarkus.yaml b/_data/versioned/main/index/quarkus.yaml index 9716a399af2..f10b7e2ebde 100644 --- a/_data/versioned/main/index/quarkus.yaml +++ b/_data/versioned/main/index/quarkus.yaml @@ -2697,6 +2697,18 @@ types: - io.quarkus:quarkus-smallrye-openapi type: guide url: /guides/openapi-swaggerui + - title: Using OpenTelemetry Logging + filename: opentelemetry-logging.adoc + summary: This guide explains how your Quarkus application can utilize OpenTelemetry Logging to provide distributed logging for interactive web applications. + categories: observability + topics: + - observability + - opentelemetry + - logging + extensions: + - io.quarkus:quarkus-opentelemetry + type: guide + url: /guides/opentelemetry-logging - title: Using OpenTelemetry Metrics filename: opentelemetry-metrics.adoc summary: This guide explains how your Quarkus application can utilize OpenTelemetry to provide metrics for interactive web applications. diff --git a/_data/versioned/main/index/relations.yaml b/_data/versioned/main/index/relations.yaml index 7d3d02742a7..90263d639a5 100644 --- a/_data/versioned/main/index/relations.yaml +++ b/_data/versioned/main/index/relations.yaml @@ -1720,6 +1720,10 @@ url: /guides/logging type: reference matches: 2 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 2 - title: Collect metrics using Micrometer url: /guides/telemetry-micrometer-tutorial type: tutorial @@ -8079,6 +8083,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -9600,6 +9608,10 @@ url: /guides/centralized-log-management type: guide matches: 2 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 2 - title: Collect metrics using Micrometer url: /guides/telemetry-micrometer-tutorial type: tutorial @@ -9830,6 +9842,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -10631,6 +10647,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -10699,6 +10719,10 @@ url: /guides/telemetry-opentracing-to-otel-tutorial type: tutorial matches: 2 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 2 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -10748,6 +10772,81 @@ url: /guides/telemetry-opentracing-to-otel-tutorial type: tutorial matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 + - title: Using OpenTelemetry Metrics + url: /guides/opentelemetry-metrics + type: guide + matches: 1 + - title: Using OpenTelemetry Tracing + url: /guides/opentelemetry-tracing + type: guide + matches: 1 +/guides/opentelemetry-logging: + sameTopics: + - title: "Centralized log management (Graylog, Logstash, Fluentd)" + url: /guides/centralized-log-management + type: guide + matches: 2 + - title: Logging configuration + url: /guides/logging + type: reference + matches: 2 + - title: Migrate from OpenTracing to OpenTelemetry tracing + url: /guides/telemetry-opentracing-to-otel-tutorial + type: tutorial + matches: 2 + - title: Using OpenTelemetry + url: /guides/opentelemetry + type: reference + matches: 2 + - title: Using OpenTelemetry Metrics + url: /guides/opentelemetry-metrics + type: guide + matches: 2 + - title: Using OpenTelemetry Tracing + url: /guides/opentelemetry-tracing + type: guide + matches: 2 + - title: Collect metrics using Micrometer + url: /guides/telemetry-micrometer-tutorial + type: tutorial + matches: 1 + - title: Management interface reference + url: /guides/management-interface-reference + type: reference + matches: 1 + - title: Micrometer Metrics + url: /guides/telemetry-micrometer + type: reference + matches: 1 + - title: Observability Dev Services + url: /guides/observability-devservices + type: guide + matches: 1 + - title: SmallRye Health + url: /guides/smallrye-health + type: guide + matches: 1 + - title: SmallRye Metrics + url: /guides/smallrye-metrics + type: guide + matches: 1 + - title: Using Java Flight Recorder + url: /guides/jfr + type: guide + matches: 1 + sameExtensions: + - title: Migrate from OpenTracing to OpenTelemetry tracing + url: /guides/telemetry-opentracing-to-otel-tutorial + type: tutorial + matches: 1 + - title: Using OpenTelemetry + url: /guides/opentelemetry + type: reference + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -10770,6 +10869,10 @@ url: /guides/opentelemetry type: reference matches: 2 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 2 - title: Using OpenTelemetry Tracing url: /guides/opentelemetry-tracing type: guide @@ -10815,6 +10918,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Tracing url: /guides/opentelemetry-tracing type: guide @@ -10829,6 +10936,10 @@ url: /guides/opentelemetry type: reference matches: 2 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 2 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -10878,6 +10989,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -19010,6 +19125,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -19064,6 +19183,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Tracing url: /guides/opentelemetry-tracing type: guide @@ -20171,6 +20294,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -20226,6 +20353,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -20249,6 +20380,10 @@ url: /guides/opentelemetry type: reference matches: 2 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 2 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide @@ -20294,6 +20429,10 @@ url: /guides/opentelemetry type: reference matches: 1 + - title: Using OpenTelemetry Logging + url: /guides/opentelemetry-logging + type: guide + matches: 1 - title: Using OpenTelemetry Metrics url: /guides/opentelemetry-metrics type: guide diff --git a/_generated-doc/main/config/quarkus-all-config.adoc b/_generated-doc/main/config/quarkus-all-config.adoc index e63b2229e29..1e206d7e647 100644 --- a/_generated-doc/main/config/quarkus-all-config.adoc +++ b/_generated-doc/main/config/quarkus-all-config.adoc @@ -51683,7 +51683,7 @@ Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_IMAGE_NAME+++` endif::add-copy-button-to-env-var[] -- |string -|`docker.io/grafana/otel-lgtm:0.6.0` +|`docker.io/grafana/otel-lgtm:0.7.5` a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-network-aliases]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-network-aliases[`quarkus.observability.lgtm.network-aliases`]## @@ -51719,22 +51719,22 @@ endif::add-copy-button-to-env-var[] |string |`quarkus-dev-service-lgtm` -a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-otlp-port]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-otlp-port[`quarkus.observability.lgtm.otlp-port`]## +a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-otlp-protocol]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-otlp-protocol[`quarkus.observability.lgtm.otlp-protocol`]## [.description] -- -The port on which LGTM's OTLP port will be exposed. +The LGTM's OTLP protocol. ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PORT+++[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PROTOCOL+++[] endif::add-copy-button-to-env-var[] ifndef::add-copy-button-to-env-var[] -Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PORT+++` +Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PROTOCOL+++` endif::add-copy-button-to-env-var[] -- -|int -|`4318` +|string +|`http/protobuf` a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-enabled]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-enabled[`quarkus.observability.enabled`]## @@ -52126,6 +52126,25 @@ endif::add-copy-button-to-env-var[] |Map | +a|icon:lock[title=Fixed at build time] [[quarkus-oidc_quarkus-keycloak-devservices-container-memory-limit]] [.property-path]##link:#quarkus-oidc_quarkus-keycloak-devservices-container-memory-limit[`quarkus.keycloak.devservices.container-memory-limit`]## + +[.description] +-- +Memory limit for Keycloak container + +If not specified, 750MiB is the default memory limit. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_MEMORY_LIMIT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_MEMORY_LIMIT+++` +endif::add-copy-button-to-env-var[] +-- +|MemorySize link:#memory-size-note-anchor-all-config[icon:question-circle[title=More information about the MemorySize format]] +|`750M` + a|icon:lock[title=Fixed at build time] [[quarkus-oidc_quarkus-oidc-enabled]] [.property-path]##link:#quarkus-oidc_quarkus-oidc-enabled[`quarkus.oidc.enabled`]## @@ -60028,11 +60047,32 @@ endif::add-copy-button-to-env-var[] |list of string |`cdi` +a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-logs-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-enabled[`quarkus.otel.logs.enabled`]## + +[.description] +-- +Enable logs with OpenTelemetry. + +This property is not available in the Open Telemetry SDK. It's Quarkus specific. + +Support for logs will be enabled if OpenTelemetry support is enabled and either this value is true, or this value is unset. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_LOGS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_LOGS_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`false` + a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-logs-exporter]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-exporter[`quarkus.otel.logs.exporter`]## [.description] -- -No Log exporter for now. +The Logs exporter to use. ifdef::add-copy-button-to-env-var[] @@ -60043,7 +60083,7 @@ Environment variable: `+++QUARKUS_OTEL_LOGS_EXPORTER+++` endif::add-copy-button-to-env-var[] -- |list of string -|`none` +|`cdi` a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-propagators]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-propagators[`quarkus.otel.propagators`]## @@ -60288,6 +60328,25 @@ endif::add-copy-button-to-env-var[] |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-all-config[icon:question-circle[title=More information about the Duration format]] |`60S` +a| [[quarkus-opentelemetry_quarkus-otel-logs-handler-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-handler-enabled[`quarkus.otel.logs.handler.enabled`]## + +[.description] +-- +Determine whether to enable the OpenTelemetry logging handler. + +This is a Quarkus specific property. The OpenTelemetry logging handler is enabled by default. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_LOGS_HANDLER_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_LOGS_HANDLER_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`true` + a| [[quarkus-opentelemetry_quarkus-otel-attribute-value-length-limit]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-attribute-value-length-limit[`quarkus.otel.attribute.value.length.limit`]## [.description] @@ -60478,6 +60537,82 @@ endif::add-copy-button-to-env-var[] |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-all-config[icon:question-circle[title=More information about the Duration format]] |`30S` +a| [[quarkus-opentelemetry_quarkus-otel-blrp-schedule-delay]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-schedule-delay[`quarkus.otel.blrp.schedule.delay`]## + +[.description] +-- +The interval, in milliseconds, between two consecutive exports. + +Default is `1000`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_SCHEDULE_DELAY+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_SCHEDULE_DELAY+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-all-config[icon:question-circle[title=More information about the Duration format]] +|`1S` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-max-queue-size]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-max-queue-size[`quarkus.otel.blrp.max.queue.size`]## + +[.description] +-- +The maximum queue size. + +Default is `2048`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_MAX_QUEUE_SIZE+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_MAX_QUEUE_SIZE+++` +endif::add-copy-button-to-env-var[] +-- +|int +|`2048` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-max-export-batch-size]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-max-export-batch-size[`quarkus.otel.blrp.max.export.batch.size`]## + +[.description] +-- +The maximum batch size. + +Default is `512`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_MAX_EXPORT_BATCH_SIZE+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_MAX_EXPORT_BATCH_SIZE+++` +endif::add-copy-button-to-env-var[] +-- +|int +|`512` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-export-timeout]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-export-timeout[`quarkus.otel.blrp.export.timeout`]## + +[.description] +-- +The maximum allowed time, in milliseconds, to export data. + +Default is `30s`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_EXPORT_TIMEOUT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_EXPORT_TIMEOUT+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-all-config[icon:question-circle[title=More information about the Duration format]] +|`30S` + a| [[quarkus-opentelemetry_quarkus-otel-resource-attributes]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-resource-attributes[`quarkus.otel.resource.attributes`]## [.description] @@ -60546,7 +60681,7 @@ Environment variable: `+++QUARKUS_OTEL_EXPERIMENTAL_SHUTDOWN_WAIT_TIME+++` endif::add-copy-button-to-env-var[] -- |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-all-config[icon:question-circle[title=More information about the Duration format]] -|`1S` +|`2S` a| [[quarkus-opentelemetry_quarkus-otel-instrument-vertx-http]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-instrument-vertx-http[`quarkus.otel.instrument.vertx-http`]## @@ -61481,6 +61616,274 @@ endif::add-copy-button-to-env-var[] |string |`explicit_bucket_histogram` +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-endpoint]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-endpoint[`quarkus.otel.exporter.otlp.logs.endpoint`]## + +[.description] +-- +Sets the OTLP endpoint to send telemetry data. If unset, defaults to `OtlpExporterRuntimeConfig++#++DEFAULT_GRPC_BASE_URI`. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..endpoint` where is one of the supported signal types, like `traces` or `metrics`. + +If protocol is `http/protobuf` the version and signal will be appended to the path (e.g. v1/traces or v1/metrics) and the default port will be `OtlpExporterRuntimeConfig++#++DEFAULT_HTTP_BASE_URI`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_ENDPOINT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_ENDPOINT+++` +endif::add-copy-button-to-env-var[] +-- +|string +|`http://localhost:4317/` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-headers]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-headers[`quarkus.otel.exporter.otlp.logs.headers`]## + +[.description] +-- +Key-value pairs to be used as headers associated with exporter requests. The format is similar to the `OTEL_EXPORTER_OTLP_HEADERS` environment variable, a list of key-value pairs separated by the "=" character. i.e.: key1=value1,key2=value2 + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..headers` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_HEADERS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_HEADERS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-compression]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-compression[`quarkus.otel.exporter.otlp.logs.compression`]## + +[.description] +-- +Sets the method used to compress payloads. If unset, compression is disabled. Currently supported compression methods include `gzip` and `none`. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..compression` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_COMPRESSION+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_COMPRESSION+++` +endif::add-copy-button-to-env-var[] +-- +a|`gzip`, `none` +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-timeout]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-timeout[`quarkus.otel.exporter.otlp.logs.timeout`]## + +[.description] +-- +Sets the maximum time to wait for the collector to process an exported batch of telemetry data. If unset, defaults to `OtlpExporterRuntimeConfig++#++DEFAULT_TIMEOUT_SECS`s. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..timeout` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TIMEOUT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TIMEOUT+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-all-config[icon:question-circle[title=More information about the Duration format]] +|`10s` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-protocol]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-protocol[`quarkus.otel.exporter.otlp.logs.protocol`]## + +[.description] +-- +OTLP defines the encoding of telemetry data and the protocol used to exchange data between the client and the server. Depending on the exporter, the available protocols will be different. + +Currently, only `grpc` and `http/protobuf` are allowed. + +Please mind that changing the protocol requires changing the port in the endpoint as well. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..protocol` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROTOCOL+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROTOCOL+++` +endif::add-copy-button-to-env-var[] +-- +|string +|`grpc` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-keys]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-keys[`quarkus.otel.exporter.otlp.logs.key-cert.keys`]## + +[.description] +-- +Comma-separated list of the path to the key files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_KEYS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_KEYS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-certs]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-certs[`quarkus.otel.exporter.otlp.logs.key-cert.certs`]## + +[.description] +-- +Comma-separated list of the path to the certificate files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_CERTS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_CERTS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-trust-cert-certs]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-trust-cert-certs[`quarkus.otel.exporter.otlp.logs.trust-cert.certs`]## + +[.description] +-- +Comma-separated list of the trust certificate files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TRUST_CERT_CERTS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TRUST_CERT_CERTS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-tls-configuration-name]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-tls-configuration-name[`quarkus.otel.exporter.otlp.logs.tls-configuration-name`]## + +[.description] +-- +The name of the TLS configuration to use. + +If not set and the default TLS configuration is configured (`quarkus.tls.++*++`) then that will be used. If a name is configured, it uses the configuration from `quarkus.tls..++*++` If a name is configured, but no TLS configuration is found with that name then an error will be thrown. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..tls-configuration-name` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TLS_CONFIGURATION_NAME+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TLS_CONFIGURATION_NAME+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-enabled[`quarkus.otel.exporter.otlp.logs.proxy-options.enabled`]## + +[.description] +-- +If proxy connection must be used. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.enabled` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`false` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-username]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-username[`quarkus.otel.exporter.otlp.logs.proxy-options.username`]## + +[.description] +-- +Set proxy username. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.username` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_USERNAME+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_USERNAME+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-password]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-password[`quarkus.otel.exporter.otlp.logs.proxy-options.password`]## + +[.description] +-- +Set proxy password. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.password` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PASSWORD+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PASSWORD+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-port]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-port[`quarkus.otel.exporter.otlp.logs.proxy-options.port`]## + +[.description] +-- +Set proxy port. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.port` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PORT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PORT+++` +endif::add-copy-button-to-env-var[] +-- +|int +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-host]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-host[`quarkus.otel.exporter.otlp.logs.proxy-options.host`]## + +[.description] +-- +Set proxy host. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.host` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_HOST+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_HOST+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + h|[.extension-name]##Picocli## h|Type diff --git a/_generated-doc/main/config/quarkus-observability-devservices.adoc b/_generated-doc/main/config/quarkus-observability-devservices.adoc index 9b3e2b6cd09..8e73682a451 100644 --- a/_generated-doc/main/config/quarkus-observability-devservices.adoc +++ b/_generated-doc/main/config/quarkus-observability-devservices.adoc @@ -153,7 +153,7 @@ Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_IMAGE_NAME+++` endif::add-copy-button-to-env-var[] -- |string -|`docker.io/grafana/otel-lgtm:0.6.0` +|`docker.io/grafana/otel-lgtm:0.7.5` a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-network-aliases]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-network-aliases[`quarkus.observability.lgtm.network-aliases`]## @@ -189,22 +189,22 @@ endif::add-copy-button-to-env-var[] |string |`quarkus-dev-service-lgtm` -a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-otlp-port]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-otlp-port[`quarkus.observability.lgtm.otlp-port`]## +a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-otlp-protocol]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-otlp-protocol[`quarkus.observability.lgtm.otlp-protocol`]## [.description] -- -The port on which LGTM's OTLP port will be exposed. +The LGTM's OTLP protocol. ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PORT+++[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PROTOCOL+++[] endif::add-copy-button-to-env-var[] ifndef::add-copy-button-to-env-var[] -Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PORT+++` +Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PROTOCOL+++` endif::add-copy-button-to-env-var[] -- -|int -|`4318` +|string +|`http/protobuf` a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-enabled]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-enabled[`quarkus.observability.enabled`]## diff --git a/_generated-doc/main/config/quarkus-observability-devservices_quarkus.observability.adoc b/_generated-doc/main/config/quarkus-observability-devservices_quarkus.observability.adoc index 9b3e2b6cd09..8e73682a451 100644 --- a/_generated-doc/main/config/quarkus-observability-devservices_quarkus.observability.adoc +++ b/_generated-doc/main/config/quarkus-observability-devservices_quarkus.observability.adoc @@ -153,7 +153,7 @@ Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_IMAGE_NAME+++` endif::add-copy-button-to-env-var[] -- |string -|`docker.io/grafana/otel-lgtm:0.6.0` +|`docker.io/grafana/otel-lgtm:0.7.5` a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-network-aliases]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-network-aliases[`quarkus.observability.lgtm.network-aliases`]## @@ -189,22 +189,22 @@ endif::add-copy-button-to-env-var[] |string |`quarkus-dev-service-lgtm` -a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-otlp-port]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-otlp-port[`quarkus.observability.lgtm.otlp-port`]## +a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-lgtm-otlp-protocol]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-lgtm-otlp-protocol[`quarkus.observability.lgtm.otlp-protocol`]## [.description] -- -The port on which LGTM's OTLP port will be exposed. +The LGTM's OTLP protocol. ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PORT+++[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PROTOCOL+++[] endif::add-copy-button-to-env-var[] ifndef::add-copy-button-to-env-var[] -Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PORT+++` +Environment variable: `+++QUARKUS_OBSERVABILITY_LGTM_OTLP_PROTOCOL+++` endif::add-copy-button-to-env-var[] -- -|int -|`4318` +|string +|`http/protobuf` a|icon:lock[title=Fixed at build time] [[quarkus-observability-devservices_quarkus-observability-enabled]] [.property-path]##link:#quarkus-observability-devservices_quarkus-observability-enabled[`quarkus.observability.enabled`]## diff --git a/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.adoc b/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.adoc index b7f063133e4..43209774498 100644 --- a/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.adoc +++ b/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.adoc @@ -338,6 +338,35 @@ endif::add-copy-button-to-env-var[] |Map | +a|icon:lock[title=Fixed at build time] [[quarkus-oidc_quarkus-keycloak-devservices-container-memory-limit]] [.property-path]##link:#quarkus-oidc_quarkus-keycloak-devservices-container-memory-limit[`quarkus.keycloak.devservices.container-memory-limit`]## + +[.description] +-- +Memory limit for Keycloak container + +If not specified, 750MiB is the default memory limit. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_MEMORY_LIMIT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_MEMORY_LIMIT+++` +endif::add-copy-button-to-env-var[] +-- +|MemorySize link:#memory-size-note-anchor-quarkus-oidc_quarkus-keycloak[icon:question-circle[title=More information about the MemorySize format]] +|`750M` + |=== +ifndef::no-memory-size-note[] +[NOTE] +[id=memory-size-note-anchor-quarkus-oidc_quarkus-keycloak] +.About the MemorySize format +==== +A size configuration option recognizes strings in this format (shown as a regular expression): `[0-9]+[KkMmGgTtPpEeZzYy]?`. + +If no suffix is given, assume bytes. +==== +ifndef::no-memory-size-note[] diff --git a/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.devservices.adoc b/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.devservices.adoc index c668ff004fe..6e7d15250cf 100644 --- a/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.devservices.adoc +++ b/_generated-doc/main/config/quarkus-oidc_quarkus.keycloak.devservices.adoc @@ -334,5 +334,34 @@ endif::add-copy-button-to-env-var[] |Map | +a|icon:lock[title=Fixed at build time] [[quarkus-oidc_quarkus-keycloak-devservices_quarkus-keycloak-devservices-container-memory-limit]] [.property-path]##link:#quarkus-oidc_quarkus-keycloak-devservices_quarkus-keycloak-devservices-container-memory-limit[`quarkus.keycloak.devservices.container-memory-limit`]## + +[.description] +-- +Memory limit for Keycloak container + +If not specified, 750MiB is the default memory limit. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_MEMORY_LIMIT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_KEYCLOAK_DEVSERVICES_CONTAINER_MEMORY_LIMIT+++` +endif::add-copy-button-to-env-var[] +-- +|MemorySize link:#memory-size-note-anchor-quarkus-oidc_quarkus-keycloak-devservices[icon:question-circle[title=More information about the MemorySize format]] +|`750M` + |=== +ifndef::no-memory-size-note[] +[NOTE] +[id=memory-size-note-anchor-quarkus-oidc_quarkus-keycloak-devservices] +.About the MemorySize format +==== +A size configuration option recognizes strings in this format (shown as a regular expression): `[0-9]+[KkMmGgTtPpEeZzYy]?`. + +If no suffix is given, assume bytes. +==== +ifndef::no-memory-size-note[] diff --git a/_generated-doc/main/config/quarkus-opentelemetry.adoc b/_generated-doc/main/config/quarkus-opentelemetry.adoc index 349e39ed36c..fb143bc7fb1 100644 --- a/_generated-doc/main/config/quarkus-opentelemetry.adoc +++ b/_generated-doc/main/config/quarkus-opentelemetry.adoc @@ -125,11 +125,32 @@ endif::add-copy-button-to-env-var[] |list of string |`cdi` +a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-logs-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-enabled[`quarkus.otel.logs.enabled`]## + +[.description] +-- +Enable logs with OpenTelemetry. + +This property is not available in the Open Telemetry SDK. It's Quarkus specific. + +Support for logs will be enabled if OpenTelemetry support is enabled and either this value is true, or this value is unset. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_LOGS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_LOGS_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`false` + a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-logs-exporter]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-exporter[`quarkus.otel.logs.exporter`]## [.description] -- -No Log exporter for now. +The Logs exporter to use. ifdef::add-copy-button-to-env-var[] @@ -140,7 +161,7 @@ Environment variable: `+++QUARKUS_OTEL_LOGS_EXPORTER+++` endif::add-copy-button-to-env-var[] -- |list of string -|`none` +|`cdi` a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-propagators]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-propagators[`quarkus.otel.propagators`]## @@ -385,6 +406,25 @@ endif::add-copy-button-to-env-var[] |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] |`60S` +a| [[quarkus-opentelemetry_quarkus-otel-logs-handler-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-handler-enabled[`quarkus.otel.logs.handler.enabled`]## + +[.description] +-- +Determine whether to enable the OpenTelemetry logging handler. + +This is a Quarkus specific property. The OpenTelemetry logging handler is enabled by default. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_LOGS_HANDLER_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_LOGS_HANDLER_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`true` + a| [[quarkus-opentelemetry_quarkus-otel-attribute-value-length-limit]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-attribute-value-length-limit[`quarkus.otel.attribute.value.length.limit`]## [.description] @@ -575,6 +615,82 @@ endif::add-copy-button-to-env-var[] |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] |`30S` +a| [[quarkus-opentelemetry_quarkus-otel-blrp-schedule-delay]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-schedule-delay[`quarkus.otel.blrp.schedule.delay`]## + +[.description] +-- +The interval, in milliseconds, between two consecutive exports. + +Default is `1000`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_SCHEDULE_DELAY+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_SCHEDULE_DELAY+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] +|`1S` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-max-queue-size]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-max-queue-size[`quarkus.otel.blrp.max.queue.size`]## + +[.description] +-- +The maximum queue size. + +Default is `2048`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_MAX_QUEUE_SIZE+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_MAX_QUEUE_SIZE+++` +endif::add-copy-button-to-env-var[] +-- +|int +|`2048` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-max-export-batch-size]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-max-export-batch-size[`quarkus.otel.blrp.max.export.batch.size`]## + +[.description] +-- +The maximum batch size. + +Default is `512`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_MAX_EXPORT_BATCH_SIZE+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_MAX_EXPORT_BATCH_SIZE+++` +endif::add-copy-button-to-env-var[] +-- +|int +|`512` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-export-timeout]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-export-timeout[`quarkus.otel.blrp.export.timeout`]## + +[.description] +-- +The maximum allowed time, in milliseconds, to export data. + +Default is `30s`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_EXPORT_TIMEOUT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_EXPORT_TIMEOUT+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] +|`30S` + a| [[quarkus-opentelemetry_quarkus-otel-resource-attributes]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-resource-attributes[`quarkus.otel.resource.attributes`]## [.description] @@ -643,7 +759,7 @@ Environment variable: `+++QUARKUS_OTEL_EXPERIMENTAL_SHUTDOWN_WAIT_TIME+++` endif::add-copy-button-to-env-var[] -- |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] -|`1S` +|`2S` a| [[quarkus-opentelemetry_quarkus-otel-instrument-vertx-http]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-instrument-vertx-http[`quarkus.otel.instrument.vertx-http`]## @@ -1578,6 +1694,274 @@ endif::add-copy-button-to-env-var[] |string |`explicit_bucket_histogram` +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-endpoint]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-endpoint[`quarkus.otel.exporter.otlp.logs.endpoint`]## + +[.description] +-- +Sets the OTLP endpoint to send telemetry data. If unset, defaults to `OtlpExporterRuntimeConfig++#++DEFAULT_GRPC_BASE_URI`. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..endpoint` where is one of the supported signal types, like `traces` or `metrics`. + +If protocol is `http/protobuf` the version and signal will be appended to the path (e.g. v1/traces or v1/metrics) and the default port will be `OtlpExporterRuntimeConfig++#++DEFAULT_HTTP_BASE_URI`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_ENDPOINT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_ENDPOINT+++` +endif::add-copy-button-to-env-var[] +-- +|string +|`http://localhost:4317/` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-headers]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-headers[`quarkus.otel.exporter.otlp.logs.headers`]## + +[.description] +-- +Key-value pairs to be used as headers associated with exporter requests. The format is similar to the `OTEL_EXPORTER_OTLP_HEADERS` environment variable, a list of key-value pairs separated by the "=" character. i.e.: key1=value1,key2=value2 + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..headers` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_HEADERS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_HEADERS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-compression]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-compression[`quarkus.otel.exporter.otlp.logs.compression`]## + +[.description] +-- +Sets the method used to compress payloads. If unset, compression is disabled. Currently supported compression methods include `gzip` and `none`. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..compression` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_COMPRESSION+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_COMPRESSION+++` +endif::add-copy-button-to-env-var[] +-- +a|`gzip`, `none` +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-timeout]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-timeout[`quarkus.otel.exporter.otlp.logs.timeout`]## + +[.description] +-- +Sets the maximum time to wait for the collector to process an exported batch of telemetry data. If unset, defaults to `OtlpExporterRuntimeConfig++#++DEFAULT_TIMEOUT_SECS`s. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..timeout` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TIMEOUT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TIMEOUT+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] +|`10s` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-protocol]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-protocol[`quarkus.otel.exporter.otlp.logs.protocol`]## + +[.description] +-- +OTLP defines the encoding of telemetry data and the protocol used to exchange data between the client and the server. Depending on the exporter, the available protocols will be different. + +Currently, only `grpc` and `http/protobuf` are allowed. + +Please mind that changing the protocol requires changing the port in the endpoint as well. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..protocol` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROTOCOL+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROTOCOL+++` +endif::add-copy-button-to-env-var[] +-- +|string +|`grpc` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-keys]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-keys[`quarkus.otel.exporter.otlp.logs.key-cert.keys`]## + +[.description] +-- +Comma-separated list of the path to the key files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_KEYS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_KEYS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-certs]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-certs[`quarkus.otel.exporter.otlp.logs.key-cert.certs`]## + +[.description] +-- +Comma-separated list of the path to the certificate files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_CERTS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_CERTS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-trust-cert-certs]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-trust-cert-certs[`quarkus.otel.exporter.otlp.logs.trust-cert.certs`]## + +[.description] +-- +Comma-separated list of the trust certificate files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TRUST_CERT_CERTS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TRUST_CERT_CERTS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-tls-configuration-name]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-tls-configuration-name[`quarkus.otel.exporter.otlp.logs.tls-configuration-name`]## + +[.description] +-- +The name of the TLS configuration to use. + +If not set and the default TLS configuration is configured (`quarkus.tls.++*++`) then that will be used. If a name is configured, it uses the configuration from `quarkus.tls..++*++` If a name is configured, but no TLS configuration is found with that name then an error will be thrown. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..tls-configuration-name` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TLS_CONFIGURATION_NAME+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TLS_CONFIGURATION_NAME+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-enabled[`quarkus.otel.exporter.otlp.logs.proxy-options.enabled`]## + +[.description] +-- +If proxy connection must be used. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.enabled` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`false` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-username]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-username[`quarkus.otel.exporter.otlp.logs.proxy-options.username`]## + +[.description] +-- +Set proxy username. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.username` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_USERNAME+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_USERNAME+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-password]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-password[`quarkus.otel.exporter.otlp.logs.proxy-options.password`]## + +[.description] +-- +Set proxy password. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.password` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PASSWORD+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PASSWORD+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-port]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-port[`quarkus.otel.exporter.otlp.logs.proxy-options.port`]## + +[.description] +-- +Set proxy port. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.port` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PORT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PORT+++` +endif::add-copy-button-to-env-var[] +-- +|int +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-host]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-host[`quarkus.otel.exporter.otlp.logs.proxy-options.host`]## + +[.description] +-- +Set proxy host. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.host` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_HOST+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_HOST+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + |=== ifndef::no-duration-note[] diff --git a/_generated-doc/main/config/quarkus-opentelemetry_quarkus.otel.adoc b/_generated-doc/main/config/quarkus-opentelemetry_quarkus.otel.adoc index 349e39ed36c..fb143bc7fb1 100644 --- a/_generated-doc/main/config/quarkus-opentelemetry_quarkus.otel.adoc +++ b/_generated-doc/main/config/quarkus-opentelemetry_quarkus.otel.adoc @@ -125,11 +125,32 @@ endif::add-copy-button-to-env-var[] |list of string |`cdi` +a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-logs-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-enabled[`quarkus.otel.logs.enabled`]## + +[.description] +-- +Enable logs with OpenTelemetry. + +This property is not available in the Open Telemetry SDK. It's Quarkus specific. + +Support for logs will be enabled if OpenTelemetry support is enabled and either this value is true, or this value is unset. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_LOGS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_LOGS_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`false` + a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-logs-exporter]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-exporter[`quarkus.otel.logs.exporter`]## [.description] -- -No Log exporter for now. +The Logs exporter to use. ifdef::add-copy-button-to-env-var[] @@ -140,7 +161,7 @@ Environment variable: `+++QUARKUS_OTEL_LOGS_EXPORTER+++` endif::add-copy-button-to-env-var[] -- |list of string -|`none` +|`cdi` a|icon:lock[title=Fixed at build time] [[quarkus-opentelemetry_quarkus-otel-propagators]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-propagators[`quarkus.otel.propagators`]## @@ -385,6 +406,25 @@ endif::add-copy-button-to-env-var[] |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] |`60S` +a| [[quarkus-opentelemetry_quarkus-otel-logs-handler-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-logs-handler-enabled[`quarkus.otel.logs.handler.enabled`]## + +[.description] +-- +Determine whether to enable the OpenTelemetry logging handler. + +This is a Quarkus specific property. The OpenTelemetry logging handler is enabled by default. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_LOGS_HANDLER_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_LOGS_HANDLER_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`true` + a| [[quarkus-opentelemetry_quarkus-otel-attribute-value-length-limit]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-attribute-value-length-limit[`quarkus.otel.attribute.value.length.limit`]## [.description] @@ -575,6 +615,82 @@ endif::add-copy-button-to-env-var[] |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] |`30S` +a| [[quarkus-opentelemetry_quarkus-otel-blrp-schedule-delay]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-schedule-delay[`quarkus.otel.blrp.schedule.delay`]## + +[.description] +-- +The interval, in milliseconds, between two consecutive exports. + +Default is `1000`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_SCHEDULE_DELAY+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_SCHEDULE_DELAY+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] +|`1S` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-max-queue-size]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-max-queue-size[`quarkus.otel.blrp.max.queue.size`]## + +[.description] +-- +The maximum queue size. + +Default is `2048`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_MAX_QUEUE_SIZE+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_MAX_QUEUE_SIZE+++` +endif::add-copy-button-to-env-var[] +-- +|int +|`2048` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-max-export-batch-size]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-max-export-batch-size[`quarkus.otel.blrp.max.export.batch.size`]## + +[.description] +-- +The maximum batch size. + +Default is `512`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_MAX_EXPORT_BATCH_SIZE+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_MAX_EXPORT_BATCH_SIZE+++` +endif::add-copy-button-to-env-var[] +-- +|int +|`512` + +a| [[quarkus-opentelemetry_quarkus-otel-blrp-export-timeout]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-blrp-export-timeout[`quarkus.otel.blrp.export.timeout`]## + +[.description] +-- +The maximum allowed time, in milliseconds, to export data. + +Default is `30s`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_BLRP_EXPORT_TIMEOUT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_BLRP_EXPORT_TIMEOUT+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] +|`30S` + a| [[quarkus-opentelemetry_quarkus-otel-resource-attributes]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-resource-attributes[`quarkus.otel.resource.attributes`]## [.description] @@ -643,7 +759,7 @@ Environment variable: `+++QUARKUS_OTEL_EXPERIMENTAL_SHUTDOWN_WAIT_TIME+++` endif::add-copy-button-to-env-var[] -- |link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] -|`1S` +|`2S` a| [[quarkus-opentelemetry_quarkus-otel-instrument-vertx-http]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-instrument-vertx-http[`quarkus.otel.instrument.vertx-http`]## @@ -1578,6 +1694,274 @@ endif::add-copy-button-to-env-var[] |string |`explicit_bucket_histogram` +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-endpoint]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-endpoint[`quarkus.otel.exporter.otlp.logs.endpoint`]## + +[.description] +-- +Sets the OTLP endpoint to send telemetry data. If unset, defaults to `OtlpExporterRuntimeConfig++#++DEFAULT_GRPC_BASE_URI`. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..endpoint` where is one of the supported signal types, like `traces` or `metrics`. + +If protocol is `http/protobuf` the version and signal will be appended to the path (e.g. v1/traces or v1/metrics) and the default port will be `OtlpExporterRuntimeConfig++#++DEFAULT_HTTP_BASE_URI`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_ENDPOINT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_ENDPOINT+++` +endif::add-copy-button-to-env-var[] +-- +|string +|`http://localhost:4317/` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-headers]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-headers[`quarkus.otel.exporter.otlp.logs.headers`]## + +[.description] +-- +Key-value pairs to be used as headers associated with exporter requests. The format is similar to the `OTEL_EXPORTER_OTLP_HEADERS` environment variable, a list of key-value pairs separated by the "=" character. i.e.: key1=value1,key2=value2 + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..headers` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_HEADERS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_HEADERS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-compression]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-compression[`quarkus.otel.exporter.otlp.logs.compression`]## + +[.description] +-- +Sets the method used to compress payloads. If unset, compression is disabled. Currently supported compression methods include `gzip` and `none`. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..compression` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_COMPRESSION+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_COMPRESSION+++` +endif::add-copy-button-to-env-var[] +-- +a|`gzip`, `none` +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-timeout]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-timeout[`quarkus.otel.exporter.otlp.logs.timeout`]## + +[.description] +-- +Sets the maximum time to wait for the collector to process an exported batch of telemetry data. If unset, defaults to `OtlpExporterRuntimeConfig++#++DEFAULT_TIMEOUT_SECS`s. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..timeout` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TIMEOUT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TIMEOUT+++` +endif::add-copy-button-to-env-var[] +-- +|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-quarkus-opentelemetry_quarkus-otel[icon:question-circle[title=More information about the Duration format]] +|`10s` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-protocol]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-protocol[`quarkus.otel.exporter.otlp.logs.protocol`]## + +[.description] +-- +OTLP defines the encoding of telemetry data and the protocol used to exchange data between the client and the server. Depending on the exporter, the available protocols will be different. + +Currently, only `grpc` and `http/protobuf` are allowed. + +Please mind that changing the protocol requires changing the port in the endpoint as well. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..protocol` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROTOCOL+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROTOCOL+++` +endif::add-copy-button-to-env-var[] +-- +|string +|`grpc` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-keys]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-keys[`quarkus.otel.exporter.otlp.logs.key-cert.keys`]## + +[.description] +-- +Comma-separated list of the path to the key files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_KEYS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_KEYS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-certs]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-key-cert-certs[`quarkus.otel.exporter.otlp.logs.key-cert.certs`]## + +[.description] +-- +Comma-separated list of the path to the certificate files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_CERTS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_KEY_CERT_CERTS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-trust-cert-certs]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-trust-cert-certs[`quarkus.otel.exporter.otlp.logs.trust-cert.certs`]## + +[.description] +-- +Comma-separated list of the trust certificate files (Pem format). + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TRUST_CERT_CERTS+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TRUST_CERT_CERTS+++` +endif::add-copy-button-to-env-var[] +-- +|list of string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-tls-configuration-name]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-tls-configuration-name[`quarkus.otel.exporter.otlp.logs.tls-configuration-name`]## + +[.description] +-- +The name of the TLS configuration to use. + +If not set and the default TLS configuration is configured (`quarkus.tls.++*++`) then that will be used. If a name is configured, it uses the configuration from `quarkus.tls..++*++` If a name is configured, but no TLS configuration is found with that name then an error will be thrown. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..tls-configuration-name` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TLS_CONFIGURATION_NAME+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_TLS_CONFIGURATION_NAME+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-enabled]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-enabled[`quarkus.otel.exporter.otlp.logs.proxy-options.enabled`]## + +[.description] +-- +If proxy connection must be used. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.enabled` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_ENABLED+++` +endif::add-copy-button-to-env-var[] +-- +|boolean +|`false` + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-username]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-username[`quarkus.otel.exporter.otlp.logs.proxy-options.username`]## + +[.description] +-- +Set proxy username. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.username` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_USERNAME+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_USERNAME+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-password]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-password[`quarkus.otel.exporter.otlp.logs.proxy-options.password`]## + +[.description] +-- +Set proxy password. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.password` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PASSWORD+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PASSWORD+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-port]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-port[`quarkus.otel.exporter.otlp.logs.proxy-options.port`]## + +[.description] +-- +Set proxy port. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.port` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PORT+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_PORT+++` +endif::add-copy-button-to-env-var[] +-- +|int +| + +a| [[quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-host]] [.property-path]##link:#quarkus-opentelemetry_quarkus-otel-exporter-otlp-logs-proxy-options-host[`quarkus.otel.exporter.otlp.logs.proxy-options.host`]## + +[.description] +-- +Set proxy host. + +There is a generic property, that will apply to all signals and a signal specific one, following the pattern: `quarkus.otel.exporter.otlp..proxy-options.host` where is one of the supported signal types, like `traces` or `metrics`. + + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_HOST+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_OTEL_EXPORTER_OTLP_LOGS_PROXY_OPTIONS_HOST+++` +endif::add-copy-button-to-env-var[] +-- +|string +| + |=== ifndef::no-duration-note[] diff --git a/_versions/main/guides/_includes/opentelemetry-config.adoc b/_versions/main/guides/_includes/opentelemetry-config.adoc index 98e9507f6f8..cf4dcfff15f 100644 --- a/_versions/main/guides/_includes/opentelemetry-config.adoc +++ b/_versions/main/guides/_includes/opentelemetry-config.adoc @@ -1,5 +1,3 @@ -There are no mandatory configurations for the extension to work. - By default, the exporters will send out data in batches, using the gRPC protocol and endpoint `http://localhost:4317`. If you need to change any of the default property values, here is an example on how to configure the default OTLP gRPC Exporter within the application, using the `src/main/resources/application.properties` file: @@ -31,6 +29,8 @@ If you need different configurations for each signal, you can use the specific p ---- quarkus.otel.exporter.otlp.traces.endpoint=http://trace-uri:4317 // <1> quarkus.otel.exporter.otlp.metrics.endpoint=http://metrics-uri:4317 // <2> +quarkus.otel.exporter.otlp.logs.endpoint=http://logs-uri:4317 // <3> ---- <1> The endpoint for the traces exporter. <2> The endpoint for the metrics exporter. +<3> The endpoint for the logs exporter. diff --git a/_versions/main/guides/logging.adoc b/_versions/main/guides/logging.adoc index ceca6071f7e..aa47489dade 100644 --- a/_versions/main/guides/logging.adoc +++ b/_versions/main/guides/logging.adoc @@ -631,6 +631,11 @@ Use a centralized location to efficiently collect, store, and analyze log data f To send logs to a centralized tool such as Graylog, Logstash, or Fluentd, see the Quarkus xref:centralized-log-management.adoc[Centralized log management] guide. +=== OpenTelemetry logging +Logging entries from all appenders can be sent using OpenTelemetry Logging. + +For details, see the Quarkus xref:opentelemetry-logging.adoc[OpenTelemetry Logging] guide. + == Configure logging for `@QuarkusTest` Enable proper logging for `@QuarkusTest` by setting the `java.util.logging.manager` system property to `org.jboss.logmanager.LogManager`. diff --git a/_versions/main/guides/openapi-swaggerui.adoc b/_versions/main/guides/openapi-swaggerui.adoc index ab660bbb6b9..89f41ea22ea 100644 --- a/_versions/main/guides/openapi-swaggerui.adoc +++ b/_versions/main/guides/openapi-swaggerui.adoc @@ -573,6 +573,11 @@ If you plan to consume this application from a Single Page Application running o == Configuration Reference +=== MicroProfile OpenAPI + +MicroProfile OpenAPI Core configuration is defined in https://download.eclipse.org/microprofile/microprofile-open-api-3.1.1/microprofile-openapi-spec-3.1.1.html#_core_configurations[MicroProfile OpenAPI Specification]. +More information about the MicroProfile OpenAPI annotations can be found in the https://download.eclipse.org/microprofile/microprofile-open-api-3.1.1/apidocs/org/eclipse/microprofile/openapi/annotations/package-summary.html[MicroProfile OpenAPI API Javadoc]. + === OpenAPI include::{generated-dir}/config/quarkus-smallrye-openapi.adoc[opts=optional, leveloffset=+1] diff --git a/_versions/main/guides/opentelemetry-logging.adoc b/_versions/main/guides/opentelemetry-logging.adoc new file mode 100644 index 00000000000..9c53a762730 --- /dev/null +++ b/_versions/main/guides/opentelemetry-logging.adoc @@ -0,0 +1,173 @@ +//// +This guide is maintained in the main Quarkus repository +and pull requests should be submitted there: +https://github.com/quarkusio/quarkus/tree/main/docs/src/main/asciidoc +//// += Using OpenTelemetry Logging +include::_attributes.adoc[] +:categories: observability +:summary: This guide explains how your Quarkus application can utilize OpenTelemetry Logging to provide distributed logging for interactive web applications. +:topics: observability,opentelemetry,logging +:extensions: io.quarkus:quarkus-opentelemetry + +This guide explains how your Quarkus application can utilize https://opentelemetry.io/[OpenTelemetry] (OTel) to provide +distributed logging for interactive web applications. + +[NOTE] +==== +- OpenTelemetry Logging is disabled by default. +- The xref:opentelemetry.adoc[OpenTelemetry Guide] is available with signal independent information about the OpenTelemetry extension. +==== + +== Prerequisites + +:prerequisites-docker-compose: +include::{includes}/prerequisites.adoc[] + +== Architecture + +In this guide, we create a straightforward REST application to demonstrate distributed logging, similar to the other OpenTelemetry guides. + +== Solution + +We recommend that you follow the instructions in the next sections and create the application step by step. +However, you can skip right to the completed example. + +Clone the Git repository: `git clone {quickstarts-clone-url}`, or download an {quickstarts-archive-url}[archive]. + +The solution is located in the `opentelemetry-quickstart` link:{quickstarts-tree-url}/opentelemetry-quickstart[directory]. + +== Creating the Maven project + +First, we need a new project. Create a new project with the following command: + +:create-app-artifact-id: opentelemetry-quickstart +:create-app-extensions: rest,quarkus-opentelemetry +include::{includes}/devtools/create-app.adoc[] + +This command generates the Maven project and imports the `quarkus-opentelemetry` extension, +which includes the default OpenTelemetry support, +and a gRPC span exporter for https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md[OTLP]. + +If you already have your Quarkus project configured, you can add the `quarkus-opentelemetry` extension +to your project by running the following command in your project base directory: + +:add-extension-extensions: opentelemetry +include::{includes}/devtools/extension-add.adoc[] + +This will add the following to your build file: + +[source,xml,role="primary asciidoc-tabs-target-sync-cli asciidoc-tabs-target-sync-maven"] +.pom.xml +---- + + io.quarkus + quarkus-opentelemetry + +---- + +[source,gradle,role="secondary asciidoc-tabs-target-sync-gradle"] +.build.gradle +---- +implementation("io.quarkus:quarkus-opentelemetry") +---- + +=== Examine the Jakarta REST resource + +Create a `src/main/java/org/acme/opentelemetry/TracedResource.java` file with the following content: + +[source,java] +---- +package org.acme.opentelemetry; + +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import org.jboss.logging.Logger; + +@Path("/hello") +public class TracedResource { + + private static final Logger LOG = Logger.getLogger(TracedResource.class); + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + LOG.info("hello"); + return "hello"; + } +} +---- + +If you have followed the tracing guide, this class will seem familiar. The main difference is that now, the `hello` message logged with `org.jboss.logging.Logger` will end up in the OpenTelemetry logs. + +=== Create the configuration + +The only mandatory configuration for OpenTelemetry Logging is the one enabling it: +[source,properties] +---- +quarkus.otel.logs.enabled=true +---- + +To change any of the default property values, here is an example on how to configure the default OTLP gRPC Exporter within the application, using the `src/main/resources/application.properties` file: + +[source,properties] +---- +quarkus.application.name=myservice // <1> +quarkus.otel.logs.enabled=true // <2> +quarkus.otel.exporter.otlp.logs.endpoint=http://localhost:4317 // <3> +quarkus.otel.exporter.otlp.logs.headers=authorization=Bearer my_secret // <4> +---- + +<1> All logs created from the application will include an OpenTelemetry `Resource` indicating the logs were created by the `myservice` application. +If not set, it will default to the artifact id. +<2> Enable the OpenTelemetry logging. +Must be set at build time. +<3> gRPC endpoint to send the logs. +If not set, it will default to `http://localhost:4317`. +<4> Optional gRPC headers commonly used for authentication. + +To configure the connection using the same properties for all signals, please check the base xref:opentelemetry.adoc#create-the-configuration[configuration section of the OpenTelemetry guide]. + +== Run the application + +First we need to start a system to visualise the OpenTelemetry data. +We have 2 options: + +* Start an all-in-one Grafana OTel LGTM system for traces, metrics and logs. + +=== See the data + +==== Grafana OTel LGTM option + +* Take a look at: xref:observability-devservices-lgtm.adoc[Getting Started with Grafana-OTel-LGTM]. + +This features a Quarkus Dev service including a Grafana for visualizing data, Loki to store logs, Tempo to store traces and Prometheus to store metrics. Also provides and OTel collector to receive the data. + +==== Logging exporter + +You can output all logs to the console by setting the exporter to `logging` in the `application.properties` file: +[source, properties] +---- +quarkus.otel.logs.exporter=logging <1> +---- + +<1> Set the exporter to `logging`. +Normally you don't need to set this. +The default is `cdi`. + + +Also add this dependency to your project: +[source,xml] +---- + + io.opentelemetry + opentelemetry-exporter-logging + +---- + +[[configuration-reference]] +== OpenTelemetry Configuration Reference + +See the main xref:opentelemetry.adoc#configuration-reference[OpenTelemetry Guide configuration] reference. diff --git a/_versions/main/guides/opentelemetry-metrics.adoc b/_versions/main/guides/opentelemetry-metrics.adoc index 4efa5e11c70..91dc46d533b 100644 --- a/_versions/main/guides/opentelemetry-metrics.adoc +++ b/_versions/main/guides/opentelemetry-metrics.adoc @@ -15,6 +15,7 @@ metrics for interactive web applications. [NOTE] ==== +- OpenTelemetry Metrics is disabled by default and Quarkus does not produce automatic metrics for it. - The xref:opentelemetry.adoc[OpenTelemetry Guide] is available with signal independent information about the OpenTelemetry extension. - If you search more information about OpenTelemetry Tracing, please refer to the xref:opentelemetry-tracing.adoc[OpenTelemetry Tracing Guide]. ==== @@ -123,9 +124,13 @@ Here we are creating a counter for the number of invocations of the `hello()` me === Create the configuration -There are no mandatory configurations for the extension to work. +The only mandatory configuration for OpenTelemetry Metrics is the one enabling it: +[source,properties] +---- +quarkus.otel.metrics.enabled=true +---- -If you need to change any of the default property values, here is an example on how to configure the default OTLP gRPC Exporter within the application, using the `src/main/resources/application.properties` file: +To change any of the default property values, here is an example on how to configure the default OTLP gRPC Exporter within the application, using the `src/main/resources/application.properties` file: [source,properties] ---- @@ -174,6 +179,15 @@ The default is `cdi`. <2> Set the interval to export the metrics. The default is `1m`, which is too long for debugging. +Also add this dependency to your project: +[source,xml] +---- + + io.opentelemetry + opentelemetry-exporter-logging + +---- + === Start the application Now we are ready to run our application. diff --git a/_versions/main/guides/opentelemetry.adoc b/_versions/main/guides/opentelemetry.adoc index f3a79b928b7..aea471d1c87 100644 --- a/_versions/main/guides/opentelemetry.adoc +++ b/_versions/main/guides/opentelemetry.adoc @@ -63,6 +63,17 @@ For now only manual instrumentation is supported. You can use the OpenTelemetry In the future, we plan to bridge current Micrometer metrics to OpenTelemetry and maintain compatibility when possible. +=== xref:opentelemetry-logging.adoc[OpenTelemetry Logging Guide] + +==== Enable Logs +The logging functionality is experimental and *off* by default. You will need to activate it by setting: + +[source,properties] +---- +quarkus.otel.logs.enabled=true +---- +At build time on your `application.properties` file. + == Using the extension If you already have your Quarkus project, you can add the `quarkus-opentelemetry` extension diff --git a/_versions/main/guides/security-authorize-web-endpoints-reference.adoc b/_versions/main/guides/security-authorize-web-endpoints-reference.adoc index 41b2994caeb..f666e782d89 100644 --- a/_versions/main/guides/security-authorize-web-endpoints-reference.adoc +++ b/_versions/main/guides/security-authorize-web-endpoints-reference.adoc @@ -830,7 +830,7 @@ Your custom class must define exactly one constructor that accepts the permissio In this scenario, the permission `list` is added to the `SecurityIdentity` instance as `new CustomPermission("list")`. You can also create a custom `java.security.Permission` class with additional constructor parameters. -These additional parameters get matched with arguments of the method annotated with the `@PermissionsAllowed` annotation. +These additional parameters names get matched with arguments names of the method annotated with the `@PermissionsAllowed` annotation. Later, Quarkus instantiates your custom permission with actual arguments, with which the method annotated with the `@PermissionsAllowed` has been invoked. .Example of a custom `java.security.Permission` class that accepts additional arguments @@ -910,12 +910,12 @@ import org.acme.library.LibraryPermission.Library; public class LibraryService { @PermissionsAllowed(value = "tv:write", permission = LibraryPermission.class) <1> - public Library updateLibrary(String newDesc, Library update) { - update.description = newDesc; - return update; + public Library updateLibrary(String newDesc, Library library) { + library.description = newDesc; + return library; } - @PermissionsAllowed(value = "tv:write", permission = LibraryPermission.class, params = "library") <2> + @PermissionsAllowed(value = "tv:write", permission = LibraryPermission.class) <2> @PermissionsAllowed(value = {"tv:read", "tv:list"}, permission = LibraryPermission.class) public Library migrateLibrary(Library migrate, Library library) { // migrate libraries @@ -924,10 +924,11 @@ public class LibraryService { } ---- -<1> The formal parameter `update` is identified as the first `Library` parameter and gets passed to the `LibraryPermission` class. +<1> The formal parameter `library` is identified as the parameter matching same-named `LibraryPermission` constructor parameter. +Therefore, Quarkus will pass the `library` parameter to the `LibraryPermission` class constructor. However, the `LibraryPermission` must be instantiated each time the `updateLibrary` method is invoked. -<2> Here, the first `Library` parameter is `migrate`; therefore, the `library` parameter gets marked explicitly through `PermissionsAllowed#params`. -The permission constructor and the annotated method must have the parameter `library` set; otherwise, validation fails. +<2> Here, the second `Library` parameter matches the name `library`, +while the `migrate` parameter is ignored during the `LibraryPermission` permission instantiation. .Example of a resource secured with the `LibraryPermission` @@ -1078,6 +1079,125 @@ public @interface CanWrite { ---- <1> Any method or class annotated with the `@CanWrite` annotation is secured with this `@PermissionsAllowed` annotation instance. +[[permission-bean-params]] +=== Pass `@BeanParam` parameters into a custom permission + +Quarkus can map fields of a secured method parameters to a custom permission constructor parameters. +You can use this feature to pass `jakarta.ws.rs.BeanParam` parameters into your custom permission. +Let's consider following Jakarta REST resource: + +[source,java] +---- +package org.acme.security.rest.resource; + +import io.quarkus.security.PermissionsAllowed; +import jakarta.ws.rs.BeanParam; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; + +@Path("/hello") +public class SimpleResource { + + @PermissionsAllowed(value = "say:hello", permission = BeanParamPermission.class, + params = "beanParam.securityContext.userPrincipal.name") <1> + @GET + public String sayHello(@BeanParam SimpleBeanParam beanParam) { + return "Hello from " + beanParam.uriInfo.getPath(); + } + +} +---- +<1> The `params` annotation attribute specifies that user principal name should be passed to the `BeanParamPermission` constructor. +Other `BeanParamPermission` constructor parameters like `customAuthorizationHeader` and `query` are matched automatically. +Quarkus identifies the `BeanParamPermission` constructor parameters among `beanParam` fields and their public accessors. +To avoid ambiguous resolution, automatic detection only works for the `beanParam` fields. +For that reason, we had to specify path to the user principal name explicitly. + +Where the `SimpleBeanParam` class is declared like in the example below: + +[source,java] +---- +package org.acme.security.rest.dto; + +import java.util.List; + +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.SecurityContext; +import jakarta.ws.rs.core.UriInfo; + +public class SimpleBeanParam { + + @HeaderParam("CustomAuthorization") + private String customAuthorizationHeader; + + @Context + SecurityContext securityContext; + + @Context + public UriInfo uriInfo; + + @QueryParam("query") + public String query; <1> + + public SecurityContext getSecurityContext() { <2> + return securityContext; + } + + public String customAuthorizationHeader() { <3> + return customAuthorizationHeader; + } +} +---- +<1> Quarkus Security can only pass public fields to a custom permission constructor. +<2> Quarkus Security automatically uses public getter methods if they are available. +<3> The `customAuthorizationHeader` field is not public, therefore Quarkus access this field with the `customAuthorizationHeader` accessor. +That is particularly useful with Java records, where generated accessors are not prefixed with `get`. + +Here is an example of the `BeanParamPermission` permission that checks user principal, custom header and query parameter: + +[source,java] +---- +package org.acme.security.permission; + +import java.security.Permission; + +public class BeanParamPermission extends Permission { + + private final String actions; + + public BeanParamPermission(String permissionName, String customAuthorizationHeader, String name, String query) { + super(permissionName); + this.actions = computeActions(customAuthorizationHeader, name, query); + } + + @Override + public boolean implies(Permission p) { + boolean nameMatches = getName().equals(p.getName()); + boolean actionMatches = actions.equals(p.getActions()); + return nameMatches && actionMatches; + } + + private static String computeActions(String customAuthorizationHeader, String name, String query) { + boolean queryParamAllowedForPermissionName = checkQueryParams(query); + boolean usernameWhitelisted = isUserNameWhitelisted(name); + boolean customAuthorizationMatches = checkCustomAuthorization(customAuthorizationHeader); + var isAuthorized = queryParamAllowedForPermissionName && usernameWhitelisted && customAuthorizationMatches; + if (isAuthorized) { + return "hello"; + } else { + return "goodbye"; + } + } + + ... +} +---- + +NOTE: You can pass `@BeanParam` directly into a custom permission constructor and access its fields programmatically in the constructor instead. +Ability to reference `@BeanParam` fields with the `@PermissionsAllowed#params` attribute is useful when you have multiple differently structured `@BeanParam` classes. + == References * xref:security-overview.adoc[Quarkus Security overview]