> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Open Telemetry default properties

> Default OpenTelemetry configuration properties for FlowX.AI services, including Java agent settings, exporters, and resource attributes.

* `otel.resource.attributes=service.name=flowx-process-engine,service.version=1.1.1`: Environment variable.

<Info>
  Will be overridden as environment variable by Kubernetes operator. Useful for local development.
</Info>

### Java agent configuration

* `otel.javaagent.enabled=true`
* `otel.javaagent.logging=simple`
* `otel.javaagent.debug=false`

### Disable OTEL SDK

* `otel.sdk.disabled=false`

## Exporters configuration (common config for all exporters)

* `otel.traces.exporter=otlp`
* `otel.metrics.exporter=otlp`
* `otel.logs.exporter=otlp`

### OTLP exporter

* `otel.exporter.otlp.endpoint=http://localhost:4317`

<Info>
  Endpoint will be overridden by Kubernetes operator. Useful for local development.
</Info>

* `otel.exporter.otlp.protocol=grpc`
* `otel.exporter.otlp.timeout=10000`
* `otel.exporter.otlp.compression=gzip`
* `otel.exporter.otlp.metrics.temporality.preference=cumulative`
* `otel.exporter.otlp.metrics.default.histogram.aggregation=explicit_bucket_histogram`

### Tracer provider

<Info>
  `SdkTracerProvider` specific configuration options.
</Info>

<Info>
  * Sampler: see the [OpenTelemetry sampler documentation](https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/autoconfigure/README.md#sampler)
  * The default sampler is: `parentbased_always_on`
  * To disable FlowX technical spans, add sampler: `fxTechnicalSpanFilterSampler`
</Info>

* `otel.traces.sampler=parentbased_always_on`

### Batch span processor

* `otel.bsp.schedule.delay=5000`
* `otel.bsp.max.queue.size=2048`
* `otel.bsp.max.export.batch.size=512`
* `otel.bsp.export.timeout=30000`

### Meter provider

<Info>
  The following configuration options are specific to `SdkMeterProvider`.
</Info>

* `otel.metric.export.interval=60000`
* `otel.metric.export.timeout=10000`

### Logger provider

<Info>
  The following configuration options are specific to `SdkLoggerProvider`.
</Info>

* `otel.blrp.schedule.delay=1000`
* `otel.blrp.max.queue.size=2048`
* `otel.blrp.max.export.batch.size=512`
* `otel.blrp.export.timeout=30000`

## Agent auto-instrumentation

* `otel.instrumentation.messaging.experimental.receive-telemetry.enabled=false`
* `otel.instrumentation.common.experimental.controller-telemetry.enabled=true`
* `otel.instrumentation.common.experimental.view-telemetry.enabled=true`
* `otel.instrumentation.common.default-enabled=false`

<Info>
  Disable all auto instrumentation and enable only what's necessary. This has to be commented out entirely to work as default.
</Info>

### Disable annotated methods

* `otel.instrumentation.opentelemetry-instrumentation-annotations.exclude-methods=my.package.MyClass1[method1,method2];my.package.MyClass2[method3]`

### Instrumentation config per library

<Info>
  Some instrumentation relies on other instrumentation to function properly. When selectively enabling instrumentation, be sure to enable the transitive dependencies too.
</Info>

* `otel.instrumentation.opentelemetry-api.enabled=true`
* `otel.instrumentation.opentelemetry-instrumentation-annotations.enabled=true`
* `otel.instrumentation.opentelemetry-extension-annotations.enabled=false`
* `otel.instrumentation.methods.enabled=true`
* `otel.instrumentation.external-annotations.enabled=true`
* `otel.instrumentation.kafka.enabled=true`
* `otel.instrumentation.tomcat.enabled=true`
* `otel.instrumentation.elasticsearch-transport.enabled=true`
* `otel.instrumentation.elasticsearch-rest.enabled=true`
* `otel.instrumentation.grpc.enabled=true`
* `otel.instrumentation.hibernate.enabled=false`

<Info>
  Hibernate and JDBC kind of duplicate the queries traces
</Info>

* `otel.instrumentation.hikaricp.enabled=false`

* `otel.instrumentation.java-http-client.enabled=true`

* `otel.instrumentation.http-url-connection.enabled=true`

* `otel.instrumentation.jdbc.enabled=false`

* `otel.instrumentation.jdbc-datasource.enabled=false`

* `otel.instrumentation.runtime-telemetry.enabled=true`

* `otel.instrumentation.servlet.enabled=true`

* `otel.instrumentation.executors.enabled=true`

* `otel.instrumentation.java-util-logging.enabled=true`

* `otel.instrumentation.log4j-appender.enabled=true`

* `otel.instrumentation.log4j-mdc.enabled=true`

* `otel.instrumentation.log4j-context-data.enabled=true`

* `otel.instrumentation.logback-appender.enabled=true`

* `otel.instrumentation.logback-mdc.enabled=true`

* `otel.instrumentation.mongo.enabled=true`

* `otel.instrumentation.rxjava.enabled=false`

* `otel.instrumentation.reactor.enabled=false`

### Redis client imported by spring-redis-data

* `otel.instrumentation.lettuce.enabled=true`

## Spring instrumentation props

* `otel.instrumentation.spring-batch.enabled=false`
* `otel.instrumentation.spring-core.enabled=true`
* `otel.instrumentation.spring-data.enabled=true`
* `otel.instrumentation.spring-jms.enabled=false`
* `otel.instrumentation.spring-integration.enabled=false`
* `otel.instrumentation.spring-kafka.enabled=true`
* `otel.instrumentation.spring-rabbit.enabled=false`
* `otel.instrumentation.spring-rmi.enabled=false`
* `otel.instrumentation.spring-scheduling.enabled=false`
* `otel.instrumentation.spring-web.enabled=true`
* `otel.instrumentation.spring-webflux.enabled=false`
* `otel.instrumentation.spring-webmvc.enabled=true`
* `otel.instrumentation.spring-ws.enabled=false`
