This extension provides a set of opinionated components and configuration to simplify operations such as observability on cloud environments.
Although the extension is mainly targeted for cloud, it can be used in any other environment.

By adding the `camel-quarkus-observability-services` extension to your application, each observability component (described below) will be configured with their individual default settings.
No additional configuration is required.

HTTP endpoints will be exposed under the context path `/observe/<service>` by default. Further details about this are described below.

If you need to customize any component provided by this extension, then you can specify any of their related configuration options in `application.properties`, as it would be done normally when you work with the individual component extension(s).

== Components

This extension automatically provides the following Camel Quarkus component extensions:

* xref:reference/extensions/microprofile-health.adoc[Camel Quarkus MicroProfile Health] - for health checks
* xref:reference/extensions/management.adoc[Camel Quarkus Management] - for JMX
* xref:reference/extensions/micrometer.adoc[Camel Quarkus Micrometer] - for Camel Micrometer metrics
* xref:reference/extensions/opentelemetry2.adoc[Camel Quarkus OpenTelemetry2] - for tracing Camel messages (events/spans)
* https://quarkus.io/guides/telemetry-micrometer#micrometer-and-monitoring-system-extensions[Quarkus Micrometer Registry Prometheus] - for exporting metrics in Prometheus format

=== List of known endpoints

The presence of this extension will expose the following endpoints:

|====
|Endpoint | Description

| `/observe/health` | Accumulation of all health check procedures in the application
| `/observe/health/live` | Liveness probe endpoint
| `/observe/health/ready` | Readiness probe endpoint
| `/observe/health/started` | Application started probe endpoint
| `/observe/metrics` | Metrics exposed from the Micrometer Prometheus registry

|====

NOTE: You can configure the endpoints as you'd do normally within each extension configuration.

== OpenTelemetry configuration

The presence of this extension will provide the required instrumentation to enable the collection of OpenTelemetry metrics.
The Camel Quarkus OpenTelemetry extension instruments your application and periodically attempts to export traces to the configured collector.
This is disabled by default in order to prevent the application exporting traces when no telemetry server is available.

In order to enable instrumentation, you need to add the following configuration to `application.properties`.

[source,properties]
----
quarkus.otel.sdk.disabled=false
----

To configure any aspect of OpenTelemetry, you can add the following configuration to `application.properties`. For example to customize the server endpoint where traces should be exported (default, `http://localhost:4317`).

[source,properties]
----
quarkus.otel.exporter.otlp.traces.endpoint=http://my-otel-collector.svc:4317
----

The full set of configuration options are documented in the xref:reference/extensions/opentelemetry.adoc[Camel Quarkus OpenTelemetry] and https://quarkus.io/guides/opentelemetry[Quarkus OpenTelemetry] documentation.

NOTE: Quarkus trace exporting defaults to the gRPC protocol on port 4317.

== JMX configuration

The presence of this extension implies the presence of the `camel-quarkus-management` extension.
This exposes Camel JMX MBeans to provide insights and management of the running application.

If you prefer to disable Camel JMX instrumentation, you can add the following configuration to `application.properties`.

[source,properties]
----
camel.main.jmxEnabled=false
----

The full set of configuration options are documented in the xref:reference/extensions/management.adoc[Camel Quarkus Management] documentation.
