OpenTelemetry Integration
Enabling OpenTelemetry
Quarkus GitHub App offers a fully functional OpenTelemetry integration.
Enabling it is as simple as adding the quarkus-opentelemetry
extension.
You may also enable the Observability LGTM Dev Services to experiment with this integration.
This OpenTelemetry integration is currently experimental. Your feedback on how the spans and metrics are structured is greatly appreciated. |
Spans
Quarkus GitHub creates some specific spans that are linked to the span of the original HTTP request.
As soon as the OpenTelemetry extension is present, traces are enabled by default but:
-
You can disable them at build time by setting
quarkus.github-app.telemetry.traces.enabled=false
. -
You can deactivate them at runtime by setting
quarkus.github-app.telemetry.traces.active=false
.
GitHub event span
This span represents the processing of a single GitHub webhook event.
-
Name:
github-app.github-event <eventAction>
-
Kind:
INTERNAL
Attribute | Type | Description |
---|---|---|
|
Long |
GitHub App installation identifier |
|
String |
App slug |
|
String |
Delivery identifier from the |
|
String |
Repository full name ( |
|
String |
Event name (for example: |
|
String |
Event action (for example: |
|
String |
Raw JSON payload when payload recording is enabled |
You can enable the recording of the payload with the quarkus.github-app.telemetry.record-event-payload
runtime configuration property.
GitHub event listener method span
This span represents the execution of a specific listener method that handles the event.
-
Name:
github-app.github-event.method <class>.<method>
-
Kind:
INTERNAL
Attribute | Type | Description |
---|---|---|
|
Long |
GitHub App installation identifier |
|
String |
App slug |
|
String |
Delivery identifier from the |
|
String |
Repository full name ( |
|
String |
Event name (for example: |
|
String |
Event action (for example: |
|
String |
Fully-qualified name of the listener class |
|
String |
Listener method name |
|
String |
Listener method signature |
Command events
When using the Command Airline extension, we add an event to the github-app.github-event.method
span.
The event will contain the actual status of the command execution.
-
Name:
github-app.command.method <commandClassName>
Attribute | Type | Description |
---|---|---|
|
String |
Outcome of the command execution ( |
|
String |
Fully-qualified name of the command class |
|
String |
Command line that was executed (present only when command recording is enabled) |
|
String |
Type of error when |
|
String |
Error message when |
You can enable the recording of the command line with the quarkus.github-app.telemetry.record-command
runtime configuration property.
Metrics
Quarkus GitHub creates some specific metrics.
As soon as the OpenTelemetry extension is present, metrics are enabled by default but:
-
You can disable them at build time by setting
quarkus.github-app.telemetry.metrics.enabled=false
. -
You can deactivate them at runtime by setting
quarkus.github-app.telemetry.metrics.active=false
.
GitHub event counter
Counts total GitHub events handled.
-
Name:
github-app.github-event
-
Unit:
event
Attribute | Type | Description |
---|---|---|
|
String |
Outcome of the processing ( |
|
String |
Error message when |
|
String |
Repository full name ( |
|
String |
Event name (for example: |
|
String |
Event action (for example: |
GitHub event listener method counter
Counts total invocations of GitHub event listener methods.
-
Name:
github-app.github-event.method
-
Unit:
invocation
Attribute | Type | Description |
---|---|---|
|
String |
Outcome of the method execution ( |
|
String |
Error message when |
|
String |
Repository full name ( |
|
String |
Event name (for example: |
|
String |
Event action (for example: |
|
String |
Fully-qualified name of the listener class |
|
String |
Listener method name |
|
String |
Listener method signature |
Command counter
Counts total invocations of commands when using the Command Airline extension.
-
Name:
github-app.command.method
-
Unit:
invocation
Attribute | Type | Description |
---|---|---|
|
String |
Outcome of the command execution ( |
|
String |
Fully-qualified name of the command class |
|
String |
Repository full name ( |
|
String |
Event name (for example: |
|
String |
Event action (for example: |
|
String |
Type of error when |
|
String |
Error message when |
Java HTTP Client
We also automatically enable the OpenTelemetry integration for the Java HTTP Client used to send requests to the GitHub REST API.
Configuration
See the Developer Reference page for all the related configuration properties.
Advanced customization
The OpenTelemetry integration is handled by CDI beans that provide a default implementation.
For advanced use cases, you can provide your own CDI beans to override the default behavior. Note that it is still very much encouraged to provide feedback to improve the default implementation.
You can find the API in the io.quarkiverse.githubapp.telemetry
package
and the default implementation in the io.quarkiverse.githubapp.runtime.telemetry.opentelemetry
package.