Tracing in Concourse enables the delivery of traces related to the internal processes that go into running builds, and other internal operations, breaking them down by time, and component.
To export spans to Jaeger, specify the Thrift HTTP endpoint of the Jaeger collector:
To export spans to Google Cloud Trace, specify the GCP Project ID:
Note that suitable GCP credentials must be available, via the usual
GOOGLE_APPLICATION_CREDENTIALS environment variable, the default location that the
gcloud CLI expects, or from GCP's metadata server (if Concourse is deployed on GCP).
Below is a summary of the various operations that Concourse currently traces. They are arranged like a call tree, so that for each operation described, its sub-operations are described indented immediately below.
scanner.Run-- One of the Resource checker components responsible for determining which checks need to be run.
scanner.check-- This operation simply represents inserting the check in the database.
scheduler.Run-- This represents one tick of the Build Scheduler.
schedule-job-- this is the same operation scoped to a single job.
Algorithm.Compute-- this is where the Algorithm determines inputs for a job. Each of the resolvers below describes a different strategy for determining inputs, depending on the job's config.
groupResolver.Resolve-- This is the juicy part of the algorithm, which deals with
pinnedResolver.Resolve-- This operation is used to determine inputs when Version Pinning is at play.
job.EnsurePendingBuildExists-- This is where a new build, if deemed necessary by scheduling constraints, will be inserted into the database. This operation follows from
checker.Runabove and will appear under the same trace as the check which produced the resource version responsible for triggering the new build.
build-- this is the primary operation performed by the Build Tracker. When a build is automatically triggered, this span follows from the
job.EnsurePendingBuildExistsoperation which created the build, appearing in the same trace.