caddyfile: tracing directive (#205)

* Add documentation for tracing directive

* Update header in tracing.md

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>

* Update documentation in tracing.md

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>

* add link to the repository

* add link to gRPC repo and w3c specification

Co-authored-by: Andrii Kushch <>
Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
This commit is contained in:
Andrii Kushch 2022-03-09 18:42:06 +01:00 committed by GitHub
parent 7c2519209c
commit c734cc3e64
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 56 additions and 0 deletions

View file

@ -62,6 +62,7 @@ Directive | Description
**[route](/docs/caddyfile/directives/route)** | A group of directives treated literally as single unit
**[templates](/docs/caddyfile/directives/templates)** | Execute templates on the response
**[tls](/docs/caddyfile/directives/tls)** | Customize TLS settings
**[tracing](/docs/caddyfile/directives/tracing)** | Integration with OpenTelemetry tracing
**[try_files](/docs/caddyfile/directives/try_files)** | Rewrite that depends on file existence
**[uri](/docs/caddyfile/directives/uri)** | Manipulate the URI
@ -104,6 +105,8 @@ Because matcher tokens all work the same, the various possibilities for the matc
Many directives manipulate the HTTP handler chain. The order in which those directives are evaluated matters, so a default ordering is hard-coded into Caddy:
```caddy-d
tracing
map
root

View file

@ -0,0 +1,53 @@
---
title: tracing (Caddyfile directive)
---
# tracing
It provides integration with OpenTelemetry tracing facilities.
When enabled, it will propagate an existing trace context or initialize a new one.
It is based on [github.com/open-telemetry/opentelemetry-go](https://github.com/open-telemetry/opentelemetry-go).
It uses [gRPC](https://github.com/grpc/) as an exporter protocol and W3C [tracecontext](https://www.w3.org/TR/trace-context/) and [baggage](https://www.w3.org/TR/baggage/) as propagators.
## Syntax
```caddy-d
tracing {
[span <span_name>]
}
```
- **&lt;span_name&gt;** - is a span name. Please see span naming [guidelines](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/specification/trace/api.md).
## Configuration
### Environment variables
It can be configured using the environment variables defined
by the [OpenTelemetry Environment Variable Specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/sdk-environment-variables.md).
For the exporter configuration details, please
see [spec](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/specification/protocol/exporter.md).
For example:
```bash
export OTEL_EXPORTER_OTLP_HEADERS="myAuthHeader=myToken,anotherHeader=value"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://my-otlp-endpoint:55680
```
## Examples
Here is a **Caddyfile** example:
```
handle /myHandler {
tracing {
span my-span
}
reverse_proxy 127.0.0.1:8081
}
```