mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-29 04:22:24 -05:00 
			
		
		
		
	Updates tracing docs with the latest stufffff Closes https://codeberg.org/superseriousbusiness/gotosocial/issues/4446 Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4452 Co-authored-by: tobi <tobi.smethurst@protonmail.com> Co-committed-by: tobi <tobi.smethurst@protonmail.com>
		
			
				
	
	
		
			44 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Tracing
 | |
| 
 | |
| GoToSocial comes with [OpenTelemetry][otel] based tracing built-in. It's not wired through every function, but our HTTP handlers and database library will create spans that may help you debug issues.
 | |
| 
 | |
| ## Enabling tracing
 | |
| 
 | |
| To enable tracing on your instance, you must set `tracing-enabled` to `true` in your config.yaml file. Then, you must set the environment variable `OTEL_TRACES_EXPORTER` to your desired tracing format. A list of available options is available [here](https://opentelemetry.io/docs/languages/sdk-configuration/general/#otel_traces_exporter). Once you have changed your config and set the environment variable, restart your instance.
 | |
| 
 | |
| If necessary, you can do further configuration of tracing using the other environment variables listed [here](https://opentelemetry.io/docs/languages/sdk-configuration/general/).
 | |
| 
 | |
| ## Ingesting traces
 | |
| 
 | |
| In order to receive the traces, you need something to ingest them and then visualise them. There are many options available including self-hosted and commercial options.
 | |
| 
 | |
| In [`example/tracing`][ext] we provide an example of how to do this using [Grafana Tempo][tempo] to ingest the spans and [Grafana][grafana] to explore them. You can use the files  with `docker-compose up -d` to get Tempo and Grafana running.
 | |
| 
 | |
| Please be aware that while the example configuration we provide can be used safely for local development and can provide a good starting point for setting up your own tracing infrastructure, it is not suitable for a so-called "production" setup.
 | |
| 
 | |
| ## Querying and visualising traces
 | |
| 
 | |
| Once you execute a few queries against your instance, you'll be able to find them in Grafana. You can use the Explore tab and pick Tempo as the datasource. Because our example configuration for Grafana enables [TraceQL][traceql], the Explore tab will have the TraceQL query type selected by default. You can switch to "Search" instead and find all traces emitted by GoToSocial under the "GoToSocial" service name.
 | |
| 
 | |
| Using TraceQL, a simple query to find all traces related to requests to `/api/v1/instance` would look like this:
 | |
| 
 | |
| ```traceql
 | |
| {.http.route = "/api/v1/instance"}
 | |
| ```
 | |
| 
 | |
| If you wanted to see all GoToSocial traces, you could instead run:
 | |
| 
 | |
| ```traceql
 | |
| {.service.name = "GoToSocial"}
 | |
| ```
 | |
| 
 | |
| Once you select a trace, a second panel will open up visualising the span. You can drill down from there, by clicking into every sub-span to see what it was doing.
 | |
| 
 | |
| 
 | |
| 
 | |
| [traceql]: https://grafana.com/docs/tempo/latest/traceql/
 | |
| [otel]: https://opentelemetry.io/
 | |
| [obs]: ../configuration/observability_and_metrics.md
 | |
| [tempo]: https://grafana.com/oss/tempo/
 | |
| [grafana]: https://grafana.com/oss/grafana/
 | |
| [ext]: https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/tracing
 |